Almacenar perfiles en el servicio 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 ser útil definir otras reglas o extensiones en función del contexto en el que se usa FHIR. En el caso de los usos específicos del contexto de FHIR, los perfiles de FHIR se usan para la capa adicional de especificaciones. El perfil de FHIR permite restringir y personalizar las definiciones de recursos mediante restricciones y extensiones.
El servicio FHIR de Azure Health Data Services permite validar los 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, 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 los elementos que 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 para elAllergyIntolerance
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. Puede ver en el ejemplo siguiente el principio de un recurso "Paciente", que tiene http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient 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 muestra una lista de los grupos de seguridad de red 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:
El servicio FHIR no almacena ningún perfil de las guías de implementación de forma predeterminada. Deberá cargarlos en el servicio FHIR.
Acceso a perfiles y almacenamiento de perfiles
Almacenamiento de perfiles
Para almacenar perfiles en el servicio FHIR, puede PUT
usar con StructureDefinition
el contenido del perfil en el cuerpo de la solicitud. Una actualización estándar PUT
o condicional son buenos métodos 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 FHIR service base URL>/StructureDefinition/profile-id
or
Actualización condicional: PUT http://<your FHIR service 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://<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.",
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 FHIR service 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 objetivo principal de EE. UU.:
GET https://<your FHIR service base URL>/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
Esto devuelve el recurso para el perfil de objetivo principal de EE. UU. que se inicia de la StructureDefinition
manera siguiente.
{
"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 el servicio FHIR.
El servicio FHIR no devuelve StructureDefinition
instancias de los perfiles base, pero se pueden encontrar fácilmente en el sitio web de HL7, como el siguiente.
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 comportamientos posibles del servicio FHIR. El servicio FHIR actualiza la instrucción de funcionalidad con detalles de los perfiles almacenados en los formularios siguientes.
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Por ejemplo, si es POST
un perfil de paciente básico de EE. UU., que comienza 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 FHIR service base URL>/metadata
CapabilityStatement
Se devuelve un que incluye la siguiente información sobre el perfil de paciente principal de EE. UU. que cargó en el servidor 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ías médicas", como validar códigos, traducir códigos y expandir conjuntos de valores. El servicio FHIR no admite el servicio de terminología. Puede encontrar información sobre las operaciones admitidas ($), los tipos de recursos y las interacciones en CapabilityStatement del servicio. Los tipos de recursos ValueSet, StructureDefinition y CodeSystem se admiten con operaciones CRUD básicas y Search (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. Actualmente, el servicio solo tendrá en cuenta los códigos insertados expandidos previamente. 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.
Nota:
FHIR® es una marca registrada de HL7 y se usa con su permiso.