Krátka odpoveď: základné FHIR zdroje sú zámerne voľné: takmer všetko je voliteľné a väčšina kódov sú len príklady, aby jeden štandard vyhovoval každej krajine. Profil je StructureDefinition, ktorý sprísňuje zdroj pre jedno použitie: v tomto kontexte musí mať Patient identifikátor tohto typu, Observation.code musí byť LOINC kód z tohto zoznamu, tento prvok musí byť podporovaný, tamten sa nesmie objaviť. Rozšírenie (extension) pridáva prvok, ktorý základnému zdroju chýba, identifikovaný URL a definovaný vlastnou StructureDefinition. Implementačné príručky (US Core, IPS, národné príručky) sú zbierky profilov, rozšírení, sád hodnôt a príkladov. Zdroj uvádza, ktoré profily tvrdí, že nasleduje, v meta.profile a validátor ich kontroluje.
Čo môže profil zmeniť
Profil FHIR môže zdroj meniť iba jeho zúžením: sprísnením kardinality, označením prvkov ako „must-support“ (musí podporovať), fixovaním hodnôt alebo vzorov, viazaním prvkov na sady hodnôt s určitou silou väzby, rozdelením zoznamov na pomenované časti, obmedzením typov výberu, pridaním invariantov FHIRPath a obmedzením cieľov odkazov. Profil nemôže pridávať prvky, premenovávať nič ani uvoľňovať základnú špecifikáciu.
| Obmedzenie | Čo robí | Príklad |
|---|---|---|
| Kardinalita | Voliteľné prvky sa stanú povinnými alebo sa zakážu | Patient.identifier 1..*; Patient.photo 0..0 |
| Musí podporovať | Prijímatelia musia byť schopní uložiť a zobraziť prvok, ak je odoslaný | US Core označuje birthDate ako "must-support" |
| Pevná hodnota alebo vzor | Zamkne prvok na jednu hodnotu | Observation.category pevne nastavená na vital-signs |
| Väzba (Binding) | Nasmeruje prvok na sadu hodnôt s určitou silou | Observation.code viazaný na zoznam vitálnych funkcií, povinný |
| Krájanie (Slicing) | Rozdelí zoznam na pomenované časti s vlastnými pravidlami | Krvný tlak: komponenty rozdelené na systolický a diastolický |
| Obmedzenie typu | Obmedzí výber | value[x] obmedzený na valueQuantity |
| Invariant | Pravidlo FHIRPath, ktoré musí platiť | "effective[x] musí byť prítomný" alebo "value alebo dataAbsentReason" |
| Cieľ odkazu (Reference target) | Obmedzí, na čo sa odkaz môže vzťahovať | subject len Patient, a len pacienti zodpovedajúci tomuto profilu |
Profil môže len spresňovať. Nemôže pridávať prvky (na to slúžia rozšírenia), premenovávať nič ani uvoľňovať základné pravidlá.
Sila väzby (Binding strength)
FHIR definuje štyri sily väzby. required (povinné): kód musí pochádzať zo sady hodnôt. extensible (rozšíriteľné): použite sadu hodnôt, ak koncept zodpovedá; inak je povolený iný kód. preferred (preferované): odporúčané, nie vynucované. example (príklad): iba ilustračné, čo je prípad väčšiny základných zdrojov. Nesprávne pochopenie extensible ako required je častým zdrojom falošných chýb validácie.
Čitateľný výňatok profilu
Profil FHIR je StructureDefinition, ktorého diferenciál uvádza iba obmedzenia, ktoré sa líšia od základného zdroja, zatiaľ čo jeho „snapshot“ uvádza každý prvok. Čitateľný výňatok nižšie obmedzuje Observation na domáce meranie krvného tlaku: kód je fixovaný na LOINC 85354-9 a komponent je rozdelený na presne jednu systolickú a jednu diastolickú časť.
Diferenciál profilu uvádza len to, čo sa zmenilo oproti základu; snímka uvádza všetko. Tento diferenciál hovorí, že záznam Observation pre krvný tlak musí obsahovať LOINC 85354-9 a presne dva komponenty:
{
"resourceType": "StructureDefinition",
"url": "https://example.org/fhir/StructureDefinition/bp-home",
"name": "HomeBloodPressure",
"status": "active",
"kind": "resource",
"abstract": false,
"type": "Observation",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
"derivation": "constraint",
"differential": {"element": [
{"id": "Observation.code", "path": "Observation.code",
"patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "85354-9"}]}},
{"id": "Observation.component", "path": "Observation.component", "min": 2, "max": "2",
"slicing": {"discriminator": [{"type": "pattern", "path": "code"}], "rules": "closed"}},
{"id": "Observation.component:systolic", "path": "Observation.component", "sliceName": "systolic", "min": 1, "max": "1"},
{"id": "Observation.component:systolic.code", "path": "Observation.component.code",
"patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]}},
{"id": "Observation.component:diastolic", "path": "Observation.component", "sliceName": "diastolic", "min": 1, "max": "1"},
{"id": "Observation.component:diastolic.code", "path": "Observation.component.code",
"patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]}}
]}
}
Profily sa zriedka píšu ručne; autori používajú FHIR Shorthand (FSH) s nástrojom SUSHI, alebo nástroje ako Forge a Simplifier, a publikujú pomocou IG Publisher od HL7. Príručky sú distribuované ako balíčky (hl7.fhir.us.core#6.1.0, hl7.fhir.uv.ips#1.1.0), ktoré validátory a servery načítajú.
Rozšírenia (Extensions)
Rozšírenie je prvok kľúč-hodnota umiestnený v extension (alebo modifierExtension, keď mení význam zdroja a nesmie byť ignorovaný). Jeho url je kanonický URL jeho StructureDefinition; jeho hodnota je typovaná value[x], alebo vnořené rozšírenia. Miesto narodenia je rozšírenie definované HL7 na zdroji Patient:
{
"resourceType": "Patient",
"id": "example",
"extension": [{
"url": "http://hl7.org/fhir/StructureDefinition/patient-birthPlace",
"valueAddress": {"city": "Lyon", "country": "FR"}
}],
"name": [{"family": "Doe", "given": ["Jane"]}]
}
Pravidlá dobrej praxe: hľadajte existujúce rozšírenie (v registri HL7 a národných príručkách) predtým, ako definujete vlastné; dajte mu URL pod doménou, ktorú ovládate; definujte ho v StructureDefinition, aby ho ostatní mohli validovať; nikdy nepoužívajte rozšírenie pre niečo, čo už základný prvok pokrýva.
meta.profile a validácia
meta.profile je zoznam kanonických URL, ku ktorým sa zdroj FHIR hlási ako k zhodnému, a samotné hlásenie nie je dôkazom. Validátor kontroluje zdroj oproti základnej špecifikácii a oproti každému deklarovanému profilu, alebo oproti profilu, ktorý pomenujete. Referenčný validátor HL7 beží lokálne s balíkmi a FHIR servery poskytujú operáciu $validate, ktorá prijíma parameter profilu.
meta.profile uvádza kanonické URL, ktoré zdroj tvrdí, že spĺňa. Tvrdenie nie je dôkaz: validátor kontroluje zdroj oproti základnej špecifikácii a proti každému deklarovanému profilu (alebo proti profilu, ktorý mu poviete použiť). Referenčný validátor HL7 (validator_cli.jar) beží lokálne a načíta balíčky; servery ponúkajú POST /Observation/$validate?profile=…; IG Publisher validuje všetky príklady v príručke. Zdroj môže zodpovedať viacerým profilom naraz (národný profil Patient a IPS Patient), pokiaľ si neodporujú.
Dve praktické pravidlá: server, ktorý deklaruje profil vo svojej CapabilityStatement, by mal odmietnuť zdroje, ktoré ho nespĺňajú; klient, ktorý prijíma zdroje, by nemal odmietať neznáme rozšírenia alebo extra prvky, ktoré profil nezakázal, pretože základná špecifikácia ich umožňuje.
V Anpheros
Anpheros Platform je FHIR R4 server, ktorý používa LOINC pre pozorovania, ATC pre lieky a SNOMED CT, kde je to relevantné, a ponúka bezplatný validátor, ktorý kontroluje štruktúru zdroja voči FHIR R4. Keď klinika pošle zdroje s meta.profile nastaveným na národný profil alebo profil IPS, nárok sa zachová, aby ho mohol následný systém proti nemu validovať.
Bezplatný validátor nájdete na vývojárskej stránke tu. Samotné príručky nájdete v časti Vysvetlenie implementačných príručiek FHIR.
Súvisiace stránky
- Vysvetlenie FHIR implementačných príručiek
- CodeableConcept a Coding vo FHIR
- Vysvetlenie FHIR Observation
- Vysvetlenie FHIR zdroja Patient
- Vysvetlenie terminologických serverov
- FHIR validátor (vývojárska stránka)
Zdroje
- HL7 FHIR R4: Profilovanie FHIR
- HL7 FHIR R4: Rozšíriteľnosť
- HL7 FHIR R4: StructureDefinition
- HL7 FHIR R4: Väzby terminológie
- HL7 FHIR Shorthand
- HL7 FHIR validátor
- HL7 FHIR R4: rozšírenie patient-birthPlace
Časté otázky
Môže profil pridať nový prvok do zdroja?
Nie. Profily len obmedzujú. Nové údaje idú do rozšírenia, ktoré potom profil môže vyžadovať alebo zakázať ako akýkoľvek iný prvok.
Čo presne vyžaduje "must-support"?
Definuje to implementačná príručka; zvyčajne to znamená, že odosielateľ vyplní prvok, ak má údaje, a prijímateľ si ho uloží a môže ho zobraziť. Nevyžaduje to, aby prvok bol povinný.
Ak zdroj nemá meta.profile, je neplatný?
Nie. meta.profile je tvrdenie, nie požiadavka. Server alebo príručka ho môže vyžadovať; základná špecifikácia nie. Validátorom je možné prikázať, aby skontrolovali profil, ktorý zdroj neuvádza.
Ako zistím, ktorý profil použiť vo svojej krajine?
Každá národná komunita FHIR publikuje základnú príručku (US Core, UK Core, nl-core, nemecké Basisprofile atď.); stránka implementačných príručiek vysvetľuje, ako ich nájsť. Pre cezhraničné súhrny sa používa IPS.
Vyskúšajte zadarmo v sandboxe
Prvé volanie FHIR za 5 minút. API podľa štandardu HL7 FHIR R4 s integrovaným súhlasom pacienta: vyskúšajte si ho v sandboxe a potom pripojte svoju vlastnú aplikáciu alebo klinický systém.
Zadarmo · 30 syntetických pacientov · bez karty

