Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Klinikai rendszerek integrálása FHIR backenddel
Oktatóanyag: csatlakoztasson egy klinikai EMR-t a páciensek FHIR R4 rekordjaihoz – orvosok címtára, rekord számmal való egyeztetés, egy vizit mint egyetlen tranzakció az orvossal mint szerzővel, laboreredmények, más szolgáltatók adatai és webhookok.
Ez a tutorial egy klinika szoftverét (EMR, praxismenedzsment rendszer vagy foglalási eszköz) csatlakoztatja a páciensek HL7 FHIR R4 rekordjaihoz az Anpherosban: a klinika és orvosai regisztrálva vannak a címtárban, a páciensek a klinika rekord száma alapján kerülnek egyeztetésre, egy látogatás egy tranzakcióként kerül rögzítésre az orvossal mint szerzővel, és a klinika értesül a más szolgáltatók által hozzáadott adatokról. Minden kérés curl az ingyenes sandbox ellen történik, és a válaszok a platform sajátjai.
Az integráció a klinika szerverén fut, egy projekt API kulccsal a klinika által regisztrált páciensek számára, és azok számára, akiknek már van Anpheros rekordjuk, egy általuk jóváhagyott OAuth engedéllyel.
Mi mihez rendelődik
| A klinikai rendszerben | FHIR R4-ben |
|---|---|
| a klinika, annak osztályai | Organization |
| orvos vagy nővér | Practitioner |
| az adott klinikán dolgozó személy, szakterülettel | PractitionerRole |
| a páciens aktája és annak száma | Patient a klinika rendszerében lévő identifier-mal |
| egy vizit | Encounter |
| életjelek, a vizit során mért eredmények | Observation a Encounter-hoz kapcsolva |
| egy diagnózis | Condition (ICD-10), verificationStatus ideiglenes vagy megerősített státusszal |
| egy recept, jelenlegi kezelés | MedicationStatement (ATC) |
| egy levél, zárójelentés, lelet | DocumentReference az aktához |
| laboreredmények | a lab csatlakozó segítségével, Observation-ként |
1. lépés: A klinika és orvosai regisztrálása
A könyvtár erőforrások nem tartalmaznak beteget. Az azonos környezetben lévő többi projekt olvashatja őket, így a beteg más szolgáltatói látják, ki mit írt, de csak a saját projektje módosíthatja azokat.
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"}]}'
Tartsa meg a visszaadott azonosítókat a személyzeti nyilvántartásai mellett. Amikor valaki távozik, állítsa a PractitionerRole értékét "active": false-ra; korábbi bejegyzései megőrzik a nevüket, és nem tudnak többé a rendszerén keresztül eljárni.
2. lépés: páciensek egyeztetése
A klinika által regisztrált páciensek esetében hozzon létre egy Patient rekordot a klinika nyilvántartási számával mint azonosítóval:
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"}'
Ettől kezdve a pácienst ezen a számon keresztül keresse, soha név és születési dátum alapján:
curl "$BASE/Patient?identifier=https://clinic.example/mrn|MRN-20981" -H "Authorization: Bearer $KEY"
Ha az illetőnek már van Anpheros rekordja, a saját alkalmazásából vagy egy másik szolgáltatótól, a klinika nem hoz létre másodikat. Hozzáférést kér az illetőtől OAuth segítségével, egy táblagépen a recepción, vagy a látogatás előtt küldött linken keresztül, egy bizalmas alkalmazás használatával (a klinika szervere tartja titokban a titkot). Az illető kiválasztja a rekordját és azt, hogy mennyi ideig férhet hozzá a klinika. A lépések a Hogyan implementálható a páciens hozzájárulás SMART on FHIR segítségével dokumentumban találhatók; a token patient mezője az az azonosító, amelyet a fájljával együtt tárolnia kell.
3. lépés: Látogatás írása egy tranzakcióként
Egy látogatás több, összetartozó erőforrást hoz létre. Küldje el őket egy transaction-ként, hogy egyszerre vagy egyáltalán ne legyenek tárolva, és adja meg, ki dolgozik: a X-Anpheros-Acting-As megnevezi az orvos szerepét. Ez lesz a szerző a Provenance-ben, bekerül a hozzáférési naplóba, és név szerint megjelenik a betegnek.
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"}}
]}'
A transaction-response tartalmazza a 201 Created-t az Encounter, az Observation és a Condition számára. Az Observation és a Condition most a valódi Encounter/0ca25459-…-ra mutat. Mindegyik Provenance-e megnevezi az orvos szerepét, a klinikát és a forrásrendszert:
"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"}}}]
A diagnózis provisional, amíg meg nem erősítik. Később frissítse confirmed-re, és a történet mindkettőt megőrzi. Az egyes mezők jelentését a Medical data provenance explained magyarázza el.
4. lépés: Laboratóriumi eredmények és dokumentumok
A klinika saját laboratóriumából származó eredmények, vagy a páciens által hozott jelentések a laboratóriumi összekötőn keresztül, jelentésenként egy kérésben kerülnek feldolgozásra:
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
Levelek és zárójelentések dokumentumok: hozzon létre egy DocumentReference-t a /v1/patients/{id}/documents-en keresztül, és töltse fel a PDF-et. Az eredeti fájl soha nem módosul, és az abból kinyert értékek arra mutatnak vissza. Lásd: Laboratóriumi eredmények importálása FHIR rekordba és Medical data API.
5. lépés: Olvassa el, mit írtak más szolgáltatók, és maradjon a saját hatáskörében
A páciens beleegyezésével a klinika a hatáskörébe tartozó teljes rekordot elolvassa, beleértve azt is, amit más klinikák, laboratóriumok és a páciens adott hozzá. Csak azt változtathatja meg, amit maga írt. Egy másik szervezet erőforrásának frissítése vagy törlése 403-re válaszol, és az eredeti változat változatlan marad. Egy másik szolgáltató által írt dolog javításához írjon saját erőforrást (például egy új Condition-ot az Ön értékelésével), és hagyja, hogy a rekord mindkettőt mutassa, mindegyiket a saját szerzőjével.
Egy látogatás előtt a GET $BASE/Patient/$PID/$summary a rekord Nemzetközi Betegösszefoglalóját adja meg: problémák, gyógyszerek, allergiák és a közelmúltbeli életjelek, minden forrásból.
6. lépés: Értesülj az új adatokról
Regisztrálj egy webhookot egyszer a klinika projektjéhez:
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"]}'
Amikor egy másik projekt ír egy olyan rekordba, amelyhez a klinikádnak hozzáférése van, az esemény ezt jelzi a data.external: true és a forrás megadásával, így az EMR-ed "új eredmények egy másik laboratóriumból" üzenetet jeleníthet meg anélkül, hogy lekérdezné az adatokat. A consent.revoked esemény azt jelenti, hogy a személy visszavonta a klinika hozzáférését: állítsd le az adott rekord szinkronizálását. Aláírások, újrapróbálkozások és terhelések a Webhooks részben találhatók.
Mit lát a páciens
A páciens a vizitet, a pulzusszámot és az ideiglenes diagnózist látja a rekordjában, mindegyiket Dr. Ana Popescu jelölte meg a Clinica Cardio Nord-nál hozzáadottként. A kapcsolataiban a klinika alkalmazása felsorolja minden hozzáférést, név szerint, amikor egy gyakorló orvos járt el. Ez az átláthatóság teszi a pácienseket hajlandóvá arra, hogy hozzáférést biztosítsanak a következő klinikának.
Élőre lépés ellenőrzőlista
- [ ] Szervezet, gyakorlók és gyakorlói szerepkörök regisztrálva; kilépők inaktívra állítva
- [ ] Betegek a klinika azonosítójával egyeznek, soha névvel nem
- [ ] Meglévő rekordok OAuth hozzájárulással érhetők el, nem duplikálva
- [ ] Minden klinikai személyzet kérése
X-Anpheros-Acting-As-et tartalmaz - [ ] Látogatások tranzakcióként írva; diagnózisok megfelelő ellenőrzési státusszal
- [ ] Forrásrendszer beállítva minden írásnál; laborjelentések a csatlakozón keresztül
- [ ] Webhook végpont aláírásokat ellenőriz;
consent.revokedkezelve - [ ] Produkciós projekt aláírt DPA-val (
sk_live_…kulcsok); lásd Árazás
Gyakran ismételt kérdések
Van az Anpherosnak kész csatlakozója az EMR-emhez?
Nem. Nincsenek kész csatlakozók specifikus EMR-ekhez vagy laboratóriumi rendszerekhez; az integráció a FHIR R4 és a REST API-k ellen épül, általában egy kis szolgáltatásként az EMR mellett. A HL7 v2 laborüzenetek változatlanul elfogadásra kerülnek.
Dolgozhat egy orvos két klinikán?
Igen. Egy Practitioner lehet PractitionerRole minden szervezetnél. A X-Anpheros-Acting-As-ben megnevezett szerepkör határozza meg, hogy melyik klinikára kerül rögzítésre minden írás.
Mi történik, amikor a páciens visszavonja a klinika hozzáférését?
A klinika hívásai erre a rekordra 401-tal válaszolnak, és egy consent.revoked webhook kerül elküldésre. Amit a klinika írt, az a páciens rekordjában marad a származásával együtt; a klinika egyszerűen már nem tudja olvasni vagy módosítani azt.
Kapcsolódó
- Egészségügyi integrációk: minden integrációs minta áttekintése
- Az orvosi adatok eredetének magyarázata
- Beteg hozzájárulás implementálása SMART on FHIR használatával
- Laboratóriumi eredmények importálása FHIR rekordba
- Egészségügyi adatok interoperabilitása
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card