Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Ako integrovať klinické systémy s FHIR backendom
Návod: pripojte 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, údaje od iných poskytovateľov a webhooks.
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, 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.
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:
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:
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; 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.
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:
"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.
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:
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 a API pre lekárske údaje.
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:
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.
Č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.revokedspracované - [ ] Produkčný projekt s podpísanou DPA (kľúče
sk_live_…); pozri Cenník
Č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: všetky integračné vzory na prvý pohľad
- Vysvetlenie pôvodu zdravotníckych údajov
- Ako implementovať súhlas pacienta pomocou SMART on FHIR
- Ako importovať laboratórne výsledky do záznamu FHIR
- Interoperabilita zdravotníckych údajov
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card