# Pochodzenie danych medycznych wyjaśnione

> Co rejestruje pochodzenie przy każdym zapisie rekordu FHIR R4 — typ autora, osobę, organizację, system źródłowy, wersje — jak ustawić je za pomocą nagłówków, jak je odczytać i jak oznacza dane przekazywane modelom AI.

Source: https://developers.anpheros.com/pl/guides/medical-data-provenance

**Pochodzenie to zapis, skąd pochodzi fragment danych medycznych: kto go napisał, w imieniu jakiej organizacji, z jakiego systemu, kiedy i co się zmieniło w każdej wersji.** W rekordzie zbierającym dane od pacjentów, urządzeń, klinik, laboratoriów i AI, pochodzenie jest tym, co czyni wartość godną zaufania: odczyt ciśnienia krwi wprowadzony w domu i zmierzony w klinice wyglądają identycznie bez niego. W Anpheros każdy zapis rekordu HL7 FHIR R4 automatycznie generuje zasób FHIR `Provenance`. Ta strona wyjaśnia, co zawiera, jak go poprawnie wypełnić i jak go odczytać.

## Dlaczego proweniencja ma znaczenie

- **Zaufanie kliniczne.** Lekarz inaczej oceni wynik laboratoryjny niż wartość wprowadzoną przez pacjenta lub liczbę wyekstrahowaną przez AI ze zdjęcia.
- **Bezpieczeństwo AI.** Model otrzymujący rekord musi wiedzieć, które pozycje są faktami, a które notatkami napisanymi przez inny model. Bez etykiet traktuje je tak samo.
- **Korekty i spory.** Gdy wartość się zmienia, wszyscy muszą wiedzieć, jaka była wcześniej, kto ją zmienił i dlaczego.
- **Odpowiedzialność.** Zgodnie z RODO i Europejską Przestrzenią Danych o Zdrowiu organizacja musi być w stanie wykazać, co zrobiła z danymi o zdrowiu osoby.
- **Udostępnianie.** Gdy pacjent zezwala drugiej klinice na odczytanie jego dokumentacji, ta klinika musi wiedzieć, jakie dane napisała pierwsza klinika.

## Co Anpheros zapisuje przy każdej operacji zapisu

| Pytanie | Gdzie jest zapisywane | Jak to ustawić |
|---|---|---|
| Jaki rodzaj autora? | `agent.who.identifier` (typ autora) | `author_type` w `/v1`, lub nagłówek `X-Anpheros-Author-Type`: `patient`, `practitioner`, `device`, `import`, `ai` |
| Która osoba? | `agent.who.reference` | `X-Anpheros-Author-Ref: Practitioner/<id>`, lub `X-Anpheros-Acting-As` |
| Dla której organizacji? | `agent.onBehalfOf` | organizacja `PractitionerRole`, lub `X-Anpheros-On-Behalf-Of: Organization/<id>` |
| Z którego systemu? | `entity` z rolą `source` | `X-Anpheros-Source-System: <name>` |
| Który rekord w tym systemie? | origin id | `X-Anpheros-Origin-Id: <id>` |
| Kiedy i co się wydarzyło? | `recorded`, `activity` (CREATE, UPDATE, DELETE) | automatycznie |
| Która wersja? | `target` wskazuje na `<Resource>/<id>/_history/<version>` | automatycznie |

Jeśli nie podasz, kto jest autorem, platforma zapisze `import`. Nigdy nie zakłada `patient`, ponieważ wartość błędnie przypisana pacjentowi jest gorsza niż ta uczciwie oznaczona jako zaimportowana.

## Zapis z pełnym pochodzeniem

Kardiolog w przychodni rejestruje tętno podczas wizyty za pomocą oprogramowania przychodni:

```bash
curl -X POST https://platform.anpheros.com/fhir/R4/Observation -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/fhir+json" \
     -H "X-Anpheros-Author-Type: practitioner" \
     -H "X-Anpheros-Acting-As: PractitionerRole/$ROLE" \
     -H "X-Anpheros-Source-System: ccn-emr" \
     -d '{ "resourceType": "Observation", "status": "final", "code": {"coding": [{"system": "http://loinc.org", "code": "8867-4"}]}, … }'
```

Provenance zapisywany przez platformę:

```json
{"resourceType": "Provenance",
 "target": [{"reference": "Observation/8660eb7c-…/_history/1"}],
 "recorded": "2026-10-12T20:41:47.469000Z",
 "activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
 "agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
            "who": {"reference": "PractitionerRole/e6d8c227-…",
                    "identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "practitioner"}},
            "onBehalfOf": {"reference": "Organization/c3a56a4b-…", "display": "Clinica Cardio Nord"}}],
 "entity": [{"role": "source", "what": {"identifier": {"system": "ccn-emr"}}}]}
```

Rola lekarza, jego przychodnia, rodzaj autora i system źródłowy są zawarte w standardzie FHIR. `PractitionerRole` musi istnieć w katalogu projektu i być aktywny. Żądanie nazwania praktyka innej osoby jest odrzucane:

```json
{"resourceType": "OperationOutcome", "issue": [{"severity": "error", "code": "invalid",
  "diagnostics": "Unknown or inactive Practitioner in X-Anpheros-Acting-As."}]}
```

Konfiguracja katalogu jest opisana w [Jak zintegrować systemy przychodni z backendem FHIR](https://developers.anpheros.com/pl/guides/integrate-clinic-systems-fhir).

## Wersje: nic nie jest nadpisywane w sposób ukryty

Każda aktualizacja tworzy nową wersję zasobu i nowy obiekt Provenance dla tej wersji. Po poprawieniu tętna z 92 na 88:

```bash
curl https://platform.anpheros.com/fhir/R4/Observation/$OBS/_history -H "Authorization: Bearer $KEY"
```

zwraca wersję 2 (88) i wersję 1 (92). Widok REST podsumowuje Provenance każdej wersji:

```bash
curl https://platform.anpheros.com/v1/patients/$PID/provenance/Observation/$OBS -H "Authorization: Bearer $KEY"
```

```json
{"data": [
  {"version": 1, "activity": "CREATE", "recorded": "2026-10-12T20:41:47.469000Z", "author_type": "practitioner", "author": "PractitionerRole/e6d8c227-…", "source_system": "ccn-emr", "fhir": "Provenance/6ed91529-…"},
  {"version": 2, "activity": "UPDATE", "recorded": "2026-10-12T20:41:47.500000Z", "author_type": "practitioner", "fhir": "Provenance/3fbf270f-…"}],
 "total": 2}
```

Usunięcia są miękkie: usunięty zasób znika z wyników wyszukiwania, ale jego historia i Provenance pozostają.

## Odczytywanie proweniencji

```bash
# who wrote this resource (all versions)
GET /fhir/R4/Provenance?target=Observation/{id}
# everything a practitioner recorded
GET /fhir/R4/Provenance?agent=PractitionerRole/{id}
# the same, summarised, per resource
GET /v1/patients/{pid}/provenance/Observation/{id}
```

## Proweniencja w kontekstach AI

[API kontekstu](https://developers.anpheros.com/pl/guides/llm-healthcare-data) przenosi proweniencję do każdego elementu, który przekazuje modelowi, jako `author_type` i `source`. W formie tekstowej:

```
- Type 2 diabetes mellitus (E11), active, onset 2024-10-15 [import/anpheros-sandbox]
- Metformin 1000 mg 1 tablet twice daily with meals, active [patient/anpheros-sandbox]
- Glucose [Mass/volume] in Blood: 2026-09-16: 140.0 mg/dL [device/anpheros-sandbox]
```

Pomiary zapisane za pomocą `author_type: ai` nigdy nie pojawiają się wśród tych faktów. Są one wymienione osobno w sekcji `ai_notes` i oznaczone jako niezweryfikowane, dzięki czemu model nie może pomylić wcześniejszego przypuszczenia modelu z pomiarem. Powiedz modelowi, co oznaczają etykiety i poproś o ich cytowanie; [Jak zbudować aplikację AI dla służby zdrowia z backendem FHIR](https://developers.anpheros.com/pl/guides/build-ai-healthcare-app) pokazuje przykład takiego zapytania.

## Co widzi pacjent

Provenance to również to, co widzi pacjent. Jego rekord pokazuje, kto dodał każdy element, a lista połączeń pokazuje, dla każdej aplikacji, kto uzyskał dostęp do czego, podając imię i nazwisko, gdy działał lekarz ("Dr Ana Popescu · Clinica Cardio Nord odczytał Twoje wyniki badań laboratoryjnych"). Zobacz [Model zgody i dostępu](https://developers.anpheros.com/pl/guides/consent).

## Zasady zapewniające użyteczność danych o pochodzeniu

1. **Zawsze ustaw typ autora.** Kosztuje to jedno pole i jest najważniejszą etykietą w rekordzie.
2. **Podaj imię i nazwisko osoby, gdy napisała ona wpis.** Użyj `X-Anpheros-Acting-As` dla personelu klinicznego.
3. **Podaj nazwę systemu źródłowego** i przekaż własne identyfikatory źródła jako identyfikatory pochodzenia, jeśli istnieją.
4. **Koryguj poprzez aktualizację, nigdy poprzez usunięcie i ponowne utworzenie.** Aktualizacja utrzymuje powiązanie między starą a nową wartością.
5. **Oznaczaj dane wygenerowane przez AI jako `ai`**, w tym wartości wyodrębnione przez model z dokumentu. Wartości pochodzące z dokumentu mogą również wskazywać z powrotem na niego za pomocą `derived_from`.

## Często zadawane pytania

### Czym jest pochodzenie danych w opiece zdrowotnej?
Dokumentowane pochodzenie i historia fragmentu danych medycznych: kto je utworzył lub zmienił, w czyim imieniu, z jakiego systemu i kiedy. W HL7 FHIR jest reprezentowane przez zasób `Provenance`, który wskazuje na dokładną wersję zasobu, który opisuje.

### Czy pochodzenie jest tym samym co dziennik audytu?
Nie. Pochodzenie opisuje dane: kto napisał każdą wersję. Dziennik audytu opisuje dostęp: kto, kiedy i na podstawie jakiej zgody, co odczytał lub zapisał. Anpheros przechowuje oba; pacjent widzi dziennik dostępu dla każdej aplikacji podłączonej do jego rekordu.

### Czy mogę tworzyć własne zasoby Provenance?
Anpheros tworzy jeden dla każdego utworzenia, aktualizacji i usunięcia, więc zazwyczaj nie musisz tego robić. Użyj powyższych nagłówków, aby to doprecyzować. Pochodzenie dostarczone przez klienta musi być skierowane do zasobów pojedynczego pacjenta.

## Powiązane tematy

- [Model zgody i dostępu](https://developers.anpheros.com/pl/guides/consent)
- [Jak zintegrować systemy kliniczne z backendem FHIR](https://developers.anpheros.com/pl/guides/integrate-clinic-systems-fhir)
- [Jak normalizować dane medyczne](https://developers.anpheros.com/pl/guides/normalize-medical-data)
- [Interoperacyjność danych w opiece zdrowotnej](https://developers.anpheros.com/pl/guides/interoperability)
- [Bezpieczeństwo, prywatność i rezydencja danych](https://developers.anpheros.com/pl/guides/security)
