Archiviare i profili nel servizio FHIR

HL7 Fast Healthcare Interoperability Resources (FHIR®) definisce un modo standard e interoperabile per archiviare e scambiare dati sanitari. Anche all'interno della specifica FHIR di base, può essere utile definire altre regole o estensioni in base al contesto in cui viene usato FHIR. Per usi specifici del contesto di FHIR, i profili FHIR vengono usati per il livello aggiuntivo di specifiche. Il profilo FHIR consente di restringere e personalizzare le definizioni delle risorse usando vincoli ed estensioni.

Il servizio FHIR di Servizi dati integrità di Azure consente di convalidare le risorse rispetto ai profili per verificare se le risorse sono conformi ai profili. Questo articolo illustra le nozioni di base dei profili FHIR e come archiviarli. Per altre informazioni sui profili FHIR, visitare HL7.org.

Profilo FHIR: nozioni di base

Un profilo imposta un contesto aggiuntivo sulla risorsa rappresentata come StructureDefinition risorsa. Un StructureDefinition oggetto definisce un set di regole sul contenuto di una risorsa o di un tipo di dati, ad esempio gli elementi di una risorsa e i valori che questi elementi possono accettare.

Di seguito sono riportati alcuni esempi di come i profili possono modificare la risorsa di base.

  • Limitare la cardinalità: ad esempio, è possibile impostare la cardinalità massima su un elemento su 0, il che significa che l'elemento viene escluso nel contesto specifico.
  • Limitare il contenuto di un elemento a un singolo valore fisso.
  • Definire le estensioni necessarie per la risorsa.

Un StructureDefinition oggetto viene identificato dall'URL canonico: http://hl7.org/fhir/StructureDefinition/{profile}

Ad esempio:

  • http://hl7.org/fhir/StructureDefinition/patient-birthPlace è un profilo di base che richiede informazioni sull'indirizzo registrato di nascita del paziente.
  • http://hl7.org/fhir/StructureDefinition/bmi è un altro profilo di base che definisce come rappresentare le osservazioni dell'indice BMI (Body Mass Index).
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance è un profilo us Core che imposta le aspettative minime per la AllergyIntolerance risorsa associata a un paziente e identifica campi obbligatori, ad esempio estensioni e set di valori.

Quando una risorsa è conforme a un profilo, il profilo viene specificato all'interno dell'elemento profile della risorsa. Nell'esempio seguente è possibile visualizzare l'inizio di una risorsa "Paziente", con http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient profilo.

{
  "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"
    ]
  },

Nota

I profili devono basarsi sulla risorsa di base e non possono essere in conflitto con la risorsa di base. Ad esempio, se un elemento ha una cardinalità pari a 1..1, il profilo non può renderlo facoltativo.

I profili vengono specificati anche da varie guide all'implementazione (IG). Di seguito è riportato un elenco di indirizzi IG comuni. Per altre informazioni, visitare il sito IG specifico per altre informazioni sull'IG e sui profili definiti al suo interno.

Nota

Il servizio FHIR non archivia profili dalle guide all'implementazione per impostazione predefinita. Sarà necessario caricarli nel servizio FHIR.

Accesso ai profili e archiviazione dei profili

Archiviazione dei profili

Per archiviare i profili nel servizio FHIR, è possibile PUT StructureDefinition usare il contenuto del profilo nel corpo della richiesta. Un aggiornamento standard PUT o condizionale sono entrambi metodi validi per archiviare i profili nel servizio FHIR. Usare l'aggiornamento condizionale se non si è certi di quale usare.

Standard PUT: PUT http://<your FHIR service base URL>/StructureDefinition/profile-id

or

Aggiornamento condizionale: PUT http://<your FHIR service base URL>/StructureDefinition?url=http://sample-profile-url

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

Ad esempio, se si vuole archiviare il us-core-allergyintolerance profilo, si userà il comando rest seguente con il profilo di intolleranza alle allergie us Core nel corpo. È stato incluso un frammento di questo profilo per l'esempio.

PUT https://<your FHIR service base URL>/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.",

Per altri esempi, vedere il file REST di esempio US Core nel sito open source che illustra come archiviare i profili US Core. Per ottenere i profili più aggiornati, è necessario ottenere i profili direttamente da HL7 e la guida all'implementazione che li definisce.

Visualizzazione dei profili

È possibile accedere ai profili personalizzati esistenti usando una GET richiesta, GET http://<your FHIR service base URL>/StructureDefinition?url={canonicalUrl}, dove {canonicalUrl} è l'URL canonico del profilo.

Ad esempio, se si vuole visualizzare il profilo della risorsa Obiettivo principale degli Stati Uniti:

GET https://<your FHIR service base URL>/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal

Verrà restituita la risorsa per il StructureDefinition profilo obiettivo principale degli Stati Uniti che inizia come indicato di seguito.

{
  "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).",

}

Nota

Verranno visualizzati solo i profili caricati nel servizio FHIR.

Il servizio FHIR non restituisce StructureDefinition istanze per i profili di base, ma sono disponibili facilmente nel sito Web HL7, ad esempio quanto segue.

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

Profili nell'istruzione capability

Elenca Capability Statement tutti i possibili comportamenti del servizio FHIR. Il servizio FHIR aggiorna l'istruzione di funzionalità con i dettagli dei profili archiviati nei moduli seguenti.

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

Ad esempio, se si usa POST un profilo US Core Patient, che inizia come segue:

{
  "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",

Inviare una GET richiesta per metadata:

GET http://<your FHIR service base URL>/metadata

Viene CapabilityStatement restituito un oggetto che include le informazioni seguenti sul profilo us Core Patient caricato nel server FHIR.

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

Associazioni nei profili

Un servizio di terminologia è un set di funzioni che possono eseguire operazioni su "terminologie mediche", ad esempio convalidare codici, tradurre codici ed espandere set di valori. Il servizio FHIR non supporta il servizio terminologia. Le informazioni per le operazioni supportate ($), i tipi di risorse e le interazioni sono disponibili in CapabilityStatement del servizio. I tipi di risorse ValueSet, StructureDefinition e CodeSystem sono supportati con le operazioni CRUD di base e la ricerca (come definito in CapabilityStatement), oltre a essere sfruttati dal sistema per l'uso in $validate.

I valueSet possono contenere un set complesso di regole e riferimenti esterni. Attualmente, il servizio considererà solo i codici inline pre-espansi. I clienti devono caricare i valueSet supportati nel server FHIR prima di usare l'operazione di $validate. Le risorse ValueSet devono essere caricate nel server FHIR, usando PUT o l'aggiornamento condizionale, come indicato nella sezione Archiviazione dei profili precedente.

Passaggi successivi

In questo articolo sono stati illustrati i profili FHIR. Si apprenderà quindi come usare $validate per assicurarsi che le risorse siano conformi a questi profili.

Nota

FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.