Ú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
Basándose en las necesidades funcionales de la red ÚNICAS se han creado los recursos FHIR correspondientes para adaptarse al contexto de uso específico del proyecto.
Los recursos FHIR se diseñan teniendo en cuenta la regla 80/20: centrarse en el 20 % de los requisitos que satisfacen el 80 % de las necesidades de interoperabilidad. Para ello, los recursos se diseñan para satisfacer los requisitos de datos generales o comunes de diversos casos de uso.
Sobre esta base, FHIR permite la adopción de recursos genéricos adaptados a los requisitos específicos de cada caso de uso. Como resultado, ÚNICAS ha personalizado y restringido los recursos FHIR necesarios según los diferentes casos de uso.
Esta página proporciona el detalle de los componentes FHIR definidos como parte de esta guía de implementación.
Este es el volumen de creaciones específicas para ÚNICAS que hemos realizado:
Recurso FHIR | Count |
---|---|
StructureDefiniton | 34 |
Extensions | 5 |
ValueSets | 35 |
CodeSystems | 8 |
ConcepMap | 17 |
CapabilityStatements | 1 |
Asimismo, hemos realizado ejemplos de mensajes FHIR que cumplen con las especificaciones de ÚNICAS, cuyo volumen es el siguiente:
Ejemplo | Count |
---|---|
Bundles | 48 |
Patients | 1 |
Encounters | 1 |
CarePlans | 1 |
DiagnosticReports | 1 |
DocumentReferences | 1 |
Goals | 1 |
Organizations | 1 |
Practitioners | 1 |
PractitionerRoles | 1 |
Tasks | 1 |
Los ejemplos de Bundle y paciente se pueden consultar en el apartado Ejemplos Mensajería HL7 FHIR para SSII de las CCAA.
Por otro lado, los ejemplos relacionados con el gestor de procesos dentro de la plataforma ÚNICAS 360 están disponibles en el apartado Ejemplos de Mensajería HL7 FHIR para NA y NC de ÚNICAS.
Estos definen especificaciones personalizadas de los recursos FHIR y constraints para los sistemas que se ajustan a esta guía de implementación.
En ÚNICAS se ha perfilado los siguientes recursos:
Las Extension sirven para crear elementos que nos faltan en ciertos recursos. En ÚNICAS se han creado los siguientes:
También se han reutilizado dos extensiones creadas en HL7 FHIR:
Los ValueSets definen los conjuntos de valores posibles acorde con esta guía de implementación. En ÚNICAS se han definido los siguientes:
Los CodeSystem definen la codificación de los conjuntos de valores posibles acorde con esta guía de implementación. En ÚNICAS se han creado los siguientes:
Los ejemplos muestran la estructura del mensaje y cómo se relacionan con los datos asociados al gestor de procesos dentro de la plataforma ÚNICAS 360.
Los SearchParameters definen la sintaxis y propiedades para realizar las búsquedas en el servidor FHIR mediante la API RESTful. También se utilizan para personalizar búsquedas concretas para la red de ÚNICAS.
El equipo funcional de ÚNICAS empezó una definición de consultas, que la plataforma ÚNICAS debería contemplar para la consulta de toda la información guardada en formato FHIR.
Para definir que consultas podrían faltar de las predefinidas por FHIR se indicó la siguiente información:
Estas son las consultas estándar que ofrece FHIR para cada recurso utilizado en ÚNICAS. Pueden ser simples, utilizando un único parámetro, o más complejas, combinando múltiples parámetros.
Nombre Recurso Fhir Utilizado En Únicas | NombreSearchParameter | ExpressionSearchParam | TypeElementSearchParam | NOMBRE_QUERYS_PorDefectoFHIR |
---|---|---|---|---|
Bundle | composition | Bundle.entry[0].resource as Composition | reference | Consultar un mensaje por la cabecera del informe. |
identifier | Bundle.identifier | token | Consultar un mensaje por el identificador. | |
timestamp | Bundle.timestamp | date | Consultar un mensaje por la fecha que se ha enviado mensaje. | |
type | Bundle.type | token | Consultar un mensaje cuyo tipo sea "transaction". | |
DocumentReference | identifier | DocumentReference.identifier | token | Consultar un informe por el identificador. |
status | DocumentReference.status | token | Consultar un informe por el estado de recurso (current | superseded | entered-in-error). | |
doc-status | DocumentReference.docStatus | token | Consultar un informe por el estado del documento ( registered | partial | preliminary | final | amended | corrected | appended | cancelled | entered-in-error | deprecated | unknown). | |
type | DocumentReference.type | token | Consultar un informe no estructurado por el tipo de documento. | |
category | DocumentReference.category | token | Consultar un informe por el evento y/o actividad asociada. | |
patient | DocumentReference.subject.where(resolve() is Patient) | reference | Consultar un informe por el identificador del paciente. | |
contenttype | DocumentReference.content.attachment.contentType | token | Consultar un informe por el tipo de formato de documento (application/pdf | multipart/x-hl7-cda-level-one). | |
creation | DocumentReference.content.attachment.creation | date | Consultar un informe por la fecha de creación. | |
Patient | identifier | Patient.identifier | token | Consultar un paciente por su identificador. |
name | Patient.name | string | Consultar un paciente por su nombre o apellidos. | |
family | Patient.name.family | string | Consultar un paciente por los apellidos de su nombre. | |
given | Patient.name.given | string | Consultar un paciente por su nombre. | |
telecom | Patient.telecom | token | Consultar un paciente por su información de contacto, puede ser de número de teléfono y/o correo. | |
phone | Patient.telecom.where(system='phone') | token | Consultar un paciente por su número de teléfono. | |
Patient.telecom.where(system='email') | token | Consultar un paciente por su dirección de correo electrónico (Patient.telecom.where(system='email')). | ||
gender | Patient.gender | token | Consultar un paciente por su género. | |
birthdate | Patient.birthDate | date | Consultar un paciente por su fecha de nacimiento. | |
address | Patient.address | string | Consultar un paciente por su dirección. | |
address-city | Patient.address.city | string | Consultar un paciente por la ciudad de su dirección. | |
address-country | Patient.address.country | string | Consultar un paciente por el país de su dirección. | |
address-postalcode | Patient.address.postalCode | string | Consultar un paciente por el código postal de su dirección. | |
Organization | identifier | Organization.identifier | Organization.qualification.identifier | token | Consultar un centro por su identificador. |
name | Organization.name | Organization.alias | string | Consultar un centro por su nombre. | |
address | Organization.contact.address | string | Consultar un centro por su dirección. | |
address-city | Organization.contact.address.city | string | Consultar un centro por la ciudad de su dirección. | |
address-country | Organization.contact.address.country | string | Consultar un centro por el país de su dirección. | |
address-postalcode | Organization.contact.address.postalCode | string | Consultar un centro por el código postal de su dirección. | |
endpoint | Organization.endpoint (Endpoint) | reference | Consultar un centro por la referencia de sistema de información. | |
Endpoint | identifier | Endpoint.identifier | token | Consultar un sistema de información por el identificador. |
status | Endpoint.status | token | Consultar un sistema de información por el estado (active | suspended | error | off | entered-in-error | test). | |
connection-type | Endpoint.connectionType | token | Consultar un sistema de información por el tipo de conexión. | |
name | Endpoint.name | string | Consultar un sistema de información por su nombre. | |
AllergyIntolerance | identifier | AllergyIntolerance.identifier | token | Consultar una alergia por el identificador. |
clinical-status | AllergyIntolerance.clinicalStatus | token | Consultar una alergia por el estado de alergia (active | inactive | resolved). | |
verification-status | AllergyIntolerance.verificationStatus | token | Consultar una alergia por el nivel de certeza (unconfirmed | presumed | confirmed | refuted | entered-in-error). | |
type | AllergyIntolerance.type | token | Consultar una alergia por el tipo de reacción (allergy | intolerance). | |
category | AllergyIntolerance.category | token | Consultar una alergia por la clasificación de la sustancia (food | medication | environment | biologic). | |
criticality | AllergyIntolerance.criticality | token | Consultar una alergia por la criticidad (low | high | unable-to-assess). | |
code | AllergyIntolerance.code | AllergyIntolerance.reaction.substance | token | Consultar una alergia por el código de principio activo. | |
patient | AllergyIntolerance.patient (Patient) | reference | Consultar una alergia por el identificador del paciente. | |
participant | AllergyIntolerance.participant.actor (Practitioner, Organization, CareTeam, Device, Patient, PractitionerRole, RelatedPerson) | reference | Consultar una alergia por el identificador de profesional sanitario. | |
last-date | AllergyIntolerance.lastOccurrence | date | Consultar una alergia por la fecha de finalización de la alergia. | |
manifestation-code | AllergyIntolerance.reaction.manifestation.concept | token | Consultar una alergia por la manifestación clínica. | |
Appointment | identifier | Appointment.identifier | token | Consultar una cita por el identificador. |
status | Appointment.status | token | Consultar una cita por el estado (proposed | pending | booked | arrived | fulfilled | cancelled | noshow | entered-in-error | checked-in | waitlist). | |
service-category | Appointment.serviceCategory | token | Consultar una cita por el tipo de servicio asistencial. | |
service-type | Appointment.serviceType.concept | token | Consultar una cita por el canal de cita. | |
reason-code | Appointment.reason.concept | token | Consultar una cita por el motivo de consulta. | |
date | (start | requestedPeriod.start).first() | date | Consultar una cita por la fecha y hora de inicio de la cita programada | |
patient | Appointment.participant.actor.where(resolve() is Patient) | Appointment.subject.where(resolve() is Patient) (Patient) | reference | Consultar una cita por el identificador del paciente. | |
actor | Appointment.participant.actor (Practitioner, Group, CareTeam, Device, Patient, HealthcareService, PractitionerRole, RelatedPerson, Location) | reference | Consultar una cita por la localización y servicio asistencial donde se realizó la cita. | |
practitioner | Appointment.participant.actor.where(resolve() is Practitioner) (Practitioner) | reference | Consultar una cita por el identificador de profesional sanitario. | |
Location | identifier | Location.identifier | token | Consultar una localización y servicio asistencial donde se realizó la cita por el identificador. |
status | Location.status | token | Consultar una localización y servicio asistencial donde se realizó la cita por el estado (active | suspended | inactive). | |
name | Location.name | Location.alias | string | Consultar una localización y servicio asistencial donde se realizó la cita por el nombre de lugar. | |
organization | Location.managingOrganization | reference | Consultar una localización y servicio asistencial donde se realizó la cita por el identificador del centro. | |
DiagnosticReport | identifier | DiagnosticReport.identifier | token | Consultar un diagnóstico por el identificador. |
status | DiagnosticReport.status | token | Consultar un diagnóstico por el estado (registered | partial | preliminary | modified | final | amended | corrected | appended | cancelled | entered-in-error | unknown). | |
category | DiagnosticReport.category | token | Consultar un diagnóstico por la clasificación de diagnóstico. | |
code | DiagnosticReport.code | token | Consultar un diagnóstico por el código de diagnóstico. | |
patient | DiagnosticReport.subject.where(resolve() is Patient) (Patient) | reference | Consultar un diagnóstico por el identificador del paciente. | |
date | DiagnosticReport.effective.ofType(dateTime) | DiagnosticReport.effective.ofType(Period) | date | Consultar un diagnóstico por la fecha del diagnóstico. | |
performer | DiagnosticReport.performer (Practitioner, Organization, CareTeam, PractitionerRole) | reference | Consultar un diagnóstico por el identificador de profesional sanitario. | |
result | DiagnosticReport.result (Observation) | reference | Consultar un diagnóstico por el criterio de sospecha. | |
conclusion | DiagnosticReport.conclusionCode | token | Consultar un diagnóstico por el criterio de sospecha. | |
Immunization | identifier | Immunization.identifier | token | Consultar una inmunización por el identificador. |
status | Immunization.status | token | Consultar una inmunización por el estado (completed | entered-in-error | not-done). | |
vaccine-code | Immunization.vaccineCode | token | Consultar una inmunización por la vacuna administrada. | |
lot-number | Immunization.lotNumber | string | Consultar una inmunización por el número de lote. | |
patient | Immunization.patient (Patient) | reference | Consultar una inmunización por el identificador del paciente. | |
date | (Immunization.occurrence.ofType(dateTime)) | date | Consultar una inmunización por la fecha de administración. | |
performer | Immunization.performer.actor (Practitioner, Organization, Patient, PractitionerRole, RelatedPerson) | reference | Consultar una inmunización por el identificador del profesional sanitario. | |
Medication | identifier | Medication.identifier | token | Consultar una medicación por el identificador. |
code | Medication.code | token | Consultar una medicación por el fármaco. | |
MedicationAdministration | identifier | MedicationAdministration.identifier | token | Consultar una prescripción hospitalaria por el identificador. |
status | MedicationAdministration.status | token | Consultar una prescripción hospitalaria por el estado (in-progress | not-done | on-hold | completed | entered-in-error | stopped | unknown). | |
medication | MedicationAdministration.medication.reference | reference | Consultar una prescripción hospitalaria por la referencia de la medicación. | |
code | MedicationAdministration.medication.concept | token | Consultar una prescripción hospitalaria por el fármaco. | |
patient | MedicationAdministration.subject.where(resolve() is Patient) (Patient) | reference | Consultar una prescripción hospitalaria por el identificador del paciente. | |
date | MedicationAdministration.occurence.ofType(dateTime) | MedicationAdministration.occurence.ofType(Period) | date | Consultar una prescripción hospitalaria por el periodo de tratamiento | |
performer | MedicationAdministration.performer.actor.reference | reference | Consultar una prescripción hospitalaria por el identificador de profesional sanitario. | |
MedicationStatement | identifier | MedicationStatement.identifier | token | Consultar una prescripción activa hospitalaria por el identificador. |
status | MedicationStatement.status | token | Consultar una prescripción activa hospitalaria por el estado (recorded | entered-in-error | draft). | |
medication | MedicationStatement.medication.reference | reference | Consultar una prescripción activa hospitalaria por la referencia de la medicación. | |
code | MedicationStatement.medication.concept | token | Consultar una prescripción activa hospitalaria por el fármaco. | |
patient | MedicationStatement.subject.where(resolve() is Patient) (Patient) | reference | Consultar una prescripción activa hospitalaria por el identificador del paciente. | |
effective | MedicationStatement.effective.ofType(dateTime) | MedicationStatement.effective.ofType(Period) | date | Consultar una prescripción activa hospitalaria por el periodo de tratamiento | |
source | MedicationStatement.informationSource (Practitioner, Organization, Patient, PractitionerRole, RelatedPerson) | reference | Consultar una prescripción activa hospitalaria por el identificador de profesional sanitario. |
A la espera de nuevos requisitos funcionales, como, por ejemplo: variables clínicas, etc.
DataSet | NOMBRE_QUERYS_PorDefectoFHIR | URL_QUERY_EXAMPLE_PorDefectoFHIR |
---|---|---|
Mensaje | Consultar un mensaje con un identificador X y la fecha de envío Y. | Conditional query from simple query sheet |
Mensaje | Consultar un mensaje con un tipo de documento X y un identificador del paciente Y. | Conditional query from simple query sheet |
Mensaje | Consultar los mensajes enviados en un período de tiempo X. | Conditional query from simple query sheet and prefixes |
Proceso ÚNICAS | Consultar un proceso relacionado con un identificador del paciente X y un identificador del centro Y. | Conditional query from simple query sheet |
Informe no estructurados | Consultar un informe X con un identificador del paciente Y y la fecha de creación Z. | Conditional query from simple query sheet |
Informe no estructurados | Consultar todos los informes de un identificador del paciente X. | Conditional query from simple query sheet |
Informe no estructurados | Consultar todos los informes X de red ÚNICAS. | Conditional query from simple query sheet |
Informe no estructurados | Consultar todos los informes de red ÚNICAS. | Conditional query from simple query sheet |
Informe no estructurados | Consultar todos los informes del identificador de paciente X con la fecha de publicación entre Y y Z. | Conditional query from simple query sheet and prefixes |
Paciente | Consultar los pacientes cuyo primer apellido sea X. | Query with search control parameter |
Paciente | Consultar los pacientes nacidos entre X años y con un diagnóstico de enfermedad minoritaria de tipo Y. | Conditional query from simple query sheet and prefixes |
Paciente | Consultar todos los pacientes de la red ÚNICAS con un diagnóstico de enfermedad minoritaria de tipo X. | Conditional query from simple query sheet |
Paciente | Consultar todos los pacientes de la red ÚNICAS con un diagnóstico de enfermedad minoritaria de tipo X en Y período (fecha inicio y fecha de fin). | Conditional query from simple query sheet and query with search control parameter |
Paciente | Consultar cuántos pacientes de la red ÚNICAS tienen un diagnóstico de tipo X. | Conditional query from simple query sheet and query with search control parameter |
Paciente | Consultar los identificadores de pacientes de la red ÚNICAS tienen un diagnóstico de tipo X. | Conditional query from simple query sheet and query with search control parameter |
Paciente | Consultar cuántos pacientes de la red ÚNICAS hay en la Comunidad Autónoma X. | Conditional query from simple query sheet |
Paciente | Consultar los identificadores de pacientes de la red ÚNICAS hay en la Comunidad Autónoma X. | Conditional query from simple query sheet and query with search control parameter |
Paciente | Consultar cuántos pacientes de la red ÚNICAS con un diagnóstico de tipo X hay en la Comunidad Autónoma Y. | Conditional query from simple query sheet and query with search control parameter |
Informe estructurados | Consultar un informe X con el identificador del paciente Y y fecha de creación Z. | Conditional query from simple query sheet |
Informe estructurados | Consultar todos los informes de un identificador de paciente X. | Conditional query from simple query sheet |
Informe estructurados | Consultar todos los informes X de red ÚNICAS. | Conditional query from simple query sheet |
Informe estructurados | Consultar todos los informes de red ÚNICAS. | Conditional query from simple query sheet |
Informe estructurados | Consultar todos los informes de un identificador de paciente X con la fecha de publicación entre Y y Z. | Conditional query from simple query sheet and prefixes |
Alergias | Consultar todas las alergias de un identificador de paciente X. | Conditional query from simple query sheet |
Cita agenda | Consultar todas las citas de un identificador de paciente X. | Conditional query from simple query sheet |
Cita agenda | Consultar las citas en un período de tiempo X. | Conditional query from simple query sheet and prefixes |
Immunizaciones | Consultar todas las inmunizaciones de un identificador del paciente X. | Conditional query from simple query sheet |
Diagnostico | Consultar todos los diagnósticos Y del identificador del paciente X. | Conditional query from simple query sheet |
Diagnostico | Consultar todos los diagnósticos con grado de sospecha Y de un identificador del paciente X. | Conditional query from simple query sheet |
Diagnostico | Consultar todos los diagnósticos de clasificación X de un identificador del paciente Y. | Conditional query from simple query sheet |
Diagnostico | Consultar todos los diagnósticos de tipo Y de un identificador del paciente X. | Conditional query from simple query sheet |
Prescripción hospitalaria | Consultar todos los medicamentos de prescripción hospitalaria de un identificador del paciente X. | Conditional query from simple query sheet |
Prescripción activa hospitalaria | Consultar todos los medicamentos de prescripción activa hospitalaria de un identificador del paciente X. | Conditional query from simple query sheet |
Paciente | Consultar todos los pacientes por genero X | Query with search control parameter |
HL7 FHIR permite definir consultas adaptadas a las necesidades específicas de ÚNICAS. Actualmente, estas consultas personalizadas están en proceso de definición. Si se considera necesario desarrollar consultas específicas adicionales para el proyecto, estas serán incluidas en esta apartado.
La búsqueda de recursos está definida por la API FHIR RESTful, para más información, consulte la especificación FHIR RESTful Search API.
En principio las consultas en la red de ÚNICAS se van a realizar desde la interficie de usario ÚNICAS 360 o desde el Canal ÚNICAS, por lo que los SSII de las CCAA no deberian preocuparse por la implementación de estas queries, va a ser el Management / Backoffice de cada Nodo Autonómico que va a tener que manejar estas queries para consultar la información FHIR de toda la red de ÚNICAS.
El recurso OperationOutcome es una colección de mensajes que incluye errores, advertencias e información, diseñada para proporcionar detalles sobre el resultado de un intento de operación en el sistema.
El recurso OperationOutcome se utiliza en las siguientes circunstancias:
El proyecto ÚNICAS está evaluando la posibilidad de personalizar los OperationOutcome. En caso de determinar que es necesario desarrollar OperationOutcome específicos adicionales para personalizar los mensajes de error, estos serán definidos e incorporados en este apartado.
Este recoge los siguientes componentes que definen las capacidades específicas que se espera que utilicen los diferentes tipos de sistemas para cumplir con esta guía de implementación. Se espera que los sistemas que cumplen con esta guía de implementación declaren conformidad con una o más de las siguientes declaraciones de configuración del servidor FHIR.
En ÚNICAS se han quitado algunas operaciones que pueden generar duplicidades y se han añadido las Extensiones, Profiles, ValueSets, CodeSystems, SearchParameters, OperationOutcomes, etc.