FHIR

Vysvětlení profilů a rozšíření FHIR: jak průvodce implementací omezuje zdroj a jak proti němu validovat

Profil FHIR je StructureDefinition, který zužuje základní zdroj: povinné prvky, must-support, pevně dané kódy, krájení (slicing), vazby (bindings), invarianty. Rozšíření přidává to, co základní zdroj vynechal. Jak se profily publikují, co znamená meta.profile, jak je validátory kontrolují, s čitelným příkladem každého z nich.

od Publikováno Přečteno za 6 min

Krátká odpověď: základní FHIR zdroje jsou záměrně volné: téměř vše je volitelné a většina kódů jsou jen příklady, takže jeden standard vyhovuje každé zemi. Profil je StructureDefinition, který zpřísňuje zdroj pro jedno použití: v tomto kontextu musí mít Patient identifikátor tohoto typu, Observation.code musí být kód LOINC z tohoto seznamu, tento prvek musí být podporován, ten se nesmí objevit. Rozšíření (extension) přidává prvek, který základnímu zdroji chybí, identifikovaný URL a definovaný vlastní StructureDefinition. Implementační příručky (US Core, IPS, národní příručky) jsou sbírky profilů, rozšíření, hodnotových sad a příkladů. Zdroj uvádí, které profily tvrdí, že dodržuje, v meta.profile a validátor je kontroluje.

Co může profil změnit

Profil FHIR může zdroj pouze zúžit: zpřísněním kardinality, označením prvků jako „must-support“, opravou hodnot nebo vzorů, svázáním prvků s hodnotovými sadami s určitou silou, rozdělením seznamů na pojmenované části, omezením typů výběru, přidáním invariantů FHIRPath a omezením cílových odkazů. Profil nemůže přidávat prvky, nic přejmenovávat ani uvolňovat základní specifikaci.

Omezení Co dělá Příklad
Kardinalita Volitelné prvky se stanou povinnými nebo se zakážou Patient.identifier 1..*; Patient.photo 0..0
Musí podporovat Příjemci musí být schopni uložit a zobrazit prvek, pokud je odeslán US Core označuje birthDate jako "must-support"
Pevná hodnota nebo vzor Zamkne prvek na jednu hodnotu Observation.category pevně nastaveno na vital-signs
Vazba (Binding) Nasměruje prvek na hodnotovou sadu s určitou silou Observation.code svázáno se seznamem vitálních funkcí, povinné
Krájení (Slicing) Rozdělí seznam na pojmenované části s vlastními pravidly Krevní tlak: komponenta rozdělena na systolický a diastolický
Omezení typu Omezí výběr value[x] omezeno na valueQuantity
Invariant Pravidlo FHIRPath, které musí platit "effective[x] musí být přítomno" nebo "hodnota nebo dataAbsentReason"
Cíl odkazu (Reference target) Omezí, na co se odkaz může vztahovat subject pouze Patient, a pouze pacienti odpovídající tomuto profilu

Profil může pouze zužovat. Nemůže přidávat prvky (k tomu slouží rozšíření), přejmenovávat cokoli ani uvolňovat základní specifikaci.

Síla vazby (Binding strength)

FHIR definuje čtyři síly vazby. required: kód musí pocházet z hodnotové sady. extensible: použijte hodnotovou sadu, pokud koncept odpovídá; jinak je povolen jiný kód. preferred: doporučeno, není vynuceno. example: pouze ilustrativní, což mají většinu základních zdrojů. Nesprávné pochopení extensible jako required je častým zdrojem falešných chyb validace.

Čitelný výňatek profilu

Profil FHIR je StructureDefinition, jehož diferenciál uvádí pouze omezení, která se liší od základního zdroje, zatímco jeho snímek uvádí každý prvek. Čitelný výňatek níže omezuje Observation na domácí krevní tlak: kód je pevně stanoven na LOINC 85354-9 a komponenta je rozdělena na přesně jednu systolickou a jednu diastolickou část.

Diferenciál profilu uvádí pouze to, co se změnilo oproti základu; snímek (snapshot) uvádí vše. Tento diferenciál říká, že Observation krevního tlaku musí obsahovat LOINC 85354-9 a přesně dvě 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 se zřídka píší ručně; autoři používají FHIR Shorthand (FSH) s nástrojem SUSHI nebo nástroje jako Forge a Simplifier a publikují pomocí nástroje IG Publisher od HL7. Příručky jsou distribuovány jako balíčky (hl7.fhir.us.core#6.1.0, hl7.fhir.uv.ips#1.1.0), které načítají validátory a servery.

Rozšíření (Extensions)

Rozšíření je klíč-hodnota prvek umístěný v extension (nebo modifierExtension, pokud mění význam zdroje a nesmí být ignorován). Jeho url je kanonický URL jeho StructureDefinition; jeho hodnota je typovaná value[x] nebo vnořená rozšíření. Místo narození je rozšíření 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"]}]
}

Pravidla osvědčených postupů: před definováním vlastního rozšíření hledejte existující rozšíření (v registru HL7 a národních příručkách); dejte mu URL pod doménou, kterou ovládáte; definujte ho ve StructureDefinition, aby ho ostatní mohli validovat; nikdy nepoužívejte rozšíření pro něco, co již pokrývá základní prvek.

meta.profile a validace

meta.profile je seznam kanonických URL, ke kterým se zdroj FHIR hlásí jako k dodržujícímu, a hlášení není důkazem. Validátor kontroluje zdroj proti základní specifikaci a proti každému deklarovanému profilu, nebo proti profilu, který pojmenujete. Referenční validátor HL7 běží lokálně s balíčky a servery FHIR zpřístupňují operaci $validate, která přijímá parametr profilu.

meta.profile uvádí kanonické URL, kterým zdroj tvrdí, že je v souladu. Tvrzení není důkaz: validátor kontroluje zdroj proti základní specifikaci a proti každému deklarovanému profilu (nebo proti profilu, který mu požádáte použít). Referenční validátor HL7 (validator_cli.jar) běží lokálně a načítá balíčky; servery nabízejí POST /Observation/$validate?profile=…; IG Publisher validuje všechny příklady v příručce. Zdroj může být v souladu s několika profily současně (národní profil Patient a IPS Patient), pokud si neodporují.

Dvě praktická pravidla: server, který deklaruje profil ve své CapabilityStatement, by měl odmítnout zdroje, které jej nesplňují; klient, který přijímá zdroje, by neměl odmítat neznámá rozšíření nebo další prvky, které profil nezakázal, protože základní specifikace je umožňuje.

V Anpheros

Anpheros Platform je server FHIR R4, který používá LOINC pro pozorování, ATC pro léky a SNOMED CT, kde je to relevantní, a nabízí bezplatný validátor, který kontroluje strukturu zdroje proti FHIR R4. Když klinika odešle zdroje s meta.profile nastaveným na národní profil nebo profil IPS, nárok je zachován, takže jej následný systém může proti němu validovat.

Bezplatný validátor (free validator) je na vývojářském webu. Samotné průvodce naleznete v části Vysvětlení implementačních průvodců FHIR.

Související stránky

Zdroje

Časté otázky

Může profil přidat nový prvek do zdroje?

Ne. Profily pouze omezují. Nová data jdou do rozšíření, které pak profil může vyžadovat nebo zakázat jako jakýkoli jiný prvek.

Co přesně znamená "must-support"?

Definuje to implementační příručka; obvykle to znamená, že odesílatel vyplní prvek, pokud má data, a příjemce je uloží a může je zobrazit. Neznamená to, že prvek je povinný.

Pokud zdroj nemá meta.profile, je neplatný?

Ne. meta.profile je tvrzení, nikoli požadavek. Server nebo příručka jej mohou vyžadovat; základní specifikace nikoli. Validátory lze požádat o kontrolu proti profilu, který zdroj nedeklaruje.

Jak zjistím, který profil použít ve své zemi?

Každá národní komunita FHIR publikuje základní příručku (US Core, UK Core, nl-core, německé Basisprofile atd.); stránka implementačních příruček vysvětluje, jak je najít. Mezistátní souhrny používají IPS.

Anpheros Platform

Vyzkoušejte zdarma v sandboxu

První volání FHIR za 5 minut. API standardu HL7 FHIR R4 s integrovaným souhlasem pacienta: vyzkoušejte si ho v sandboxu a poté propojte svou vlastní aplikaci nebo klinický systém.

Zdarma · 30 syntetických pacientů · bez karty

Tento návod slouží pouze pro informační účely a nenahrazuje lékařskou radu. Ohledně rozhodnutí o svém zdraví se poraďte se svým lékařem. V naléhavém případě volejte místní tísňové číslo (v Evropě 112).
Napsal
Tým Anpheros

Anpheros vytváří zdravotní záznamy, které pacient ovládá a může sdílet s jakoukoli klinikou, na platformě HL7 FHIR R4 se sídlem v EU. Tyto průvodce vám pomohou porozumět vašemu zdraví a uspořádat si ho; nenahrazují vašeho lékaře.

O Anpheros →