|
6 min de lectura
|

Extracción basada en plantillas: una extracción más inteligente comienza con una plantilla

Resumir este artículo con:
ChatGPTPerplexityClaudeGrok

Introducción

Los cuestionarios digitales se utilizan ampliamente en el ámbito sanitario para recopilar datos estructurados. Controlan lo que se pregunta y mantienen la coherencia de las respuestas.

El problema comienza tras el envío. Un QuestionnaireResponse almacena las respuestas en una estructura anidada y específica del formulario. Si bien esta estructura es ideal para la captura de datos, no está optimizada para consultas, interoperabilidad ni análisis.

La extracción de datos resuelve este problema. Permite varias capacidades críticas: interoperabilidad entre distintos sistemas sanitarios, análisis de datos e integración de datos en tiempo real. Los datos procedentes de múltiples fuentes pueden consolidarse sin quedar atrapados en un único sistema ni en formatos de código QR que limitan su procesamiento.

FHIR recomienda utilizar Questionnaires para capturar datos sin procesar y, a continuación, convertir el QuestionnaireResponse en recursos FHIR estándar, como Observations o MedicationStatements. Una vez transformados, los datos pueden buscarse, compartirse y utilizarse en distintos sistemas.

El desafío de la extracción de datos

Los Questionnaires de FHIR destacan en la captura de datos estructurados. Sin embargo, las instancias finales de QuestionnaireResponse son difíciles de buscar, comparar o integrar con otros recursos FHIR. El reto principal consiste en convertir estas respuestas en recursos FHIR estándar (por ejemplo, Observations, Patient, Condition) para su uso fluido en documentos, mensajes o APIs REST.

La guía SDC ofrece cuatro mecanismos de extracción, cada uno adaptado a casos de uso específicos en cuanto a complejidad, control y escalabilidad. En este artículo, hablaremos únicamente de tres de ellos y omitiremos la extracción basada en StructureMap. Puede obtener más información al respecto aquí.

Extracción basada en Observation

Más adecuada para: evaluaciones clínicas sencillas o encuestas que se corresponden directamente con Observations individuales.

  • Úsela cuando las preguntas se alineen 1:1 con valores codificados (por ejemplo, LOINC/SNOMED) y respuestas (por ejemplo, PHQ-9, constantes vitales como el peso o la presión arterial).
  • Rápida y ligera: no requiere mapeo personalizado.
  • Limitación: genera únicamente Observations; no es adecuada para salidas complejas o con múltiples recursos.

Extracción basada en Definition

Más adecuada para: formularios estructurados diseñados para reflejar perfiles FHIR o recursos básicos.

  • Ideal cuando la disposición del cuestionario refleja la estructura del recurso de destino (por ejemplo, datos demográficos del paciente → Patient, lista de medicación → MedicationStatement).
  • Gestiona automáticamente grupos repetidos, elementos backbone, slicing y restricciones de perfil (valores fijos, campos obligatorios).
  • Limitaciones: la estructura del formulario está estrechamente acoplada a la estructura del recurso.

Extracción basada en plantillas

Más adecuada para: formularios que producen múltiples recursos vinculados

La extracción basada en plantillas es el mecanismo más reciente incorporado a la especificación SDC (tras los métodos basados en Observation, Definition y StructureMap). Utiliza recursos FHIR contenidos o plantillas Bundle anotadas con expresiones FHIRPath.

Se introdujo específicamente para superar la complejidad y los desafíos de gobernanza que los implementadores encontraban frecuentemente con los métodos anteriores, y se está convirtiendo rápidamente en la opción preferida en muchos proyectos.

  • Admite bucles y condicionales mediante FHIRPath (por ejemplo, incluir el identificador solo si se ha respondido; repetir componentes del nombre).
  • Control total sobre el contenido estático y repetitivo.
  • Mayor legibilidad y menor barrera técnica.
  • Utiliza plantillas de recursos contenidos, independientes de perfiles externos.

Qué es la extracción basada en plantillas en SDC

La extracción basada en plantillas es uno de los cuatro mecanismos de la especificación FHIR SDC para transformar un QuestionnaireResponse completado en uno o más recursos FHIR o en un Bundle de transacción completo.

Ofrece un enfoque equilibrado:

  • Más expresiva que la extracción basada en Observation.
  • Mucho más fácil de crear y comprender que la extracción basada en StructureMap.
  • Más explícita y visual que la extracción basada en Definition.

Los equipos la eligen cuando necesitan un control claro sobre la salida y una lógica moderada —como grupos repetidos, condicionales, valores fijos y perfiles— sin necesidad de aprender el lenguaje de mapeo de FHIR.

Idea central

Se insertan recursos de plantilla ya preparados (o un Bundle de plantilla) directamente dentro del Questionnaire como recursos contenidos. Estas plantillas ya contienen el contenido repetitivo necesario: perfiles meta, códigos fijos, extensiones, narrativa, etc.

A continuación, se anotan partes de estas plantillas con pequeñas expresiones FHIRPath que definen cómo se populan los datos:

  • Rellenar un campo con la respuesta a una pregunta específica.
  • Repetir una sección una vez por cada respuesta que proporcione el usuario.
  • Eliminar un elemento si el usuario dejó la pregunta en blanco.

Cuando se ejecuta la operación $extract, el motor copia las plantillas, evalúa las expresiones frente al QuestionnaireResponse, repite o elimina elementos según las instrucciones y devuelve un Bundle de transacción listo para enviar.

Cómo funciona en la práctica

En Aidbox Form Builder, el proceso es visual: simplemente se diseña el formulario y, a continuación, se colocan plantillas de recursos ya preparadas en los grupos exactos donde residen los datos. Aidbox repite automáticamente las plantillas, resuelve las referencias, aplica los perfiles y devuelve un Bundle de transacción perfecto.

Construyamos un formulario completo de registro de alergias que extraiga:

  • Patient
  • Un AllergyIntolerance por cada alergia vinculada a ese paciente

Paso 1 – Crear el Questionnaire visible para el usuario (Historial de alergias)

Aidbox Form Builder → Nuevo Questionnaire → Título: «Allergy History»

Estructura exacta del formulario (lo que ven los clínicos):

  • Cabecera del paciente

    • Nombre completo
    • Fecha de nacimiento
    • Sexo
  • Alergias

    • Alérgeno
    • Tipo de alergia
    • Reacción
    • Gravedad
    • Criticidad

Paso 2 – Definir las plantillas de extracción dentro del grupo Patient

Añada una plantilla de recurso Patient como recurso contenido.

Paso 3 – Rellenar las plantillas con valores

Asigne los campos del formulario a los elementos de Patient mediante expresiones FHIRPath.

Paso 4 – Añadir la plantilla para la extracción de AllergyIntolerance

Añada una plantilla de recurso AllergyIntolerance dentro del grupo de Alergias repetido, de modo que se cree un recurso por cada alergia registrada.

Paso 5 – Rellenar la plantilla con valores y vincularla al Patient

También puede poblar campos de la plantilla con valores estáticos, por ejemplo seleccionando una opción de un ValueSet cuando esta permanece constante en todos los recursos.

Paso 6 – Probar la extracción

Todo queda automáticamente vinculado, perfilado y listo para enviarse mediante POST.

Conclusión

La extracción basada en plantillas ofrece un equilibrio práctico entre flexibilidad, legibilidad y mantenibilidad dentro de la especificación FHIR SDC. Resulta especialmente útil cuando no se dispone de experiencia completa en StructureMap o cuando los autores necesitan un control directo sobre la estructura de los recursos FHIR resultantes.

Al insertar plantillas de recursos o Bundle directamente dentro del Questionnaire (como recursos contenidos) y anotarlas con las extensiones templateExtractContext y templateExtractValue basadas en FHIRPath simples, los autores pueden definir con precisión:

  • qué elementos aparecen únicamente cuando se proporcionan respuestas pertinentes,
  • cómo los elementos repetidos generan múltiples elementos backbone o recursos completos,
  • valores predeterminados o fijos, detalles de conformidad con perfiles y metadatos a nivel de Bundle,
  • lógica de inclusión/exclusión condicional y comportamiento de bucle, todo ello sin escribir una sola línea de script de mapeo.

Este método proporciona claridad visual e inmediata posibilidad de prueba, al tiempo que admite transformaciones complejas, incluidos múltiples recursos, referencias cruzadas entre recursos mediante allocateId, secciones condicionales y Bundles de transacción completos. Dado que la estructura de salida se define de forma explícita en la plantilla, los implementadores pueden validar los resultados esperados en tiempo de diseño, lo que reduce drásticamente los errores en tiempo de ejecución en comparación con las alternativas más procedimentales.

Para los equipos que desean una creación de recursos robusta, reutilizable y conforme a perfiles a partir de formularios, pero que quieren evitar la curva de aprendizaje de StructureMap o la rigidez del mapeo puramente basado en Definition, la extracción basada en plantillas se destaca como la opción de alta capacidad más accesible del conjunto de herramientas SDC.

Véase también: SQL on FHIR: ¿Qué es una ViewDefinition?.

Compartir este artículo
Comments
Comments
Sign in
Loading comments...
Subscribe to our blog

Get the latest articles on FHIR, interoperability, and healthcare IT.