Almacenamiento de perfiles en Azure API for FHIR
HL7 Fast Healthcare Interoperability Resources (FHIR®) define una manera estándar e interoperable de almacenar e intercambiar datos sanitarios. Incluso dentro de la especificación de FHIR base, puede resultar útil definir otras reglas o extensiones en función del contexto que se usa FHIR. Para estos usos específicos del contexto de FHIR, se emplean perfiles de FHIR para la capa adicional de especificaciones. El perfil de FHIR permite restringir y personalizar las definiciones de recursos mediante restricciones y extensiones.
Azure API for FHIR permite validar recursos con perfiles para ver si los recursos se ajustan a los perfiles. Este artículo le guía por los conceptos básicos de los perfiles de FHIR y cómo almacenarlos. Para obtener más información sobre los perfiles de FHIR fuera de este artículo, visite HL7.org.
Perfil de FHIR: aspectos básicos
Un perfil establece contexto adicional en el recurso representado como un StructureDefinition
recurso.
StructureDefinition
Un define un conjunto de reglas sobre el contenido de un recurso o un tipo de datos, como qué elementos tiene un recurso y qué valores pueden tomar estos elementos.
A continuación se muestran algunos ejemplos de cómo los perfiles pueden modificar el recurso base:
- Restringir cardinalidad: por ejemplo, puede establecer la cardinalidad máxima en un elemento en 0, lo que significa que el elemento se descarta en el contexto específico.
- Restrinja el contenido de un elemento a un único valor fijo.
- Defina las extensiones necesarias para el recurso.
Se StructureDefinition
identifica mediante su dirección URL canónica: http://hl7.org/fhir/StructureDefinition/{profile}
Por ejemplo:
-
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
es un perfil base que requiere información sobre la dirección registrada del nacimiento del paciente. -
http://hl7.org/fhir/StructureDefinition/bmi
es otro perfil base que define cómo representar observaciones del índice de masa corporal (IMC). -
http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
es un perfil de US Core que establece las expectativas mínimas paraAllergyIntolerance
el recurso asociado a un paciente e identifica campos obligatorios, como extensiones y conjuntos de valores.
Cuando un recurso se ajusta a un perfil, el perfil se especifica dentro del profile
elemento del recurso. A continuación puede ver un ejemplo del principio de un recurso "Paciente", que tiene http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient un perfil.
{
"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
Los perfiles deben basarse en el recurso base y no pueden entrar en conflicto con el recurso base. Por ejemplo, si un elemento tiene una cardinalidad de 1..1, el perfil no puede hacerlo opcional.
Los perfiles también se especifican mediante varias guías de implementación (IG). A continuación se enumeran algunas IG comunes. Para obtener más información, visite el sitio de IG específico para obtener más información sobre la IG y los perfiles definidos en él:
Nota
Azure API for FHIR no almacena ningún perfil de las guías de implementación de forma predeterminada. Tendrá que cargarlos en Azure API for FHIR.
Acceso a perfiles y almacenamiento de perfiles
Almacenamiento de perfiles
Para almacenar perfiles en Azure API for FHIR, puede PUT
usar StructureDefinition
con el contenido del perfil en el cuerpo de la solicitud. Una actualización o una actualización condicional son métodos adecuados para almacenar perfiles en el servicio FHIR. Use la actualización condicional si no está seguro de qué usar.
Estándar PUT
: PUT http://<your Azure API for FHIR base URL>/StructureDefinition/profile-id
or
Actualización condicional: 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"
…
}
Por ejemplo, si desea almacenar el us-core-allergyintolerance
perfil, usaría el siguiente comando rest con el perfil de intolerancia a alergias de US Core en el cuerpo. Hemos incluido un fragmento de código de este perfil para el ejemplo.
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.",
Para obtener más ejemplos, consulte el archivo REST de ejemplo de US Core en el sitio de código abierto que le guía por el almacenamiento de perfiles de US Core. Para obtener los perfiles más actualizados, debe obtener los perfiles directamente desde HL7 y la guía de implementación que las define.
Visualización de perfiles
Puede acceder a los perfiles personalizados existentes mediante una GET
solicitud, GET http://<your Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}
, donde {canonicalUrl}
es la dirección URL canónica del perfil.
Por ejemplo, si desea ver el perfil de recursos de US Core Goal:
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
Esto devolverá el recurso StructureDefinition
para el perfil de US Core Goal, que comenzará de la siguiente forma:
{
"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
Solo verá los perfiles que ha cargado en Azure API for FHIR.
Azure API for FHIR no devuelve StructureDefinition
instancias de los perfiles base, pero se pueden encontrar en el sitio web de HL7, como:
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
Perfiles en la instrucción de funcionalidad
Enumera Capability Statement
todos los posibles comportamientos de Azure API for FHIR. Azure API for FHIR actualiza la instrucción de funcionalidad con detalles de los perfiles almacenados en forma de:
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Por ejemplo, si guarda un perfil de US Core Patient, que se inicia de la siguiente manera:
{
"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",
Y envía una solicitud GET
para su metadata
:
GET http://<your Azure API for FHIR base URL>/metadata
Se le devolverá con un CapabilityStatement
que incluye la siguiente información sobre el perfil de paciente principal de EE. UU. que cargó en Azure API for FHIR:
...
{
"type": "Patient",
"profile": "http://hl7.org/fhir/StructureDefinition/Patient",
"supportedProfile":[
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
],
Enlaces en perfiles
Un servicio de terminología es un conjunto de funciones que pueden realizar operaciones en "terminología médica", como validar códigos, traducir códigos, expandir conjuntos de valores, etc. El servicio Azure API for FHIR no admite el servicio de terminología. La información de las operaciones admitidas ($), los tipos de recursos y las interacciones se pueden encontrar en La propiedad CapabilityStatement del servicio. Los tipos de recursos ValueSet, StructureDefinition y CodeSystem son compatibles con las operaciones CRUD básicas y la búsqueda (como se define en CapabilityStatement), así como con la utilización del sistema en $validate.
ValueSets puede contener un conjunto complejo de reglas y referencias externas. En la actualidad, el servicio solo tendrá en cuenta los códigos insertados previamente expandidos. Los clientes deben cargar valueSets admitidos en el servidor FHIR antes de usar la operación de $validate. Los recursos ValueSet deben cargarse en el servidor FHIR, mediante put o actualización condicional, como se mencionó en la sección Almacenamiento de perfiles anterior.
Pasos siguientes
En este artículo, ha obtenido información sobre los perfiles de FHIR. A continuación, aprenderá a usar $validate para asegurarse de que los recursos se ajustan a estos perfiles.
FHIR® es una marca registrada de HL7 y se usa con su permiso.