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
- Vysvětlení implementačních příruček FHIR
- CodeableConcept a Coding ve FHIR
- Vysvětlení zdroje FHIR Observation
- Vysvětlení zdroje FHIR Patient
- Vysvětlení terminologických serverů
- Validátor FHIR (vývojářský web)
Zdroje
- HL7 FHIR R4: Profilování FHIR
- HL7 FHIR R4: Rozšiřitelnost
- HL7 FHIR R4: StructureDefinition
- HL7 FHIR R4: Terminology bindings
- HL7 FHIR Shorthand
- HL7 FHIR validator
- HL7 FHIR R4: patient-birthPlace extension
Č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.
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

