Ukládání profilů v Rozhraní Azure API for FHIR

HL7 Fast Healthcare Interoperability Resources (FHIR®) definuje standardní a interoperabilní způsob ukládání a výměny zdravotnických dat. I v rámci základní specifikace FHIR může být užitečné definovat další pravidla nebo rozšíření na základě kontextu, který FHIR používá. Pro takové kontextové použití FHIR se profily FHIR používají pro další vrstvu specifikací. Profil FHIR umožňuje zúžit a přizpůsobit definice prostředků pomocí omezení a rozšíření.

Azure API for FHIR umožňuje ověřovat prostředky na základě profilů a zjistit, jestli prostředky odpovídají profilům. Tento článek vás provede základy profilů FHIR a jejich ukládáním. Další informace o profilech FHIR mimo tento článek najdete na stránce HL7.org.

Profil FHIR: základy

Profil nastaví další kontext prostředku, který je reprezentovaný jako StructureDefinition prostředek. Definuje StructureDefinition sadu pravidel pro obsah prostředku nebo datového typu, například jaké prvky má prostředek a jaké hodnoty mohou tyto prvky nabírat.

Níže je několik příkladů, jak můžou profily upravovat základní prostředek:

  • Omezit kardinalitu: Můžete například nastavit maximální kardinalitu elementu na hodnotu 0, což znamená, že prvek je v konkrétním kontextu vyloučen.
  • Omezte obsah prvku na jednu pevnou hodnotu.
  • Definujte požadovaná rozšíření pro prostředek.

A StructureDefinition je identifikována jeho kanonickou adresou URL: http://hl7.org/fhir/StructureDefinition/{profile}

Příklad:

  • http://hl7.org/fhir/StructureDefinition/patient-birthPlace je základní profil, který vyžaduje informace o registrované adrese narození pacienta.
  • http://hl7.org/fhir/StructureDefinition/bmi je další základní profil, který definuje způsob reprezentace pozorování BMI (Body Mass Index).
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance je základní profil USA, který nastavuje minimální očekávání pro AllergyIntolerance prostředek přidružený k pacientovi a identifikuje povinná pole, jako jsou rozšíření a sady hodnot.

Pokud prostředek odpovídá profilu, profil se zadává uvnitř profile elementu prostředku. Níže vidíte příklad začátku prostředku Pacient, který má http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient profil.

{
  "resourceType" : "Patient",
  "id" : "ExamplePatient1",
  "meta" : {
    "lastUpdated" : "2020-10-30T09:48:01.8512764-04:00",
    "source" : "Organization/PayerOrganizationExample1",
    "profile" : [
      "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient"
    ]
  },

Poznámka

Profily se musí vytvářet nad základním prostředkem a nemohou být v konfliktu se základním prostředkem. Pokud má například element kardinalitu 1..1, profil ho nemůže nastavit jako volitelný.

Profily jsou také určeny různými průvodci implementací (IG). Níže jsou uvedené některé běžné iG. Další informace najdete na konkrétním webu IG, kde se dozvíte více o IG a profilech, které jsou v něm definované:

Poznámka

Rozhraní Azure API for FHIR ve výchozím nastavení neukládá žádné profily z průvodců implementací. Budete je muset načíst do rozhraní Azure API for FHIR.

Přístup k profilům a ukládání profilů

Ukládání profilů

Pokud chcete ukládat profily v rozhraní Azure API for FHIR, můžete PUTStructureDefinition použít obsah profilu v textu požadavku. Aktualizace nebo podmíněná aktualizace jsou vhodné metody pro ukládání profilů ve službě FHIR. Pokud si nejste jistí, kterou použít, použijte podmíněnou aktualizaci.

Standardní PUT: PUT http://<your Azure API for FHIR base URL>/StructureDefinition/profile-id

Nebo

Podmíněná aktualizace: PUT http://<your Azure API for FHIR base URL>/StructureDefinition?url=http://sample-profile-url

{ 
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
	…
}

Pokud například chcete uložit us-core-allergyintolerance profil, použijte následující příkaz pro zbytek s profilem základní alergie USA v těle. Do příkladu jsme zahrnuli fragment tohoto profilu.

PUT https://myAzureAPIforFHIR.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
{
    "resourceType" : "StructureDefinition",
    "id" : "us-core-allergyintolerance",
    "text" : {
        "status" : "extensions"
    },
    "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
    "version" : "3.1.1",
    "name" : "USCoreAllergyIntolerance",
    "title" : "US  Core AllergyIntolerance Profile",
    "status" : "active",
    "experimental" : false,
    "date" : "2020-06-29",
        "publisher" : "HL7 US Realm Steering Committee",
    "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
    "description" : "Defines constraints and extensions on the AllergyIntolerance resource for the minimal set of data to query and retrieve allergy information.",

Další příklady najdete v ukázkovém souboru REST pro us Core na opensourcovém webu, který vás provede ukládáním profilů us Core. Pokud chcete získat nejaktuálnější profily, měli byste je získat přímo z HL7 a průvodce implementací, který je definuje.

Zobrazení profilů

Ke stávajícím vlastním profilům můžete přistupovat pomocí GET požadavku GET http://<your Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}, kde {canonicalUrl} je kanonická adresa URL vašeho profilu.

Pokud například chcete zobrazit profil prostředku základního cíle USA:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal

Tím se vrátí prostředek pro profil základního StructureDefinition cíle USA, který začne takto:

{
  "resourceType" : "StructureDefinition",
  "id" : "us-core-goal",
  "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal",
  "version" : "3.1.1",
  "name" : "USCoreGoalProfile",
  "title" : "US Core Goal Profile",
  "status" : "active",
  "experimental" : false,
  "date" : "2020-07-21",
  "publisher" : "HL7 US Realm Steering Committee",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
  "description" : "Defines constraints and extensions on the Goal resource for the minimal set of data to query and retrieve a patient's goal(s).",

}

Poznámka

Zobrazí se jenom profily, které jste načetli do rozhraní Azure API for FHIR.

Azure API for FHIR nevrací StructureDefinition instance pro základní profily, ale najdete je na webu HL7, například:

  • http://hl7.org/fhir/Observation.profile.json.html
  • http://hl7.org/fhir/Patient.profile.json.html

Profily v příkazu capability

Seznam Capability Statement všech možných chování rozhraní Azure API for FHIR Azure API for FHIR aktualizuje příkaz capability o podrobnosti o uložených profilech v těchto formách:

  • CapabilityStatement.rest.resource.profile
  • CapabilityStatement.rest.resource.supportedProfile

Pokud například uložíte profil základního pacienta USA, který začíná takto:

{
  "resourceType": "StructureDefinition",
  "id": "us-core-patient",
  "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient",
  "version": "3.1.1",
  "name": "USCorePatientProfile",
  "title": "US Core Patient Profile",
  "status": "active",
  "experimental": false,
  "date": "2020-06-27",
  "publisher": "HL7 US Realm Steering Committee",

A pošlete žádost o GET :metadata

GET http://<your Azure API for FHIR base URL>/metadata

Vrátíte se spolu s následujícími CapabilityStatement informacemi o profilu základního pacienta USA, který jste nahráli do rozhraní Azure API for FHIR:

...
{
    "type": "Patient",
    "profile": "http://hl7.org/fhir/StructureDefinition/Patient",
    "supportedProfile":[
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    ],

Vazby v profilech

Služba terminologie je sada funkcí, které mohou provádět operace s lékařskými "terminologiemi", jako je ověřování kódů, překlad kódů, rozšiřování sad hodnot atd. Služba Azure API for FHIR nepodporuje službu terminologie. Informace o podporovaných operacích ($), typech prostředků a interakcích najdete v capabilityStatement služby. Typy prostředků ValueSet, StructureDefinition a CodeSystem se podporují se základními operacemi CRUD a vyhledáváním (jak jsou definovány v CapabilityStatement) a systém je využívá pro použití v $validate.

Sady hodnot mohou obsahovat složitou sadu pravidel a externích odkazů. Dnes bude služba brát v úvahu pouze předem rozšířené vložené kódy. Zákazníci musí před použitím operace $validate nahrát podporované sady hodnot na server FHIR. Prostředky ValueSet se musí nahrát na server FHIR pomocí PUT nebo podmíněné aktualizace, jak je uvedeno výše v části Ukládání profilů.

Další kroky

V tomto článku jste se dozvěděli o profilech FHIR. Dále se dozvíte, jak pomocí $validate zajistit, aby prostředky odpovídaly těmto profilům.

FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.