Share via


Archiviare i profili nell'API di Azure per 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 usato da FHIR. Per tali 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.

L'API di Azure per FHIR consente di convalidare le risorse rispetto ai profili per verificare se le risorse sono conformi ai profili. Questo articolo illustra le nozioni di base sui profili FHIR e su come archiviarli. Per altre informazioni sui profili FHIR all'esterno di questo articolo, 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 quali elementi hanno una risorsa e quali valori possono accettare questi elementi.

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 di Body Mass Index (BMI).
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance è un profilo US Core che imposta le aspettative minime per AllergyIntolerance la 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. Di seguito è riportato un esempio dell'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 essere compilati sopra la risorsa di base e non possono essere in conflitto con la risorsa di base. Ad esempio, se un elemento ha una cardinalità di 1..1, il profilo non può renderlo facoltativo.

I profili vengono specificati anche da varie guide all'implementazione (IGS). Di seguito sono elencati alcuni gruppi di dati comuni. Per altre informazioni, visitare il sito IG specifico per altre informazioni sull'IG e sui profili definiti all'interno:

Nota

L'API di Azure per FHIR non archivia profili dalle guide all'implementazione per impostazione predefinita. Sarà necessario caricarli nell'API di Azure per FHIR.

Accesso ai profili e all'archiviazione dei profili

Archiviazione dei profili

Per archiviare i profili nell'API di Azure per FHIR, è possibile PUTStructureDefinition usare il contenuto del profilo nel corpo della richiesta. Un aggiornamento o un aggiornamento condizionale sono entrambi metodi validi per archiviare i profili nel servizio FHIR. Usare l'aggiornamento condizionale se non si è certi che usare.

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

or

Aggiornamento condizionale: 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"
	…
}

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

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

Per altri esempi, vedere il file REST di esempio US Core nel sito open source che illustra l'archiviazione di 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 Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}dove {canonicalUrl} è l'URL canonico del profilo.

Ad esempio, se si vuole visualizzare il profilo della risorsa Us Core Goal:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/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 inizierà come segue:

{
  "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 nell'API di Azure per FHIR.

L'API di Azure per FHIR non restituisce StructureDefinition istanze per i profili di base, ma sono disponibili nel sito Web HL7, ad esempio:

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

Profili nell'istruzione funzionalità

Elenca Capability Statement tutti i possibili comportamenti dell'API di Azure per FHIR. L'API di Azure per FHIR aggiorna l'istruzione di funzionalità con i dettagli dei profili archiviati in forma di:

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

Ad esempio, se si salva un profilo di pazienti core US Core, 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 Azure API for FHIR base URL>/metadata

Verrà restituito con un CapabilityStatement oggetto che include le informazioni seguenti sul profilo del paziente di base US Core caricato nell'API di Azure per 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 convalida di codici, conversione di codici, espansione di set di valori e così via. L'API di Azure per il servizio FHIR non supporta il servizio terminologia. Le informazioni per le operazioni supportate ($), i tipi di risorse e le interazioni sono disponibili nella funzionalità del servizio. I tipi di risorse ValueSet, StructureDefinition e CodeSystem sono supportati con operazioni CRUD di base e Ricerca (come definito in CapabilityStatement) e sfruttati dal sistema per l'uso in $validate.

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

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.

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