Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Egészségügyi nyilvántartások tárolása FHIR R4 segítségével
Oktatóanyag: hozzon létre egy Pácienst, egy vérnyomás megfigyelést (Observation) és egy Állapotot (Condition), használjon tranzakciót, keressen, frissítsen történettel és olvassa el az eredetet – minden kérés curl-lel és a valós válasz, az ingyenes sandboxon.
Ez az oktatóanyag egy kis orvosi nyilvántartást tárol HL7 FHIR R4 erőforrásként: egy Patient, egy vérnyomás Observation és egy diagnózis mint Condition, majd egy beteget és egy mérést együtt egyetlen tranzakcióban. Keresi ezeket, frissíti a diagnózist az előző verzió elvesztése nélkül, és elolvassa, ki mit írt. Minden kérés egyszerű curl az ingyenes Anpheros sandbox ellen, és minden megjelenített válasz az, amit az API visszaad.
Ha új a FHIR-ben, olvassa el először a FHIR platform oldalt a koncepciók megértéséhez. Ez az oldal a gyakorlati rész.
A három erőforrás, amellyel a legtöbb rekord kezdődik
| Erőforrás | Mit tartalmaz | Kódolva |
|---|---|---|
Patient |
kire vonatkozik a rekord: név, születési dátum, nem, azonosítók más rendszerekből | az Ön azonosító rendszerei |
Observation |
bármi, amit mértek vagy jelentettek: vitális jelek, laboreredmények, súly, tünetek pontszáma | LOINC, UCUM egységek |
Condition |
egy diagnózis vagy egészségügyi probléma, annak időbeli státuszával | ICD-10 (SNOMED CT licencjelző mögött) |
A gyógyszerek (MedicationStatement), allergiák (AllergyIntolerance), immunizálások és dokumentumok ugyanazt a mintát követik; a 26 támogatott erőforrástípus a képességnyilatkozat sorolja fel a /fhir/R4/metadata címen.
Kezdés előtt
Szerezzen be egy sandbox kulcsot (sk_test_…) a platform.anpheros.com/dashboard oldalon a Get a sandbox key gombbal. Az itt létrehozott adatok nem valós betegek adatai, és nem láthatók más projektek számára.
export BASE=https://platform.anpheros.com/fhir/R4
export KEY=sk_test_…
1. lépés: Beteg létrehozása
curl -X POST "$BASE/Patient" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}],
"gender": "female",
"birthDate": "1979-04-12"
}'
201 Created, a szerver által hozzárendelt azonosítóval és verzióval:
{"resourceType": "Patient",
"identifier": [{"system": "https://clinic.example/mrn", "value": "MRN-10442"}],
"name": [{"family": "Marin", "given": ["Ioana"]}], "gender": "female", "birthDate": "1979-04-12",
"id": "d09e3942-ed86-4458-b099-fa674ab21b84",
"meta": {"versionId": "1", "lastUpdated": "2026-10-12T20:16:51.043Z"}}
Tartsa meg saját azonosítóit a identifier-ban egy általad vezérelt system-tal (itt egy klinika nyilvántartási száma), így mindig megtalálhatja a beteget a GET $BASE/Patient?identifier=https://clinic.example/mrn|MRN-10442 segítségével. A FHIR id a platform azonosítója, és specifikus a projektedre: egy másik projekt ugyanazt a személyt más azonosítóval látja.
export PID=d09e3942-ed86-4458-b099-fa674ab21b84
2. lépés: Mérési eredmény tárolása megfigyelésként (Observation)
A vérnyomás egy olyan megfigyelés, amely két komponensből áll: szisztolés és diasztolés, mindkettőnek saját LOINC kódja van. Mondja meg, ki mérte: itt egy otthoni eszköz.
curl -X POST "$BASE/Observation" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: device" -H "Idempotency-Key: bp-2026-10-10-0830" -d '{
"resourceType": "Observation",
"status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "vital-signs"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "85354-9", "display": "Blood pressure panel"}]},
"subject": {"reference": "Patient/'$PID'"},
"effectiveDateTime": "2026-10-10T08:30:00Z",
"component": [
{"code": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]},
"valueQuantity": {"value": 138, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}},
{"code": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]},
"valueQuantity": {"value": 88, "unit": "mmHg", "system": "http://unitsofmeasure.org", "code": "mm[Hg]"}}
]
}'
A válasz a tárolt erőforrás, amely tartalmazza a id és a meta.versionId: "1". Három részlet számít egy használható rekord szempontjából:
- Kódok, nem címkék. A
85354-9minden FHIR rendszerben "vérnyomás panel"-t jelent; egy szabad szöveges "BP" nem. Keresse meg a kódokat aGET /v1/terminology/loinc?q=blood pressuresegítségével (FHIR kódrendszerek). - UCUM egységek (
mm[Hg],kg,mg/dL) avalueQuantity.code-ben, így az értékek összehasonlíthatók és konvertálhatók. Idempotency-Key. Időtúllépés utáni újrapróbálkozás az első választ adja vissza a leolvasás kétszeri tárolása helyett.
A laboreredmények ugyanazok az erőforrások, category laboratory és általában egy referenceRange. A teljes laborjelentések behozatalához lásd: Laboreredmények importálása FHIR rekordba.
3. lépés: Diagnózis rögzítése Conditionként
curl -X POST "$BASE/Condition" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H "X-Anpheros-Author-Type: practitioner" -d '{
"resourceType": "Condition",
"subject": {"reference": "Patient/'$PID'"},
"clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active"}]},
"verificationStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "confirmed"}]},
"code": {"coding": [{"system": "http://hl7.org/fhir/sid/icd-10", "code": "I10", "display": "Essential (primary) hypertension"}]},
"onsetDateTime": "2026-03-02"
}'
A clinicalStatus (aktív, feloldott, remisszióban) és a verificationStatus (megerősített, ideiglenes) szándékosan külön vannak kezelve: a gyanított diagnózis nem ugyanaz, mint a megerősített, és a feloldott probléma továbbra is a kórtörténet része.
4. lépés: Kapcsolódó erőforrások létrehozása egy tranzakcióban
Amikor egy páciens és az első mérése együtt érkezik, például egy klinikai rendszerből, küldje el őket egy transaction Bundle-ként. Vagy minden tárolódik, vagy semmi. Az új erőforrások közötti hivatkozások ideiglenes urn:uuid: azonosítókat használnak, amelyeket a szerver lecserél:
curl -X POST "$BASE" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" -d '{
"resourceType": "Bundle", "type": "transaction",
"entry": [
{"fullUrl": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001",
"resource": {"resourceType": "Patient", "name": [{"family": "Stan", "given": ["Mihai"]}], "gender": "male", "birthDate": "1990-02-01"},
"request": {"method": "POST", "url": "Patient"}},
{"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": "29463-7", "display": "Body weight"}]},
"subject": {"reference": "urn:uuid:9f1c0d1e-0000-4000-8000-000000000001"},
"effectiveDateTime": "2026-10-10",
"valueQuantity": {"value": 82.4, "unit": "kg", "system": "http://unitsofmeasure.org", "code": "kg"}},
"request": {"method": "POST", "url": "Observation"}}
]
}'
A transaction-response minden erőforráshoz tartalmaz egy bejegyzést, benne a "status": "201 Created"-vel, annak location-vel és a tárolt erőforrással. Az Observation subject-je most már a valós Patient/fad3665a-…-re mutat.
5. lépés: keresés
curl "$BASE/Observation?patient=$PID&code=http://loinc.org|85354-9&date=ge2026-10-01&_sort=-date" \
-H "Authorization: Bearer $KEY"
Egy searchset Bundle-t kap, amely total és a hozzá illeszkedő erőforrásokat tartalmazza, a legújabbak elöl. Más gyakran használt keresések: Condition?patient=$PID&clinical-status=active, Observation?patient=$PID&category=laboratory és Patient/$PID/$everything a teljes rekordhoz.
6. lépés: frissítés előzmények elvesztése nélkül
A magas vérnyomás megszűnik. Módosítsa az állapotot és adja hozzá a befejezési dátumot, és használja a If-Match azonosítót az olvasott verzióval, hogy soha ne írjon felül mások módosításait:
curl -X PUT "$BASE/Condition/$CID" -H "Authorization: Bearer $KEY" -H "Content-Type: application/fhir+json" \
-H 'If-Match: W/"1"' -d '{ …the same Condition…, "clinicalStatus": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "resolved"}]}, "abatementDateTime": "2026-10-11" }'
a 200 OK a ETag: W/"2" segítségével. Ha egy másik írási művelet megelőzte, akkor 412 hibát kap, és újra kell olvasnia. A korábbi verzió továbbra is ott lesz:
curl "$BASE/Condition/$CID/_history" -H "Authorization: Bearer $KEY"
mindkét verziót visszaadja: versionId 2 (resolved) és 1 (active). A GET $BASE/Condition/$CID/_history/1 az előzőt olvassa. Egy rekordban semmi sem íródik felül csendben.
7. lépés: Lásd, ki mit írt
Minden írás létrehoz egy Provenance erőforrást. A vérnyomásméréshez:
curl "$BASE/Provenance?target=Observation/$OBS" -H "Authorization: Bearer $KEY"
{"resourceType": "Provenance",
"target": [{"reference": "Observation/d83d9075-…/_history/1"}],
"recorded": "2026-10-12T20:16:51.056000Z",
"activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
"agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
"who": {"identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "device"}, "display": "proj_…"},
"onBehalfOf": {"identifier": {"system": "https://anpheros.com/fhir/sid/organization", "value": "org_…"}, "display": "…"}}]}
Az általad küldött szerző típusa (device) rögzítésre kerül a projekttel és a szervezettel együtt. Küldj X-Anpheros-Author-Ref: Practitioner/<id>-ot, hogy megnevezd az írás mögötti klinikust.
8. lépés: A rekord összefoglalóként
curl "$BASE/Patient/$PID/\$summary" -H "Authorization: Bearer $KEY"
egy Nemzetközi Betegösszefoglalót (International Patient Summary) ad vissza: egy document Bundle-t, amely egy Composition-val kezdődik, és olyan szakaszokat tartalmaz, mint a Problémák, Gyógyszerek, Allergiák és Életjelek, a fenti erőforrásokból felépítve. Ez az a formátum, amelyet átadhat egy másik rendszernek, vagy kinyomtathat egy orvosnak (FHIR platform).
Preferálja a JSON-t FHIR nélkül?
Ugyanazok az adatok elérhetők egy egyszerűbb REST nézeten keresztül is, /v1, ugyanazokkal az azonosítókkal: a POST /v1/patients/{id}/observations a {"code": "85354-9", "category": "vital-signs", "effective_at": "…", "components": […]}-et veszi igénybe, és ugyanazt a FHIR Observation-t tárolja. Használja azt, amelyik illeszkedik a kódjához. Lásd: Medical data API és az SDK-k.
Gyakran ismételt kérdések
Mi a legjobb módja az orvosi nyilvántartások tárolására?
Kódolt, verziózott erőforrásokként, minden egyes bejegyzés írójának rögzítésével. Az HL7 FHIR R4 megadja a struktúrát (Patient, Observation, Condition és mások), szabványos kódrendszereket, mint például a LOINC és az ICD-10, valamint a történetet; egy FHIR backend pedig hozzáadja a keresést, a hozzájárulást és a származást.
Szükségem van FHIR szerverre a FHIR használatához?
Szüksége van egy helyre, amely tárolja és keresi a FHIR erőforrásokat, és érvényesíti, hogy ki olvashatja őket. Futtathat saját maga egy nyílt forráskódú FHIR szervert, vagy használhat egy felügyeltet, mint például az Anpheros; a Hogyan hasonlítható össze az Anpheros más FHIR szerverekkel mérlegeli a lehetőségeket, a FHIR vs. egyedi orvosi adatbázis pedig a saját séma felépítését tárgyalja.
Hogyan tárolhatok vérnyomást FHIR-ben?
Egy Observation-ként a LOINC 85354-9 kóddal és két component bejegyzéssel: szisztolés 8480-6 és diasztolés 8462-4, mindegyik egy valueQuantity-tel mm[Hg]-ben.
Megváltoztathatok egy tárolt erőforrást?
Igen, PUT és If-Match segítségével. Minden változás új verziót hoz létre; a korábbi verziók továbbra is olvashatók a _history-en keresztül, és a Provenance rögzíti, hogy ki végezte el az egyes változtatásokat. A törlések lágyak és megőrzik a történetet.
Kapcsolódó
- FHIR platform: a fogalmak, erőforrás-típusok és műveletek
- FHIR kódrendszerek: LOINC, ICD-10, ATC, UCUM
- Laboreredmények importálása FHIR rekordba
- Medical data API: az adatok egyszerűbb REST nézete
- Ingyenes FHIR adatbázis és sandbox
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card