Consulta SQL++ / N1QL

Implementar servidor REST FHIR con Couchbase

Este es un seguimiento de mi post anterior que cubría el tema del Modelo de Datos FHIR con Couchbase N1QL. En este blog, voy a discutir el tema de cómo implementar la búsqueda FHIR REST API Server sobre los servicios de Couchbase, incluyendo ejemplos reales de cómo los diferentes patrones de búsqueda FHIR trabajan con Couchbase utilizando los datos sintéticos FHIR proporcionados por Synthea.

Consulte mi blog anterior para obtener información general sobre Modelo de datos FHIR con Couchbase N1QL

¿Por qué le interesa?

  1. Su organización está planeando desarrollar un sistema de Historia Clínica Electrónica (HCE) compatible con FHIR, y está considerando aprovechar las numerosas ventajas de las bases de datos NoSQL, como la escalabilidad distribuida, de alta disponibilidad, XDCR y multidimensional.
  2. Eres un arquitecto, o desarrollador y te gusta entender como la base de datos JSON de Couchbase puede reducir enormemente la complejidad de tus aplicaciones, relegando la compleja búsqueda FHIR [https://www.hl7.org/fhir/searchparameter-registry.html] a la capa del servidor de base de datos.
  3. Usted es un analista de datos y le gustaría entender cómo puede aprovechar sus conocimientos de SQL para consultar datos FHIR directamente con Couchbase N1QL y Búsqueda de texto completo.
  4. Usted está interesado en averiguar cómo Couchbase N1QL, un SQL para JSON, puede proporcionar una manera eficiente de consultar un modelo de datos JSON que es a la vez jerárquico y relacional en la naturaleza, tal como se define por Módulo administrativo HL7.

Aplicación FHIR con Couchbase

El diagrama anterior muestra los procesos implicados en una aplicación FHIR típica. El servidor FHIR Rest es fundamental para esta aplicación y debe soportar las especificaciones de búsqueda especificadas por FHIR. https://www.hl7.org/fhir/search.html. El servidor REST gestiona todas las interacciones entre las aplicaciones cliente y traduce las peticiones de búsqueda FHIR en sentencias N1QL, y envía las peticiones al servicio de consultas Couchbase.

Cómo configurar el servidor FHIR con Couchbase

Puedes configurar el servidor API FHIR de Couchbase, y la base de datos NoSQL de Couchbase en un único servidor, o incluso en tu portátil. El proceso de configuración requiere:

  1. Instalación de Couchbase Server 6.5.
  2. Cargar los datos de Synthea en el servidor Couchbase.
  3. Despliegue el código dotnet FHIR Server.

Siga las instrucciones https://github.com/AV25242/dotnet-fhir-server-couchbase.git

Conjunto de datos de muestra FHIR

Antes de empezar a utilizar la búsqueda FHIR para realizar consultas, familiaricémonos con el conjunto de datos de muestra FHIR.

  1. El conjunto de datos Synthea consta de 1.000 registros sintéticos de pacientes. 
  2. El registro del paciente está en un formato de paquete de recursos FHIR, lo que significa que un registro de paciente incluye todos los objetos FHIR relacionados del paciente.

A efectos de esta demostración, el conjunto de recursos de pacientes se ha normalizado en documentos de tipo de recurso individual, para permitirnos consultar el objeto FHIR directa o indirectamente a través del id de referencia del objeto.

FHIR Administrative Data Model

El modelo FHIR se muestra con relaciones para transmitir que

Búsquedas FHIR

Puede probar el servidor API REST utilizando cualquier cliente REST de su elección. Por simplicidad, yo uso CURL en mi terminal.

1. Buscar cualquier recurso FHIR

2. Buscar recurso por id

Todos los recursos FHIR tienen un identificador id, y se pueden buscar directamente.

3. Búsqueda de recursos por cualquier campo de nivel superior

Buscar todos los seguros Reclamaciones que fueron proporcionados por "BAYSIDE MEDICAL CENTER"

4. Buscar recurso por nombre - N1QL ARRAY Search

El recurso FHIR tiene una estructura completa para capturar el nombre del recurso.

La búsqueda FHIR por nombre debe tener en cuenta todos los nombres diferentes que puede utilizar el paciente.

5. Búsqueda de pacientes por identificador médico - N1QL ARRAY Search

FHIR también admite identificadores para el recurso. En el ejemplo siguiente, un paciente puede identificarse con su SSN y OID (para sistemas no FHIR). 

Buscar paciente por el identificador SSN

6. Búsqueda de recursos por sistema/código médico - N1QL ARRAY Search

FHIR utiliza el código médico para identificar Procedimiento, Observación o Informe de Diagnóstico.

Buscar DiagnosticReport por su sistema y código

7. Búsqueda de recursos por teléfono / correo electrónico - N1QL ARRAY Search

El registro FHIR encapsula todos los canales de comunicación con el recurso en el campo "telecom".

La búsqueda FHIR en telecomunicaciones debe tener en cuenta todos los tipos de telecomunicaciones que puede utilizar el recurso.

Buscar pacientes por teléfono

Buscar profesionales por correo electrónico

Buscar hospitales por teléfono

8. Buscar recurso usando Rango de Fechas - N1QL Range Scan

Los objetos FHIR pueden incluir un intervalo de fechas para indicar el periodo en el que se produjo un evento.

Procedimientos de búsqueda que tuvieron lugar entre dos fechas

9. Buscar recurso con _búsqueda de texto - Couchbase FTS

La especificación de búsqueda de FHIR también incluye una capacidad de búsqueda de texto. Una solicitud de búsqueda que utilice el campo "_text" indicará al servidor que realice una búsqueda de texto en todo el campo de texto.

Condiciones de búsqueda con el término 'Fractura' en la descripción del texto.

Buscar Observaciones con el término 'Colesterol'' en descripción de texto.

10. Buscar pacientes por sus objetos relacionados - N1QL JOIN

El modelo de datos FHIR es de naturaleza relacional. Los objetos asociados a un paciente contienen el id del paciente en el campo de asunto. Un paciente tiene varios CarePlans, y el plan tiene un campo de asunto con el id del paciente para indicar que el plan de cuidados pertenece al paciente.

Utilizando el campo subject.reference, el servidor FHIR REST puede implementar un JOIN de base de datos entre el Paciente y los objetos relacionados, para permitir una búsqueda del registro del paciente que posee un plan específico con un valor de id de plan

Buscar todos los pacientes con un código de observación determinado

Buscar todos los pacientes que han tenido una enfermedad concreta

Por qué Couchbase es una plataforma mejor para construir su servidor FHIR

Una búsqueda rápida en Google de FHIR Server arroja 300.000 resultados, y la página de implementación de HL7 FHIR enumera más de una docena de proyectos de código abierto. También hay implementaciones de servidores FHIR listas para usar en muchos vendedores. Estas implementaciones se basan en tecnologías de bases de datos diferentes de los RDBMS tradicionales, así como en muchas de las bases de datos NoSQL que existen actualmente en el mercado.

En dotnot-fhir-server-couchbase proporciona varios ejemplos sobre cómo puedes construir las especificaciones de búsqueda FHIR utilizando la plataforma Couchbase. El código traduce las APIs de búsqueda FHIR y sus parámetros en sentencias Couchbase N1QL, y luego las envía al servicio Couchbase Query, donde se procesa todo el proceso. Este enfoque puede reducir la complejidad en el servidor REST o en la aplicación cliente REST. Algunos puntos clave a tener en cuenta:

  1. Los datos JSON de FHIR se almacenan tal cual en el servicio de datos de Couchbase. No hay pre/post procesamiento requerido cuando necesitas POST/GET el documento FHIR a/desde el servidor.
  2. El lenguaje de consulta N1QL de Couchbase tiene un rico conjunto de operaciones que soportan el procesamiento de los datos jerárquicos del formato JSON de FHIR. Permite acceder sin problemas a matrices de datos anidadas, como las que se utilizan para describir las afecciones, observaciones, tratamientos e informes de diagnóstico de los pacientes.
  3. Los requisitos de FHIR para la búsqueda de texto se pueden cumplir directamente en Couchbase Full Text Search con N1QL Buscar() no es necesario asignar sus búsquedas a Lucene, ElasticSearch o Solr.
  4. Las especificaciones de búsqueda encadenada de FHIR podrían requerir la implementación de un servidor FHIR para enviar múltiples búsquedas a la base de datos con el fin de procesar la solicitud. Sin embargo, con N1QL, una consulta de unión ANSI puede dar lugar a un código mucho más sencillo para cumplir el requisito.

Resumen

Los Rest Servers FHIR se están implementando en todo tipo de plataformas. Los protocolos de búsqueda son relativamente sencillos y se centran en la recuperación de pacientes y otros objetos relacionados con FHIR por sus atributos específicos. Las API de búsqueda aíslan al cliente REST del complejo procesamiento jerárquico y de matrices, que son fundamentales para el formato de datos JSON. Sin embargo, la especificación, tal y como está actualmente:

  1. No define una forma clara de permitir la consulta de pacientes (u otros objetos FHIR) por su información relacionada, aparte de una simple capacidad de padre e hijo. 
  2. No hay soporte para la agregación, lo que limita cualquier capacidad de análisis.

Debido a estas limitaciones, las aplicaciones cliente REST pueden volverse más complejas al tener que incorporar la lógica de recorrer el modelo de datos FHIR.  El ejemplo de código REST Server API de este artículo pretende ilustrar tres puntos clave

  1. La simplicidad de implementar la búsqueda en elementos de array usando el constructor de array N1QL de Couchbase.
  2. La capacidad de empujar hacia abajo al servicio Couchbase Query, para realizar la búsqueda en los objetos Paciente utilizando objetos relacionados. En efecto, aprovechando N1QL ANSI JOIN soporta.
  3. La capacidad de integrar perfectamente las capacidades de búsqueda de texto completo con Couchbase N1QL, sin necesidad de utilizar plataformas FTS dedicadas como ElasticSearch o Solr, como se sugiere en la especificación de búsqueda FHIR.

También me gustaría dar las gracias a Arun Vijayraghavan, nuestro Principal Product Manager para todos los SDKs de Couchbase, que ha desarrollado los dotnet-fhir-server-couchbase y los comentarios de los clientes que han ayudado a revisar nuestra implementación de búsqueda FHIR. Por favor, háganos saber si tiene alguna pregunta, comentario o si se encuentra con algún problema al configurar el entorno.

Recursos

  1. Recurso rápido de interoperabilidad sanitaria: https://www.hl7.org/fhir/index.html
  2. SyntheticMass: "Jason Walonoski, Mark Kramer, Joseph Nichols, Andre Quina, Chris Moesel, Dylan Hall, Carlton Duffett, Kudakwashe Dube, Thomas Gallagher, Scott McLachlan, Synthea: Un enfoque, método y mecanismo de software para generar pacientes sintéticos y la historia clínica electrónica sintética, Revista de la Asociación Americana de Informática Médica, volumen 25, número 3, marzo de 2018, páginas 230-238, https://doi.org/10.1093/jamia/ocx079"
  3. Tutorial N1QL: https://query-tutorial.couchbase.com/tutorial/#1
  4. Parámetros de búsqueda FHIR: https://www.hl7.org/fhir/searchparameter-registry.html
Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Binh Le

Binh Le es director de producto principal del servicio de consultas de Couchbase. Antes de Couchbase, trabajó en Oracle y dirigió el equipo de gestión de productos para Sales Clould Analytics y CRM OnDemand. Binh es licenciado en Informática por la Universidad de Brighton, Reino Unido.

2 Comentarios

  1. hola, gracias por esto pero no he podido descargar los datos de muestra synthea de https://storage.googleapis.com/synthea-public/synthea_sample_data_fhir_r4_sep2019.zip

    siguiendo este : https://github.com/AV25242/dotnet-fhir-server-couchbase.git.
    ¿Alguna idea de cómo puedo obtener los datos de muestra?

  2. Hola loalu - El archivo puede haber sido movido. Pero aún puedes encontrarlo en el sitio de SyntheticMass. https://synthetichealth.github.io/synthea-sample-data/downloads/synthea_sample_data_fhir_r4_sep2019.zip

    -binh

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.