Recientemente hemos añadido compatibilidad con el elemento repeat de la especificación SQL on FHIR —convirtiendo a Aidbox en el primer servidor FHIR en superar todas las pruebas del conjunto de pruebas de SQL on FHIR .

Este hito refleja nuestro trabajo continuo para facilitar la consulta, el análisis y la reutilización de datos clínicos estructurados, sin necesidad de transformaciones complejas ni lógica personalizada. SQL on FHIR tiende un puente entre el modelo de datos flexible de FHIR y la simplicidad de SQL, lo que permite a los equipos sanitarios extraer información directamente de sus datos FHIR.
¿Qué es el elemento repeat y cómo funciona?
select.repeat permite especificar una lista de expresiones FHIRPath, cada una de las cuales define una ruta para recorrer un recurso FHIR de forma recursiva. Aidbox sigue entonces automáticamente cada ruta hasta cualquier profundidad, recopilando los resultados de todos los niveles.
En términos sencillos, ayuda a aplanar datos sanitarios complejos y profundamente anidados en una tabla fácil de consultar, ahorrando horas de configuración manual y preparación de datos.
Por ejemplo, un recurso
FHIR QuestionnaireResponse
puede contener secciones, preguntas y elementos de seguimiento organizados de forma jerárquica. Cada elemento item puede incluir otros elementos item del mismo tipo, y estos pueden incluir elementos adicionales, formando una estructura recursiva con cualquier nivel de anidamiento.
Considere el siguiente ejemplo:
{
"resourceType": "QuestionnaireResponse",
"status": "amended",
"id": "qr1",
"item": [
{
"linkId": "1",
"text": "Group 1",
"item": [
{
"linkId": "1.1",
"text": "Question 1.1",
"answer": [
{
"valueString": "Answer 1.1",
"item": [
{
"linkId": "1.1.1",
"text": "Follow-up to 1.1"
}
]
}
]
},
{
"linkId": "1.2",
"text": "Question 1.2",
"item": [
{
"linkId": "1.2.1",
"text": "Question 1.2.1"
}
]
}
]
},
{
"linkId": "2",
"text": "Group 2"
}
]
}
En lugar de utilizar un elemento forEach independiente para cada nivel de anidamiento, puede emplear repeat para recorrer toda la estructura de forma recursiva y extraer todos los elementos item de una sola vez:
ViewDefinition:
{
"resource": "QuestionnaireResponse",
"status": "active",
"select": [
{
"column": [
{
"name": "id",
"path": "id",
"type": "id"
}
]
},
{
"repeat": [
"item"
],
"column": [
{
"name": "linkId",
"path": "linkId",
"type": "string"
},
{
"name": "text",
"path": "text",
"type": "string"
}
]
}
]
}
El resultado de ejecutar este ViewDefinition será una tabla con las siguientes columnas:
| id | linkId | text |
|---|---|---|
| qr1 | 1 | Group 1 |
| qr1 | 1.1 | Question 1.1 |
| qr1 | 1.2 | Question 1.2 |
| qr1 | 1.2.1 | Question 1.2.1 |
| qr1 | 2 | Group 2 |
Pruébelo usted mismo
Puede probarlo ejecutando una nueva instancia de Aidbox siguiendo las instrucciones de la guía Ejecutar Aidbox localmente.
Véase también: Validación con SQL on FHIR e Introducción a $materialize: interfaz SQL para datos FHIR.





