Generación de Modelos Lógicos FHIR a partir de arquetipos: Un paso necesario para no reinventar la rueda

Transformar arquetipos en perfiles sobre recursos específicos (como Observation o Questionnaire) puede ser útil para integraciones rápidas. Sin embargo, la mayoría de los recursos restantes no son tan genéricos y tienen semántica clínica incluída en los mismos, lo que normalmente requiere que sea un humano el que tome esas decisiones de si un elemento en origen es equivalente a un atributo FHIR o no.

En este caso, y para poder facilitar esta labor, lo que podemos hacer es generar Modelos Lógicos FHIR. Estos no están destinados a representar nuevos recursos, pero pueden utilizarse para representar cualquier arquetipo o plantilla de una manera que las herramientas FHIR puedan entender.
La principal diferencia en la generación de un logical model a definir un perfil es que típicamente la generación de un perfil se basa en generar la parte ‘diferencial’ de la StructureDefinition, mientras que para los Modelos Lógicos en realidad generamos la parte ‘instantánea’ de la StructureDefinition (esto es, se genera un calco de la estructura original).

Otra cosa interesante es que este proceso de transformación funciona independientemente del modelo de referencia del arquetipo o plantilla de entrada. Esto se debe a que el proceso se basa completamente en el Modelo de Objeto de Arquetipo (AOM).

Lo que esto significa es que este proceso puede generar Modelos Lógicos no solo a partir del Modelo de Referencia de Historia Clínica Electrónica (EHR) de openEHR, sino también del modelo demográfico de openEHR, ISO13606, HL7 CDA, o incluso CDISC ODM. En principio, la generación de arquetipos funciona para cualquier estructura estándar o local que se exprese como esquemas XML y tenga la noción de «bloque de construcción». El único desarrollo real necesario para admitir un nuevo modelo de referencia es definir un conjunto de equivalencias de tipos de datos.

El proceso es bastante sencillo:

  • Al igual que en la generación de otras StructureDefinition, primero se genera la parte de metadatos del Modelo Lógico a partir del arquetipo/plantilla.
  • Se recorren los nodos del arquetipo para generar el id correspondiente, la ruta, el texto breve, la definición y las ocurrencias mínimas/máximas. También se agregan otros atributos como mustSupport, isModifier y isSummary.
  • Las referencias internas del arquetipo se transforman en contentReference.
  • Para tipos de Elemento y superiores, su tipo se transforma en BackboneElement.
  • Los objetos de tipo Elemento y su tipo de dato correspondiente se fusionan como una sola entidad con el texto, descripción, etc., del Elemento y el tipo del tipo de dato transformado.
  • Las alternativas de tipo de dato se agregan a la ruta del elemento para crear rutas únicas. Probablemente se necesitaría un invariante para mostrar que en realidad son alternativas.

Todo este proceso se encuentra disponible en la versión de LinkEHR disponible online. Una versión online de la herramienta se encuentra disponible en openehr2fhir.veratech.es