FHIR

Vysvetlenie profilov a rozšírení FHIR: ako sprievodca implementáciou obmedzuje zdroj a ako proti nemu validovať

FHIR profil: definícia štruktúry (StructureDefinition) zužujúca základné zdroje (povinné prvky, must-support, pevné kódy, krájanie, väzby, invarianty). Rozšírenie dopĺňa chýbajúce prvky. Publikovanie profilov, meta.profile, validácia s príkladmi.

od Zverejnené 6 min čítania

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

Zdroje

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

Anpheros Platform

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

Tento návod slúži na informačné účely a nenahrádza lekársku radu. Pri rozhodovaní o svojom zdraví sa poraďte so svojím lekárom. V núdzi volajte miestne tiesňové číslo (v Európe 112).
Napísal
Tím Anpheros

Anpheros vyvíja zdravotný záznam, ktorý pacient ovláda a môže zdieľať s akoukoľvek klinikou, na platforme HL7 FHIR R4, so sídlom v EÚ. Tieto návody vám pomôžu pochopiť a usporiadať si svoje zdravie; nenahrádzajú vášho lekára.

O Anpherose →