{"componentChunkName":"component---src-templates-blog-post-js","path":"/techconnect-2020/","result":{"data":{"site":{"siteMetadata":{"title":"El Blog de Nessy"}},"markdownRemark":{"id":"56f08aa5-5e38-5431-8e2a-c52b96d691b1","excerpt":"Participé por primera vez en el evento de interoperabilidad Tech Connect La edición 2020 por el contexto de pandemia fue 100% remota (en Zoom). Lo único malo de…","html":"<p>Participé por primera vez en el evento de interoperabilidad <a href=\"https://www.techconnect.cl/\">Tech Connect</a></p>\n<p>La edición 2020 por el contexto de pandemia fue 100% remota (en Zoom). Lo único malo de esta modalidad es que no hubo coffee breaks 🐷… pero bueno.</p>\n<p>¿Qué es el techconnect? es un encuentro anual con talleres y charlas sobre interoperabilidad en salud.</p>\n<blockquote>\n<p>¿Interoperabiliwhat? La interoperabilidad en salud es hacer que los distintos sistemas informáticos se comuniquen entre sí. Puedes leer más de esto <a href=\"/interoperabilidad\">aquí</a>.</p>\n</blockquote>\n<p>En este post haré un mini review sobre el evento y comentaré sobre las charlas que me gustaron más.</p>\n<h2>Cómo fue el Techconnect</h2>\n<p>En una palabra: intenso.</p>\n<p>Hubo jornada de charlas todas las mañanas de lunes a jueves entre 9:00 y 13:00. No soy alguien mañanero, así que sufrí un poco por eso.</p>\n<p>Y no solo eso. Posterior a las charlas, las personas que se registraron al desafío de interoperabilidad debían trabajar en los problemas planteados.</p>\n<p>Esa semana me la tomé libre y me dediqué a tiempo completo a aprender sobre interoperabilidad, participando de las charlas y además de los desafíos.</p>\n<h2>¿De qué tratan los desafíos?</h2>\n<p>Cada ejercicio debías hacer lo que un sistema informático haría en una situación dada.</p>\n<p>Por ejemplo, un enunciado podría ser algo del estilo:</p>\n<blockquote>\n<p>“Llegaron los resultados del examen de perfil hepático que se hizo Juanito Perez RUT 11.111.111-1 la semana pasada debes informarle de esto al Laboratorio central del minsal”</p>\n</blockquote>\n<p>Luego, cada participante debía “programar” el “envío” del examen. La parte de “programación” se hace gracias a un <a href=\"/estandares-interoperabilidad/\">estándar de interoperabilidad</a> llamado <strong>HL7 FHIR</strong>.</p>\n<p>Los ejercicios se realizaron a través de una plataforma chilena construida especialmente para aprender, llamada <a href=\"https://cens.cl/huemul/\">Huemul</a>. Además, estaban clasificados en distintos contextos (<em>tracks</em>) y dificultades (<em>básico</em>, <em>medio</em> y <em>avanzado</em>).</p>\n<p>Por todo esto, el público objetivo podía ser cualquier persona con ganas de aprender, no necesariamente programadores. De hecho, muchas personas que participaron eran clínicos alejados de la programación.</p>\n<p>Para los más computines como yo, la parte técnica no era tan complicada (<em>vivo de eso!</em>). Lo difícil era aprender bien la terminología clínica que utiliza HL7, que probablemente a los clínicos les costaba mucho menos. Aunque mi partner en <a href=\"https://codeness.io\">Codeness</a> es enfermera, por lo que gracias a ella pude entender mejor algunas cosas 🙏.</p>\n<h2>El Desafío Avanzado</h2>\n<p>Los desafíos de dificultad fácil e intermedia se hacían online en <a href=\"https://cens.cl/huemul/\">“Huemul”</a>.</p>\n<p>El avanzado era diferente, pues tenías <strong>que construir una aplicación que se comunicara con plataformas</strong> que el equipo organizador puso a disposición (usando HL7 FHIR).</p>\n<p>Como me tomé la semana para participar del Techconnect, quise participar en TODOS los desafíos, incluso el avanzado.</p>\n<p>Los <em>tracks</em> básicos e intermedio me ayudaron a conocer mejor HL7, conocimiento que utilicé para poder crear la aplicación del <em>track</em> avanzado.</p>\n<p>Participé en el caso de uso “Informe Diagnóstico” (<a href=\"https://cens.atlassian.net/wiki/spaces/T2/pages/10977281/Caso+de+Uso+Informe+Diagn+stico\">enunciado</a>), cuyo objetivo era <strong>construir una aplicación que permita crear informes de laboratorio y asociarlos a un paciente</strong>.</p>\n<p>Puedes ver un video demo de la aplicación que hice <a href=\"https://cu-informe.vercel.app/\">aquí</a>. <strong>Nota: Los datos que muestra son falsos</strong> ya que el CENS bajó los servidores.</p>\n<h3>Funcionalidades de la aplicación</h3>\n<p>Las instrucciones del enunciado las encontré súper claras. Detallaba claramente los requerimientos de la aplicación, lo suficiente para que no fuera confuso. En cualquier caso, ante dudas, teníamos acceso a Slack donde podíamos consultar.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/efd72627d2b54b7108470816760a960b/bce1e/slack.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 25.949367088607595%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAuUlEQVQY052P6wrCMAyF+/7PJOgzOH+sIvTGNoqwtd3mBrscm0rVvxpIv6Q5kBx2OJ5wLi54jCOmacK2bVjXNTHXuc9cliXVxFznZLVRUFJAKY26qiCFhDEGQohErTWklHGuEqlvmgZV1FIabV6M2hACmG7uuJQcvCzBOU9D5xy893CdQ/Dh00cOw4B9398Ovp3QPyuuEjdVo2tbWGsxz3OyQaJ/gtFjvUUZLY9xe9/36XS6hIK2/pJP0eZ/3Af1ea4AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Dudas en el slack\"\n        title=\"Dudas en el slack\"\n        src=\"/static/efd72627d2b54b7108470816760a960b/f058b/slack.png\"\n        srcset=\"/static/efd72627d2b54b7108470816760a960b/c26ae/slack.png 158w,\n/static/efd72627d2b54b7108470816760a960b/6bdcf/slack.png 315w,\n/static/efd72627d2b54b7108470816760a960b/f058b/slack.png 630w,\n/static/efd72627d2b54b7108470816760a960b/40601/slack.png 945w,\n/static/efd72627d2b54b7108470816760a960b/78612/slack.png 1260w,\n/static/efd72627d2b54b7108470816760a960b/bce1e/slack.png 1696w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>El <em>mockup</em> que nos dieron fue este:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9e1d34640f508fc086771b51648227d3/93ef1/mockup-1.webp\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRl4AAABXRUJQVlA4IFIAAADQAwCdASoUABEAPtFgqU+oJSOiKAgBABoJaQAALnfcPYg+vGcCAgAA/vAL072+OxE4P++HxWoEo642HigP07Z51ELp9hccw2+zedngY3BXoVAA'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Mockup de la aplicación\"\n        title=\"Mockup de la aplicación\"\n        src=\"/static/9e1d34640f508fc086771b51648227d3/8aab1/mockup-1.webp\"\n        srcset=\"/static/9e1d34640f508fc086771b51648227d3/81b7c/mockup-1.webp 158w,\n/static/9e1d34640f508fc086771b51648227d3/6ea66/mockup-1.webp 315w,\n/static/9e1d34640f508fc086771b51648227d3/8aab1/mockup-1.webp 630w,\n/static/9e1d34640f508fc086771b51648227d3/93ef1/mockup-1.webp 929w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Entonces el flujo de la aplicación debía ser más o menos así:</p>\n<ol>\n<li><strong>Ingreso de paciente:</strong> el usuario debe ingresar un RUT de paciente. Una vez ingresado, mostrar sus datos.</li>\n<li><strong>Selección de examen y muestra:</strong> El usuario debe ingresar el examen. Para eso, debe seleccionar el tipo de examen (perfil hepático o lipídico), la muestra del paciente y finalmente el RUT del informante (el clínico que está haciendo el ingreso).</li>\n<li><strong>Ingreso de resultados</strong>: El usuario debe ingresar los resultados del examen.</li>\n</ol>\n<p>La otra parte de la aplicación es sobre consulta de resultados:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/88df515275f53efedf85e518f0078d00/93ef1/mockup-2.webp\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRk4AAABXRUJQVlA4IEIAAAAQBACdASoUABEAPtFepE6oJSMiKAqpABoJaQAAKdqvdx4xTPk/eQUfAAD+8AwTtf/P4DZ1F9wkvLONtdKIZl8gAAA='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Mockup de la aplicación\"\n        title=\"Mockup de la aplicación\"\n        src=\"/static/88df515275f53efedf85e518f0078d00/8aab1/mockup-2.webp\"\n        srcset=\"/static/88df515275f53efedf85e518f0078d00/81b7c/mockup-2.webp 158w,\n/static/88df515275f53efedf85e518f0078d00/6ea66/mockup-2.webp 315w,\n/static/88df515275f53efedf85e518f0078d00/8aab1/mockup-2.webp 630w,\n/static/88df515275f53efedf85e518f0078d00/93ef1/mockup-2.webp 929w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Donde el flujo era:</p>\n<ol>\n<li><strong>Ingreso de paciente:</strong> usuario debe ingresar un RUT de paciente. Mostrar sus datos y además los exámenes asociados.</li>\n<li><strong>Selección de resultados:</strong> usuario podrá seleccionar un examen para ver los resultados.</li>\n</ol>\n<p>¿Y dónde está la interoperabilidad aquí?</p>\n<p>Bueno, lo que ocurre es que la información que se ingresa o que se consulta vive en distintos <em>servicios</em>:</p>\n<ul>\n<li>La información de los pacientes vive en un “Maestro de Pacientes” (MPI).</li>\n<li>La información de los prestadores de servicios en un “Maestro de Prestadores de servicios” (HPD).</li>\n<li>La información relacionada con muestras y exámenes vive en un “Repositorio Nacional de Exámenes de Laboratorio (RNEL)“.</li>\n<li>La información terminológica vive en un “Servidor Terminológico” (ST).</li>\n</ul>\n<p>Entonces la aplicación a construir debía ser una especie de intermediario que consumiera datos y que enviara datos a todos estos servicios utilizando FHIR. Así que de cierto modo, hacer este desafío se sintió como resolver un rompecabezas. Aunque armarlo no fue tan fácil…</p>\n<p>Si bien el enunciado era claro, por razones obvias no te decían el “paso a paso” de cómo tenías que construir la aplicación.</p>\n<p>Por ejemplo, el formulario del perfil lipídico tenía que mostrar campos para ingresar el “Colesterol Total”, los “Triglicéridos”, entre otras cosas. Aquí surgen las siguientes dudas:</p>\n<ul>\n<li>¿El formulario se arma a mano? o bien ¿hay que traer la información desde algún servicio?</li>\n<li>¿Los rangos de referencia se obtendrán desde algún lado o se manejan a nivel de aplicación?</li>\n<li>Las unidades de medida, ¿de dónde vienen?</li>\n</ul>\n<p>Luego de explorar la documentación de HL7 pude resolver algunas dudas, y las que no, me las resolvió el equipo del CENS. De hecho, ellos levantaron los rangos de referencia en pleno desafío para que pudiéramos obtenerlos 💪</p>\n<h3>Recursos FHIR Utilizados</h3>\n<p>Utilicé los siguientes recursos: <a href=\"https://www.hl7.org/fhir/patient.html\">Patient</a>, <a href=\"https://www.hl7.org/fhir/specimen.html\">Specimen</a>, <a href=\"https://www.hl7.org/fhir/practitioner.html\">Practitioner</a>, <a href=\"https://www.hl7.org/fhir/questionnaire.html\">Questionnaire</a>, <a href=\"https://www.hl7.org/fhir/parameters.html\">Parameters</a> y <a href=\"https://www.hl7.org/fhir/observation.html\">Observation</a>.</p>\n<p>A continuación detallaré dónde usé cada uno:</p>\n<h4>Obtener información del paciente</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/11a9aaaa4dcb137d76ef2402db5df0dd/93582/web-1.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 31.645569620253163%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAsklEQVQY05WQWQ7DIAxEc/+TZkUBkRWIy7NCSv5apJE3PPa4WddV2raVrusU+N574V3XJf++JoQg27bJcRyy77v6McaH8Fek2zYxEzprxWac5ynGGAWDIE4pqX0ac1w2LzEcxudlQiZks3mexTknwzAo8bIsKpt4mibN8Yc8JNTIYb+D7g25IU1IRXKZzlbjOCogw0JCHR8Vfd/rqV43RGZNVEsrN6UJcAZq5OmjRq7u+wDvS9VpLBxMZAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Información del paciente\"\n        title=\"Información del paciente\"\n        src=\"/static/11a9aaaa4dcb137d76ef2402db5df0dd/f058b/web-1.png\"\n        srcset=\"/static/11a9aaaa4dcb137d76ef2402db5df0dd/c26ae/web-1.png 158w,\n/static/11a9aaaa4dcb137d76ef2402db5df0dd/6bdcf/web-1.png 315w,\n/static/11a9aaaa4dcb137d76ef2402db5df0dd/f058b/web-1.png 630w,\n/static/11a9aaaa4dcb137d76ef2402db5df0dd/40601/web-1.png 945w,\n/static/11a9aaaa4dcb137d76ef2402db5df0dd/78612/web-1.png 1260w,\n/static/11a9aaaa4dcb137d76ef2402db5df0dd/93582/web-1.png 1524w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Aquí utilicé el recurso <a href=\"https://www.hl7.org/fhir/patient.html\">Patient</a> del maestro de pacientes (MPI). La búsqueda se realiza mediante la siguiente llamada</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">GET /MPI/Patient?identifier=www.registrocivil.cl/RUN|11111111-1</code></pre></div>\n<p><em>Reemplazando 11111111-1 por el rut que deseabas buscar</em></p>\n<h4>Registro de examen</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/eb1c663d3107a24fc6fa96818bbef4c1/68638/web-2.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 51.89873417721519%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/ElEQVQoz5WSi46EIAxF+f//9DGaKIgKKtrlkMXRyc7ObpOGR9vL7aXKWitFUUjTNFLXtRhjBDuO4+Z/NbVtm3jvZVmWtIYQTsBsr+C/uQoRcDBa9BzETk76rpN5ntMDXdzj10fe+ckwbBEotu38ktZxHGWaJnHOyTAMSYJ1XT8y2/f9ydBoExl50VrfQAHkDikwij55ArTfhbTa972UZZn2tEoSOuPvQMijI3IUm+bxSFoRhBkss44Z7KfPuup6tgxAVVXStm165WqA4rRMDKeIM3XEALqNDZfMIAzzHFIAK2TgDGP0ZAUAjXPsdQIUP5iLAKeQgv8M8zX3CyXJD+gwGYr5AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Registro de examen\"\n        title=\"Registro de examen\"\n        src=\"/static/eb1c663d3107a24fc6fa96818bbef4c1/f058b/web-2.png\"\n        srcset=\"/static/eb1c663d3107a24fc6fa96818bbef4c1/c26ae/web-2.png 158w,\n/static/eb1c663d3107a24fc6fa96818bbef4c1/6bdcf/web-2.png 315w,\n/static/eb1c663d3107a24fc6fa96818bbef4c1/f058b/web-2.png 630w,\n/static/eb1c663d3107a24fc6fa96818bbef4c1/40601/web-2.png 945w,\n/static/eb1c663d3107a24fc6fa96818bbef4c1/78612/web-2.png 1260w,\n/static/eb1c663d3107a24fc6fa96818bbef4c1/68638/web-2.png 1510w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Aquí para la muestra utilicé <a href=\"https://www.hl7.org/fhir/specimen.html\">Specimen</a>. La información se obtiene con una consulta al servidor de exámenes:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">GET /HAPI/Specimen/?patient=Patient/:id&amp;type=BLDV</code></pre></div>\n<p>El parámetro <code class=\"language-text\">id</code> es el ID del recurso paciente encontrado en el paso anterior.</p>\n<p>Notar que <code class=\"language-text\">type=BLDV</code> hace referencia al tipo de muestra de sangre (<em>Blood venous</em>). Es un código de FHIR para esta muestra (<a href=\"https://www.hl7.org/fhir/v2/0487/index.html\">ver todos</a>)</p>\n<p>Para el <em>informante</em> utilicé <a href=\"https://www.hl7.org/fhir/practitioner.html\">Practitioner</a>. La información se obtiene del servidor de prestadores:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">GET /HPD/Practitioner?_profile=http://cens.cl/fhir/StructureDefinition/Practitioner-cl&amp;getPractitionerByIdentificationNumber=11111111-1</code></pre></div>\n<p>La selección de “Perfil lipídico” o “Perfil hepático” es información que se guarda de manera local. Al seleccionar uno u otro la app guarda el código <a href=\"https://loinc.org/\">LOINC</a> del examen, el cual será usado posteriormente para obtener el formulario a mostrar.</p>\n<h4>Ingreso de resultados del examen</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/389d90cb76a7ea67785159b858deaf2b/0faf1/web-3.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 50.632911392405056%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA7UlEQVQoz3WSiRKDMAhE/f9P1dHx1lzSvrSkNLXMrEmALLCmWbdN+r7PWNdVsOu6RI29orY65kOUxjkny7LIcRzCPqUkMcZ8DiGUs67neeYYq/Wzeh+k4TMMQyaDAJDctq1sz+45e+/zSg6TdF1X7hArcQjDk52LdEkVO3J8x+x4dIc0xKwfC4wM4TiOsu/7VwLkVFVdMXzzPGdM0/SjeSGEjDGtyEqIv+5QQZe3HVKJ0e4IuWh9FCe3nuiHkIQ7QqshPnIBmv8dGT3Qxf4UJVCf1VHxeZuGkGfjnM+APOZ3lV57cy5IFd5+CvBsHjnTEuN81qmhAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Resultados de examen\"\n        title=\"Resultados de examen\"\n        src=\"/static/389d90cb76a7ea67785159b858deaf2b/f058b/web-3.png\"\n        srcset=\"/static/389d90cb76a7ea67785159b858deaf2b/c26ae/web-3.png 158w,\n/static/389d90cb76a7ea67785159b858deaf2b/6bdcf/web-3.png 315w,\n/static/389d90cb76a7ea67785159b858deaf2b/f058b/web-3.png 630w,\n/static/389d90cb76a7ea67785159b858deaf2b/40601/web-3.png 945w,\n/static/389d90cb76a7ea67785159b858deaf2b/78612/web-3.png 1260w,\n/static/389d90cb76a7ea67785159b858deaf2b/0faf1/web-3.png 1956w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Para mostrar cada fila de la tabla, utilicé el recurso de tipo <a href=\"https://www.hl7.org/fhir/questionnaire.html\">Questionnaire</a>. Este recurso representa el formulario a llenar y se obtiene así del servidor terminológico:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">GET /ST/Questionnaire/:id</code></pre></div>\n<p>Donde <code class=\"language-text\">id</code> corresponde al código LOINC del tipo de examen. Para este desafío los utilizados fueron: <a href=\"https://loinc.org/24331-1/\">24331-1</a> (perfil lipídico) y <a href=\"https://loinc.org/24325-3/\">24325-3</a> (perfil hepático).</p>\n<p>El recurso <code class=\"language-text\">Questionnaire</code> solo te dice que hay que solicitar el “Colesterol total”, los “Triglicéridos”, etc. pero no te dice el tipo de unidad ni los rangos de referencia.</p>\n<p>Yo al principio rabiaba con esto, porque no tenía idea de dónde sacarlos y consideraba que deberían estar incluidos. Pero Marcelo Cabello (CENS), me dijo que los rangos de referencia dependia de varias cosas como por ejemplo la edad del paciente. Así que… bueno, toda la razón 😓</p>\n<p>Sin embargo, levantaron datos para que pudieramos consultarlo. Lo cual se hacía con la siguiente consulta:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">GET /ST/CodeSystem/$lookup?system=http://cens.cl/lab-ref-ranges&amp;code=:code</code></pre></div>\n<p>la cual entregaba un recurso de tipo <a href=\"https://www.hl7.org/fhir/parameters.html\">Parameters</a> con las unidades y los rangos de referencia. El parámetro <code class=\"language-text\">code</code> es el código LOINC del dato del formulario a llenar. Por ejemplo, en el caso del colesterol, el código es <a href=\"https://loinc.org/2093-3/\">2093-3</a></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c02b451b97232bfd685d0a0ae097ed16/dba9a/perfil-lipidico-loinc.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 46.835443037974684%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAABEklEQVQoz22S626FIBCEff/3a9I/bXqsIHhLk1oFBacMdg0nlWRdWZaPcbBa1xXDMCDEiBgDpmmCcw4cx3H8i5j74u0ao9rnL/w8XhDWb+whQGuNrutgrc1wHjaOY54vywIZJbyM6kgPZ96xDZ9PwKZp0LYtjDE5+E4413hASL23ClPAjwo+AWNqUglImFIqQwTKTBgz1XIzR6nuAlKh7z7SqTGDqJIQZgYhUmOIJfM8P1lwAtPE9w9484bdu6xQPpu5VCpqCWOdue/7XBd//4A1nHrF7pYLyGZuFsWlQoFIX13X+QJPID2cNLxNF5OAWlOJvvwqYdwscx4kNalv23YqdFY8DLebxbc7P0Ut/wB6+AtGOq0SL3IGegAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"LOINC de perfil lipidico\"\n        title=\"LOINC de perfil lipidico\"\n        src=\"/static/c02b451b97232bfd685d0a0ae097ed16/f058b/perfil-lipidico-loinc.png\"\n        srcset=\"/static/c02b451b97232bfd685d0a0ae097ed16/c26ae/perfil-lipidico-loinc.png 158w,\n/static/c02b451b97232bfd685d0a0ae097ed16/6bdcf/perfil-lipidico-loinc.png 315w,\n/static/c02b451b97232bfd685d0a0ae097ed16/f058b/perfil-lipidico-loinc.png 630w,\n/static/c02b451b97232bfd685d0a0ae097ed16/dba9a/perfil-lipidico-loinc.png 652w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Nada que adivinar aquí, ya que el recurso <code class=\"language-text\">Questionnaire</code> trae consigo esta información.</p>\n<h4>Al enviar el examen</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/adc5038050885f465ae5be00b3f25a67/36909/web-4.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 50.632911392405056%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAu0lEQVQoz83OTw7BQBQG8DkFEmwtqhtrrDiJ2ziDA9jbWLJi4QgWWkKrHa2ZvqnE5pNp0kT6T2IhFr/kzcs3Xx7rTGboTfdomkM0jAHqb/S7ZvTRNsdodUfJnM1kMYcLuAHhcr3lnF0f3CdsrDV2xy18j5JdUTbFZBRDRgqSHjmCFJ4xsLTnWJ0Wyax3RdkUCwWhzF0qeDyEdXBgWy54IFCV15j+VCYtDSXldmXYx7KCq6tKf1f4rf8vfAFw2s4sqa6uTAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Ingreso exitoso\"\n        title=\"Ingreso exitoso\"\n        src=\"/static/adc5038050885f465ae5be00b3f25a67/f058b/web-4.png\"\n        srcset=\"/static/adc5038050885f465ae5be00b3f25a67/c26ae/web-4.png 158w,\n/static/adc5038050885f465ae5be00b3f25a67/6bdcf/web-4.png 315w,\n/static/adc5038050885f465ae5be00b3f25a67/f058b/web-4.png 630w,\n/static/adc5038050885f465ae5be00b3f25a67/40601/web-4.png 945w,\n/static/adc5038050885f465ae5be00b3f25a67/78612/web-4.png 1260w,\n/static/adc5038050885f465ae5be00b3f25a67/36909/web-4.png 2772w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Al enviar el formulario, se toman todos los datos requeridos y se envía al RNEL (Repositorio Nacional de Exámenes de Laboratorio) los resultados. Esto se hace creando un recurso de tipo <a href=\"https://www.hl7.org/fhir/observation.html\">Observation</a> mediante la llamada:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">POST /HAPI/Observation</code></pre></div>\n<h4>Buscar exámenes de un paciente</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/bdcdedc0f58aa15ec0de625935266edd/c8ad9/web-5.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAAB9UlEQVQ4y5WU227jMAxE/f//uG9FUTuW7/JdmeWRwyZtgWJXAE2JHI2GlOBiiovatlPb9erMGpvHedFxnNr349/N8Mu6qVjt0zSNkRlp2yo0wQC7rnHX/4zjPFUcxh5jVG+E07LrrY7689boNiaFSaqnu+rRzOYhXuvwmONvlgujcdhehBTIXZZZ8zyrGya9V63KMCj0s/lRdRfzvJs29XHXuCb186HO5oP5uMksaT+TtelQsSyr6rrWMAxWcqNljlex6VRVfqiqSlNvrahvakKtY98UzNe3Kq8N+CzZ+ph7OE3jS98e3bvfNY6j+n7ILRmnySpZcpzDY5xzjgp/EG7bLjxqMUA0+ExJKd0fPunMZZ0vMfOGIwZ+NZ6CJ1KWpZVWZf/xURr5+qnyN0sP72Onh3zSQ8F3o8m04lJ35vVvmExIuZP1h4QbADzvE4MMTAjhCwYjVpbVtYaQ+imRRvd9n41LoBQugQdPHhIuCQPrF0SO2KX2vAgB8w4xyPzG8b5mAyQYOMew18k/CdmEEjfKYwCkZDxlo/5VJSTbtmX8F0KXDYiknw6YGB5CrwCMvwRy3qJMmP8SpoDT+TlA7INNxLyH+YHnx95nIif8odBPQQFJB6DUFaPQ+/e9z8SehKff8rM3XgIHoYY8hMRdpSv0i3PCv+EgLlCtPThYAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Listado de observaciones\"\n        title=\"Listado de observaciones\"\n        src=\"/static/bdcdedc0f58aa15ec0de625935266edd/f058b/web-5.png\"\n        srcset=\"/static/bdcdedc0f58aa15ec0de625935266edd/c26ae/web-5.png 158w,\n/static/bdcdedc0f58aa15ec0de625935266edd/6bdcf/web-5.png 315w,\n/static/bdcdedc0f58aa15ec0de625935266edd/f058b/web-5.png 630w,\n/static/bdcdedc0f58aa15ec0de625935266edd/40601/web-5.png 945w,\n/static/bdcdedc0f58aa15ec0de625935266edd/78612/web-5.png 1260w,\n/static/bdcdedc0f58aa15ec0de625935266edd/c8ad9/web-5.png 1564w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Aquí se usa el recurso <a href=\"https://www.hl7.org/fhir/patient.html\">Patient</a> y <a href=\"https://www.hl7.org/fhir/observation.html\">Observation</a>.</p>\n<p>La búsqueda del paciente es la misma que en el ingreso. Una vez encontrado, se hace la solicitud para obtener los exámenes del paciente con la llamada</p>\n<p><code class=\"language-text\">GET /HAPI/Observation/?subject=Patient/:id</code></p>\n<p>donde <code class=\"language-text\">id</code> es el ID del recurso <code class=\"language-text\">Patient</code>.</p>\n<h2>Consideraciones de usabilidad</h2>\n<p>Mantuve la estructura que el equipo del CENS propuso con el mockup. Pensé en cambiarlo a un formulario por pasos, pero no lo hice porque quizás es buena idea de que tenga ciertas similitudes con una hoja de papel.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c440964bf3d042f04dc8b2b7b644adae/de766/ingreso-vacio.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 40.50632911392405%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAAAwklEQVQoz63QSwoCMQwG4F5SXbgR3bkQdO+BvIe38AS+5tl00vTxmw6C21EsfIRCm/6NOZ6eWG6PmK12WGwOWKz3P5srI4OF5wH/WsZLALOH94VAdB9CVOErMUaw3jdd16NuWgzatIgp/yTlDNEgpqSqyePROVTEsJI/wkR6tg8AeW3oyIGI9KsyRk8aPaeENIrvOk3pYRwzqp7gJI7KKwXHDJ8A/kZIMOeL4FoTHq3FvbG41f1YK8todBRTlbG1OrIX5l1RtiRXsDcAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Ingreso vacío\"\n        title=\"Ingreso vacío\"\n        src=\"/static/c440964bf3d042f04dc8b2b7b644adae/f058b/ingreso-vacio.png\"\n        srcset=\"/static/c440964bf3d042f04dc8b2b7b644adae/c26ae/ingreso-vacio.png 158w,\n/static/c440964bf3d042f04dc8b2b7b644adae/6bdcf/ingreso-vacio.png 315w,\n/static/c440964bf3d042f04dc8b2b7b644adae/f058b/ingreso-vacio.png 630w,\n/static/c440964bf3d042f04dc8b2b7b644adae/40601/ingreso-vacio.png 945w,\n/static/c440964bf3d042f04dc8b2b7b644adae/78612/ingreso-vacio.png 1260w,\n/static/c440964bf3d042f04dc8b2b7b644adae/de766/ingreso-vacio.png 1838w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Incluí validación de datos requeridos con un feedback visual (asterisco <code class=\"language-text\">*</code>) que indicara los campos requeridos:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/5cfbab751637e0758b5e642b3f8af613/e405b/validation.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 85.44303797468356%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAACJ0lEQVQ4y42TCZLbIBBFfaIcKDfLIXKOXCDLOOMqZ7MWy9aKEALBz28kObZnPBWqngAhNU3/z6bXA/I8R5ZlOB4LpGmGpm0RQsA0eUz+//BktA4beYzjGDHGoO97WGshTYLiBv8qgcGkOTdhYxmw61qUVYWx64BhiAQGhtaXOXcDd32IlaQkQwk4TROsc/DyU1nBk1CWCNwkcJMgJeBa4DeB2Qfr7rDwEkMCDsMIxWw0s1FEcyfH4zm/4uee9XT8ae7vmWK9zWix0YOIkuFUFBTliLZpsBQQl/ailreE5dtYQ8djCJ4vBdlg5FxK0EvGUs9Y9LeDSpN/Yg0bZqU7BX06oz4k0MUJY92gTVI0WR6PxVPTHrRSeAUf4rpdVVZUuVIGXw4a232K3e8C2585njj+VRmk1CrRb5PRCHpcAooHNYVpizP6NMdwKiM958ZYWsLNyPgBhusX23S0RUWLKEUf1vUM5xCBhJYoxTPZh3hn5xpK1Os2WcnEwEVoIVohYl1U8REX28hdTg4HpEnCe5zGe7xeuxdQ7bBctfs1UToaW86umYnhRHYQpcQkoloE/wjX/ar6Slhtw1R3tcc2rfB8bPGcN3hKyjiWdzL+ntWRb4czdnz/9c8J+1Ijp/qpnokqW6r842zxOZ9QtAM6bdD2Bg1p9biMh9jHsRoufcf13tByCzLWvMab9x8d3n3w+LTnDdEKVdOzjj3qdu7vqa/6ulE3VOQvN04rAq3jMdgAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"ingreso-vacio\"\n        title=\"ingreso-vacio\"\n        src=\"/static/5cfbab751637e0758b5e642b3f8af613/f058b/validation.png\"\n        srcset=\"/static/5cfbab751637e0758b5e642b3f8af613/c26ae/validation.png 158w,\n/static/5cfbab751637e0758b5e642b3f8af613/6bdcf/validation.png 315w,\n/static/5cfbab751637e0758b5e642b3f8af613/f058b/validation.png 630w,\n/static/5cfbab751637e0758b5e642b3f8af613/40601/validation.png 945w,\n/static/5cfbab751637e0758b5e642b3f8af613/78612/validation.png 1260w,\n/static/5cfbab751637e0758b5e642b3f8af613/e405b/validation.png 1566w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Para campos que requieren información previa, como por ejemplo las muestras y los resultados del examen, decidí mostrar un cuadro que indicara que es necesario llenar cierta información previa:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 603px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0e4f131fc9a7f80a26a693467d44d476/9128f/specimen-patient.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 7.59493670886076%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsSAAALEgHS3X78AAAAa0lEQVQI13XMwQqCQBRAUf//1yLBiKBMnNFieJpGjb6XLrpNH+DicnY3UzPKEc7dgh8i/mnJmUpe+FFxw0T9mLi/VzoD0S/yd6NMP0YhsHOR/FJTuMDp1nNIHhthXzbk15aqj8gCIQ2DstkPx/+W+SJtYX0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Información previa de muestra\"\n        title=\"Información previa de muestra\"\n        src=\"/static/0e4f131fc9a7f80a26a693467d44d476/9128f/specimen-patient.png\"\n        srcset=\"/static/0e4f131fc9a7f80a26a693467d44d476/c26ae/specimen-patient.png 158w,\n/static/0e4f131fc9a7f80a26a693467d44d476/6bdcf/specimen-patient.png 315w,\n/static/0e4f131fc9a7f80a26a693467d44d476/9128f/specimen-patient.png 603w\"\n        sizes=\"(max-width: 603px) 100vw, 603px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Hice obligatorio la selección del tipo de examen para que fuera una decisión consiente. No quería que omitieran ese paso y terminaran ingresando un tipo de examen distinto al que debían ingresar.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/ae2d2f462a29664b0532649603ac1777/3996e/selecciona-tipo-ex.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 24.68354430379747%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsSAAALEgHS3X78AAAAt0lEQVQY052Q3U7DMAxG+/6PhxiBcTfabgkda1PInxfOkqiIi12BpU/H1mdbljvnA9auLNZuWnHOI3Il/UG1PyahCzHxbjTj0GO05nQcscvMfyLnTFe3ugxfAk6+mz7jFesTa5DGxcXGO21+7atz9dJORFATPBwuqN6gxjNqOLN7M7zqmZfjhceD4amfeB4/mldzNUzN2xVvf5rRAXwqF/oQiWVzkExI5Q+VW175W2/88e7qoijcAD86gzlxBSA7AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Selecciona tipo de examne\"\n        title=\"Selecciona tipo de examne\"\n        src=\"/static/ae2d2f462a29664b0532649603ac1777/f058b/selecciona-tipo-ex.png\"\n        srcset=\"/static/ae2d2f462a29664b0532649603ac1777/c26ae/selecciona-tipo-ex.png 158w,\n/static/ae2d2f462a29664b0532649603ac1777/6bdcf/selecciona-tipo-ex.png 315w,\n/static/ae2d2f462a29664b0532649603ac1777/f058b/selecciona-tipo-ex.png 630w,\n/static/ae2d2f462a29664b0532649603ac1777/3996e/selecciona-tipo-ex.png 648w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>En las secciones con búsqueda de RUT (ingreso de paciente, búsqueda de exámenes y de informante), si no se encuentra a la persona, agregué un feedback visual:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/4c3fa539f798adbb5bdeb8b435f0bcae/2a08f/warning.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 33.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABYlAAAWJQFJUiTwAAABKklEQVQoz6XPv0oDMQDH8bgIDroX8XFc3Jx9Ah/A3cGhDgrVDiKKg0txURx8BQVLTygIer0uQrXm2vuXSy7J5X7mjlor4iCGfPgmS/4QstYAWayBzNWwur6BcNDFk9vHs9uruD3P1qvqev0KpRSbW9sgZAlkYQVkfvlL4/oBe81j1JtnOL+4Qsfp4PbewZ312W/aDtpOF63LG+zsH2H38BT1g5MpwiMfmeDIOEMUBvjvIDyTSDlHwlJwkcEUBXJjYCrFDDOjgM5zSKWhrLJS51Bag4x8H0HMMBgLPPaHeKEC7wwYxgXeIjNh1/FPw0n9JLcyMGlAtFLVDXSc4JWGoAHDKBIYxwJBIhEyiUTk4ApIfyFUAaEN7LQH2qeWlD1Ya11VSTnd/0X55Q+jXPa8AXS2bAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Feedback visual de cuanto paciente no fue encontrado\"\n        title=\"Feedback visual de cuanto paciente no fue encontrado\"\n        src=\"/static/4c3fa539f798adbb5bdeb8b435f0bcae/f058b/warning.png\"\n        srcset=\"/static/4c3fa539f798adbb5bdeb8b435f0bcae/c26ae/warning.png 158w,\n/static/4c3fa539f798adbb5bdeb8b435f0bcae/6bdcf/warning.png 315w,\n/static/4c3fa539f798adbb5bdeb8b435f0bcae/f058b/warning.png 630w,\n/static/4c3fa539f798adbb5bdeb8b435f0bcae/40601/warning.png 945w,\n/static/4c3fa539f798adbb5bdeb8b435f0bcae/78612/warning.png 1260w,\n/static/4c3fa539f798adbb5bdeb8b435f0bcae/2a08f/warning.png 1422w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Y también me preocupé de que en secciones sin resultados mostrara un mensaje:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/03d9092336ad688548ea587c7f513bf2/7be33/sin-examenes.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 75.9493670886076%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAABfUlEQVQ4y5VUi26DMAzs///mqrESNl4JkIe5+cKjrSZKF+mUxHZs3yVwcW5AWZYKA2MqFF9fcM5B5hkpydsQEfgQcfE+5ATDMKzQZJKwjPkZ88E6A4gp4RI1q7UWdV1j8h6fZY2P4geNS2idrEjoBkE/zmh17nTmmjP9dgjwflo7DCF3xi67rkPbduh6i946LdKg0T3X1jFmRIwJwziBUk2TR5J5p0zfhU5q2Pd97nQbDKD9druhaWpUxuC7qrLdGOpdwqg/pbSfyZSp4TiOKsmMx8E9u2Yh+gmvkmx27umLMd4TssNR26aTFKxzGSzCaklIZc5zRlpobTZZ6dLG+EnPKeUxU6uUzvJ8StVm2rt8F3uHS0XJRhHZQW2IRez4Z/9ou9tXDakF9SGKotCbbvMB7jnzEvgCtkSMv16vu4aMC/pagq5zh3yY/6F3hJ3y2dhonY3lS1kTHgnNRKTEi9qSvr6Uk8rLJanoq/CnHfL7E3n9F3m+/eO4oLl+AeHtmlIou5EVAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Feedback visual cuando no hay exámenes\"\n        title=\"Feedback visual cuando no hay exámenes\"\n        src=\"/static/03d9092336ad688548ea587c7f513bf2/f058b/sin-examenes.png\"\n        srcset=\"/static/03d9092336ad688548ea587c7f513bf2/c26ae/sin-examenes.png 158w,\n/static/03d9092336ad688548ea587c7f513bf2/6bdcf/sin-examenes.png 315w,\n/static/03d9092336ad688548ea587c7f513bf2/f058b/sin-examenes.png 630w,\n/static/03d9092336ad688548ea587c7f513bf2/40601/sin-examenes.png 945w,\n/static/03d9092336ad688548ea587c7f513bf2/78612/sin-examenes.png 1260w,\n/static/03d9092336ad688548ea587c7f513bf2/7be33/sin-examenes.png 1558w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<p>Finalmente, la aplicación es responsive, así que se ve bien en dispositivos móviles:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/72cf457f5f48ee96c56016267d31f5e6/1d69c/responsive.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 177.8481012658228%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAkCAYAAACJ8xqgAAAACXBIWXMAAAsSAAALEgHS3X78AAADy0lEQVRIx6VWTW8bRRheqaG9oEhp1YiEBikHWqAIcSm3SpwqVIkjP4DfAW3FJaWJKF/JhWM/xKX9DZQKc6qiJgITx3Hs2MF2Pmzv2uvd9X49zDPr3YztjZuGkR6/M+/MvvN+j7WJ92/i7e88TN8HLi55mF0Bpr58Cm3yErQLl6GdfxfaxSvQpt87ouNw7sPPMf+DhxuPgM8eevjkAQU+weQ7VzF/7QYuffwpzs19hDMzH2Bi9iomZsZD02av480FH3M/AnPf+5heBrQvfoV2ZgralNBuch7a2Rlob7x1Mnyz/BhLz23c/d3B3WcWFjMBFp6u4euF+/jq258kbt37GbcXl3H73rKkdxZXorWkK8n6ztIKNMjhCoTRNKGnG1pD78APgOJOGf9sbPZpDvl8HltbW9gUNJfLJbAsC0EQwvf9AQSBD6PThaaLnzAM0Wg0UKvVsL+/j93dXezt7aFer6NaraJSqaAq9jjv9XqRHeIbFRym5UQCgyB4LbN4flggkQg8YiK5LdaCH6tIEzSiIYdxeCh8t4FisYhCoSD9dSh4seCTjAEN6VjHceC6LmzbTubDGqZhQEOjYyUbaeM4E2Mh3W4X7XZb1TBKA2qlgtFkilDTGOSpZ2JeHPkBkzudDprNJnRdR6vVkrceHBzAMAzJI40F8SKC2qn+VdLm9NUhM0FNm1a7C9vpwfV89AjXi5DMfQm758IS53jWUmArMEzrKLENQ5dm0nSaQhNN05RrghEfF6QRHzLvMpkM1tfXZQ2TZrNZrK6uYm1tTfr1uJwMR30Y/K+SSy294z5+Vcmll55gWMJ/7C4Efaj661W+S61lW+QVhbF+mWvDqTEubUbbV5/BjGcSM7pMcgr3PC9JfK4ZHIJzJneqhrGPeGh7e1s22lKpJOextqyanZ0d2WTJZ0cajvzYoLyeyRgNiiMC0RQ38imgKXGE1cbLEg36pcb5cFMeCEpXRLksTCqVisKU5glfwFBB0g+joBge0BDVpftAS9BDhxB+tcOIinUj5vXXR3PRoIXMrurDUjvELy+BzEYFv61m8We2iBeFKp69zOGPvwoSmb+38Xw9L2lRaFARxpXNUMLxFYHUsClu2RUbtY6Lfw0HtXYPddPDXteXqJuu2OvzBA7sSEtSYkTDU3bDUR8mr55I5NxmHuVyWeYbKf81qMk7CCQRTo0y+13cD+O2z2o5SR8ceAKSV+8Ys9Mee7UD0QKz30ySV48b1IR1S0rwnY55KoZ58aM1Unq63pL1ynomaDJrmmazekjZ1uInge4h1OZMgf8BL5hTbxm91RYAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Preview de la app responsive\"\n        title=\"Preview de la app responsive\"\n        src=\"/static/72cf457f5f48ee96c56016267d31f5e6/f058b/responsive.png\"\n        srcset=\"/static/72cf457f5f48ee96c56016267d31f5e6/c26ae/responsive.png 158w,\n/static/72cf457f5f48ee96c56016267d31f5e6/6bdcf/responsive.png 315w,\n/static/72cf457f5f48ee96c56016267d31f5e6/f058b/responsive.png 630w,\n/static/72cf457f5f48ee96c56016267d31f5e6/1d69c/responsive.png 750w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h2>Aspectos técnicos</h2>\n<ul>\n<li>Es una aplicación web estilo “Single page application” (SPA) construida con <a href=\"https://reactjs.org/\">React</a> (versión 17)</li>\n<li>La interfaz utiliza el framework <a href=\"https://ant.design/\">AntDesign</a>.</li>\n<li>El deploy fue realizado en <a href=\"https://vercel.com/\">vercel</a>.</li>\n</ul>\n<h2>Cosas a mejorar</h2>\n<p>Por restricciones de tiempo, no alcancé a hacer estas cosas:</p>\n<p><strong>1) Agregar un “confirmar” el envío del examen</strong>. Al presionar “Enviar”, que aparezca toda la información que estás ingresando y que puedas confirmar el envío. De esa forma el que ingresa puede corroborar la información que está ingresando.</p>\n<p><strong>2) Descargar examen como PDF</strong>. Al ver un examen particular, poder descargar los resultados en formato PDF. Supongo que en algún momento querrían imprimir los resultados…</p>\n<p>En cuanto a recursos FHIR utilizados, hay uno en particular que quizás debería ser incluido. Al enviar los resultados, crear un <code class=\"language-text\">DiagnosticReport</code> que incluya la información de la <code class=\"language-text\">Observation</code> que se está creando. Según la documentación, este tipo de recursos debe ser usado para representar exámenes de laboratorio.</p>\n<h2>Resultados del desafío</h2>\n<p>Luego de haber estado 3 días aprendiendo sobre este nuevo mundo y aplicándolo para crear una aplicación, logré tener el primer lugar 🎉</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/12083fad9bd006f1e2f08f668803feef/87629/primer-lugar.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 75.9493670886076%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAACSklEQVQ4y51T207bQBD1//9HX1qVCtGUUgWJqq2KABUkmoTE8QXbcWIHx16v15fYzunshoBDLw8d6Wh2Zsfjc3Z2tYuraxz2TtA7OcX7jxJ9tf7w6fQx13/E877Ecf8MB0fHePPuCG8Pe3j1+gDnlz+g4T+tFAWw2XQy27XWti2apoH0Vd1gNJgSDJwNPHwZuLCDBIs4Ux8zUeIhjHAzsnB7q6tvWspvOtC6gbSmyMFZBj8WmMxWsAIGnldbDlRTZBkYS1WjJ27dhruEtBUvEPESiaiQEpuiqsELWlPDhOKQCUIORnGU5vCiVO11e2hddlLaeBYpmSMvwtlPB99GHr4OSf7QxWeKe1cG7mjPfUhVTZCIPZbartlmT8LWT/wY55M5LqcLXOgLfB/70OcxmnaDvXF0emi7+ez+UDctrHmEibOAF66UN/0H6F5ACGm9xMCe4z6IVW1XoZL8kp20dUXnljKsEoapM4dNTXTyPk2Yc057Kd2Meu+bvTOUVlGTPM8hhIAgX6/X4CLHlNhZixVsgknMS6qTtbIuo4lLL+MnybuGvj+DZVnwPA+u56r1eHwH2zIwnYxhGjoMfbLN2TZM01DedR0EQfDiDDuS67pWF13mFFtimZJMRjI5z5TkP9lv10aG946DwXBIbOf/fHY5XX7GGDKRoSwLFbfdiy2NU8HN9TUsw0QSx9jQs/qbiYzTUZgKzr2NVRQ9TzkniRnBW4Y0UQcunYft+0hoMJkczLoirPcQkWwvDOEEC8yWSyyJTFrSy6LJ/wL58HVxC//7RgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Diploma de primer lugar\"\n        title=\"Diploma de primer lugar\"\n        src=\"/static/12083fad9bd006f1e2f08f668803feef/f058b/primer-lugar.png\"\n        srcset=\"/static/12083fad9bd006f1e2f08f668803feef/c26ae/primer-lugar.png 158w,\n/static/12083fad9bd006f1e2f08f668803feef/6bdcf/primer-lugar.png 315w,\n/static/12083fad9bd006f1e2f08f668803feef/f058b/primer-lugar.png 630w,\n/static/12083fad9bd006f1e2f08f668803feef/40601/primer-lugar.png 945w,\n/static/12083fad9bd006f1e2f08f668803feef/78612/primer-lugar.png 1260w,\n/static/12083fad9bd006f1e2f08f668803feef/87629/primer-lugar.png 2076w\"\n        sizes=\"(max-width: 630px) 100vw, 630px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n  </a>\n    </span></p>\n<h2>Mis impresiones sobre FHIR para la interoperabilidad</h2>\n<p>La versión utilizada de FHIR funciona con APIs REST en json. En español esto significa de que un programador web debería ser sencillo comprender la parte técnica de esto.</p>\n<p>En mi caso fue así. Lo complicado es la terminología clínica y como <em>mapear</em> recursos con procesos de la vida real.</p>\n<p>Otra complicación que veo es que si bien la <em>forma</em> de comunicación es estándar, pueden haber dificultades. Algunos ejemplos:</p>\n<ul>\n<li>En el desafío avanzado, obtener a los apellidos de un prestador es distinto a obtener los de un paciente. En el caso del prestador, se utilizaba una <code class=\"language-text\">extension</code>. ¿Qué pasa si no todos los centros lo hacen así?</li>\n<li>El estandard es peligrosamente flexible. Los resultados de un examen particular como el perfil lipídico podrían hacerse ingresando todo en un solo recurso <code class=\"language-text\">Observation</code> o crearse múltiples recursos.</li>\n<li>Trabajar con el recurso <code class=\"language-text\">Parameters</code> para obtener unidades y rangos de referencia fue relamente tedioso 😂. El formato de los datos es más complicado de lo que podría ser aunque estoy seguro de que debe haber una razón para que sea así.</li>\n</ul>\n<p>Dejando de lado las dificultades, como creador de software, <strong>lo que más me gusta es la posibilidad de crear aplicaciones que funcionen independiente de donde provengan los datos</strong>. Aplicaciones agnósticas a la fuente, pero que <em>hablen</em> en HL7, de manera que puedan ser utilizadas por cualquier centro o institución que use el estándar.</p>","fields":{"tags":[{"name":"Interoperabilidad","slug":"interoperabilidad"},{"name":"HL7","slug":"hl7"},{"name":"Eventos","slug":"eventos"}]},"frontmatter":{"title":"Mi experiencia en el Tech Connect 2020","date":"09 de  diciembre, 2020","description":"Mi experiencia en el desafío avanzado del tech connect 2020","author":{"slug":"nico","avatar":{"childImageSharp":{"fixed":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEqUlEQVQ4y22T2XMUVRSH58kHtRDIOpnp7pnuniXbJJMdshEyIQnZYFgCRCKEJJCwC0mUFMpigEBYEtawhCAJBgEt1iqg1BIpKUuLguJBLV98sKzywb/h83SHzdKHU32r77nf/f3OPceRYMzCini9VL5lOP2VuFLqUNKiqBlLUcLNqFkr0SRUWSuhxbK3QHIacAaqSDBn22cnz8/C8RImG0nBGtySrGYuQ8teiTeniUC4iuRwBWaoEm84ije/E092i52jpC/ElVxLoq/8FfAlTDaU9EV4spaj5XUQyKkjMiOTmSGDUMCL36tieD2YGRGBtkuskdz3UEONorZeoJEXCstE2dznsGb0gnUYuUuIFGbRUJhCrplId1MthekBprz9DlPeegO3kYlR3PVc7cpJqKVUhDmsmrmlXprUR89fjV7cQ1p+PeVhnfLsIHvWr+Dvn+7y682z9K9vJqC5mD49BqNoI0ZJj5zpsJVa9pMC1ThcyXV28b25begzN2KW78aXs5gsbwxb3m3g6/Fh/vjhPs9ujzO27wM6Fs8hLjYWvbRHcnehF72PN281WmYT7tQGHJY66wbbqtzoqzyAUtTNqmiE7y4c4kTPOp5eO8mnOzbQ29JEX+ciQkGdpMIu/FUHMUo/FCEbbOuWSofVBp6cVvTCzZhlH+GbewSlbDe961r5/avLPL1+kd9ujPDZzg08GBng3qmdVBZlo5Rux1dzFHP2DrG/RRy2i9MlOGy7Itko3opPLHirBglFhzm9byd/PrrDXw9v8WB0kMObWngydoibxz5maSSbUN1B9JoTmJFPbGdeqaUWbhKg9JPVAkZJt2z2YcwdIjD/Agf6h3l8a4SHE2d4NHGRKwf3MLJ7CwPdzTRE2whGL2DUHMes2Dtpu2CtAJf/F2jWDKHXj5Kx9DIT54d5cuM0T66Mc3toP6N9a9nUuYLUxs8x549J7rH/Ab5m2Xpho/oI/nln0edfob1riHuXDvP07jVujwzS3VZLdbSF5MYv8TWcs93Yrl63bD2K97VHMSr346s/hdpwmc6uo5wb2Mq2zR00L6yhqthPbW09/uglzPqzGFUDrx4lr91uP7tttBdtU9qLOadfXvoQrpJe2lat4fGd0/Rva6dlUTndrdUsq5uJK7dF7A5K7gGMWdv/3TZ2Y0tT6nmtGAVtApcRTC1FDeYRidSI3XF+vHWeqyd3cfV4Lw3VFUyNV1ED+eKsEWOGDER+mz1p7tR51uhVoKXORgsWyIyGUMx0NH8WeuoMFH8eo4N7eXZ/gu+/OMPYUB/eQJgkPR3Vl4HLE8Stp0leLkqwREYvIkBDmtQUkC9TvhK+bNxmGE8wB5cklkdq+eWb6/z87R2qqqPEa2kCScepJZOgBCSC9jpR9RPrCuBIVFNw+7JEYQ5aIIckb7oNtEIVpdOcfjpXtbFkQSNvTnWR5EnB6Uklzu0nQRWQliKwZOLdAaYnaDhinSZOgShyWBGw6s+24YovbK9VuSTG5Ze6eXCJMivHLXsuI0OshwRowXwC8zAtXoAxiTpxcsACTKp6DhT7L1RbSj3B3EmY/LfCJfV2etJs27FJBlPj3EyLU/gHBhzbgqfkxlYAAAAASUVORK5CYII=","width":70,"height":70,"src":"/static/c454b7eddf2624b2e434eb2b68050446/31406/nico.png","srcSet":"/static/c454b7eddf2624b2e434eb2b68050446/31406/nico.png 1x,\n/static/c454b7eddf2624b2e434eb2b68050446/1edbf/nico.png 1.5x,\n/static/c454b7eddf2624b2e434eb2b68050446/b3779/nico.png 2x"}}},"bio":"Ingeniero Civil en Computación PUC.","github":"muZk","linkedin":"codewithnico","name":"Nicolás Gómez","twitter":"codewithnico"},"image":{"childImageSharp":{"resize":{"src":"/static/e56edc9bae5ce4c283d5a31e754bd03e/f3583/preview.png","height":627,"width":1200}}}}},"previous":{"fields":{"slug":"/estandares-interoperabilidad/"},"frontmatter":{"title":"Estándares de interoperabilidad en salud"}},"next":{"fields":{"slug":"/ejemplo-interoperabilidad/"},"frontmatter":{"title":"Ejemplo de interoperabilidad en salud"}}},"pageContext":{"id":"56f08aa5-5e38-5431-8e2a-c52b96d691b1","previousPostId":"ca7e53fd-7c32-5e2b-83f1-58e7ad470b56","nextPostId":"68fdf447-4c12-51ff-9717-a793bdecab8f"}},"staticQueryHashes":["3832538981"]}