Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Jak integrovat klinické systémy s FHIR backendem
Návod: propojte EMR kliniky s FHIR R4 záznamy pacientů — adresář lékařů, párování podle čísla záznamu, návštěva jako jedna transakce s lékařem jako autorem, laboratorní zprávy, data od jiných poskytovatelů a webhooks.
Tento návod propojuje software kliniky (EMR, systém pro správu praxe nebo rezervační nástroj) se záznamy pacientů ve formátu HL7 FHIR R4 v Anpheros: klinika a její lékaři jsou registrováni v adresáři, pacienti jsou párováni podle čísla záznamu kliniky, návštěva je zaznamenána jako jedna transakce s lékařem uvedeným jako autor a klinika se dozví o datech, která přidávají jiní poskytovatelé. Každý požadavek je curl proti bezplatnému sandboxu a odpovědi jsou vlastní platformy.
Integrace běží na serveru kliniky s API klíčem projektu pro pacienty, které klinika registruje, a pro lidi, kteří již mají záznam v Anpheros, s OAuth povolením, které schválí.
Co se na co mapuje
| V klinickém systému | Ve FHIR R4 |
|---|---|
| klinika, její oddělení | Organization |
| lékař nebo sestra | Practitioner |
| tato osoba pracující na této klinice, se specializací | PractitionerRole |
| soubor pacienta a jeho číslo | Patient s identifier v systému kliniky |
| návštěva | Encounter |
| vitální funkce, výsledky měřené během návštěvy | Observation propojené s Encounter |
| diagnóza | Condition (ICD-10), s verificationStatus předběžná nebo potvrzená |
| předpis, současná léčba | MedicationStatement (ATC) |
| dopis, propouštěcí zpráva, sken | DocumentReference se souborem |
| laboratorní výsledky | konektor laboratoře, do Observation |
Krok 1: Registrace kliniky a jejích lékařů
Adresářové zdroje neobsahují pacienta. Jiné projekty ve stejném prostředí je mohou číst, takže ostatní poskytovatelé pacienta vidí, kdo co napsal, ale pouze váš projekt je může měnit.
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"}]}'
Ponechte vrácená ID vedle záznamů vašeho personálu. Když někdo odejde, nastavte jeho PractitionerRole na "active": false; jeho minulé zápisy si ponechají jeho jméno a on již nemůže jednat prostřednictvím vašeho systému.
Krok 2: párování pacientů
Pro pacienty, které klinika registruje, vytvořte Patient s číslem záznamu kliniky jako identifikátorem:
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"}'
Od té chvíle vyhledávejte pacienta podle tohoto čísla, nikdy podle jména a data narození:
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
Pokud osoba již má záznam v Anpherosu, ze své vlastní aplikace nebo od jiného poskytovatele, klinika nevytváří druhý záznam. Požádá osobu o přístup pomocí OAuth, z tabletu u recepce nebo pomocí odkazu zaslaného před návštěvou, a to pomocí důvěrné aplikace (server kliniky uchovává tajemství). Osoba si vybere svůj záznam a dobu, po kterou k němu může klinika přistupovat. Kroky jsou popsány v Jak implementovat souhlas pacienta pomocí SMART on FHIR; pole patient tokenu je ID, které se má uložit k vašemu souboru.
Krok 3: Zápis návštěvy jako jedna transakce
Návštěva generuje několik zdrojů, které spolu souvisejí. Odešlete je v transaction, aby byly uloženy najednou, nebo vůbec, a uveďte, kdo pracuje: X-Anpheros-Acting-As pojmenovává roli lékaře. Stává se autorem v Provenance, zapisuje se do přístupového logu a zobrazuje se pacientovi jménem.
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"}}
]}'
transaction-response má 201 Created pro Encounter, Observation a Condition. Observation a Condition nyní odkazují na skutečný Encounter/0ca25459-…. Provenance každého z nich pojmenovává roli lékaře, 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, dokud není potvrzena. Aktualizujte ji na confirmed později a historie uchová obě. Co znamená každé pole, je vysvětleno v Vysvětlení původu lékařských dat.
Krok 4: laboratorní výsledky a dokumenty
Výsledky z vlastní laboratoře kliniky nebo zprávy, které pacient přinese, procházejí přes laboratorní konektor v jedné žádosti na zprá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
Dopisy a propouštěcí zprávy jsou dokumenty: vytvořte DocumentReference přes /v1/patients/{id}/documents a nahrajte PDF. Původní soubor se nikdy nemění a hodnoty z něj extrahované na něj odkazují. Viz Jak importovat laboratorní výsledky do záznamu FHIR a API pro lékařská data.
Krok 5: čtěte, co napsali ostatní poskytovatelé, a držte se svého
S pacientovým souhlasem klinika přečte celý záznam v rámci svých rozsahů, včetně toho, co přidaly jiné kliniky, laboratoře a pacient. Může změnit pouze to, co napsala sama. Aktualizace nebo smazání zdroje jiné organizace odpoví 403 a původní zůstane tak, jak byl. Chcete-li opravit něco, co napsal jiný poskytovatel, napište svůj vlastní zdroj (například nový Condition s vaším hodnocením) a nechte záznam zobrazit oba, každý s autorem.
Před návštěvou GET $BASE/Patient/$PID/$summary poskytne Mezinárodní souhrn pacienta ze záznamu: problémy, léky, alergie a nedávné vitální funkce, z každého zdroje.
Krok 6: Informace o nových datech
Jednou pro projekt kliniky zaregistrujte webhook:
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"]}'
Když jiný projekt zapíše do záznamu, ke kterému má vaše klinika přístup, událost to oznámí pomocí data.external: true a zdroje, takže váš EMR může zobrazit „nové výsledky z jiné laboratoře“ bez nutnosti opakovaného dotazování. Událost consent.revoked znamená, že osoba odvolala přístup kliniky: přestaňte synchronizovat daný záznam. Podpisy, opakování a datové sady jsou popsány v části Webhooks.
Co vidí pacient
Pacient ve svém záznamu vidí návštěvu, srdeční frekvenci a předběžnou diagnózu, přičemž každá položka je označena jako přidaná Dr. Ana Popescu z Clinica Cardio Nord. Ve svých připojeních aplikace kliniky uvádí každý přístup, jménem, když lékař jednal. Tato transparentnost je to, co pacienty motivuje k udělení přístupu další klinice.
Kontrolní seznam pro spuštění do produkce
- [ ] Zaregistrované organizace, lékaři a role lékařů; odcházející nastaveni na neaktivní
- [ ] Pacienti spárováni identifikátorem kliniky, nikdy jménem
- [ ] Existující záznamy dosaženy prostřednictvím souhlasu OAuth, ne duplikovány
- [ ] Každý požadavek od klinického personálu nese
X-Anpheros-Acting-As - [ ] Návštěvy zapsány jako transakce; diagnózy se správným stavem ověření
- [ ] Zdrojový systém nastaven při každém zápisu; laboratorní zprávy prostřednictvím konektoru
- [ ] Koncový bod webhooku ověřující podpisy;
consent.revokedzpracováno - [ ] Produkční projekt s podepsanou dohodou o zpracování osobních údajů (klíče
sk_live_…); viz Ceník
Často kladené dotazy
Má Anpheros hotový konektor pro můj EMR?
Ne. Neexistují žádné hotové konektory pro specifické EMR nebo laboratorní systémy; integrace je postavena proti FHIR R4 a REST API, obvykle jako malá služba vedle EMR. Laboratorní zprávy HL7 v2 jsou přijímány tak, jak jsou.
Může lékař pracovat pro dvě kliniky?
Ano. Jedna Practitioner může mít PractitionerRole v každé organizaci. Role uvedená v X-Anpheros-Acting-As rozhoduje, pro kterou kliniku je každý zápis zaznamenán.
Co se stane, když pacient zruší přístup klinice?
Volání kliniky pro daný záznam odpoví 401 a je odeslán webhook consent.revoked. To, co klinika zapsala, zůstává v záznamu pacienta s jeho původem; klinika jej již nemůže číst ani měnit.
Související
- Integrace ve zdravotnictví: všechny integrační vzory na první pohled
- Vysvětlení původu zdravotnických dat
- Jak implementovat souhlas pacienta pomocí SMART on FHIR
- Jak importovat laboratorní výsledky do záznamu FHIR
- Interoperabilita zdravotnických dat
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card