{"id":8475,"date":"2020-04-25T21:40:43","date_gmt":"2020-04-26T04:40:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8475"},"modified":"2025-06-13T23:42:42","modified_gmt":"2025-06-14T06:42:42","slug":"fhir-data-model-with-couchbase-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/fhir-data-model-with-couchbase-n1ql\/","title":{"rendered":"Modelo de datos FHIR con Couchbase N1QL"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Couchbase es una base de datos JSON que se ha convertido en una alternativa a los RDBMS tradicionales. Lo ha conseguido, no s\u00f3lo proporcionando el almac\u00e9n clave-valor l\u00edder del sector y las mismas capacidades de consulta y traducci\u00f3n ACID que las organizaciones esperan, sino tambi\u00e9n la flexibilidad de almacenar de forma nativa sus datos en formato JSON. Adem\u00e1s, Couchbase tambi\u00e9n incluye almacenamiento distribuido, escalabilidad multidimensional, alta disponibilidad y replicaci\u00f3n entre centros de datos (XDCR). Todo ello en una \u00fanica Plataforma de Datos Couchbase que se extiende al Edge con Couchbase Mobile.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Couchbase tambi\u00e9n se ha comprometido a ampliar sus capacidades mucho m\u00e1s all\u00e1 de lo que se necesita en las aplicaciones RDBMS tradicionales. Con Couchbase Cloud, donde todo est\u00e1 totalmente gestionado y automatizado, proporcionando una segura base de datos como servicio (DBaaS) que simplifica la gesti\u00f3n del esquema de base de datos FHIR mediante el despliegue, la gesti\u00f3n y el funcionamiento de Couchbase Server en entornos multi-nube con s\u00f3lo unos clics. Couchbase Cloud es flexible, altamente disponible y ofrece una opci\u00f3n econ\u00f3mica diferenciada para las empresas que buscan reducir las tareas operativas al tiempo que aprovechan la tecnolog\u00eda NoSQL m\u00e1s potente. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Tambi\u00e9n lo estamos haciendo colaborando con muchos de nuestros clientes de diferentes sectores para entender sus necesidades empresariales y c\u00f3mo Couchbase puede ayudarles con esos retos. Estos sectores van desde el comercio minorista y electr\u00f3nico, los viajes y la hosteler\u00eda, los servicios financieros, la energ\u00eda y los servicios p\u00fablicos, hasta la alta tecnolog\u00eda y los juegos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">En este blog, me gustar\u00eda centrarme en c\u00f3mo la base de datos Couchbase se puede utilizar en la industria de la Salud. En concreto, me centrar\u00e9 en la especificaci\u00f3n Fast Healthcare Interoperability Resources (FHIR) definida por <\/span><a href=\"https:\/\/www.hl7.org\/fhir\/overview.html\"><span style=\"font-weight: 400\">HL7 FHIR<\/span><\/a><span style=\"font-weight: 400\">.   El motivo de este blog es el nivel de inter\u00e9s de muchos de nuestros clientes que actualmente est\u00e1n planificando o implementando sus aplicaciones compatibles con FHIR utilizando la base de datos Couchbase.<\/span><\/p>\n<h3>\u00bfPor qu\u00e9 le interesa FHIR con Couchbase?<\/h3>\n<ol>\n<li>Las organizaciones buscan desarrollar aplicaciones FHIR, y\/o estudian la posibilidad de aprovechar las numerosas ventajas de las bases de datos NoSQL, como la escalabilidad distribuida, de alta disponibilidad, XDCR y multidimensional.<\/li>\n<li>Los arquitectos o desarrolladores necesitan entender c\u00f3mo la base de datos JSON de Couchbase puede reducir enormemente la complejidad de sus aplicaciones, relegando la compleja b\u00fasqueda FHIR [<a href=\"https:\/\/www.hl7.org\/fhir\/searchparameter-registry.html\">https:\/\/www.hl7.org\/fhir\/searchparameter-registry.html<\/a>] a la capa del servidor de base de datos.<\/li>\n<li>Los analistas de datos deben saber c\u00f3mo aprovechar sus conocimientos de SQL para consultar datos FHIR directamente con <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/n1ql\/\">Couchbase N1Q<\/a>L y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/full-text-search\/\">B\u00fasqueda de texto completo.<\/a><\/li>\n<li>Usted est\u00e1 interesado en averiguar c\u00f3mo Couchbase N1QL, un SQL para JSON, puede proporcionar una manera eficiente de consultar un modelo de datos relacional, tal como se define por el protocolo FHIR, que es a la vez jer\u00e1rquico JSON y relacional en la naturaleza.<\/li>\n<\/ol>\n<h3><span style=\"font-weight: 400\">\u00bfQu\u00e9 es FHIR?<\/span><\/h3>\n<p><span style=\"font-weight: 400\">FHIR\u00ae - <a href=\"https:\/\/hl7.org\/fhir\">Recursos de interoperabilidad sanitaria r\u00e1pida<\/a> - es un marco de est\u00e1ndares de nueva generaci\u00f3n creado por HL7. FHIR (pronunciado \"fire\") combina las mejores caracter\u00edsticas de HL7 y aprovecha los \u00faltimos est\u00e1ndares web, aplicando un estricto enfoque en la implementabilidad de los intercambios de informaci\u00f3n.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Las aplicaciones FHIR se basan en el concepto de \"Recursos\". Estos recursos se ensamblan en aplicaciones sanitarias espec\u00edficas, que abarcan desde las funciones administrativas y cl\u00ednicas hasta la atenci\u00f3n al paciente. <\/span>FHIR se puede utilizar en una amplia variedad de contextos: aplicaciones para tel\u00e9fonos m\u00f3viles, comunicaciones en la nube, intercambio de datos basados en HCE, comunicaci\u00f3n con servidores para proveedores sanitarios.<\/p>\n<p>Uno de los objetivos clave de FHIR es especificar una norma que puedan adoptar distintas aplicaciones sanitarias, lo que permitir\u00e1 la interoperabilidad entre diferentes aplicaciones funcionales y, en \u00faltima instancia, reducir\u00e1 el coste de las implantaciones.<\/p>\n<p><span style=\"font-weight: 400\">Consulte el <a href=\"https:\/\/www.hl7.org\/fhir\/overview.html\">Sitio web sobre FHIR<\/a> para m\u00e1s informaci\u00f3n.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">El modelo de datos FHIR<\/span><\/h4>\n<p><span style=\"font-weight: 400\">El n\u00facleo de FHIR es la definici\u00f3n com\u00fan de los distintos tipos de recursos que abarcan todos los aspectos de la asistencia sanitaria. Desde la funci\u00f3n administrativa de Paciente, Profesional, Equipo asistencial, Dispositivo, Organizaci\u00f3n, Ubicaci\u00f3n, Servicio sanitario, hasta la Cl\u00ednica, Diagn\u00f3stico, Medicamentos, as\u00ed como las funciones Financieras como la Cobertura del seguro.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para el prop\u00f3sito de este art\u00edculo, estoy utilizando el conjunto de datos sint\u00e9ticos de muestra disponible en Synthetic Mass que ha sido generado por <a href=\"https:\/\/synthetichealth.github.io\/synthea\/\">Synthea<\/a>una simulaci\u00f3n de poblaci\u00f3n de pacientes de c\u00f3digo abierto facilitada por The MITRE Corporation.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Los datos se pusieron a disposici\u00f3n como un paquete de recursos para cada paciente sint\u00e9tico, que luego se importan a una instancia de la base de datos Couchbase 6.5.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8476 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM.png\" alt=\"HL7 FHIR API Data Model for Healthcare in NoSQL JSON Database\" width=\"1151\" height=\"835\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM.png 1151w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-300x218.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1024x743.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-768x557.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-20x15.png 20w\" sizes=\"auto, (max-width: 1151px) 100vw, 1151px\" \/><\/p>\n<pre class=\"lang:default decode:true\">SELECT resourceType, COUNT(1) doc_count\r\n FROM fhir_admin\r\nWHERE resourceType IS NOT MISSING\r\n GROUP BY resourceType\r\n\r\ndoc_count\tresourceType\r\n567\t\"AllergyIntolerance\"\r\n3577\t\"CarePlan\"\r\n3577\t\"CareTeam\"\r\n52387\t\"Claim\"\r\n8714\t\"Condition\"\r\n57\t\"Device\"\r\n17069\t\"DiagnosticReport\"\r\n42019\t\"Encounter\"\r\n42019\t\"ExplanationOfBenefit\"\r\n2942\t\"Goal\"\r\n965\t\"ImagingStudy\"\r\n14982\t\"Immunization\"\r\n926\t\"MedicationAdministration\"\r\n10368\t\"MedicationRequest\"\r\n235332\t\"Observation\"\r\n1033\t\"Organization\"\r\n1177\t\"Patient\"\r\n1034\t\"Practitioner\"\r\n32454\t\"Procedure\"\r\n<\/pre>\n<h4><span style=\"font-weight: 400\">Algunos puntos destacables sobre el modelo de datos FHIR<\/span><\/h4>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El modelo se centra en el objeto \"paciente<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El tipo de objeto est\u00e1 representado por el campo \"resourceType\".<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">La estructura JSON admite un conjunto m\u00e1s rico de informaci\u00f3n sanitaria que puede conservarse sobre el paciente: nivel de salud, datos de contacto, direcciones, comunicaciones, etc.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cada objeto tiene un campo \"id\" identificable de forma \u00fanica.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Los objetos se referencian entre s\u00ed. La mayor\u00eda hacen referencia al objeto \"paciente\".<\/span><\/li>\n<\/ol>\n<h3><span style=\"font-weight: 400\">Por qu\u00e9 Couchbase es adecuado para FHIR<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Como se mencion\u00f3 anteriormente, Couchbase almacena sus datos de forma nativa en JSON, que es un formato de documento legible. Las aplicaciones pueden utilizar las APIs de Clave-Valor, o aprovechar el Lenguaje de Consulta N1QL de Couchbase para manipular los documentos. La ventaja de almacenar los datos en formato JSON, en lugar de como un tipo de columna como en muchos RDBMS, es la facilidad con la que los usuarios pueden acceder a la informaci\u00f3n contenida. Se puede acceder a los elementos del documento JSON, como campo, objeto matriz y objeto jer\u00e1rquico, directamente desde el objeto padre sin necesidad de sintaxis adicional. <\/span><\/p>\n<p><span style=\"font-weight: 400\">He aqu\u00ed un ejemplo del documento Paciente tal y como lo define el FHIR.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8477\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/04\/Screen-Shot-2020-04-23-at-2.36.19-PM.png\" alt=\"HL7 FHIR protocol patient admin document database\" width=\"687\" height=\"665\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-2.36.19-PM.png 862w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-2.36.19-PM-300x290.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-2.36.19-PM-768x743.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-23-at-2.36.19-PM-20x20.png 20w\" sizes=\"auto, (max-width: 687px) 100vw, 687px\" \/><\/p>\n<p><span style=\"font-weight: 400\">Lo que significa para la aplicaci\u00f3n FHIR es que los usuarios con experiencia en RDBMS que tengan conocimientos b\u00e1sicos de SQL pueden acceder al paciente FHIR y a los recursos asociados exactamente igual que con el RDBMS tradicional.\u00a0<\/span><\/p>\n<h4>Couchbase N1QL para buscar datos FHIR<\/h4>\n<h5><strong>Consulta de pacientes por ID<\/strong><\/h5>\n<pre class=\"lang:default decode:true\">SELECT *\r\nFROM fhir_admin res\r\nWHERE res.resourceType='Patient'\r\nAND\u00a0 res.id='e3ae7831-14c8-4d13-a8fb-dad68fa12bc9'<\/pre>\n<h5><strong>Consulta de pacientes por grupos de edad<\/strong><\/h5>\n<pre class=\"lang:default decode:true\">SELECT\u00a0 agegroup,count(*)\r\nFROM fhir_admin p\r\n\u00a0\u00a0\u00a0LET age=DATE_DIFF_STR(now_str(),p.birthDate,'year'),\r\n\u00a0\u00a0\u00a0\u00a0agegroup = CASE WHEN age &lt;= 4 THEN 'A - 0-4'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0WHEN age &lt;= 17 THEN 'B - 5-17'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0WHEN age &lt;= 49 THEN 'C - 18-49'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0WHEN age &lt;= 64 THEN 'D - 50-64'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ELSE 'E - &gt; 65' END\u00a0\r\nWHERE p.resourceType='Patient'\r\nGROUP BY agegroup<\/pre>\n<ol>\n<li>La edad del paciente debe calcularse a partir de la fecha actual - DOB.<\/li>\n<li>La consulta utiliza la construcci\u00f3n N1QL LET para definir \"edad\" y agrupar la edad en \"grupo de edad\".<\/li>\n<li>Un est\u00e1ndar ANSI GROUP BY y COUNT devuelve el n\u00famero de pacientes por grupo de edad.<\/li>\n<\/ol>\n<p>Adem\u00e1s, la capacidad de JOIN y UNNEST de documentos con Couchbase N1QL permite a los usuarios consultar informaci\u00f3n relacionada del paciente.<\/p>\n<h5><strong>Consultar a los pacientes y sus afecciones actuales no resueltas\u00a0<\/strong><\/h5>\n<pre class=\"lang:default decode:true\">SELECT ARRAY v FOR v IN p.name WHEN v.`use`='official' END fullname ,\r\n       cc.display\r\nFROM fhir_admin c\r\nINNER JOIN fhir_admin p USE HASH(BUILD) ON split(c.subject.reference,':')[2] = p.id AND p.resourceType='Patient'\r\nUNNEST c.code.coding as cc\r\nWHERE c.resourceType='Condition'\r\nAND EVERY s in c.clinicalStatus.coding SATISFIES s.code != 'resolved' END\r\n<\/pre>\n<ol>\n<li>Un paciente puede tener varios nombres, que se representan en la matriz \"name\". Esta consulta utiliza el operador ARRAY para filtrar \u00fanicamente el elemento oficial de la matriz 'name'.<\/li>\n<li>La consulta une la \"condici\u00f3n\" con el objeto \"paciente\" utilizando parte del campo \"asunto.referencia\" del objeto \"condici\u00f3n\" con el \"id.paciente\".<\/li>\n<li>Cada 'paciente' puede tener m\u00faltiples condiciones, de ah\u00ed la necesidad de aplanar (UNNEST) el array 'condition-&gt;code'.<\/li>\n<li>Puede haber varios \"clinical.status\" para la \"condici\u00f3n\", pero la consulta s\u00f3lo debe devolver las condiciones que no se hayan resuelto.<\/li>\n<\/ol>\n<h5><strong>Lista de todos los pacientes que estuvieron en el hospital de Beverley en la semana que comenz\u00f3 el 2011-08-18<\/strong><\/h5>\n<pre class=\"lang:default decode:true\">SELECT ARRAY v FOR v IN p.name WHEN v.`use`='official' END fullname ,\r\n       p.telecom phonecontact,\r\n       p.address, \r\n       p.communication,\r\n       p.identifier\r\nFROM fhir_admin m\r\n INNER JOIN fhir_admin p ON split(m.subject.reference,':')[2] = p.id AND p.resourceType='Patient' \r\nWHERE m.resourceType='Encounter'\r\nAND DATE_FORMAT_STR(m.period.`start`, '1111-11-11') BETWEEN '2011-08-18' AND '2011-08-25'\r\nAND m.serviceProvider.display = 'BEVERLY HOSPITAL CORPORATION' \r\n<\/pre>\n<ol>\n<li>La consulta examina el objeto \"encuentro\" para averiguar todos los tratamientos del \"paciente\" en este hospital concreto.<\/li>\n<li>El operador ARRAY se utiliza para obtener el nombre oficial del \"paciente\".<\/li>\n<\/ol>\n<h5><strong>Lista de pacientes con el detalle de su reclamaci\u00f3n al seguro: servicios y coste<\/strong><\/h5>\n<pre class=\"lang:default decode:true\">SELECT  c.patient.reference, cis.display,SUM( c.total.`value`)\r\nFROM fhir_admin c\r\n INNER JOIN fhir_admin p ON split(c.patient.reference,':')[2] = p.id AND p.resourceType='Patient' \r\n UNNEST c.item as ci\r\n UNNEST ci.productOrService.coding as cis\r\nWHERE c.resourceType='Claim'\r\nGROUP by cis.display,c.patient.reference\r\n<\/pre>\n<ol>\n<li>El objeto \"reclamaci\u00f3n\" se une al objeto \"paciente\" para acceder a los datos del paciente.<\/li>\n<li>El objeto 'claim' tiene un array anidado para 'claim-&gt;item'.<\/li>\n<li>El 'claim-&gt;item' est\u00e1 asociado a un 'productOrService' con una codificaci\u00f3n array que contiene la descripci\u00f3n del tratamiento.<\/li>\n<li>El coste es a nivel de siniestro.<\/li>\n<\/ol>\n<h5><strong>Clasificaci\u00f3n del recuento de procedimientos por hospitales<\/strong><\/h5>\n<pre class=\"lang:default decode:true\">SELECT e.serviceProvider.display hospital,\r\n       p.code.text treatment,\r\n       RANK() OVER ( PARTITION BY e.serviceProvider.display ORDER BY COUNT(p.code.text) DESC ) serviceRank\r\nFROM fhir_admin p\r\n  INNER JOIN fhir_admin e USE HASH(PROBE) ON split(p.encounter.reference,':')[2] = e.id and e.resourceType='Encounter'\r\nWHERE p.resourceType='Procedure'\r\nGROUP by e.serviceProvider.display,p.code.text<\/pre>\n<ol>\n<li>El objeto \"procedimiento\" se UNE al objeto \"encuentro\" para acceder al hospital donde se administr\u00f3 el procedimiento.<\/li>\n<li>La funci\u00f3n N1QL Window RANK se utiliza para asignar un valor por el recuento del procedimiento.<\/li>\n<li>La sugerencia Hash Join se utiliza para mejorar el rendimiento del documento JOIN.<\/li>\n<\/ol>\n<h3>Resumen<\/h3>\n<p>Couchbase es muy adecuado para la implementaci\u00f3n de FHIR debido al enfoque que utiliza para almacenar los datos en formato JSON. Su potente lenguaje de consulta N1QL permite a los desarrolladores con experiencia en SQL navegar por el modelo de datos FHIR para realizar todas las operaciones CRUD que los usuarios esperar\u00edan ver en una base de datos.<\/p>\n<p>Con su capacidad para realizar desde JOIN de documentos hasta el procesamiento avanzado de objetos array incrustados, el lenguaje de consulta N1QL relega todas las necesidades de procesamiento al Servicio de Consulta e Indexaci\u00f3n de Couchbase, reduciendo as\u00ed la carga de las aplicaciones FHIR a tener que realizar todas las asociaciones de objetos.<\/p>\n<p>Como ocurre con cualquier aplicaci\u00f3n nueva, siempre ser\u00e1 necesario realizar ex\u00e1menes directos de los datos subyacentes, ya sea por parte de los administradores de la aplicaci\u00f3n o de los analistas de datos, que pueden tener la necesidad de realizar b\u00fasquedas m\u00e1s all\u00e1 de las capacidades b\u00e1sicas de b\u00fasqueda de FHIR.<\/p>\n<p>En el pr\u00f3ximo blog, voy a examinar lo que se necesita para utilizar REST para un enfoque de la API FHIR que puede comunicarse con el servidor Couchbase para proporcionar la b\u00e1sica <a href=\"https:\/\/www.hl7.org\/fhir\/search.html\">Requisitos de b\u00fasqueda de FHIR.<\/a><\/p>\n<h3>Recursos<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.hl7.org\/fhir\/index.html\">Recurso r\u00e1pido de interoperabilidad sanitaria<\/a><\/li>\n<li><a href=\"https:\/\/doi.org\/10.1093\/jamia\/ocx079\">MasaSint\u00e9tica<\/a>: \"Jason Walonoski, Mark Kramer, Joseph Nichols, Andre Quina, Chris Moesel, Dylan Hall, Carlton Duffett, Kudakwashe Dube, Thomas Gallagher, Scott McLachlan, Synthea: Un enfoque, m\u00e9todo y mecanismo de software para generar pacientes sint\u00e9ticos y la historia cl\u00ednica electr\u00f3nica sint\u00e9tica,\u00a0<em>Revista de la Asociaci\u00f3n Americana de Inform\u00e1tica M\u00e9dica<\/em>, volumen 25, n\u00famero 3, marzo de 2018, p\u00e1ginas 230-238, https:\/\/doi.org\/10.1093\/jamia\/ocx079\u2033.<\/li>\n<li><a href=\"https:\/\/query-tutorial.couchbase.com\/tutorial\/#1\">Tutorial N1QL<\/a><\/li>\n<li><a href=\"https:\/\/www.hl7.org\/fhir\/searchparameter-registry.html\">Par\u00e1metros de b\u00fasqueda FHIR<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Couchbase is a JSON database that has now become an alternative to the traditional RDBMS. It has achieved this, not only by providing the industry-leading Key-Value store and the same query and ACID translation capabilities that organizations have come to [&hellip;]<\/p>","protected":false},"author":26326,"featured_media":11046,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1819,2165,1812],"tags":[1447,4959,1261,1725],"ppma_author":[8919],"class_list":["post-8475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-modeling","category-full-text-search","category-n1ql-query","tag-data-modeling","tag-fhir","tag-json","tag-nosql-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FHIR Data Model + Relational Schema with Couchbase N1QL<\/title>\n<meta name=\"description\" content=\"This post focuses on the FHIR specification as defined by HL7 FHIR. Learn how the Couchbase database can be used to implement FHIR compliant applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/fhir-data-model-with-couchbase-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FHIR Data Model with Couchbase N1QL\" \/>\n<meta property=\"og:description\" content=\"This post focuses on the FHIR specification as defined by HL7 FHIR. Learn how the Couchbase database can be used to implement FHIR compliant applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/fhir-data-model-with-couchbase-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-26T04:40:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:42:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"871\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Binh Le\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Binh Le\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/\"},\"author\":{\"name\":\"Binh Le\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\"},\"headline\":\"FHIR Data Model with Couchbase N1QL\",\"datePublished\":\"2020-04-26T04:40:43+00:00\",\"dateModified\":\"2025-06-14T06:42:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/\"},\"wordCount\":1476,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png\",\"keywords\":[\"Data Modeling\",\"FHIR\",\"JSON\",\"NoSQL Database\"],\"articleSection\":[\"Data Modeling\",\"Full-Text Search\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/\",\"name\":\"FHIR Data Model + Relational Schema with Couchbase N1QL\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png\",\"datePublished\":\"2020-04-26T04:40:43+00:00\",\"dateModified\":\"2025-06-14T06:42:42+00:00\",\"description\":\"This post focuses on the FHIR specification as defined by HL7 FHIR. Learn how the Couchbase database can be used to implement FHIR compliant applications.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png\",\"width\":1200,\"height\":871,\"caption\":\"Fast Healthcare Interoperability Resources (FHIR) data model and API discussion\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FHIR Data Model with Couchbase N1QL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"caption\":\"Binh Le\"},\"description\":\"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FHIR Data Model + Relational Schema with Couchbase N1QL","description":"This post focuses on the FHIR specification as defined by HL7 FHIR. Learn how the Couchbase database can be used to implement FHIR compliant applications.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/fhir-data-model-with-couchbase-n1ql\/","og_locale":"es_MX","og_type":"article","og_title":"FHIR Data Model with Couchbase N1QL","og_description":"This post focuses on the FHIR specification as defined by HL7 FHIR. Learn how the Couchbase database can be used to implement FHIR compliant applications.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/fhir-data-model-with-couchbase-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-04-26T04:40:43+00:00","article_modified_time":"2025-06-14T06:42:42+00:00","og_image":[{"width":1200,"height":871,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png","type":"image\/png"}],"author":"Binh Le","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Binh Le","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/"},"author":{"name":"Binh Le","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63"},"headline":"FHIR Data Model with Couchbase N1QL","datePublished":"2020-04-26T04:40:43+00:00","dateModified":"2025-06-14T06:42:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/"},"wordCount":1476,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png","keywords":["Data Modeling","FHIR","JSON","NoSQL Database"],"articleSection":["Data Modeling","Full-Text Search","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/","name":"FHIR Data Model + Relational Schema with Couchbase N1QL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png","datePublished":"2020-04-26T04:40:43+00:00","dateModified":"2025-06-14T06:42:42+00:00","description":"This post focuses on the FHIR specification as defined by HL7 FHIR. Learn how the Couchbase database can be used to implement FHIR compliant applications.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/04\/Screen-Shot-2020-04-07-at-4.30.12-PM-1.png","width":1200,"height":871,"caption":"Fast Healthcare Interoperability Resources (FHIR) data model and API discussion"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/fhir-data-model-with-couchbase-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FHIR Data Model with Couchbase N1QL"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7","url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","caption":"Binh Le"},"description":"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/binh-le-2\/"}]}},"authors":[{"term_id":8919,"user_id":26326,"is_guest":0,"slug":"binh-le-2","display_name":"Binh Le","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","author_category":"","last_name":"Le","first_name":"Binh","job_title":"","user_url":"","description":"Binh Le es director de producto principal del servicio de consultas de Couchbase. Antes de Couchbase, trabaj\u00f3 en Oracle y dirigi\u00f3 el equipo de gesti\u00f3n de productos para Sales Clould Analytics y CRM OnDemand. Binh es licenciado en Inform\u00e1tica por la Universidad de Brighton, Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/8475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=8475"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/8475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/11046"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=8475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=8475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=8475"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=8475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}