ÚNICAS Rare Diseases HL7 FHIR Implementation Guide
0.0.1 - draft

ÚNICAS Rare Diseases HL7 FHIR Implementation Guide - Local Development build (v0.0.1) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Decisiones de diseño FHIR para ÚNICAS

El ciclo de vida y la seguridad de los recursos FHIR en la Red ÚNICAS siguen las directrices establecidas por HL7 FHIR, asegurando la integridad, confidencialidad y trazabilidad de la información de los pacientes.

Pero queremos destacar que esta guía de implementación quiere enfatizar la necesidad de tener en cuenta los siguientes conceptos de FHIR: “Mime-type”, "Version-parameter", “HTTP Headers”, “Lifecycle”, “Security & Privacy”, “FHIR_Validators”, “HTTP Errors”, etc.

Mime-type y Version-parameter

La red de ÚNICAS recomienda definir el parámetro de tipo MIME fhirVersion como un parámetro para indicar en qué versión de la versión FHIR se basa un recurso:

Accept: application/fhir+json; fhirVersion=5.0
Accept: application/fhir+xml; fhirVersion=5.0

El valor de este parámetro es el número de versión principal y secundaria de la especificación FHIR:

FHIR R1(DSTU 1) 0.0
FHIR R2  (DSTU 2) 1.0
FHIR R3  (STU3, or just R3) 3.0
FHIR R4  (R4, mixed STU/Normative) 4.0
FHIR R4B  (R4B, only STU changes) 4.3
FHIR R5  (this version) 5.0

Preferiblemente JSON para la publicación de información. El formato RDF (Turtle) no está disponible en la red de ÚNICAS.

IG Language

El idioma de la Plataforma ÚNICAS y el contenido de la información de la mensajería FHIR de ÚNICAS es el castellano. Por este motivo se ha priorizado el uso de las ediciones Spanish de los catálogos y terminologías para indicar la preferencia idiomática de las descripciones.

This implementation guide is written in Spanish. If you need any clarification, you can contact the Spanish Ministry of Health (https://www.sanidad.gob.es/home.htm).

Meta.tag

En el recurso Meta de FHIR se informa:

Meta.tag

Los tag, profiles y los security labels son atributos de Meta, pero nunca se utilizan para almacenar información necesaria para interpretar su contenido; su función se limita a encontrar y controlar el acceso al recurso, así como a conectarlo con el flujo de trabajo técnico o clínico.

Los Tags se utilizan para asociar información operativa adicional con los recursos, como la gestión del flujo de trabajo.

"meta": {
   "tag": [
      {
         "system": "urn:unicas:process",
         "code": "ÚNICAS",
         "display": "ÚNICAS"
      }
   ]
}  

En la red de ÚNICAS se quiere utilizar para identificar que la información es relevante para enfermedades minoritarias o para indicar que la información es sobre un paciente ÚNICAS.

Binary resource

En la red de ÚNICAS hay un tráfico de intercambio de base64 en PDF o HL7 CDA muy elevado que hace que el recurso Attachment pese mucho.

Para evitar este tráfico y poder consultar la información del Attachment antes de decidir si necesitamos visualizar el contenido o no, se ha decidido hacer uso del recurso Binary. El recurso Binary se utiliza generalmente como destino en el tipo de dato Attachment para referenciar el contenido mediante el elemento .url, como en los recursos DocumentReference.

El recurso Binary tiene sus particularidades y se comporta de forma ligeramente diferente a los demás recursos de la API RESTful:

  • Binary.data es opcional porque se excluye al solicitar una vista resumida del recurso Binary (esto puede ser útil cuando el recurso binario forma parte de una solicitud más amplia, por ejemplo, una búsqueda _include). Pero esto no significa que el Binary.data sea opcional de informar porque un recurso binario sin contenido especificado no es útil.
  • Cuando se realiza una solicitud de lectura con un tipo FHIR en el encabezado Accept (p. ej., "application/fhir+xml" o "application/fhir+json"), el recurso Binary se devuelve en el formato FHIR solicitado. Esto aplica incluso cuando los datos binarios tienen un tipo MIME FHIR.
  • El recurso Binary siempre se representa en el formato FHIR nativo cuando se encapsula en un Bundle.
  • El parámetro _format anula el encabezado Accept y debe interpretarse como si se usaran los tipos MIME FHIR estándar, incluso si se proporcionan los tipos MIME más genéricos como valor.
  • Cuando la solicitud de lectura tiene otro tipo en el encabezado Accept, el contenido debe devolverse con el tipo de contenido indicado en el recurso en el encabezado Content-Type. Por ejemplo, si el tipo de contenido del recurso es "application/pdf", el contenido debe devolverse directamente como PDF. El parámetro _summary no aplica en este caso. Debido al funcionamiento de la infraestructura web, no es posible establecer reglas generales sobre la relación entre el campo "Accept" en la solicitud HTTP y el tipo de retorno, por lo que no existe una regla estricta al respecto. Sin embargo, la intención es que, a menos que se solicite específicamente, no se devuelva la representación XML/JSON de FHIR.
  • Cuando se escriben datos binarios en el servidor (POST o PUT), estos se aceptan tal cual, y se tratan como contenido de un Binary, incluso cuando el tipo de contenido es "application/fhir+xml" o "application/fhir+json", excepto en el caso especial en que el contenido sea realmente un recurso Binary.
  • Cuando el cliente solicita un recurso Binary utilizando un tipo MIME genérico (application/xml, text/xml o application/json), el servidor DEBERÍA devolver el contenido directamente si el formato del tipo de contenido coincide con el tipo MIME solicitado (por ejemplo, si el encabezado "Accept" es application/json y el tipo de contenido es vnd.xacml+json). Sin embargo, es posible que los servidores no siempre puedan interpretar correctamente los tipos MIME y los clientes DEBEN estar preparados para recibir cualquiera de los formatos.

Para recuperar/leer el Binary.data hay algunas dificultades, porque FHIR no establece reglas sobre la funcionalidad de lectura avanzada del recurso binario y los servidores pueden admitir estas funciones, pero no son obligatorias, como:

  • Recuperar rangos de bytes
  • Determinar el tamaño del contenido antes de recuperarlo (aunque esto puede lograrse mediante una solicitud HEAD)
  • Transmitir contenido desde el recurso Binary
  • Generar contenido dinámicamente sobre la marcha
  • FHIR no admite la búsqueda de recursos Binary.
  • FHIR no especifica la semántica de una operación PATCH en un recurso Binary.
  • FHIR no especifica SearchParameters para el recurso Binary.

En esta guía se explica distintas soluciones que pueden servir de inspiración para entender un poco más la dificultad a la que nos enfrentamos y posibles soluciones ejemplo: https://smilecdr.com/docs/fhir_repository/binary_data.html

Es por todos estos motivos que, si en algún momento se considera que no es suficiente para los requerimientos funcionales de la plataforma ÚNICAS, es posible que se vuelva a recomendar el uso del Attachment.data.

HTTP Headers

La red de ÚNICAS tiene en cuenta algunos HTTP headers para el uso de la API FHIR tanto para solucionar problemas de inconsistencia de datos, como para identificar con una etiqueta que X información es relevante para la red de ÚNICAS.

Tag Direction MDN RFC Notes
Accept request Accept RFC-7231 §5.3.2 Content-negotiation for MIME Type and FHIR Version, see: Content Types and Encodings, FHIR Version Parameter, and General Parameters (_format).
ETag response ETag RFC-7232 §2.3 The value from .meta.versionId as a "weak" ETag, prefixed with W/ and enclosed in quotes (e.g., W/"3141").
If-Match request If-Match RFC-7232 §3.1 ETag-based matching for conditional requests, see: Conditional Read, Conditional Update, Conditional Patch, Conditional Delete, Managing Resource Contention, and Support for Versions.
If-Modified-Since request If-Modified-Since RFC-7232 §3.3 Date-based matching for conditional read requests, see: Conditional Read.
If-None-Exist request - - HL7 defined extension header to prevent the creation of duplicate resources, see: Conditional Create.
If-None-Match request If-None-Match RFC-7232 §3.2 ETag-based matching for conditional requests, see: Conditional Read and Conditional Update.
Last-Modified response Last-Modified RFC-7232 §2.2 The value from .meta.lastUpdated, which is a FHIR instant, converted to the proper format.
Prefer request - RFC-7240 Request various behaviors specific to a single request, see: create/update/patch/transaction (Return preference ), Search: Handling Errors (Processing preference (strict, lenient) ), and Async Request Patterns (Respond-async preference ).
Location response - RFC-7231 §37.1.2 Used in the response to a create and an upsert to indicate where the resource can be found after being processed.
Content-Location response - RFC-7231 §3.1.4.2 Used in the Async pattern to indicate where the response to the request can be found.

Conditional update

Cada recurso dentro de la red ÚNICAS atraviesa distintas etapas desde su publicación hasta posible consulta:

  • Publicación: Se publica un nuevo mensaje (Bundle) con datos iniciales.

Para asegurar la publicación de mensaje no está duplicado la información, se utiliza actualización condicional, que permite crear recurso solo si no existe un recurso equivalente en el servidor y modificar recurso existente basándose en criterios de creación/modificación. En el mensaje utilizado siguiente interación para definir equivalencia. Para más información: https://www.hl7.org/fhir/http.html#cond-update.

PUT [base]/[tipo recurso]?[parámetros de búsqueda]

Donde parámetros de búsqueda se utiliza el identifier:

PUT [base]/Encounter?identifier=urn:regcess:0908005177|id-interno-interacionClinica

Cuando el servidor procesa esta publicación, realiza una búsqueda como se especifica utilizando sus funciones de búsqueda estándar para el tipo de recurso. La acción que se lleva a cabo depende de la cantidad de coincidencias que se encuentren:

  • Sin coincidencias: el servidor procesa la publicación como se indicó anteriormente, donde, si se publica el recurso.
  • Una coincidencia: el servidor realiza la actualización contra el recurso coincidente como se indicó anteriormente.
  • Varias coincidencias: el servidor devuelve un 412 Precondition Failederror que indica que los criterios del cliente no fueron lo suficientemente selectivos.

Esta variante se puede utilizar para evitar el riesgo de que el servidor cree recursos duplicados para el mismo registro.

  • Modificación: Se actualizan los datos del recurso según actividad.
  • Consulta: Se accede al recurso según parámetros introducidos.

patch

Como alternativa a actualizar un recurso completo, se pueden realizar una interacción de tipo PATCH. Esta interacción se realiza mediante HTTP PATCH, como se muestra a continuación:

PATCH [base]/[type]/[id] {?_format=[mime-type]} 

Las interacciones PATCH también pueden utilizarse dentro de operaciones Batch o Transaction con el formato FHIRPath Patch.

Para más información consultar: https://www.hl7.org/fhir/http.html#patch.

LifeCycle

En FHIR la gestión del ciclo de vida de los recursos y su contenido es importante. En la red de ÚNICAS es necesario plantearse el mantenimiento de los recursos a lo largo del tiempo para no generar un gran BigData sino que toda la información que resida en los Nodos Autonómicos sea información útil, en el presente y en el futuro.

Por este motivo es importante contemplar y analizar los cambios de estado de los recursos y definir acciones en función de estos cambios.

Los casos de baja de un paciente a la red de ÚNICAS también requieren de una definición de acciones en función del motivo de baja en la red. Se debe definir en qué casos se van a eliminar recursos (p. ej. cuando hayan pasado más de una década de la baja) o lo que se decida para el mantenimiento de la información inactiva.

El LifeCycle de FHIR consiste en:

  • Resource Status: cómo funcionan los códigos de estado del recurso
  • Current List: problemas relacionados con la recuperación de la "lista X actual" de recursos
  • Entered in Error: información sobre cómo se gestionan las entradas erróneas de los recursos

ÚNICAS contempla los siguientes aspectos que ayudan a gestionar el mantenimiento de los recursos:

  • Clinical Workflow Process Life Cycle: describe los estados del ciclo de vida de actividades complejas comunes en la atención médica. Normalmente, estos estados siguen un ciclo de vida cronológico que va desde el inicio hasta la conclusión de la acción.

    En ÚNICAS se debería tener en cuenta:

    • Appointment.status
    • Encounter.status
    • Goal.lifesycleStatus
    • MedicationAdministration.status
  • Request/Order Life Cycle: algunos recursos en FHIR representan órdenes o solicitudes. El ciclo de vida de la solicitud puede resumirse en cuatro etapas: creación de la solicitud, envío de la solicitud, recepción de la aceptación o rechazo de la solicitud y cumplimiento de la solicitud.

    En ÚNICAS de momento no hacemos uso de ninguno de estos recursos.

  • Entity Availability Life Cycle: El ciclo de vida de disponibilidad de la entidad indica si el recurso, o la entidad descrita por él, está listo para usarse, aún no está listo para usarse o ha sido retirado del servicio.

    En ÚNICAS se debería tener en cuenta:

    • DiagnosticReport.status
    • MedicationStatement.status
    • CapabilityStatement.status
    • StructureDefinition.status
    • DocumentReference.status
    • Location.status
    • Organization.active
    • Patient.active
  • Clinical Status Life Cycle: El estado clínico es algo diferente a los valores de estado anteriores, ya que no aborda el flujo de trabajo ni el ciclo de vida. En cambio, indica cómo la evidencia afecta la interpretación clínica.

    En ÚNICAS se debería tener en cuenta:

    • AllergyIntolerance.clinicalStatus
    • Condition.clinicalStatus

Para obtener más información sobre la gestión del ciclo de vida de los recursos, consultar: https://www.hl7.org/fhir/lifecycle.html.

Security & Privacy

El Módulo de Seguridad y Privacidad describe cómo proteger un servidor FHIR (mediante control de acceso y autorización), cómo documentar los permisos otorgados por un usuario (consentimiento) y cómo mantener registros de los eventos realizados (registro de auditoría y procedencia). FHIR no exige un enfoque técnico único para la seguridad y la privacidad; más bien, la especificación proporciona un conjunto de componentes básicos (Audit Event, Consent, Permission, Provenance, Signature, Security Labels (Resource.meta.security)) que pueden aplicarse para crear sistemas seguros y privados.

Para más información consultar: https://build.fhir.org/secpriv-module.html, https://build.fhir.org/security.html#http.

Auditoria - Perfil de integración IHE RESTful Audit Trail and Node Authentication (RESTful ATNA)

ÚNICAS se ha alineado al máximo con los perfiles IHE teniendo en cuenta solo las transacciones y actores que tienen sentido en FHIR, en concreto con el RESTful Audit Trail and Node Authentication (RESTful ATNA) que es un perfil de IHE para el seguimiento de auditoría y autenticación de nodos que especifica los elementos fundamentales que necesitan todas las formas de sistemas seguros: autenticación de nodos, autenticación de usuarios, registro de eventos (auditoría) y cifrado de telecomunicaciones. También se utiliza para indicar que se proporcionan otras propiedades de seguridad interna, como control de acceso, control de configuración y restricciones de privilegios. Muchos otros perfiles de IHE requieren o recomiendan agruparse con actores de ATNA como parte de sus consideraciones de seguridad. Para más información: https://profiles.ihe.net/ITI/TF/Volume1/ch-9.html.

A continuación, se muestran los actores directamente involucrados en el Perfil ATNA y las transacciones relevantes entre ellos.

Perfil ATNA

En la red de ÚNICAS el cumplimiento de este perfil garantiza un marco de seguridad entendido globalmente.

La siguiente tabla muestra las equivalencias de los distintos actores del perfil, con los componentes del proyecto ÚNICAS.

Actores perfil ANTA Elemento ÚNICAS
Secure Application Cualquier aplicación o cuadro de mando que está asociado o agrupado con el nodo de seguridad central.
Secure Node Nodo de seguridad central que provee de los servicios de seguridad y privacidad de los distintos actores del sistema ÚNICAS.
Audit Record Repository Repositorio de registros auditables. Existirá un registro centralizado en el nodo central con los registros auditables de los distintos nodos autonómicos.
Audit Record Forwarder Reenviador de registros auditables a otros nodos, en este caso al nodo central.

La siguiente tabla muestra las equivalencias de las distintas transacciones del perfil, con las transacciones de los actores identificados en la tabla anterior en el proyecto ÚNICAS.

Actor Transacciones Descripción Opcionalidad
ecure Application Authenticate Node [ITI-19] Los distintos actores del perfil autentican sus identidades con el nodo de seguridad central cuando se solicita el intercambio

de datos o una conexión segura entre dos actores.
R
Record AuditEvent [ITI-20] Crear un registro de auditoría y transmitir estos disparadores y

transacciones al “Repositorio de Registros de Auditoría”.
R
Secure Node Authenticate Node [ITI-19] Establece un protocolo de relación de confianza específico entre 2 nodos seguros de una red. Autoriza el acceso a los datos del paciente y a las aplicaciones del nodo de seguridad a

la identidad del actor.
R
Record Audit Event [ITI-20] Crear un registro de auditoría y transmitir este registro al

“Repositorio de Registros de Auditoría”.
R
Audit Record Repository Record Audit Event [ITI-20] Recibe los distintos registros de los nodos autonómicos y los

almacena para propósitos de auditoría.
R
Audit Record Forwarder Record Audit Event [ITI-20] Reenviar un registro de auditoría de los nodos autonómicos al

nodo central.
R

Igualmente, es necesario entender que el Nodo Central del ministerio va a tener su auditoria que es posible que adapte para las validaciones crossborder con el nodo del Punto de Contacto Nacional (NCP) para la Salud Electrónica que recibe y procesa mensajes transfronterizos (https://build-fhir.ehdsi.eu/ncp-api/application.html).

I en el caso de la red de ÚNICAS la auditoria la va a marcar la componente auditoria del NA y la app SMART, ver apartado siguiente.

SMART on FHIR

La plataforma ÚNICAS es una aplicación SMART on FHIR que facilita autenticación e integración de los sistemas.

Integración de UI y seguridad

Para más información sobre SMART on FHIR: https://docs.smarthealthit.org/.

Validating Resources

Es importante que las CCAA se responsabilicen de validar por adelantado que la información que envían tiene un formato conformance. Para ello existen distintas herramientas que validan a más o menos nivel técnico en función de la necesidad.

Existen múltiples maneras de validar recursos y cuáles de los aspectos mencionados permiten validar:

Validating Resources
Pude ser muy útil para los SSII de cada CCAA para validar los Bundles antes de hacer el POST/PUT a la API FHIR de su Nodo Autonómico.

En la red ÚNICAS, el siguiente validador también puede ser muy útil para la validación de mensajes: Simplifier Validator.

Versión Management

Esta guía se ha creado basada en la versión current de FHIR que es la R5, pero siendo conscientes que puede ser un reto para los sistemas que deben lidiar con versiones anteriores como R4, que es una versión más extendida e implementada hasta el momento. Por este motivo, en ÚNICAS se ha analizado las diferencias entre R5 y R4 que pueden ser útiles para entender los cambios más relevantes de los recursos y elementos utilizados en la red de ÚNICAS:
Diferencias entre R5 y R4

Recurso Afectado Atributo Modificado Definición de los cambios entre R4 y R5 Los atributos de R4 que podrían ser sustitutos de los atributos que solo existen en R5 Nivel de impacto
Bundle Bundle.type Add code subscription-notification   Bajo
AllergyIntolerance AllergyIntolerance.verificationStatus Add code presumed   Bajo
  AllergyIntolerance.type Type changed from code to CodeableConcept Medio
  Remove Binding http://hl7.org/fhir/ValueSet/allergy-intolerance-type | 4.0.0 (required) Medio
  AllergyIntolerance.reaction.manifestation Type changed from CodeableConcept to CodeableReference Medio
  AllergyIntolerance.participant Added Element   Alto
  AllergyIntolerance.participant.function Added Element   Alto
  AllergyIntolerance.participant.actor Added Mandatory Element AllergyIntolerance.recorder
AllergyIntolerance.asserter
Alto
  AllergyIntolerance.reaction.manifestation Type changed from CodeableConcept to CodeableReference Medio
Appointment Appointment.cancellationReason Renamed from cancelationReason to cancellationReason   Medio
  Appointment.serviceType Type changed from CodeableConcept to CodeableReference Medio
  Appointment.reason Renamed from reasonCode to reason Medio
  Type changed from CodeableConcept to CodeableReference Appointment.reasonReference Medio
  Appointment.cancellationDate Added Element   Alto
  Appointment.note Renamed from comment to note Medio
  Max Cardinality changed from 1 to * Bajo
  Type changed from string to Annotation Medio
  Appointment.subject Added Element   Alto
  Appointment.participant.actor Type Reference: Added Target Types Group, CareTeam Bajo
CarePlan CarePlan.basedOn Type Reference: Added Target Types ServiceRequest, RequestOrchestration, NutritionOrder   Bajo
  CarePlan.intent Add code directive Bajo
  CarePlan.custodian Renamed from author to custodian Medio
  CarePlan.addresses Type changed from Reference(Condition) to CodeableReference Medio
  CarePlan.activity.performedActivity Added Element CarePlan.activity.outcomeCodeableConcept
CarePlan.activity.outcomeReference
Alto
  CarePlan.activity.plannedActivityReference Renamed from reference to plannedActivityReference CarePlan.activity.detail Medio
  Type Reference: Added Target Types RequestOrchestration, ImmunizationRecommendation, SupplyRequest Bajo
  Type Reference: Removed Target Type RequestGroup Bajo
Immunization Immunization.performer.actor Type Reference: Added Target Types Patient, RelatedPerson   Bajo
  Immunization.reason Added Element Immunization.reasonCode
Immunization.reasonReference
Alto
DiagnosticReport DiagnosticReport.status Add code modified   Bajo
  DiagnosticReport.subject Type Reference: Added Target Types Organization, Practitioner, Medication, Substance, BiologicallyDerivedProduct Bajo
  DiagnosticReport.note Added Element   Alto
  DiagnosticReport.supportingInfo Added Element   Alto
  DiagnosticReport.supportingInfo.type Added Mandatory Element   Alto
  DiagnosticReport.supportingInfo.reference Added Mandatory Element   Alto
  DiagnosticReport.media.link Type Reference: Added Target Type DocumentReference Bajo
  Type Reference: Removed Target Type Media Bajo
  DiagnosticReport.conclusion Type changed from string to markdown Medio
DocumentReference DocumentReference.basedOn Added Element DocumentReference.context.related Alto
  DocumentReference.docStatus Add codes registered, partial, corrected, appended, cancelled, deprecated, unknown Medio
  DocumentReference.subject Type Reference: Added Target Type Resource Bajo
  Type Reference: Removed Target Types Patient, Practitioner, Group, Device Bajo
  DocumentReference.author Type Reference: Added Target Type CareTeam Bajo
  DocumentReference.description Type changed from string to markdown Medio
Condition Condition.clinicalStatus Min Cardinality changed from 0 to 1   Medio
  Add code unknown Bajo
  Condition.category Remove Binding http://hl7.org/fhir/ValueSet/condition-category (extensible) Medio
  Condition.participant Added Element   Alto
  Condition.participant.actor Added Mandatory Element Condition.recorder
Condition.asserter
Alto
  Condition.evidence Type changed from BackboneElement to CodeableReference Medio
Observation Observation.subject Type Reference: Added Target Types Organization, Procedure, Practitioner, Medication, Substance, BiologicallyDerivedProduct, NutritionProduct   Bajo
  Observation.value[x] Add Types Attachment, Reference(MolecularSequence) Bajo
  Observation.bodyStructure Added Element   Alto
  Observation.component.value[x] Add Types Attachment, Reference(MolecularSequence)   Bajo
Organization Organization.contact Type changed from BackboneElement to ExtendedContactDetail   Alto
  Organization.telecom Deleted (-> Use contact.telecom to provide context of use)   Alto
  Organization.address Deleted (-> Use contact.address to provide context of use)   Alto
Patient Patient.communication.language Change binding strength from preferred to required   Medio
  Change value set from Common Languages to All Languages Medio
  Change max value set from All Languages to none Medio
Practitioner Practitioner.communication Type changed from CodeableConcept to BackboneElement   Medio
  Remove Binding http://hl7.org/fhir/ValueSet/languages (preferred), max = http://hl7.org/fhir/ValueSet/all-languages Medio
  Practitioner.communication.language Added Mandatory Element   Alto
  Practitioner.communication.preferred Added Element   Alto
PractitionerRole PractitionerRole.contact Added Element   Alto
  PractitionerRole.characteristic Added Element   Alto
  PractitionerRole.communication Added Element   Alto
Location Location.description Type changed from string to markdown   Medio
  Location.contact Added Element Location.telecom Alto
  Location.form Renamed from physicalType to form Medio
  Location.characteristic Added Element   Alto
  Location.virtualService Added Element   Alto
Medication Medication.doseForm Added Element Form Alto
  Medication.ingredient.item Renamed from item[x] to item Medio
  Add Type CodeableReference Bajo
  Remove Types CodeableConcept, Reference(Substance | Medication) Bajo
MedicationAdministration MedicationAdministration.category Max Cardinality changed from 1 to *   Bajo
  MedicationAdministration.medication Renamed from medication[x] to medication   Alto
  Add Type CodeableReference Medio
  Remove Types CodeableConcept, Reference(Medication) Medio
  MedicationAdministration.occurence[x] Added Mandatory Element   Alto
  MedicationAdministration.recorded Added Element   Alto
  MedicationAdministration.performer.actor Type changed from Reference(Practitioner | PractitionerRole | Patient | RelatedPerson | Device) to CodeableReference Bajo
  MedicationAdministration.reason Added Element MedicationAdministration.reasonCode
MedicationAdministration.reasonReference
Alto
  MedicationAdministration.device Type changed from Reference(Device) to CodeableReference Medio
MedicationStatement MedicationStatement.status Remove codes active, completed, intended, stopped, on-hold, unknown, not-taken   Bajo
  Add codes recorded, draft Bajo
  MedicationStatement.category Max Cardinality changed from Alto to * Bajo
  MedicationStatement.medication Renamed from medication[x] to medication   Alto
  Add Type CodeableReference Medio
  Remove Types CodeableConcept, Reference(Medication) Medio
  MedicationStatement.effective[x] Add Type Timing   Alto
  MedicationStatement.reason Added Element MedicationStatement.reasonCode
MedicationStatement.reasonReference
Alto
Procedure Procedure.category Max Cardinality changed from Alto to *   Bajo
  Procedure.subject Type Reference: Added Target Types Device, Practitioner, Organization, Location Bajo
  Procedure.occurrence[x] Added Element   Alto
  Procedure.performer.actor Added Element   Alto
  Procedure.reason Type changed from CodeableConcept to CodeableReference Procedure.asserter
Procedure.reasonCode
Medio
Task Task.statusReason Type changed from CodeableConcept to CodeableReference   Medio
  Task.doNotPerform Added Element   Alto
  Task.requestedPeriod Added Element   Alto
  Task.requestedPerformer Added Element Task.performerType Alto
  Task.owner Type Reference: Removed Target Types HealthcareService, Device Bajo
  Task.performer Added Element   Alto
  Task.performer.function Added Element   Alto
  Task.performer.actor Added Mandatory Element   Alto
  Task.reason Added Element Task.reasonCode
Task.reasonReference
Alto
  Task.input.value[x] Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta Bajo
  Remove Type Contributor Bajo
  Task.output.value[x] Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta Bajo
  Remove Type Contributor Bajo
FamilyMemberHistory FamilyMemberHistory.sex Change value set from http://build.fhir.org/valueset-administrative-gender.html to AdministrativeGender   Medio
  FamilyMemberHistory.participant Added Element   Alto
  FamilyMemberHistory.participant.function Added Element   Alto
  FamilyMemberHistory.participant.actor Added Mandatory Element   Alto
  FamilyMemberHistory.reason Added Element FamilyMemberHistory.reasonCode
FamilyMemberHistory.reasonReference
Alto
  FamilyMemberHistory.procedure Added Element   Alto
  FamilyMemberHistory.procedure.code Added Mandatory Element   Alto
  FamilyMemberHistory.procedure.outcome Added Element   Alto
  FamilyMemberHistory.procedure.contributedToDeath Added Element   Alto
  FamilyMemberHistory.procedure.performed[x] Added Element   Alto
  FamilyMemberHistory.procedure.note Added Element   Alto
Goal Goal.continuous Added Element   Alto
  Goal.source Renamed from expressedBy to source Medio
  Type Reference: Added Target Type CareTeam Bajo
  Goal.addresses Type Reference: Added Target Types MedicationRequest, Procedure Bajo
  Goal.outcome Added Element Goal.outcomeCode
Goal.outcomeReference
Alto
Encounter Encounter.status Remove codes arrived, triaged, onleave, finished   Bajo
  Add codes on-hold, discharged, completed, discontinued Bajo
  Encounter.class Min Cardinality changed from alt to 0 Bajo
  Max Cardinality changed from alt to * Bajo
  Type changed from Coding to CodeableConcept Medio
  Remove Binding http://terminology.hl7.org/ValueSet/vbaix-ActEncounterCode (extensible) Medio
  Encounter.serviceType Max Cardinality changed from alt to * Bajo
  Type changed from CodeableConcept to CodeableReference Medio
  Encounter.plannedStartDate Added Element   Alto
  Encounter.plannedEndDate Added Element   Alto
  Encounter.reason Renamed from reasonCode to reason Medio
  Type changed from CodeableConcept to BackboneElement Medio
  Encounter.reason.use Added Element   Alto
  Encounter.reason.value Added Element   Alto
  Encounter.participant.actor Renamed from individual to actor Medio
  Type Reference: Added Target Types Patient, Group, Device, HealthcareService Bajo
  Encounter.diagnosis.condition Min Cardinality changed from 1 to 0 Bajo
  Max Cardinality changed from 1 to * Bajo
  Type changed from Reference(Condition | Procedure) to CodeableReference Medio
  Encounter.diagnosis.use Max Cardinality changed from 1 to * Bajo
  Encounter.location.form Renamed from physicalType to form   Medio
Endpoint Endpoint.status Remove code test   Bajo
  Endpoint.connectionType Max Cardinality changed from Alto to * Bajo
  Type changed from Coding to CodeableConcept Medio
  Remove Binding http://hl7.org/fhir/ValueSet/endpoint-connection-type (extensible) Medio
  Endpoint.description Added Element   Alto
Extension Extension.url Type changed from string to uri   Medio
  Extension.value[x] Add Types integer64, CodeableReference, RatioRange, Availability, ExtendedContactDetail, Meta Bajo
    Remove Type Contributor   Bajo
Reference Reference.type Change code system for extensibly bound codes from http://hl7.org/fhir/resource-types to http://hl7.org/fhir/fhir-types   Medio

HTTP Errors

L’API FHIR es una API RESTful basada en el protocolo HTTP, HTTP define unos códigos de error estándar devueltos relacionados con FHIR (además de los errores HTTP normales relacionados con problemas de seguridad, encabezado y negociación de tipo de contenido):

  • 201 Creado: código de éxito, el recurso se ha creado
  • 202 Aceptado: el servidor no desea comprometerse con el resultado de la creación; consulte el Patrón de solicitud de interacción asíncrona para obtener más información.
  • 400 Solicitud incorrecta: el recurso no se pudo analizar o no cumplió con las reglas básicas de validación de FHIR
  • 401 No autorizado: se requiere autorización para la interacción intentada
  • 404 No encontrado: el tipo de recurso no es compatible o no es un punto final de FHIR
  • 405 Método no permitido: el servidor no admite el método solicitado para esta solicitud (GET o POST) y el cliente debe volver a intentarlo con el otro método
  • 409 Conflicto/412 Precondición fallida: gestión de conflictos de versiones
  • 422 Entidad no procesable: el recurso propuesto infringió los perfiles de FHIR aplicables o las reglas de negocio del servidor. Esto debe ir acompañado de un recurso OperationOutcome que proporcione detalles adicionales.

En general, si una instancia no cumple con las restricciones documentadas en la Declaración de capacidad, la respuesta debe ser un 400, mientras que, si la instancia no cumple con otras reglas de negocio no descritas externamente, la respuesta sería un error 422. En la práctica, los servidores también pueden devolver errores 5xx en estos casos sin que se los considere no conformes. Si el fallo se produce en un nivel de procesamiento compatible con FHIR, la respuesta HTTP DEBE ir acompañada de un OperationOutcome.

Simplemente, se informa en este apartado para tener a mano las definiciones de los errores que pueden surgir en la publicación de información a la red de ÚNICAS.

También puede ser que en la red ÚNICAS se personalicen algunas respuestas de errores definiendo OperationOutcome, si fuera el caso se irá añadiendo en esta misma guía de implementación. Para más información sobre los OperationOutcome: https://build.fhir.org/operationoutcome.html.

Testing FHIR

En la guía de implementación ÚNICAS no se ha especificado de momento ningún entorno de testing, pero si en algún momento fuera necesario hacer pruebas se pueden identificar teniendo en cuenta las siguientes guidelines de FHIR: https://build.fhir.org/testing.html#howTos.

Existen diversas herramientas disponibles para los evaluadores de soluciones que desean comprobar la conformidad de las implementaciones de FHIR con la especificación FHIR. Puede encontrar una lista actualizada de estas herramientas aquí: https://confluence.hl7.org/spaces/FHIR/pages/35718869/Testing+Platforms.

Financial

Queda fuera del alcance de la red de ÚNICAS la gestión financiera de las derivaciones o interconsulta. Las gestiones a realizar por las Comunidades Autónomas para la atención de los pacientes en CSUR ubicados en otra Comunidad Autónoma se efectuarán siempre a través del Sistema de Información del Fondo de Cohesión (SIFCO).

Por lo que por ahora la red de ÚNICAS no plantea el uso de recursos FHIR como:

Account EnrollmentRequest PaymentNotice
Contract EnrollmentResponse PaymentReconciliation
Coverage Claim ExplanationOfBenefit
CoverageEligibilityRequest ClaimResponse VisionPrescription
CoverageEligibilityResponse


Modelo FHIR del Proceso ÚNICAS

Para más información consultar: https://build.fhir.org/financial-module.html.

ÚNICAS está impulsado por el Consejo Interterritorial del Sistema Nacional de Salud, y financiado con fondos Next Generation de la Unión Europea, en el marco del Plan de Recuperación, Transformación y Resiliencia del Gobierno de España. El Ministerio de Sanidad ejerce la coordinación del proyecto, y Cataluña lidera la parte del desarrollo de los activos tecnológicos para su implementación.

null