# Ako integrovať klinické systémy s FHIR backendom

> Tutoriál: pripojenie EMR kliniky k FHIR R4 záznamom pacientov — adresár lekárov, párovanie podľa čísla záznamu, návšteva ako jedna transakcia s lekárom ako autorom, laboratórne správy, dáta od iných poskytovateľov a webhooks.

Source: https://developers.anpheros.com/sk/guides/integrate-clinic-systems-fhir

**Tento tutoriál pripája softvér kliniky (EMR, systém na správu praxe alebo rezervačný nástroj) k HL7 FHIR R4 záznamom pacientov v Anpheros: klinika a jej lekári sú zaregistrovaní v adresári, pacienti sú spárovaní podľa čísla záznamu kliniky, návšteva je zaznamenaná ako jedna transakcia s lekárom uvedeným ako autor a klinika sa dozvie o dátach, ktoré pridávajú iní poskytovatelia.** Každý požiadavok je `curl` proti bezplatnému sandboxu a odpovede sú vlastné platformy.

Integrácia beží na serveri kliniky s API kľúčom projektu pre pacientov, ktorých klinika registruje, a pre ľudí, ktorí už majú Anpheros záznam, s OAuth grantom, ktorý schvália.

## Čo sa na čo mapuje

| V klinickom systéme | Vo FHIR R4 |
|---|---|
| klinika, jej oddelenia | `Organization` |
| lekár alebo sestra | `Practitioner` |
| táto osoba pracujúca na tejto klinike, so špecializáciou | `PractitionerRole` |
| súbor pacienta a jeho číslo | `Patient` s `identifier` v systéme kliniky |
| návšteva | `Encounter` |
| vitálne funkcie, výsledky merané počas návštevy | `Observation` prepojené s `Encounter` |
| diagnóza | `Condition` (ICD-10), s `verificationStatus` predbežná alebo potvrdená |
| predpis, súčasná liečba | `MedicationStatement` (ATC) |
| list, prepúšťacia správa, sken | `DocumentReference` so súborom |
| laboratórne výsledky | [laboratórny konektor](https://developers.anpheros.com/sk/guides/lab-connector), do `Observation` |

## Krok 1: registrácia kliniky a jej lekárov

Adresárové zdroje nemajú pacienta. Iné projekty v rovnakom prostredí ich môžu čítať, takže iní poskytovatelia pacienta vidia, kto čo napísal, ale meniť ich môže iba váš projekt.

```bash
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
H=(-H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json")

curl -X POST $BASE/Organization "${H[@]}" -d '{"resourceType": "Organization", "active": true, "name": "Clinica Cardio Nord",
  "identifier": [{"system": "https://clinic.example/org", "value": "CCN"}]}'

curl -X POST $BASE/Practitioner "${H[@]}" -d '{"resourceType": "Practitioner", "active": true,
  "name": [{"family": "Popescu", "given": ["Ana"], "prefix": ["Dr."]}]}'

curl -X POST $BASE/PractitionerRole "${H[@]}" -d '{"resourceType": "PractitionerRole", "active": true,
  "practitioner": {"reference": "Practitioner/'$PRACTITIONER'"},
  "organization": {"reference": "Organization/'$ORG'"},
  "code": [{"text": "Cardiologist"}]}'
```

Uchovajte si vrátené ID vedľa záznamov vášho personálu. Keď niekto odíde, nastavte jeho `PractitionerRole` na `"active": false`; jeho minulé zápisy si zachovajú jeho meno a už nemôže konať prostredníctvom vášho systému.

## Krok 2: párovanie pacientov

Pre pacientov, ktorých klinika registruje, vytvorte `Patient` s registračným číslom kliniky ako identifikátorom:

```bash
curl -X POST $BASE/Patient "${H[@]}" -d '{"resourceType": "Patient",
  "identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-20981"}],
  "name": [{"family": "Dinu", "given": ["Andrei"]}], "gender": "male", "birthDate": "1968-11-05"}'
```

Odteraz vyhľadávajte pacienta podľa tohto čísla, nikdy podľa mena a dátumu narodenia:

```bash
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
```

**Ak osoba už má záznam v Anpheros**, zo svojej vlastnej aplikácie alebo od iného poskytovateľa, klinika nevytvára druhý záznam. Požiada osobu o prístup pomocou OAuth, z tabletu na recepcii alebo prostredníctvom odkazu zaslaného pred návštevou, pomocou **dôvernej** aplikácie (server kliniky si uchováva tajný kľúč). Osoba si vyberie svoj záznam a dobu, počas ktorej môže mať klinika k nemu prístup. Kroky sú uvedené v [Ako implementovať súhlas pacienta pomocou SMART on FHIR](https://developers.anpheros.com/sk/guides/smart-on-fhir-backend); pole `patient` tokenu je ID, ktoré si uložíte k svojmu súboru.

## Krok 3: Zápis návštevy ako jedna transakcia

Návšteva generuje niekoľko zdrojov, ktoré patria k sebe. Pošlite ich v `transaction`, aby boli uložené naraz alebo vôbec, a uveďte, kto pracuje: `X-Anpheros-Acting-As` pomenúva rolu lekára. Stane sa autorom v Provenance, zapíše sa do prístupového denníka a zobrazí sa pacientovi podľa mena.

```bash
curl -X POST $BASE "${H[@]}" \
  -H "X-Anpheros-Acting-As: PractitionerRole/$ROLE" \
  -H "X-Anpheros-Author-Type: practitioner" \
  -H "X-Anpheros-Source-System: ccn-emr" -d '{
  "resourceType": "Bundle", "type": "transaction",
  "entry": [
    {"fullUrl": "urn:uuid:aa000000-0000-4000-8000-000000000001",
     "resource": {"resourceType": "Encounter", "status": "finished",
       "class": {"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "AMB", "display": "ambulatory"},
       "subject": {"reference": "Patient/'$PID'"},
       "serviceProvider": {"reference": "Organization/'$ORG'"},
       "participant": [{"individual": {"reference": "PractitionerRole/'$ROLE'"}}],
       "period": {"start": "2026-10-09T10:00:00Z", "end": "2026-10-09T10:30:00Z"}},
     "request": {"method": "POST", "url": "Encounter"}},
    {"resource": {"resourceType": "Observation", "status": "final",
       "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
       "code": {"coding": [{"system": "http://loinc.org", "code": "8867-4", "display": "Heart rate"}]},
       "subject": {"reference": "Patient/'$PID'"},
       "encounter": {"reference": "urn:uuid:aa000000-0000-4000-8000-000000000001"},
       "effectiveDateTime": "2026-10-09T10:10:00Z",
       "valueQuantity": {"value": 92, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min"}},
     "request": {"method": "POST", "url": "Observation"}},
    {"resource": {"resourceType": "Condition",
       "subject": {"reference": "Patient/'$PID'"},
       "encounter": {"reference": "urn:uuid:aa000000-0000-4000-8000-000000000001"},
       "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
       "verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "provisional"}]},
       "code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I48.0", "display": "Paroxysmal atrial fibrillation"}]}},
     "request": {"method": "POST", "url": "Condition"}}
  ]}'
```

The `transaction-response` má `201 Created` pre Encounter, Observation a Condition. Observation a Condition teraz odkazujú na skutočný `Encounter/0ca25459-…`. Provenance každého z nich pomenúva rolu lekára, kliniku a zdrojový systém:

```json
"agent": [{"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"}}}]
```

Diagnóza je `provisional`, kým nie je potvrdená. Neskôr ju aktualizujte na `confirmed` a história si uchová obe. Čo znamená každé pole, je vysvetlené v [Vysvetlenie pôvodu lekárskych údajov](https://developers.anpheros.com/sk/guides/medical-data-provenance).

## Krok 4: Laboratórne výsledky a dokumenty

Výsledky z vlastného laboratória kliniky alebo správy, ktoré pacient prinesie, prechádzajú cez laboratórny konektor v jednej požiadavke na správu:

```bash
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: x-application/hl7-v2+er7" -H "X-Anpheros-Source-System: ccn-lab" --data-binary @oru.hl7
```

Listy a prepúšťacie správy sú dokumenty: vytvorte `DocumentReference` cez `/v1/patients/{id}/documents` a nahrajte PDF. Pôvodný súbor sa nikdy nemení a hodnoty z neho extrahované naň odkazujú. Pozri [Ako importovať laboratórne výsledky do FHIR záznamu](https://developers.anpheros.com/sk/guides/import-lab-results-fhir) a [API pre lekárske údaje](https://developers.anpheros.com/sk/guides/medical-data-api).

## Krok 5: Prečítajte si, čo napísali iní poskytovatelia, a držte sa svojho

S pacientovým súhlasom klinika prečíta celý záznam v rámci svojich rozsahov, vrátane toho, čo pridali iné kliniky, laboratóriá a pacient. Môže zmeniť iba to, čo napísala sama. Aktualizácia alebo odstránenie zdroja inej organizácie odpovie `403` a originál zostane tak, ako bol. Ak chcete opraviť niečo, čo napísal iný poskytovateľ, napíšte svoj vlastný zdroj (napríklad nový `Condition` s vaším posúdením) a nechajte záznam zobrazovať oboje, každý so svojím autorom.

Pred návštevou `GET $BASE/Patient/$PID/$summary` poskytne Medzinárodný súhrn pacienta záznamu: problémy, lieky, alergie a nedávne vitálne funkcie z každého zdroja.

## Krok 6: Informácie o nových dátach

Zaregistrujte webhook raz pre projekt kliniky:

```bash
curl -X POST https://platform.anpheros.com/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
     -d '{"url": "https://ccn.example/anpheros/hook", "events": ["resource.created", "resource.updated", "consent.revoked"]}'
```

Keď iný projekt zapíše do záznamu, ku ktorému má vaša klinika prístup, udalosť to oznámi pomocou `data.external: true` a zdroja, takže váš EMR môže zobraziť „nové výsledky z iného laboratória“ bez neustáleho dopytovania. Událosť `consent.revoked` znamená, že osoba odvolala prístup kliniky: prestaňte synchronizovať tento záznam. Podpisy, opätovné pokusy a užitočné zaťaženia sú popísané v časti [Webhooks](https://developers.anpheros.com/sk/guides/webhooks).

## Čo vidí pacient

Pacient vo svojom zázname vidí návštevu, srdcovú frekvenciu a predbežnú diagnózu, pričom každá položka je označená ako pridaná Dr. Ana Popescu z Clinica Cardio Nord. Vo svojich pripojeniach aplikácia kliniky uvádza každý prístup, podľa mena, keď konal lekár. Táto transparentnosť je to, čo pacientov robí ochotnými udeliť prístup ďalšej klinike.

## Kontrolný zoznam pre spustenie do prevádzky

- [ ] Organizácia, Praktickí lekári a Roly praktických lekárov zaregistrované; odchádzajúci nastavení na neaktívnych
- [ ] Pacienti zhodnotení identifikátorom kliniky, nikdy menom
- [ ] Existujúce záznamy dosiahnuté prostredníctvom súhlasu OAuth, nie duplikované
- [ ] Každá požiadavka od klinického personálu nesie `X-Anpheros-Acting-As`
- [ ] Návštevy zapísané ako transakcie; diagnózy so správnym stavom overenia
- [ ] Zdrojový systém nastavený pri každom zápise; laboratórne správy cez konektor
- [ ] Koncový bod webhooku overujúci podpisy; `consent.revoked` spracované
- [ ] Produkčný projekt s podpísanou DPA (kľúče `sk_live_…`); pozri [Cenník](https://developers.anpheros.com/sk/guides/pricing)

## Často kladené otázky

### Má Anpheros hotový konektor pre môj EMR?
Nie. Neexistujú hotové konektory pre špecifické EMR alebo laboratórne systémy; integrácia je postavená proti FHIR R4 a REST API, zvyčajne ako malá služba vedľa EMR. Laboratórne správy HL7 v2 sú akceptované tak, ako sú.

### Môže lekár pracovať pre dve kliniky?
Áno. Jedna `Practitioner` môže mať `PractitionerRole` v každej organizácii. Rola uvedená v `X-Anpheros-Acting-As` rozhoduje, pre ktorú kliniku je každý zápis zaznamenaný.

### Čo sa stane, keď pacient odvolá prístup kliniky?
Volania kliniky pre daný záznam odpovedia `401` a odošle sa webhook `consent.revoked`. To, čo klinika napísala, zostáva v zázname pacienta s jej pôvodom; klinika ho už len nemôže čítať ani meniť.

## Súvisiace

- [Integrácie v zdravotníctve](https://developers.anpheros.com/sk/guides/healthcare-integrations): všetky integračné vzory na prvý pohľad
- [Vysvetlenie pôvodu zdravotníckych údajov](https://developers.anpheros.com/sk/guides/medical-data-provenance)
- [Ako implementovať súhlas pacienta pomocou SMART on FHIR](https://developers.anpheros.com/sk/guides/smart-on-fhir-backend)
- [Ako importovať laboratórne výsledky do záznamu FHIR](https://developers.anpheros.com/sk/guides/import-lab-results-fhir)
- [Interoperabilita zdravotníckych údajov](https://developers.anpheros.com/sk/guides/interoperability)
