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 perAllergyIntolerance
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 PUT
StructureDefinition
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.