AnpherosAnpheros PlatformDevelopers

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

Č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í

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy