<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[RSS Feed del blog de Nessy]]></title><description><![CDATA[Blog sobre informática en salud.]]></description><link>https://blog.codeness.io</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 18 May 2026 19:18:05 GMT</lastBuildDate><item><title><![CDATA[Archivo del Nessy Letter]]></title><description><![CDATA[Entre diciembre 2020 y julio 2022 escribimos el Nessy Letter, un boletín mensual donde compartimos noticias y reflexiones sobre informática…]]></description><link>https://blog.codeness.io/archivo-del-nessy-letter/</link><guid isPermaLink="false">https://blog.codeness.io/archivo-del-nessy-letter/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 18 May 2026 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Entre diciembre 2020 y julio 2022 escribimos el &lt;strong&gt;Nessy Letter&lt;/strong&gt;, un boletín mensual donde compartimos noticias y reflexiones sobre informática en salud. Después de 19 ediciones decidimos parar (las razones están en &lt;a href=&quot;/por-que-descontinuamos-el-nessy-letter&quot;&gt;Por qué descontinuamos el Nessy Letter&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Como el archivo original sigue vivo en Buttondown, dejamos acá un índice ordenado: cada edición con un título nuevo que resume lo que cubrimos esa vez y una descripción breve para decidir si te interesa abrirla.&lt;/p&gt;
&lt;h2&gt;Las ediciones&lt;/h2&gt;
&lt;h3&gt;Julio 2022 — Cirugía con imanes, FemTech y el costo de Roe v. Wade&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/4f6cbd9f0f5e606c9c022a2f1aed1215/21b4d/2022-07.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 56.32911392405063%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABWElEQVQoz32QT0/CMBjG+Uhe/QJ+Bv/cPXj1Cxg8etLE6AfwoImJNy9MMBgTwZhoYMXxR4MKOgRD167bunb17QbIUGmeLs/6Pr/2bTPL5RIVIpDSk9KP5QnJpXx2+Ik1LPeYzXgYTVWlhDAgAGZWyiUeSaVUpEZDRtqeo4/9an/z2j6u40BMiqNYGEWrv+Hk++UH64X87l3VaHs794PbLos3nQsnghDUDh/qG2eXRy3r1Op3SKjhceDfkydto877QfFmz0TTpb9Olhru+b6JcZPSV8ZeGKthjBwMb/NE3QYlb4y1KG1S0g8CCAOSgm3fr+BhnZCu57Vdt81c+HWFsAh5JA7AsG+DkM9ZON32/JHEeNI2zDC+5A8cSOVwhTk8uvZMqEFs0ndeA3jpqriFzO0ayk6EULYKMrVMpFUx9eI4AGFAAMwsFvILRi6li0TG2MR+JmPkAPwGfbk/EFtnk6EAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Julio 2022&quot;
        title=&quot;Portada Nessy Letter Julio 2022&quot;
        src=&quot;/static/4f6cbd9f0f5e606c9c022a2f1aed1215/f058b/2022-07.png&quot;
        srcset=&quot;/static/4f6cbd9f0f5e606c9c022a2f1aed1215/c26ae/2022-07.png 158w,
/static/4f6cbd9f0f5e606c9c022a2f1aed1215/6bdcf/2022-07.png 315w,
/static/4f6cbd9f0f5e606c9c022a2f1aed1215/f058b/2022-07.png 630w,
/static/4f6cbd9f0f5e606c9c022a2f1aed1215/40601/2022-07.png 945w,
/static/4f6cbd9f0f5e606c9c022a2f1aed1215/78612/2022-07.png 1260w,
/static/4f6cbd9f0f5e606c9c022a2f1aed1215/21b4d/2022-07.png 1280w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Robot Levita —cirugía magnética made in Chile— aterrizando en la salud pública, los riesgos de privacidad de las apps de salud femenina tras el fallo de la Corte Suprema de EE.UU., y un programa de telesalud mental para el personal sanitario chileno.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-julio-2022-3514/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Junio 2022 — Mujeres en salud digital, certificaciones en la nube y una app contra el sol&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/a482317b2183e49ddc645b8ab3ea1287/21b4d/2022-06.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 56.32911392405063%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABbElEQVQoz52SPU7DQBCFfSJScwDoqGhIKLgKoULcADoUCnoqfgQSaTBIFIntBIISEkUCoYC8Tvy79j5mYltyhIMQIz3vzOzbz2vvalv6HVwpIZMEYUERyY9jBDHlAJyPHsT4FQHlEfWLXl7rxhJVYmn8kEqhLBT1bQl0jg9gn+wgcCb5zA9vTN6arkPjHfJbOBJqqkyxSnungyE2jg5hXpwhplrS7lTBl2Sb4S+q5sCoAMzFZpkofIUh9psGNs+baPSe2bTg+xVYFi79w4fuCxqPLfSn06W+BWD+yWPPQ1vYGMxmGLruXJYQ6NPIwbVBNY/seXIcvPv+fC4sA47I2LJt9Mk8yoCcW46AiCJ0CMDzDON+l+q3MmBAhVpy0n8JXpsC6drU7vVyV0i7FnQDRQh8Bmnt0TlP/DQviW1iaWvNW+xaJvYsC/UFmaibJINlpDmrneUFL69lxjqxtNWba1SuLrFCqvxT+VpmfQPVexvbofHpcAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Junio 2022&quot;
        title=&quot;Portada Nessy Letter Junio 2022&quot;
        src=&quot;/static/a482317b2183e49ddc645b8ab3ea1287/f058b/2022-06.png&quot;
        srcset=&quot;/static/a482317b2183e49ddc645b8ab3ea1287/c26ae/2022-06.png 158w,
/static/a482317b2183e49ddc645b8ab3ea1287/6bdcf/2022-06.png 315w,
/static/a482317b2183e49ddc645b8ab3ea1287/f058b/2022-06.png 630w,
/static/a482317b2183e49ddc645b8ab3ea1287/40601/2022-06.png 945w,
/static/a482317b2183e49ddc645b8ab3ea1287/78612/2022-06.png 1260w,
/static/a482317b2183e49ddc645b8ab3ea1287/21b4d/2022-06.png 1280w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El programa de RECAINSA para cerrar la brecha de género en liderazgo healthtech, becas de All Cloud Chile para certificarse en Google Cloud, y la app SunSmart de la OMS que avisa cuándo aplicarte protector.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-junio-2022/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Mayo 2022 — Crónica desde Reino Unido y el futuro de la telemedicina&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7fc711c0bca8830c1f3a51ad7a8ab250/21b4d/2022-05.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 56.32911392405063%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABXUlEQVQoz22Rz07CQBDG+0Z4MD6MUQ8efQljL+rFo/99ADXGsykYLppoVSAQadW2nkCRQFtoi7s7O06LrUWYfNl8mfl9me1W2bUsRAyEGAGk4hEfUbN8eWa/moAYCchNgWCa7tmWcujY5ISUmJaEENH/arXU1cWB58VD4WGueAIfOY5yYE+FMfbblael81MWhiiZFEE+PIZp68xwXNVOZ76oren6S7wcIQfMCNOY7iOSkzpvH+2dem398eGqrIXBABJmjP0PUzV8r9T5rLluw/OqrnvX65EZcn5Rr922W3Xfr/T7N92uNRyO+YnNDCASgk5GHiVHGUrgsUESSwB6ap7fvJ+EqZV9k+QgQy4jLgNOHr9BBiw26YvwLHzsONnr/xYDDAUGHH0W+xGgl5jJX3Xy7ijL+v2maWw0n9VMRlM1UxmJTEM1/gCCt0xjRdeVhetSoajNTaowpWmAgj8+gUgvCqFt/AAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Mayo 2022&quot;
        title=&quot;Portada Nessy Letter Mayo 2022&quot;
        src=&quot;/static/7fc711c0bca8830c1f3a51ad7a8ab250/f058b/2022-05.png&quot;
        srcset=&quot;/static/7fc711c0bca8830c1f3a51ad7a8ab250/c26ae/2022-05.png 158w,
/static/7fc711c0bca8830c1f3a51ad7a8ab250/6bdcf/2022-05.png 315w,
/static/7fc711c0bca8830c1f3a51ad7a8ab250/f058b/2022-05.png 630w,
/static/7fc711c0bca8830c1f3a51ad7a8ab250/40601/2022-05.png 945w,
/static/7fc711c0bca8830c1f3a51ad7a8ab250/78612/2022-05.png 1260w,
/static/7fc711c0bca8830c1f3a51ad7a8ab250/21b4d/2022-05.png 1280w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Mi experiencia trabajando dos semanas desde UK, la reflexión de María Paz sobre por qué la telemedicina no va a desaparecer post-pandemia, y la visión Deloitte 2040: de tratar enfermedades a gestionar la salud con datos.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-mayo-2022/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Abril 2022 — Convocatorias healthtech, IA cardíaca y trabajar en Babylon Health&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/74980a5319bf932af3d86ff8448f6943/c1b63/2022-04.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABmklEQVQoz41Sy07CUBDlt/wKt/6DceVOf8CFiRuVDUZdCJKIO3caXxgTTUCNcdUCthAeoVCofdDe2+Pc25ZC0OgkJ/M6M52Z28xBvY49VUFWVWegYF9AoTjlc+02srUoPtUzfFGfq9ewWq0gg7/EsdC+v8J/5FTXooYe5wgShCEYZxgPunBtF9vla2xsbcK3xrAUDW6nS/mQeGnNhCDksFGPGjJqEiYgPySy55gw7C+slMtYq1TQNccYtA1K8pQbQ9QLOW40ooZBHJhK7HNzhOLOLpZKJSzf3aJDH4jS8/yFhiz+iseYHN8lzSg+Go3wUSzhRVHxbBi0KpechOvG9kJDIS3HwQW95qPRR3U4xLtp4on0pWNDn0wwIJw1ddz0elAtCw/9vrS7njeddG5CsYZYncs7hnJCmaMHCsDh0+1YHKcrSh7/7YZizYQgQT6zfTDHn2ruM3A3kD5nfK6pH7/y0ezKC2IFgM0iLeCHkT/2xYg/Sl77ROa82cQJGXlNS0E/aKGlo0A3k1raWurr2hxf1Jeoz/rbK74BK/k6kxC8gNQAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Abril 2022&quot;
        title=&quot;Portada Nessy Letter Abril 2022&quot;
        src=&quot;/static/74980a5319bf932af3d86ff8448f6943/f058b/2022-04.png&quot;
        srcset=&quot;/static/74980a5319bf932af3d86ff8448f6943/c26ae/2022-04.png 158w,
/static/74980a5319bf932af3d86ff8448f6943/6bdcf/2022-04.png 315w,
/static/74980a5319bf932af3d86ff8448f6943/f058b/2022-04.png 630w,
/static/74980a5319bf932af3d86ff8448f6943/40601/2022-04.png 945w,
/static/74980a5319bf932af3d86ff8448f6943/c1b63/2022-04.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;MedTech Innovation con USD 15K en juego para startups chilenas y argentinas, Claudia Prieto y su uso de resonancia magnética con IA para detectar riesgo cardíaco temprano, y la búsqueda activa de Babylon Health para mudarte a UK o EE.UU.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-abril-2022/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Marzo 2022 — STEM con mentoría, data science gratis y emprender en salud&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/a0ef6ec4984ecd36f01539096ac53fa0/c1b63/2022-03.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABZUlEQVQoz4VRXU/CMBTlJ/o/fPS3CJhogonAi5oY3zSaYEAFxSWgiTBg34ljUDeBwdre1q4zY6CJzUlz2ntOz81t7kjX8qNBYTTMYFDQtP1er6j2DwyrqOuFTUF+ODjUtV1FyXHOKWN8vWLOcMS091DrLrUOjxZ8cyX6imnG5ghAnBMQwTkP9O7lQ62sqsQ1x28NoSUZjdALV0nXt5OZ5N5IOX+p7zSfS+3mhzNM77PJx8YvM5ecIkd9ur5oNWr3V9if/mPGAJEElggBSBTxecCWPmFsRWlSXckdsmZxeETTmue1EOrPZm2EGp5353ljjO8RunXdG9d9DQLF9+uTieJ/JvnrZJBgctZJfyAJcAb8p+O0tNE2lp0kNUFhgemSQIhjYAqCLzBQiB+SGTiZ9h8DA8bnhIc03ueUEx7zLyJEWwMrm0buzLZPDEP8eIqqY6WoWFbVtquOXbHWgrJhnNr2XqfzDfuEYlRaVn7FAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Marzo 2022&quot;
        title=&quot;Portada Nessy Letter Marzo 2022&quot;
        src=&quot;/static/a0ef6ec4984ecd36f01539096ac53fa0/f058b/2022-03.png&quot;
        srcset=&quot;/static/a0ef6ec4984ecd36f01539096ac53fa0/c26ae/2022-03.png 158w,
/static/a0ef6ec4984ecd36f01539096ac53fa0/6bdcf/2022-03.png 315w,
/static/a0ef6ec4984ecd36f01539096ac53fa0/f058b/2022-03.png 630w,
/static/a0ef6ec4984ecd36f01539096ac53fa0/40601/2022-03.png 945w,
/static/a0ef6ec4984ecd36f01539096ac53fa0/c1b63/2022-03.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;PROVOCA abre postulaciones para grupos subrepresentados en STEM, OpenSalud LAB lanza un bootcamp híbrido de 36 semanas en data science para profesionales de la salud, y el diplomado UDD en emprendimiento digital sanitario.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-marzo-2022/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Febrero 2022 — 100 mil virus nuevos, brechas en telesalud y niñas en IA&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ca822d942a06b982037e712f01d63e24/c1b63/2022-02.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABhklEQVQoz42STU/CQBCG+X/+DC8mHr179B8QLhL1IHjRo6IJhnDhQCIRP0iU0tKWlBYBqUDLdrevu9tayofGTSbvzOyz05lJM3lVRVZpI6coaxblsm0luld7yHW0JJ82cX+sdrDfeEAG/z2DIhCYfyIXhh4V9BlDsGYLyiRUatZx3XoD6DsYGSMIscmyiD3R1KggDUOEKWPcgBATj+Go9oyd8h3yrR7sKZV5tsZTyQNnmrYsmD5hHL84MxxWu9irNLF784SGNY2B1VE3Coq2fUpl60KJUEYx8gna4znsrwDaxMfQI5LxYkao4IN45KTgnCdv+33cOw7qoxFarovqwEFt+IHG5whTSlDqWyg7NkqWhQrnXt0JyrYt+TFZyIKn6Q5pvIufHYbxZIHYmVCeE77YIosZ9tsORftpiIkPzAjonCTKCAXzAhkzusqTeOSkw62H7w0zGqkwEkaxSwC2/UlB7yJzZZo4505B15fGf9Biz0DRNCKVvr6MDX2FF+8veZ2D5iO+AQZzPLXlEpZhAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Febrero 2022&quot;
        title=&quot;Portada Nessy Letter Febrero 2022&quot;
        src=&quot;/static/ca822d942a06b982037e712f01d63e24/f058b/2022-02.png&quot;
        srcset=&quot;/static/ca822d942a06b982037e712f01d63e24/c26ae/2022-02.png 158w,
/static/ca822d942a06b982037e712f01d63e24/6bdcf/2022-02.png 315w,
/static/ca822d942a06b982037e712f01d63e24/f058b/2022-02.png 630w,
/static/ca822d942a06b982037e712f01d63e24/40601/2022-02.png 945w,
/static/ca822d942a06b982037e712f01d63e24/c1b63/2022-02.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Serratus descubre 100K virus desconocidos analizando bases genéticas en la nube, las plataformas chilenas solo cumplen el 70% de los estándares de seguridad exigidos por el sistema público, y Technovation Girls Chile abre cupos para chicas de 13 a 18.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-febrero-2022/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Enero 2022 — Fondos para ciencia, analítica de cuarentena y ley de datos&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/c1b63/2022-01.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABZElEQVQoz21Ry07CQBTlB/0KV8alH+DSPwAXGjERutGtGjFGgoksjJgGfCCPDh0QKBUspS0zc2ecdkIrxclJe3rnnN4zdzLHRjfbaeU67RSybYnWoTHIdY3cukDWj4zubq2WEUIwzkV6McFJ+LY0EaCokmiUvtjrheYlgPyOQQBk8Up/unz7FKzJ6JRxaUg0y0iQN4x0Z0WdgB9U61t3pZP3wdhla31X+lO0YYaIN6zFfgXtlPXt6/rzlxvX/zHDKoyC5NMlbX574znFDrEDIg9CIoEPQAHgr1muj/n8djS6t6yO6z7a9stsVrbGVuA3fmal0fBmOHx1nKptP0wmbddVliQ2F1z+D0IiQOVfgUUHDhE15KnYJEqiFJKCR5hP2YKAR4Ew8ClIzsIRqwbqOvKbA5P7wqXCY+FTzpmKkDtUilIDK/RQ5gLjM4TkjcfQ+maMomlqGGt9XDQTQQGhc4z3dP0Xp2Bi0HV6lQUAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Enero 2022&quot;
        title=&quot;Portada Nessy Letter Enero 2022&quot;
        src=&quot;/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/f058b/2022-01.png&quot;
        srcset=&quot;/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/c26ae/2022-01.png 158w,
/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/6bdcf/2022-01.png 315w,
/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/f058b/2022-01.png 630w,
/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/40601/2022-01.png 945w,
/static/af2ea7f9bfdc3ce4b7cccaea7ca9190a/c1b63/2022-01.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Startup Ciencia 2022 con $7.350 millones para emprendimientos científico-tecnológicos (con incentivo a equipos liderados por mujeres), una plataforma chilena que midió el cumplimiento del confinamiento, y la nueva Ley de Protección de Datos Personales que acerca a Chile al GDPR.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-enero-2022/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Diciembre 2021 — Teletriage al cierre, SNOMED en español y lo que aprendimos&lt;/h3&gt;
&lt;p&gt;Casi 100 mil solicitudes resueltas remotamente con teletriage (1 de cada 10 cerrada por teléfono, 2 días de tiempo medio), el primer eBook de SNOMED en español del Hospital Italiano, y el cierre del año con el diplomado UDD del equipo.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-diciembre-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Noviembre 2021 — IA contra el cáncer de mama, software de salud y Apposito en validación&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/19b71d40f7dc8eb469d7aa1344d9f023/c1b63/2021-11.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABYElEQVQoz3VRTU/CQBDl1/gj/EFevPk7PIuaqBitF0k82YshaiJRDwQlJGiEfvfAthVpWgrdj3G2a0Grbl5eZjvv7UxnaoeWWTeGu8boO/YMo2Ga+8aoPnytpBD10fDAMje73RoAMCGgPMvost9/CwKAVAgKP4/SnzmONC84x7tCzjHBjWm0ruvbvSfGFgmlvDAsgXp0HVlWpbIMGEsAPnYGL2u6vtG+H8fvAJn4VfnYrpqLB4prh5CmaV75vnSyGP4zzznHTvISKfbKuXoQKcOPQszLbMYYYmXuTCbXhLTD0EwT5Mcoug0Cks0xuAnIXRi2xuML33+Iov502iJkEMtGGuqfKZeFeNGuqihK8JJZKRCVtikmlKhQsDTnGeWznCHnTPKMCi6WglxN+4+B4aoSCimDmELCAHesYiYqA9Nwz03PPbEtzbFX8F3Nc77YdTTPlbG7Epza1rnnbvWePwFvR2Io6eeKIwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Noviembre 2021&quot;
        title=&quot;Portada Nessy Letter Noviembre 2021&quot;
        src=&quot;/static/19b71d40f7dc8eb469d7aa1344d9f023/f058b/2021-11.png&quot;
        srcset=&quot;/static/19b71d40f7dc8eb469d7aa1344d9f023/c26ae/2021-11.png 158w,
/static/19b71d40f7dc8eb469d7aa1344d9f023/6bdcf/2021-11.png 315w,
/static/19b71d40f7dc8eb469d7aa1344d9f023/f058b/2021-11.png 630w,
/static/19b71d40f7dc8eb469d7aa1344d9f023/40601/2021-11.png 945w,
/static/19b71d40f7dc8eb469d7aa1344d9f023/c1b63/2021-11.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Algoritmo desarrollado con el MIT y testeado en Chile para riesgo individualizado en mamografías, la plataforma QueHayEnSalud que registra software en más de 4.400 instituciones, y nuestra app Apposito buscando prestadores para validación.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-noviembre-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Octubre 2021 — Chile y su Política de IA, HL7 CORE e insurtech en alza&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/877b394321215603f89495b465398928/c1b63/2021-10.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaElEQVQoz3VRzU7CQBDmaXwJ38eLR1/DczVGoyYCB/WmvXgwmqjEBDGEGIzQH1o0trSQUkrbndlxu8UKVSdfJt/OzDczma0cGLqi9Xa0/jJ2Ne1Q1/e0vtJ7LaUElH5v39A3W60KEQHn9G0Fu+x03hyXaMY5o1XL62uDQSZOEMU7R4oiwbWJt66q2+1ngCRkDKWggKgXqiPDKE3OCEBINFG63TVV3bh7+Ax8ojn/NfnYLItlA/l8cpxTXb8aDjMlBPSfmMlNUkThGWKMEAGgbIicC54gjwFEWZxlkS2L5wA3rnvtOM3xuDudNkbeo+ffj0ZenNy6btP3bxz34uP9JQganicQAltZGyUWJndDeYCCo4znWFlbLJxHsxbIIUpxzjBKIWKYAsSCM9EbaTEjza/9x8FEn5DRDChgFAKJBXPOeOlg1YFZObftE9MUP16gPrRqtiV83bZqVuaziPVTUDXNM9veare/ABTHYvzcy6BUAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Octubre 2021&quot;
        title=&quot;Portada Nessy Letter Octubre 2021&quot;
        src=&quot;/static/877b394321215603f89495b465398928/f058b/2021-10.png&quot;
        srcset=&quot;/static/877b394321215603f89495b465398928/c26ae/2021-10.png 158w,
/static/877b394321215603f89495b465398928/6bdcf/2021-10.png 315w,
/static/877b394321215603f89495b465398928/f058b/2021-10.png 630w,
/static/877b394321215603f89495b465398928/40601/2021-10.png 945w,
/static/877b394321215603f89495b465398928/c1b63/2021-10.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Lanzamiento de la Política Nacional de IA con foco en educación y transparencia algorítmica, la guía CORE de HL7 Chile entrando en validación pública, y el boom global de las insurtech (más de USD 6B invertidos).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-octubre-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Septiembre 2021 — Receta electrónica al fin, FHIR a la chilena y ransomware que mata&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/fb8633ede8d4391fca170e186cb0da62/c1b63/2021-09.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABQklEQVQoz4WRzU7CQBSFeRpfwvdx487XcC9qomgUN+oS3Lg1bgx/kogBptOCGNMA03b6O/fOOG2JQml08qU5t/ee3JOZyjk1qmR0TMbrnBByYRinZFwdvRdamup4dEaN/Xa7opQCKdXWafT7Q9tWypdSFFr5/I1lpeYYUdc5CeoGEjbfbTYPex2AmAuBmeEHPa9dNUoLm1MBwJViR4PBzkNj7+n5y10oFcqtzZcmLYkts7Jl2/fUePyYpU701N9mHSZAiBC14CDyn/rrg/ABQ4QQMckCb5hFVlhB0GWMcG5w3lkuZ0Ew9LxXh3XY8mUxf3PdvuN8huE/sdX6BZSdDbMOg1KuABQsBC8GJwI3gghSzSJMANVqJg9fK9msZZIRyxTQWqaXjcXNdf3Od9PJlUnrlvnL1CphbeDapLfTyUGv+w11H2T3pewU0gAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Septiembre 2021&quot;
        title=&quot;Portada Nessy Letter Septiembre 2021&quot;
        src=&quot;/static/fb8633ede8d4391fca170e186cb0da62/f058b/2021-09.png&quot;
        srcset=&quot;/static/fb8633ede8d4391fca170e186cb0da62/c26ae/2021-09.png 158w,
/static/fb8633ede8d4391fca170e186cb0da62/6bdcf/2021-09.png 315w,
/static/fb8633ede8d4391fca170e186cb0da62/f058b/2021-09.png 630w,
/static/fb8633ede8d4391fca170e186cb0da62/40601/2021-09.png 945w,
/static/fb8633ede8d4391fca170e186cb0da62/c1b63/2021-09.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Chile estrena su Sistema Nacional de Receta Electrónica con interoperabilidad HL7 FHIR, sale la guía de implementación localizada, y un estudio del Ponemon Institute: 1 de cada 4 prestadores reportó aumento de mortalidad tras ataques de ransomware.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-septiembre-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Agosto 2021 — Trabajo remoto en 9punto5, vacunas chilenas y sesgo racial en IA&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/4fd93acabac4a8c595b23f2a3d441f1f/c1b63/2021-08.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNklEQVQoz4VRy07DMBDs1/AT/A8XbvwGdwpIvATlQq8tB86IYx8UUSAPJw1CKAI5cdu8dr2smwpKGoE1lsa7M5rVunEs3KZj7Tv2Kg4c59R1Dx27aT1VWoymbR0Jd7vXaxARaE1rpzMavYQh0UzrotIq9Ze+b8wZIr9L5MgNdOTHZre7O+wDZNOiwIXhG6xn14kQlWRDAKZEcm883rjubN3evcefRIleSz7zRM3YevHsh2HbdW+CV+NERX+b+c4BEh4UMUEoi6j13FR0ipiamq43s24g5UMUebOZpdS9lG/zZBRFTGylnpV6jOMC9T9j0+oC6s4vc47IsUsAgkxAZRClEKdmVuYyxRyQlpq83HZNMtN8gUwbAHNtlo3V5Bb/czuYnHui5Xs/CPwarAguPHEVTHaGgy8SCWWGRvbhDAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Agosto 2021&quot;
        title=&quot;Portada Nessy Letter Agosto 2021&quot;
        src=&quot;/static/4fd93acabac4a8c595b23f2a3d441f1f/f058b/2021-08.png&quot;
        srcset=&quot;/static/4fd93acabac4a8c595b23f2a3d441f1f/c26ae/2021-08.png 158w,
/static/4fd93acabac4a8c595b23f2a3d441f1f/6bdcf/2021-08.png 315w,
/static/4fd93acabac4a8c595b23f2a3d441f1f/f058b/2021-08.png 630w,
/static/4fd93acabac4a8c595b23f2a3d441f1f/40601/2021-08.png 945w,
/static/4fd93acabac4a8c595b23f2a3d441f1f/c1b63/2021-08.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nuestra participación en la conferencia 9punto5 sobre trabajo remoto, anuncio de un curso de HL7 FHIR, datos chilenos de efectividad de vacunas COVID, y una investigación inquietante: los algoritmos pueden detectar la raza del paciente desde una radiografía.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-agosto-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Julio 2021 — Enfermería que salva vidas, errores humanos y un Reino Unido sin tabaco&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/36949c95a5ede79f82117f8d627ea477/c1b63/2021-07.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABOUlEQVQoz4WRzU6DQBDH+zS+hO/jxZuv4V3UxK9ovajH1oNn48WkFRtTUz4WijFKJEuBssDMrgM02lKim99hZmf+mf/sdo6ZrVnGvmUuc2BZp7Z9aJma8dooEZppHDF7ezDoKKVASrV2eqPRxPeVSqQsGqW6/9J1S3GGSHlNjlRAi39t9vu7+hAgi4scK8EP1E+qE8Yak8sAIFaK743HG7e9rfuHj1mgVCrXJp85rMW2rNKh798w+857K5UQqX/FOeIcQADWi9ANSikQyXeKUFRuW8S1+lOIxyAw45jFyUsYTqLofZ7qnDtJ8sw5VevF/rK9skLb5YqY3JK9BYAFTyHKIBQwEyigjLnAHFAtevL6tVsmU5hXZLIEKJblY2Nzcpf++dqbnjus6zq/eG4LSw0XDrvypjv60zd8pWXluDu8DAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Julio 2021&quot;
        title=&quot;Portada Nessy Letter Julio 2021&quot;
        src=&quot;/static/36949c95a5ede79f82117f8d627ea477/f058b/2021-07.png&quot;
        srcset=&quot;/static/36949c95a5ede79f82117f8d627ea477/c26ae/2021-07.png 158w,
/static/36949c95a5ede79f82117f8d627ea477/6bdcf/2021-07.png 315w,
/static/36949c95a5ede79f82117f8d627ea477/f058b/2021-07.png 630w,
/static/36949c95a5ede79f82117f8d627ea477/40601/2021-07.png 945w,
/static/36949c95a5ede79f82117f8d627ea477/c1b63/2021-07.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Estudio chileno: 41% más mortalidad cuando una enfermera atiende 18 pacientes versus 8. El 36% de las filtraciones de datos sanitarios viene de un error humano simple (entrega incorrecta de información). Y la meta UK 2030: bajar a menos de 5% de fumadores.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-julio-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Junio 2021 — Apple Health para tus cercanos, Aduhelm polémico y mezclar vacunas&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/01f5481cac4046ddd39a186b5ca5562a/c1b63/2021-06.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNElEQVQoz4WRzU6DQBDH+zS+hO/jxZuv4V3URK3RelGPrQfPxpOhkh5q5GOh9NAQBem2LDCz6yw02lKi5HeYr3/mP0vnnHmGax+7zjonrtv1vFPXMey3RoswHPuMefum2VFKgZRq6+uPRu9RpNRCyrLRqudvgkCLc0TKawqkBrrJx+5gcGgNAXJellgJfqB5Ul0w1tisAwCuVHI0Hu889Peenmfpp1KZ3Np86bMW27JKh1F0z7zHcKqVkKp/xQXiEkAgiuoQqqCUVUVmAGXltkVcq6dZ9hLHHueElSSM82CxNOPY5nNKZ0LUh/1le+OEtuKGmNySvRWAZZLBPIcvAalAATpOBBaAajVT1K/dspnCoiKXGqBY6sfG5uYe/ee7cHLls17g/xIGLawNXPvsNpwcWK/fWB5lxFtQDDkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Junio 2021&quot;
        title=&quot;Portada Nessy Letter Junio 2021&quot;
        src=&quot;/static/01f5481cac4046ddd39a186b5ca5562a/f058b/2021-06.png&quot;
        srcset=&quot;/static/01f5481cac4046ddd39a186b5ca5562a/c26ae/2021-06.png 158w,
/static/01f5481cac4046ddd39a186b5ca5562a/6bdcf/2021-06.png 315w,
/static/01f5481cac4046ddd39a186b5ca5562a/f058b/2021-06.png 630w,
/static/01f5481cac4046ddd39a186b5ca5562a/40601/2021-06.png 945w,
/static/01f5481cac4046ddd39a186b5ca5562a/c1b63/2021-06.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Apple suma compartir datos de salud con cuidadores y detección automática de tendencias, la FDA aprueba Aduhelm —primer tratamiento para Alzheimer en 18 años— en medio de la controversia, y datos de un estudio sobre Pfizer como segunda dosis tras AstraZeneca.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-junio-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Mayo 2021 — FHIR no es plug and play, algoritmos sin impacto y telesalud regulada&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/4b9ccf872c21ae63b1b58f1f00bbbef6/c1b63/2021-05.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNUlEQVQoz4WRvU7DMBDH+zS8BO/DwsZrsFNAAoqgLMDYMjAjNtpGGYqaxE4aBoggzreT3Nk4SQVtGoH1k3Xnu7/uw71zSvqWcWyZ65xY1oCQU8vsG6+tkKJvGmeU7E8mPSklCCG3zkjXF54nZSJE2Qo1+TeOU4lzROU3FKgCaLHP3fH4UJsC5HFZYi34QeUr1QWlrcqVARBLyY7m852H0d7T83v4JWUmtipf2rSjbVG7U8+7p+TRfauUEMp/xQViCsAReT1IE8pAueqGsu62Q9yo3TR98X0Sx4oZ850kWUSRzgKaxFrAPjhvBvur7Y0Ruh43xKpbFGIFYMkyiHIIOIQcOVQ241gAylVO0Wy7o7Iyi5pcVICyRbVsbFceqn++c5dXNh069i+u08FawrVNb93lgTb7Bl02ZcnUBVMAAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Mayo 2021&quot;
        title=&quot;Portada Nessy Letter Mayo 2021&quot;
        src=&quot;/static/4b9ccf872c21ae63b1b58f1f00bbbef6/f058b/2021-05.png&quot;
        srcset=&quot;/static/4b9ccf872c21ae63b1b58f1f00bbbef6/c26ae/2021-05.png 158w,
/static/4b9ccf872c21ae63b1b58f1f00bbbef6/6bdcf/2021-05.png 315w,
/static/4b9ccf872c21ae63b1b58f1f00bbbef6/f058b/2021-05.png 630w,
/static/4b9ccf872c21ae63b1b58f1f00bbbef6/40601/2021-05.png 945w,
/static/4b9ccf872c21ae63b1b58f1f00bbbef6/c1b63/2021-05.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Implementar FHIR requiere ~20% de customización por proyecto (contrario a lo que se asumía), solo el 27% de los algoritmos médicos aprobados con marca CE muestra impacto clínico real, y MINSAL exige certificación a las plataformas de telesalud.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-mayo-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Abril 2021 — Lanzamos Apposito, viene el Connectathon y un Telegram para abuelas&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9c03c6c87fc6c447da6008291924fa85/c1b63/2021-04.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABO0lEQVQoz4WRz0rDQBDGfRpfwvfx4s3X8G5V8B9aL+qx9eBZPCi0lgoV0+wmjUgJDUm7bTbJzI6TpGhNgy4/ltmd+ZhvdjdOpGjY1oE9XOXQts+EOLKHDeutkmIaQ+tYip1OZ4OIwBhaW61+/933iebGZJVUWX/lurk4QeRzSYqcQDucbLXbe70uQKKyFAvBN1zPqlMpK53zAEARhfuDweZda/vhcTwNiGKz1vnckTW2TXHs+v6tFPfeR66EGf0rThEXABqxHIRv0Bi+yQzFvBdua8Sleqzj5yAQSom5eo0ia6akmj8Fk8940YvCsdblYH/Z/jXCyl5vm92yvSWAWRjDLIFIw1SjhjwONaaAtKxJy9eu6cxhWpCYHODY5I+N1c5N/ucbb3ThyKbr/OC5NawUXDry2hvt9l6+AGkwZdOoVIhpAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Abril 2021&quot;
        title=&quot;Portada Nessy Letter Abril 2021&quot;
        src=&quot;/static/9c03c6c87fc6c447da6008291924fa85/f058b/2021-04.png&quot;
        srcset=&quot;/static/9c03c6c87fc6c447da6008291924fa85/c26ae/2021-04.png 158w,
/static/9c03c6c87fc6c447da6008291924fa85/6bdcf/2021-04.png 315w,
/static/9c03c6c87fc6c447da6008291924fa85/f058b/2021-04.png 630w,
/static/9c03c6c87fc6c447da6008291924fa85/40601/2021-04.png 945w,
/static/9c03c6c87fc6c447da6008291924fa85/c1b63/2021-04.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Apposito abre con plan personal gratuito y plan de equipo de pago, las fechas del Connectathon FHIR (17-19 de mayo, inscripción hasta el 30 de abril), y Yayagram: un dispositivo precioso para que abuelos manden audios y reciban mensajes impresos por Telegram.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessy-letter-abril-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Marzo 2021 — Apposito está en camino, cursos HL7 y embriones fuera del útero&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e69a6e599651f9ea5b02247f9f16e38a/c1b63/2021-03.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABMklEQVQoz4WRuU7DQBCG8zS8BO9DQ8dr0BNA4hKEhrQJBTWizEEKR3HstWMKZEEWH8l6PQdrJ4LgGGX1FXP9+kezjUvhNh371JlucuY416577kyb9rjSMjSn9oVwD3u9BjMDEW+9zmg0CUPmlCivtFbz975fiDNEk6/QaBroyI/9bvd42AfIklxjKfjBzBvVlRAV5yIASJjliWXtPXYOnl/eo0/mJW0533iiZm0q034Ytl33KXgrlBjzTrFCXABowiVAXhaRyFQUkmmpctt/xXYSD6ScpakVRa9SBuliHEW9+dykkzi2k4R2rs2bB6h7f8Qa0ay3BjCXS4gz+FIQKVRQxFKhBuT1jF5du8bZhLokowIwMRXHxqpzy/xzO5jdeqLle78Efg0bA3eeeAhmR8PBNyyQZZ1XvUyOAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Marzo 2021&quot;
        title=&quot;Portada Nessy Letter Marzo 2021&quot;
        src=&quot;/static/e69a6e599651f9ea5b02247f9f16e38a/f058b/2021-03.png&quot;
        srcset=&quot;/static/e69a6e599651f9ea5b02247f9f16e38a/c26ae/2021-03.png 158w,
/static/e69a6e599651f9ea5b02247f9f16e38a/6bdcf/2021-03.png 315w,
/static/e69a6e599651f9ea5b02247f9f16e38a/f058b/2021-03.png 630w,
/static/e69a6e599651f9ea5b02247f9f16e38a/40601/2021-03.png 945w,
/static/e69a6e599651f9ea5b02247f9f16e38a/c1b63/2021-03.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Adelanto de Apposito como app de seguimiento de heridas con foco en privacidad, cursos de HL7 y FHIR disponibles en Chile y Argentina entre abril y junio, y un hito científico: investigadores cultivaron embriones de ratón fuera del útero.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-marzo-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Febrero 2021 — Primer Nessy Letter: Chile líder en vacunación y un test de cáncer en orina&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/480571ce75d970a27d15d82330ab782a/c1b63/2021-02.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABNklEQVQoz32Rz07CQBDGeRpfwvfx4s3X8G7VxH9RvMgVvHg1HowBkUQIpd2WejANsLbFbtuZWWepUVKqm98ms998X2az2zgVruXYh85knSPHOXfdY2di2aNKi7Em9olwd7vdhtYaiPTGag8G4zDUeklUVFql/9r3TThD5HNJjtxAR862O539fg8gS4ocV4Ef2M+pMyEqk00BkGgtD4bDrdv2zv3DezTXOqWNyReeqLk2rY69MGy57l3wZpIY6//DvD8BUgCFmCKUYkGUGIVYVEaj+jD7elK+RpG3TMZx/CJlqNTTYvE4m4+iiOFW8Vd4c9WrlXCOiEQlAFjIFOIMPhRECviuXEuFOaD+9uTla9dM5jJfkZEBuCbz2Fid3OR/bgXTS080fe+XwK9hzXDliZtgutd//gLsWGVjmbxNDAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Febrero 2021&quot;
        title=&quot;Portada Nessy Letter Febrero 2021&quot;
        src=&quot;/static/480571ce75d970a27d15d82330ab782a/f058b/2021-02.png&quot;
        srcset=&quot;/static/480571ce75d970a27d15d82330ab782a/c26ae/2021-02.png 158w,
/static/480571ce75d970a27d15d82330ab782a/6bdcf/2021-02.png 315w,
/static/480571ce75d970a27d15d82330ab782a/f058b/2021-02.png 630w,
/static/480571ce75d970a27d15d82330ab782a/40601/2021-02.png 945w,
/static/480571ce75d970a27d15d82330ab782a/c1b63/2021-02.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La edición inaugural. Estrenamos la serie “Informática para no informáticos”, Chile se posiciona como referente mundial en velocidad de vacunación, CENS lanza el sello de calidad para plataformas de telemedicina (89 UF), y The Blue Box: IA que detecta cáncer de mama desde una muestra de orina.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/nessyletter-febrero-2021/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Diciembre 2020 — Antes del Nessy Letter: ¿y qué pasa con el Blockchain?&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7a48b464115219e47ed40811a9bf4f97/c1b63/2020-12.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABOklEQVQoz4WRvU7DMBDHeRpegvdhYeM12Ckg8SUoCzC2LKyIgaFQOhSROk7aDlVEZRI3dZw7m3NSoE0jsH7Dff11f503TrjfYN4BGyxzyNiZ7x+xQcN7q7SIxsA75v5Op7NhrQVj7Npr9XrvUWTtzJi80irnr8LQiTNEyks0UgOZ+Nhqt/e6zwCZzDUWgh9onlSnnFc2uwBAWiv2+/3Nu9b2w+Mknlo7N2ubzwNeY9sUaSeKbrl/Px47JSb2b7E2JgVQiORqBpAXRTRGQp4CasT5d3FFXJYmSj1Np0xKPpP9OPaSxJfyVQgqEkGadoWgmX9s2+UD1L0VMVkiewsAQcwhyeBTQaxAgYuFQg1oFzO6vHbNZgp1QWYc4I7hjo3VzU3655vR8CLgzTD4ZRTWsDRwGfDr0XC3+/IFkIBlEHROkQoAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Portada Nessy Letter Diciembre 2020&quot;
        title=&quot;Portada Nessy Letter Diciembre 2020&quot;
        src=&quot;/static/7a48b464115219e47ed40811a9bf4f97/f058b/2020-12.png&quot;
        srcset=&quot;/static/7a48b464115219e47ed40811a9bf4f97/c26ae/2020-12.png 158w,
/static/7a48b464115219e47ed40811a9bf4f97/6bdcf/2020-12.png 315w,
/static/7a48b464115219e47ed40811a9bf4f97/f058b/2020-12.png 630w,
/static/7a48b464115219e47ed40811a9bf4f97/40601/2020-12.png 945w,
/static/7a48b464115219e47ed40811a9bf4f97/c1b63/2020-12.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La edición cero, un par de meses antes de bautizar el boletín. En realidad fue el reenvío del post &lt;a href=&quot;/blockchain-en-salud&quot;&gt;Blockchain en Salud&lt;/a&gt; a la lista de correo: una respuesta sin humo a la pregunta recurrente en charlas de salud digital.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buttondown.com/codeness/archive/blockchain-en-salud/&quot;&gt;Leer edición →&lt;/a&gt;&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/328ebdd46eadff6d1d0acae230c930d7/f3583/preview.png"></media:content></item><item><title><![CDATA[Nueva versión de Cesar AI (v2)]]></title><description><![CDATA[Cesar AI es una aplicación web que transforma información de un paciente (en cualquier formato) a un recurso Patient de  HL7 FHIR. Es un…]]></description><link>https://blog.codeness.io/cesar-ai-v2/</link><guid isPermaLink="false">https://blog.codeness.io/cesar-ai-v2/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 16 Jan 2025 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://cesar-ai.web.app/&quot;&gt;Cesar AI&lt;/a&gt; es una aplicación web que transforma información de un paciente (en cualquier formato) a un recurso Patient de  &lt;a href=&quot;https://blog.codeness.io/que-es-hl7-fhir/&quot;&gt;HL7 FHIR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Es un experimento &lt;a href=&quot;https://blog.codeness.io/construyendo-cesar-ai/&quot;&gt;que construí el año 2023&lt;/a&gt;, con la idea de que podría ayudar a acelerar procesos de integración entre distintos sistemas informáticos en salud.&lt;/p&gt;
&lt;p&gt;Ahora año 2026, aprovechando la &lt;a href=&quot;https://hl7chile.cl/fhir-connectathon-2026/&quot;&gt;Connectathon 2026&lt;/a&gt;, actualizamos la herramienta para que funcione (no lo estaba 😭) y para que use los últimos perfiles de HL7 Chile.&lt;/p&gt;
&lt;p&gt;A continuación te explico sobre los cambios que hicimos.&lt;/p&gt;
&lt;h2&gt;Contexto - de dónde viene Cesar AI&lt;/h2&gt;
&lt;p&gt;Luego del &lt;a href=&quot;https://blog.codeness.io/nuestra-experiencia-en-la-emprendethon-2023/&quot;&gt;evento de la Emprendethon año 2023&lt;/a&gt;, comencé a pensar en qué tipo de soluciones podrían ayudar a acelerar los &lt;a href=&quot;https://blog.codeness.io/interoperabilidad/&quot;&gt;proyectos de interoperabilidad en salud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si bien aprender a usar los &lt;a href=&quot;https://blog.codeness.io/estandares-interoperabilidad/&quot;&gt;estándares de interoperabilidad&lt;/a&gt; como FHIR es importante, a veces no es tan sencillo hacerlo.&lt;/p&gt;
&lt;p&gt;Imagina un Centro Médico que quiere interoperar y que tiene su propia base de datos. En esta, tendrá información bajo un cierto esquema, que probablemente es muy diferente al formato de datos en FHIR. Así que para lograrlo, tenemos que escribir código que transforme desde el formato del Centro Médico a FHIR, lo cual toma tiempo y puede ser costoso.&lt;/p&gt;
&lt;p&gt;¿Qué pasa si esa transformación se hace automáticamente? ¿Es posible crear un algoritmo que pase de un formato a otro de manera automática?&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/46a23edbf331f36477adde482b4d6f2c/c1b63/Cesar.AI.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC9klEQVQozw3R20+bdRzH8V6ZXSxOM2+MMXHsn5gX7n/wwsS4eDHhwmRbXDbNiJmoS9TIaW6ETDe1FCZQtnVAqRQohxY61tNGD7TjWaUt0PLw9OHpiR542idvfxevfH6H5Jt88zF9+rHBJx0Gn3W3uGAROSN4hBfCK4MLaZE5g4t5g/6iwXLFQK0boBsYZUH8FzcMpGWDVZuB6Vpni+/uGnT0CCMt2h1N2leFl0KiyRfJOhd36rTvN+jRdJbKTdRqExpNDK0FqRZHIZ3Uoo7P1sTkC1SRtTLX+lS+NB9xxdnkslfn0osGV6QWX2vwTRWuH0N3qcViqUH+SFxqYmCugR6povsNcksGwccNTA8f1LDbanT2VvjqT4WrNoXr7go3YgaXn2c5f7Obj7p+5fxP/XyfzOI60tFqx2jpfaLrG6TD27jH54mMp4nYWpiejhR4Mpqlq6dG1+gxNx1lbszl+CFSp8P2jDdPvMG7p09z6uRJrnp8LIlti1WdvY3XbCXi7Ms5QiEvLrOXzUdioH0txsvdML23ZbruZ7k1JfOjS+aWN8vnA/9w9swHfHjuHG1tbVz6d4EptUAmc4C0Esb/PMTC3Dz+YADf4ziRMbFyz1iM4cUEg7+V6HtYpteh8stchr6QSqfDx9vvvc+JU2/xzpk2vvWFcJTqyKkiIaeHjbVZpESCV9EgrkcrrJsPMS1PNPBOHnOvW+OOeY87k7sMruX5PVrij2SFAemAnwMxBrN57uVLTO4W2d8qsTnvJTE3QXzBT3x2FffEGit/yZji0jZydYu/+1M8sMhYXAUsvgJDEY0h6RDLToERpcKwXMCc0bBJGntRUX2gQMtTouZU2ZvURCkaK8OaKGVmFbvbyfhADutYAasrj9WnYo0Jr4WMyviOeNsWuaXyNKqSDqrwTEVfVlGdhySnVPxWldkhVZRyu4C9v8j03TxTYwdMLypMB4RNISn8l2daEuLiHFawBxWkdYWGW+FwQSE1oxB+ouAZVZgZUvgf3CrMV7VvwCcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cesar.AI.png&quot;
        title=&quot;Cesar.AI.png&quot;
        src=&quot;/static/46a23edbf331f36477adde482b4d6f2c/f058b/Cesar.AI.png&quot;
        srcset=&quot;/static/46a23edbf331f36477adde482b4d6f2c/c26ae/Cesar.AI.png 158w,
/static/46a23edbf331f36477adde482b4d6f2c/6bdcf/Cesar.AI.png 315w,
/static/46a23edbf331f36477adde482b4d6f2c/f058b/Cesar.AI.png 630w,
/static/46a23edbf331f36477adde482b4d6f2c/40601/Cesar.AI.png 945w,
/static/46a23edbf331f36477adde482b4d6f2c/c1b63/Cesar.AI.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Ahora sí… Los cambios que hicimos&lt;/h2&gt;
&lt;p&gt;La herramienta tenía 2 problemas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No funcionaba debido a la depreciación de la API de OpenAI.&lt;/li&gt;
&lt;li&gt;No usaba los últimos perfiles de HL7 Chile.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Cambio #1: Actualización de la API de OpenAI&lt;/h3&gt;
&lt;p&gt;Cuando construí Cesar AI el Q1 del 2023, usé el modelo &lt;code class=&quot;language-text&quot;&gt;text-davinci-003&lt;/code&gt; de OpenAI, que fue dado de baja, al parecer, &lt;a href=&quot;https://platform.openai.com/docs/deprecations&quot;&gt;en enero de 2024&lt;/a&gt;. Espero que la herramienta haya estado funcionando bien… pero al parecer llevaba mucho tiempo sin hacerlo 😭&lt;/p&gt;
&lt;p&gt;Cuento corto, ahora la actualicé para que use &lt;code class=&quot;language-text&quot;&gt;gpt-4o-mini&lt;/code&gt;, que si bien no es lo último, me permitió no tener que hacer tantos cambios en el prompt. Posiblemente lo actualizaré a 5.1 en unas semanas.&lt;/p&gt;
&lt;h3&gt;Cambio #2: Actualización de la forma en que el LLM procesa los datos&lt;/h3&gt;
&lt;p&gt;En la primera versión de Cesar AI, el trabajo del LLM era procesar la información del paciente y te entregaba un CSV estructurado. Luego, el código de la aplicación misma se encargaba de convertir el CSV a FHIR:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Input de usuario (csv, txt, json) → LLM → CSV → Código de la aplicación → FHIR&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Esto fue porque en esos tiempos no existía la posibilidad de que los modelos entregaran respuestas de tipo JSON de forma nativa, y no había una manera de forzar que el texto generado fuera un JSON válido (de manera simple). Además, generar un JSON consume más tokens que generar un CSV, es decir, es más costoso (por eso herramientas como &lt;a href=&quot;https://github.com/toon-format/toon&quot;&gt;Toon&lt;/a&gt; están siendo tan populares).&lt;/p&gt;
&lt;p&gt;Luego, &lt;a href=&quot;https://openai.com/index/new-models-and-developer-products-announced-at-devday&quot;&gt;OpenAI introdujo soporte de respuestas tipo JSON (“JSON Mode”)&lt;/a&gt;, pero esto no estaba libre de problemas. Una cosa es que te respondiera un JSON, pero otra muy distinta es que ese JSON tuviera la estructura correcta. Recién en &lt;a href=&quot;https://openai.com/index/introducing-structured-outputs-in-the-api&quot;&gt;Agosto del 2024 comenzaron a soportar “output” estructurado&lt;/a&gt;, donde puedes especificar cómo debe ser la respuesta del LLM.&lt;/p&gt;
&lt;p&gt;Así que ahora, cuando solicitamos que el LLM genere un JSON, le decimos que debe tener la siguiente estructura:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;rut: string | null - RUT del paciente
nombres: string - Nombres de pila (sin apellidos)
apellido_paterno: string - Apellido paterno
apellido_materno: string | null - Apellido materno (opcional)
genero: enum[&amp;quot;male&amp;quot;, &amp;quot;female&amp;quot;, &amp;quot;other&amp;quot;, &amp;quot;unknown&amp;quot;] - Género
telefono: string | null - Número de teléfono
email: string | null - Correo electrónico
address: string | null - Dirección
birthday: string - Fecha de nacimiento (formato YYYY-MM-DD)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Y el código de la aplicación se encarga de convertir eso a FHIR válido:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Input de usuario (csv, txt, json) → LLM → JSON (formato propio) → Código de la aplicación → FHIR&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/fbe4be667e62e631e680acf96992cf61/c1b63/cesar-ai-flow.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbUlEQVQoz6VSTU/CQBDt39F40RhN/E0kJiReCQkHiFgOROMB4cIPMMDBI+rBtAJ+ERSVcmjLQltoy9LPLd26pYmJiIkJ77A7MztvJvNmqWANUJc3uCdiYuHwCPwF/kt+6cLBUMfYX/Dx0nMUmC/wuyiFkOfYtqqqxNE0rVKp1Go1AMDKWlHQcRzP80KyDCQIDYSQoiilUimZTCYSiVwuB6ea5Qadftjt/Oz0olC4rtcJB0LY+/x4bT8Tm6o273gwmHsewzA0TRNaNpslV6t1DxSHbRum5Rzs7e9u72xtbHa77wLPN1m20WjYlkVVxSfdNV3bGY5G+Xw+nU6nUimaPhEEIcD+DELS+TiTOYzFjuJxXZ8OeK7D3r49PJIZqQAHyEWqFs4simK5XC4WixzHEdcwDGU89jEmQ5EE27KXBevJHTDm/Xm0LUyUm0wmRNvvDMKUJIkEZVk2TfMHmRGuwKwfMSP8pfOKPa/zw74A8DJb22Wz5SYAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Input (csv, txt, json) -&amp;gt; LLM -&amp;gt; JSON -&amp;gt; FHIR&quot;
        title=&quot;Input (csv, txt, json) -&amp;gt; LLM -&amp;gt; JSON -&amp;gt; FHIR&quot;
        src=&quot;/static/fbe4be667e62e631e680acf96992cf61/f058b/cesar-ai-flow.png&quot;
        srcset=&quot;/static/fbe4be667e62e631e680acf96992cf61/c26ae/cesar-ai-flow.png 158w,
/static/fbe4be667e62e631e680acf96992cf61/6bdcf/cesar-ai-flow.png 315w,
/static/fbe4be667e62e631e680acf96992cf61/f058b/cesar-ai-flow.png 630w,
/static/fbe4be667e62e631e680acf96992cf61/40601/cesar-ai-flow.png 945w,
/static/fbe4be667e62e631e680acf96992cf61/c1b63/cesar-ai-flow.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si bien generar este JSON requiere más tokens que generar un CSV, es decir, es más costoso, ahora nos aseguramos de que tenga la estructura correcta, lo cual es mucho más fácil de lograr que al pedir un CSV.&lt;/p&gt;
&lt;p&gt;¿Por qué no generar el JSON FHIR directamente? Bueno, si has escrito un recurso FHIR a mano, te darás cuenta de que es bastante verboso. Esta simplificación es para reducir el costo de generación (tokens!), y para reducir la posibilidad de errores al momento de que el LLM genere el JSON.&lt;/p&gt;
&lt;h3&gt;Cambio #3: Actualización de los perfiles de HL7 Chile&lt;/h3&gt;
&lt;p&gt;Una vez arreglé el problema de la API de OpenAI, me di cuenta de que el LLM no cumplía con los perfiles de HL7 Chile actuales. Así que lo primero que hice fue lograr que el resultado fuera compatible con &lt;a href=&quot;https://hl7chile.cl/fhir/ig/clcore/StructureDefinition-CorePacienteCl.html&quot;&gt;CL Paciente&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Algunos problemas que tuve estaban relacionados con códigos que se usan en la dirección. Por ejemplo, los datos que tenía antes usaba “Región Metropolitana” como &lt;code class=&quot;language-text&quot;&gt;display&lt;/code&gt;, pero el perfil de HL7 Chile te pide “Metropolitana de Santiago”.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;El nombre de display para CSCodRegionCL#13 debe ser &amp;#39;Metropolitana de Santiago&amp;#39;,no &amp;#39;Región Metropolitana&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Luego me puse ambicioso y quise que el resultado cumpliera con &lt;a href=&quot;https://interoperabilidad.minsal.cl/fhir/ig/nid/0.4.9/StructureDefinition-MINSALPaciente.html&quot;&gt;MINSAL Paciente&lt;/a&gt;, que es el que usamos durante la Connectathon 2026.&lt;/p&gt;
&lt;p&gt;Aquí tuve que hacer más cambios, ya que este pide más información que &lt;a href=&quot;https://hl7chile.cl/fhir/ig/clcore/StructureDefinition-CorePacienteCl.html&quot;&gt;CL Paciente&lt;/a&gt;. Por ejemplo, &lt;code class=&quot;language-text&quot;&gt;birthDate&lt;/code&gt; y &lt;code class=&quot;language-text&quot;&gt;isDeceased&lt;/code&gt; son obligatorios en Minsal Paciente, pero no en CL Paciente. Agregué estos campos, y por supuesto que &lt;code class=&quot;language-text&quot;&gt;isDeceased&lt;/code&gt; es &lt;code class=&quot;language-text&quot;&gt;false&lt;/code&gt; por defecto.&lt;/p&gt;
&lt;h3&gt;Cambio #4: Visualización del JSON&lt;/h3&gt;
&lt;p&gt;Esto es más un detalle que una mejora, pero pensé que sería útil tener un formateador de JSON más bonito en la interfaz. Así que, le pedí a &lt;a href=&quot;https://claude.com/product/claude-code&quot;&gt;Claude Code&lt;/a&gt; que mejorara ese aspecto e instaló &lt;a href=&quot;https://github.com/TexteaInc/json-viewer&quot;&gt;json-viewer&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Resultado&lt;/h2&gt;
&lt;p&gt;Ahora la herramienta funciona y cumple con los perfiles de HL7 Chile actuales. Está disponible en &lt;a href=&quot;https://cesar.codeness.io/&quot;&gt;cesar.codeness.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/d2c28/cesar-ai-v2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAACHElEQVQoz2WTS3ObMBSF+f/TVRdddCabPFbdtYtOZ5JV06btTNtF3ThOwBgDDgbMG0kIcU8v4L4m8nw+XGEdH12EdbfUlB8GxI+G4h0TGuyDmSQkBGuJ588u4K8b1BnQHgxk2kMlPbpYk4409VyL7w2Ji4wsP+wI8/itxzFM350W+HhzjaYtp7rHkzGtk05N7WlE1nbXgdKU1HYHsQ0hvADtxkdpuyiYUYUXonI2yB82SO59NOsthDvT2BtU/pbEXQF5+ghr5WYU+S6icEedkDCdhtFM16FnRhVNyy3Zo0oSqKqaalG3kKxNUZEX+CgWCamzkKylm8JZ3WLjusiLAkIKRv63f9X3iJIDqrKE5HtSdYyaVI0B+Df1QwF1HsDyEzk3gh2GYYDhxcYYrmmGP4oTp1mO6pBAlPyndQ1RlZNKoaCMRuVx/TqCFaTqaEhPu32cmwxzXtDxk9VmSqX4emRKORqGNapPGSwvkWM2aE7XjwmP+gcaINgw4B7mWYaWtzwaztvu/hoGDeW3FVlR1tM/R+ZpzPEA6R5hnKLMc7QtPxClmcmMpGTDXlMZ1HRY1WS9dTy8vL/Byf0XYnDhfMO583WscbL6jBc/P2AR+fMZNAMG7u/I2Oee0cYQz6Dat0jWNaz3TkxX9gNd2g4ubZuuHFbmnW3jzXKJV4sVrjcxFkGFH34BNy4nvLhAFOWUPuY47HOKtxm/ZS39AmclQpfmLsCbAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Screenshot de Cesar AI v2&quot;
        title=&quot;Screenshot de Cesar AI v2&quot;
        src=&quot;/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/f058b/cesar-ai-v2.png&quot;
        srcset=&quot;/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/c26ae/cesar-ai-v2.png 158w,
/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/6bdcf/cesar-ai-v2.png 315w,
/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/f058b/cesar-ai-v2.png 630w,
/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/40601/cesar-ai-v2.png 945w,
/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/78612/cesar-ai-v2.png 1260w,
/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/d2c28/cesar-ai-v2.png 4000w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si pillas algún problema o tienes alguna sugerencia, puedes escribirme a mi &lt;a href=&quot;https://www.linkedin.com/in/codewithnico/&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/46a23edbf331f36477adde482b4d6f2c/f3583/Cesar.AI.png"></media:content></item><item><title><![CDATA[Nuestra experiencia en la Connectathon 2025]]></title><description><![CDATA[Este año fuimos a la Connectathon 2025, un evento donde distintos equipos pusieron a prueba sus conocimientos sobre interoperabilidad para…]]></description><link>https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2025/</link><guid isPermaLink="false">https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2025/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Tue, 14 Jan 2025 13:52:57 GMT</pubDate><content:encoded>&lt;p&gt;Este año fuimos a la &lt;a href=&quot;https://hl7chile.cl/connectathon-2025/&quot;&gt;Connectathon 2025&lt;/a&gt;, un evento donde distintos equipos pusieron a prueba sus conocimientos sobre &lt;a href=&quot;https://blog.codeness.io/interoperabilidad/&quot;&gt;interoperabilidad&lt;/a&gt; para hacer que los sistemas de salud conversaran entre ellos.&lt;/p&gt;
&lt;p&gt;A diferencia de años anteriores (&lt;a href=&quot;https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2024/&quot;&gt;el 2024&lt;/a&gt; éramos el grupo llamado «Galletas de Coco» 🍪), ahora con &lt;a href=&quot;https://enfermeraprogramadora.cl/&quot;&gt;Eliana&lt;/a&gt; asistimos como monitores, así que pudimos ver el evento tras bambalinas.&lt;/p&gt;
&lt;p&gt;Nuestro rol fue ayudar a los grupos a avanzar con los desafíos; algunas de las labores fueron:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Orientarlos para entender los enunciados y avanzar en cada ejercicio.&lt;/li&gt;
&lt;li&gt;Guiarlos en el uso de las guías de implementación.&lt;/li&gt;
&lt;li&gt;Ayudar a detectar errores en sus códigos.&lt;/li&gt;
&lt;li&gt;Levantar errores técnicos de los servidores FHIR (que los encargados solucionaban en tiempo récord)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fue agotador, quizás más que nuestra experiencia como participantes en años anteriores 😅, pero resultó muy gratificante ver el nivel de avance de los grupos.&lt;/p&gt;
&lt;p&gt;Es genial ver cómo ha crecido este evento. Pasamos de ser unos cuantos grupos el año 2023, a decenas este año! Para el 2026 no sé cómo harán para organizar a tantas personas 😆&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;PD: Artículo basado en &lt;a href=&quot;https://www.linkedin.com/posts/codewithnico_la-semana-pasada-fuimos-a-la-connectathon-activity-7284930496826912769-K2NH&quot;&gt;mi post en LinkedIn&lt;/a&gt;. Lo siento! No pudimos detallar tanto nuestra experiencia como los años anteriores (&lt;a href=&quot;https://deploy-preview-35--nessy-blog.netlify.app/nuestra-experiencia-en-la-connectathon-2024/&quot;&gt;2023&lt;/a&gt;, &lt;a href=&quot;https://deploy-preview-35--nessy-blog.netlify.app/nuestra-experiencia-en-la-connectathon-2024/&quot;&gt;2024&lt;/a&gt;)&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/351e854caae9075f67ac0e3be68f2e6a/f3583/og.png"></media:content></item><item><title><![CDATA[Nuestra experiencia en la AI Hackathon 2024]]></title><description><![CDATA[Chile 🇨🇱 fue el anfitrión de la primera hackathon oficial de OpenAI en Latinoamérica 💕, un evento que se realizó del 23 al 25 de agosto…]]></description><link>https://blog.codeness.io/nuestra-experiencia-en-la-ai-hackaton-2024/</link><guid isPermaLink="false">https://blog.codeness.io/nuestra-experiencia-en-la-ai-hackaton-2024/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 09 Sep 2024 20:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Chile 🇨🇱 fue el anfitrión de la primera hackathon oficial de OpenAI en Latinoamérica 💕, un evento que se realizó del 23 al 25 de agosto.&lt;/p&gt;
&lt;p&gt;En este artículo, compartiré nuestra experiencia, lo que construimos y algunos aprendizajes 😃.&lt;/p&gt;
&lt;h2&gt;El evento&lt;/h2&gt;
&lt;p&gt;La &lt;a href=&quot;https://communityos.io/ai-hackathon/&quot;&gt;hackathon&lt;/a&gt; se llevó a cabo de manera presencial en el edificio de la Cámara Chilena de la Construcción, en Las Condes, Santiago. Allí, 32 equipos, con más de 150 participantes, se reunieron para construir prototipos que usaran inteligencia artificial (IA) a través de las tecnologías de OpenAI.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 67.08860759493672%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsSAAALEgHS3X78AAADJElEQVQozwEZA+b8AEUwMjomKC0bHBYMDA4NFQsNFQkKEgsNGAsNFwgJDgMECQwPGw0QHgoMFAkKEg0KESAREzQhI0MvMk45OwBXPj9KNDY+KSssGhsaERYHBw0ICA4WGC0hJDwgIzMkJDkiJEAbHjUIChUKCxUeExc1ICNHMDVUPUJgR0oAY0VCVDo6TjQ1PSMhJA8MBAIJDA4iJilKMjZUNTdRPT5gOjpiJSZHERItCgUQLBQSRiwtWD1AYENHcFFRAG1HO1c2Klg5M3JjaWBTWz49T0RJZVNXdVldeFxed15gfVpdflNVdkZIakE/U2lcZ3FcYWA9NG1GPn1XTwB2SzteNCBdOiy5wdrP3f/M2fjS4fjT4PfX4/jb5/zc6P3d5/vd5/vP3fXB1PXM4/+bl6ZgNCR7TDqIXVEAe047az0mXjgmoZ+xvcThs7LHt7C+raeztbC+sKi4sKq5trXIs7HBtbTFurfLwsvkmY6WZTMbg1M8j2BPAH1NNX1OOGFCPEQxN0Y7QUg1N0ouK1s5NEw2OVE1OEEvNVM6O1pGUVA6QlE4OH1haGNRWVIsGoJPM4paRABeNSNHKyJBKCNFKSFHMzNHMTFsU01MMS1gKiJOKSdmREKPPTKCV1dQOzcxHR09JSddQD1iQTqZaFOCTjAAJxMOGBETGhERblFJUzk0MR0aaUxCW0A5PSYkLhsYRzEubigwYj5AYT4wSCskTCokdU1EOyooelNDd0QkADMYDSwbFVM3KI5mWXZLM0MnFVE9OzMmJ0k2Nlg6MEYuJh8ZGHxhXH9iWTQgGlY0J3FNPT0nHCoUBlkuFQBiPSVZNyZOPDdiRz5fNySOSTOGSyR7Qx18Qx9TLhtZMh1/SzBTLxt9WEZzVUV1PRmXZklwSTFdNRpiLg0AT0gyQCkVbToZf1k/nn90rlw+jkYRlksUoVEai0caTSoZTS4kSSwfn1kmWDAWWSsLbjQKdD0TZTYRcjoMAGI5EYJGEnQ2BoZJGrN+WZVmQ4VDEohNI5VcMY1UK181GkkrG2I3GkYjCB8OB2c4G4lIFWExC1wzEGAyDTg76eisFEn3AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;image.png&quot;
        title=&quot;image.png&quot;
        src=&quot;/static/663a50addb3a617134dff6588ba42942/f058b/image.png&quot;
        srcset=&quot;/static/663a50addb3a617134dff6588ba42942/c26ae/image.png 158w,
/static/663a50addb3a617134dff6588ba42942/6bdcf/image.png 315w,
/static/663a50addb3a617134dff6588ba42942/f058b/image.png 630w,
/static/663a50addb3a617134dff6588ba42942/40601/image.png 945w,
/static/663a50addb3a617134dff6588ba42942/72372/image.png 1149w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Foto obtenida de &lt;a href=&quot;https://gallery.communityos.io&quot; target=&quot;_blank&quot;&gt;https://gallery.communityos.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Paralelamente a la competencia, se realizaron charlas sobre IA, que &lt;a href=&quot;https://youtu.be/r2hKBauX2QQ&quot;&gt;puedes ver en YouTube&lt;/a&gt;. En este artículo, me centraré en la hackathon, ya que no tuvimos la oportunidad de asistir a las charlas 😓.&lt;/p&gt;
&lt;h2&gt;Temáticas propuestas&lt;/h2&gt;
&lt;p&gt;El evento fue anunciado a principios de junio de este año. Para participar, debías elegir una categoría entre las siguientes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/torpedo-de-tem%C3%A1tica-para-la-ai-hackathon-cambio-clim%C3%A1tico-o4zfe/?trk=article-ssr-frontend-pulse_little-text-block&quot;&gt;&lt;strong&gt;Mitigación y adaptación al cambio climático&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/torpedo-de-tem%C3%A1tica-para-la-ai-hackathon-impacto-ambiental-ko0ee/?trk=article-ssr-frontend-pulse_little-text-block&quot;&gt;&lt;strong&gt;Reducción de impacto ambiental y huella de carbono&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/torpedo-de-tem%C3%A1tica-para-la-ai-hackathon-potencial-humano-n4ewe/?trk=article-ssr-frontend-pulse_little-text-block&quot;&gt;&lt;strong&gt;Potencial humano&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A continuación te contaré cómo fue postular y cuál elegimos nosotros 😊&lt;/p&gt;
&lt;h2&gt;La inscripción y nuestra elección de temática&lt;/h2&gt;
&lt;p&gt;Eran las 2AM. Yo le estaba leyendo la postulación de la hackathon a Eli antes de hacer click en “Enviar”. Estábamos agotados 😴, había sido un día largo y bastante movido (veníamos llegando de un tour en Lisboa).&lt;/p&gt;
&lt;p&gt;No muy convencida, me dijo dale!, Así que envíe la postulación.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 601px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 133.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAIAAADzvTiPAAAACXBIWXMAAAsSAAALEgHS3X78AAAGWklEQVQ4yyXE+VNaBwIA4PdvdPanTDdNk1Rztq5uvUg80qh4RHmgXIJyyCWXSRXQCgpyxDtWRauoaEyCgBFF1OKF4gnI8UA5DERtp93Z9Nh2t07W7c588wFqs19tCagthwMLhwOWQ/V8QG0OXDxg9g+aocE56OJhs19r9mrnPeNm3/CcZ9TkemFyTrx2AJrl0MhK+E8RzXJ42Br6U/DiEWtozBoeXwk/XwnrVkL61dDUWujF8pHOGjBaA/olCJhYP56w/d+biY3o8403k/87+nwz9mIzprPH9FtR41bMtBVb2Iku7B7PbUXm7KHFzUOL7RAw7MT021H9TtSw+9a4ezK9d/r6wv7pjOPU5DibdZ6anacLrhOrK7Z2ENlwBW3Oo3XHkW3/cHkvCMxsQfPut+aD2Lz71OI+sVzsOV3wnCx6Tr71nCx7Yiue6LonYneHdt1HDnfA4YH23b5dN7Tl8gMzyyvrUHjNF1oPHK9DkXXoeM0XWfeGbb7whi9k94W2fEe73kOn1+/xeiGvM+DdC/icPq/b5fECm65tm2N7x3fQI6m1bW84IsH90JEjeLQLQfuQ3wFBLsjn8Xkgn/M4sPdD1PXzD0c/nngj/j2f1wkch+yhw3XnzqxayrfvLNJKUQNtMk9gPxj1Bd/4ghF3KOw6jjjP3uz9659H5+9/P3///vz8p3dnB2H/JqAz6Zdti7rnfRJSwd7qJK+47Csa0zSj3V0aM/Y2B53mY2g56l39R8D2y3f+X7+P/PGfn/54f/7bO+jd2R7wdMzYqp3uNS61ShtJJJBDKeazK/WjXWoeXo7MGxTz1I0CXYPI0T8YfqU7MYy9tUyebC9C5uGd6W6gc0LfptXJhl5+PWVhtzSX1lDoEv43feJ2KigtyxtVCnq4TA2bZhKIDr7RxDaWg3MGu6bX1CnRSNhAU+9AU59GqZns0OqV2gmCkMkS8zB4DO4hDEz7lFP6hbIKO/SEapI3bPUo//3L2Y/fHR7YLTbrgmnaCOD4Ihynltyoqu0a5iiUpLKcKhySSuN01FahsxKpqAIpETX5hDLfKrYoGiDLaCyy59lfW1tZ0hsNQBmDT6sT1YilFCyqDFHIxiNkJHBKO7qgG2GRSQRm88jjSp2INSGstvd/5Zp6Ggo5d3dsq2vfWpYWAIlSJnnawiIg8hKu0/JSO6vAztrqqbGRmaHuOhqNLekdaRWrKkFuSW5PNWpaztp49Wx/c2lz22aamwEYDAKDhkXfu8mg4JspZXJCQQuxUC1v6mv8clIlHNcbOrq6BRj4MwZWTizmFtyvKUqflLA3Vs3Ts9MAh4VT1VUwsfnyen43Hf2MhlRiHwwoxGbrps9l14/3szD5E3WkgwGJuYUrpZbSELnCwnSD9InOMAWMa4eZBGSzkN/BwcrJhXxsPh3MqCWDX3e2UsuR6PRPecXpegmjg4OvQMCrsCCvvJQJZsqQ94ydMgCLRleQSM2cSlFFXjMDJBHQDUKOpreFSEDFXf/wi5Q76AeJ5MJU8EFiSU4aCw0fe0yoQ2Y2Y7NmJdVAOZlV/4Rfi8vlUVFKDqqay+zokPV0K+A59+7c+GtO8o3clHguMltGKs5Pvy2hgEsKnhTzUICAjdcRgQZZG49KKIFn8FlkqVzV9qyjr1eJK0feir8E++waG3aHknGnsTx3TkzvY5ZOCkhzwgol9iEfnqQiwQE6nUpns0WNstpaAYbM5PPpVZXFt29cSrl7BZV4rT45Tpga38NEvKypmBXRVtp4Bi6q6VGatDBxpIkP8Nl0DoPCotMJuLL05HgqNquJg4ElXM1JvE5NjatPiaMnXcE/TDBKWPauugUlZ5hSoChI6kenWV8NA+XgIwyiAIPIw+MxJEIppiiNgrzXWFXaX1OpBDOEsJvEpI/Tb1+iwP8+yEYOccCX/DJNeWY3+PnrLgFQ92VNvUggVyiIeFReZlJGSnz+/ZvtHJxOQFEVJD1Ovf7o7oeI5KvItKsqYvZcI8EkwOqqcvrw9zsp2UCLXCWWSDvb29TdchG/soGL/fzu5RLY7d6KPB4sriLlE3jCR8jUa/z8hAZ8tqWRaOSCWnL2EA0uw2cAckWrUtVeChaJOMR2MaswK/GTyx/c+vgvxX+7IiyC9XPLGYhM2GeXC5OvgFm3hpklelaRhpL7kl3UTsr6L45io2zLlmPCAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Aquí una selfie con nuestros guías de @rsailing en el tour de Lisboa, antes de postular&quot;
        title=&quot;Aquí una selfie con nuestros guías de @rsailing en el tour de Lisboa, antes de postular&quot;
        src=&quot;/static/a9d2c9c4efc8f044fcd261d9b7889027/d8f62/rsailing.png&quot;
        srcset=&quot;/static/a9d2c9c4efc8f044fcd261d9b7889027/c26ae/rsailing.png 158w,
/static/a9d2c9c4efc8f044fcd261d9b7889027/6bdcf/rsailing.png 315w,
/static/a9d2c9c4efc8f044fcd261d9b7889027/d8f62/rsailing.png 601w&quot;
        sizes=&quot;(max-width: 601px) 100vw, 601px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Aquí una selfie con nuestros guías de &lt;a href=&quot;https://www.instagram.com/rsailing_tours&quot;&gt;@rsailing_tours&lt;/a&gt; en el tour de Lisboa, antes de postular&lt;/p&gt;
&lt;p&gt;Estábamos como nómadas digitales en Europa (de hecho, &lt;a href=&quot;https://9punto5.cl/&quot;&gt;daremos una charla en la 9punto5 sobre esto&lt;/a&gt;, guiño guiño 😉) por lo que, como puedes imaginar, dejamos la inscripción para último minuto.&lt;/p&gt;
&lt;p&gt;Postulamos a la categoría de “Mitigación y adaptación al cambio climático” con un proyecto que ayuda a buscar vivienda considerando los efectos del cambio climático (nombre provisional: “Where to Live”).&lt;/p&gt;
&lt;p&gt;La idea surgió después de una lluvia de ideas con Mauricio Chiong, experto en Climate Tech (lo invitamos a participar, pero quizás no estaría en Chile para la hackathon), y de una búsqueda en Reddit 😂 — &lt;a href=&quot;https://www.reddit.com/r/climatechange/&quot;&gt;r/climatechange/&lt;/a&gt; es una mina de oro.&lt;/p&gt;
&lt;p&gt;Nos habría encantado postular un proyecto en el área de salud, donde Eli y yo &lt;a href=&quot;https://codeness.io/about&quot;&gt;tenemos experiencia&lt;/a&gt;, pero supimos por una publicación en LinkedIn que Cambio Climático no estaba recibiendo muchas postulaciones, así que había más chances de quedar en ella.&lt;/p&gt;
&lt;p&gt;Decidimos priorizar la temática sobre nuestras preferencias, ¡y funcionó! Porque quedamos seleccionados 😉.&lt;/p&gt;
&lt;h3&gt;Nuestro equipo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eliana Quijada&lt;/strong&gt; (&lt;a href=&quot;https://www.linkedin.com/in/eli-quijada/&quot;&gt;LinkedIn&lt;/a&gt;): Enfermera y Full-Stack Developer en Hospital Digital (MINSAL).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nicolás Gómez&lt;/strong&gt; (&lt;a href=&quot;https://www.linkedin.com/in/codewithnico/&quot;&gt;LinkedIn&lt;/a&gt;): Software Engineer en Pauca Technologies LLC.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nuestro equipo fue solo de dos personas. Más que por elección, fue por conveniencia. Como estábamos de viaje, nuestras mañanas eran para pasear y nuestras tardes/noches para trabajar, lo que hacía muy complicado coordinar una postulación con nuestros amigos en Chile.&lt;/p&gt;
&lt;p&gt;Creo que fuimos el único equipo de solo dos personas, y no sé si eso fue bueno o malo 😂.&lt;/p&gt;
&lt;h3&gt;Nuestra solución&lt;/h3&gt;
&lt;p&gt;Inicialmente postulamos con la idea de “Where to Live”, una plataforma que ayudaría a las personas a buscar vivienda considerando los efectos del cambio climático.&lt;/p&gt;
&lt;p&gt;Sin embargo, durante la hackathon, decidimos cambiar el enfoque y construir algo diferente: &lt;strong&gt;La Comarca Segura&lt;/strong&gt;, una herramienta diseñada para ayudar a las comunidades a mitigar las consecuencias del cambio climático.&lt;/p&gt;
&lt;p&gt;Este cambio de rumbo se debió a tres factores clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Where to live” era una propuesta más individualista, y la hackathon enfatizaba mucho el sentido de comunidad.&lt;/li&gt;
&lt;li&gt;Los datos que teníamos estaban mayormente a nivel comunal o regional, mientras que “Where to Live” requería información más geolocalizada.&lt;/li&gt;
&lt;li&gt;Además, el “impacto de la solución” era parte de la pauta de evaluación. Consideramos que una propuesta enfocada en las comunidades tendría un mayor impacto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estas cosas las pensamos también por el feedback que nos dieron los mentores.&lt;/p&gt;
&lt;p&gt;Pensamos en La Comarca Segura como una plataforma que ofrezca &lt;strong&gt;recomendaciones específicas y adaptadas a cada comuna,&lt;/strong&gt; según los riesgos particulares que enfrentan, como inundaciones o incendios.&lt;/p&gt;
&lt;p&gt;Dado que solo teníamos dos días y éramos solo dos personas, decidimos acotar el proyecto y centrarnos en las &lt;strong&gt;inundaciones&lt;/strong&gt;, ya que representan el 25% de los eventos climáticos en Chile y tienen graves consecuencias económicas y de salud, mucho más allá de que se te moje la casa (algo que mucha gente desconoce 🙄).&lt;/p&gt;
&lt;p&gt;A futuro, la plataforma podría expandirse para cubrir otros eventos climáticos como incendios y terremotos, entre otros.&lt;/p&gt;
&lt;p&gt;El nombre &lt;strong&gt;La Comarca Segura&lt;/strong&gt; fue idea de ChatGPT. Nos gustó porque transmite la seguridad de una comunidad unida, especialmente con el 18 de septiembre a la vuelta de la esquina, cuando en Chile nos sentimos como hobbits comiendo y celebrando. Aunque nos dio un poco de cringe, encajaba 😅.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 39.24050632911392%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABSUlEQVQoz22S626CQBCFeR8FloutqVwXoUq5LKhEfP/3OJ0ZiDG2P77MZDcc5pxZy7a3WLDhOAvcn04nXC4jmuYHXdeudM/a9z3RrWcd2qZBEPiwwjDAbhcSu7WG4LO6PsPQR1VZoqpKfFcVyuMReZ6t5C9kyLIUvu/BSpMERVFAa42C0DqXyySJEUcR4jjC4fCFiPr9/hOu40C5rlTXXXpF1SFXfCaC1+tVGMcRXduiJwsNWeAJszSViT/IQeD7ZCtYqvQr1PueJ+IW23g8Zszz/BQdh0HyYSRD+smZMn2K+O94JKgWQbY53++YpkkQURIcjMEwGBEqCo3wdbJ/BD2lJALrSPlNtxtNeMeNqjE9YWSLOuc8M8lOKVdCZ2t/UXLPL8TiDfHzGHgqmqgle3Vdy5Yr2ixnnKaJLIk/kGW8sTy1LbabDX4BSLUUj06SAH4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ChatGPT nos dió ideas muy buenas, como &amp;quot;Hogar de Hielo y Fuego&amp;quot;&quot;
        title=&quot;ChatGPT nos dió ideas muy buenas, como &amp;quot;Hogar de Hielo y Fuego&amp;quot;&quot;
        src=&quot;/static/17008cac479eca68005484ccdc715545/f058b/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png&quot;
        srcset=&quot;/static/17008cac479eca68005484ccdc715545/c26ae/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png 158w,
/static/17008cac479eca68005484ccdc715545/6bdcf/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png 315w,
/static/17008cac479eca68005484ccdc715545/f058b/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png 630w,
/static/17008cac479eca68005484ccdc715545/40601/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png 945w,
/static/17008cac479eca68005484ccdc715545/78612/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png 1260w,
/static/17008cac479eca68005484ccdc715545/263f4/Captura_de_pantalla_2024-09-04_a_la(s)_9.47.20_a._m..png 1996w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Tour por La Comarca Segura&lt;/h2&gt;
&lt;p&gt;La plataforma te pregunta por una Región y Comuna:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACkklEQVQoz3WS208TQRTG+39q4ptPPmgIxiBGjbd4S7xE0XhXEJSIRKNovFE0agGLtIoUcQstsLTbbbe73e5lZvpztuiDD57kyzlzZs4335wzqYGi4l5B8SCveDyneD6reJVRvPusSCfQcXpar7/ofLKfUzz5LnlYiBhcbnPb8Li14nKt1GKg5JIa+CW5uyB5qvH6myD9VfAxK5jJSrKzgvys5HtWkZ+T5L91mF+EGS3gw3LMu2LAxKrHsOFwb6XJjdUmqUtLkptfQyw3ptPpEMeSIIxYXCwwP58jk5lmduYL+VyedHqKqan3lEpllNJnowjHDxj9aXO/6HAnIby4EHMl08JYs1hfK1GrWYRhQLPZxHEaNBp17Lrdjc1NE9M0se0arufiNh2susPjJYsRo8F9rTJ1fibg/FidTasNKE0W0Wq18Dyv69vtts6FRFpNHMddr5Tir7VjwVihyqhRZ7iYEA56nDpnUbHC7gHfb1O1LK3U1uocXNftEkopEUJ0SZNY6fYk5kUxI8U6Q3ogN4oeqdP9DQ4f3cSsBFs3+j6+10QJrUQKkrpEkfyDbiwVsSaHjiYU3Fz3uGoGnDF8Uod7a/Qd0b2pbik0qgHD0zaDGZv5crub6/B/awnJdV1z0RQcXwxI9e+36D2+wep6S1dKHC9k3fYp13xsNyDSTwx13/5BvOWFiGkEIY8qESNlTTwXktp/wGL3CZPey8v03lqiZ3iJvePL7Jv4Rd8bg770Cgc/lziWXeNsboPLCya3CxVG9CCSYYzrL/OsHPPKkLz4pAn7D9nsOVlh54VNdlwz2TZksn2syo4Ji52TNrs+OfRkPQ7kfE4thAwUYob03x3/KXmm8bIgeftDMJUXZCYjfgP4ThRUkUIufAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;image.png&quot;
        title=&quot;image.png&quot;
        src=&quot;/static/63be7b90146cb85e57d242264f3c756d/f058b/demo1.png&quot;
        srcset=&quot;/static/63be7b90146cb85e57d242264f3c756d/c26ae/demo1.png 158w,
/static/63be7b90146cb85e57d242264f3c756d/6bdcf/demo1.png 315w,
/static/63be7b90146cb85e57d242264f3c756d/f058b/demo1.png 630w,
/static/63be7b90146cb85e57d242264f3c756d/40601/demo1.png 945w,
/static/63be7b90146cb85e57d242264f3c756d/78612/demo1.png 1260w,
/static/63be7b90146cb85e57d242264f3c756d/29007/demo1.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Luego lo primero que te muestra es un análisis de Amenaza, Exposición y Riesgo:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACf0lEQVQoz4WRy2/UVhyF528sEl0gVuxQuwGEYIEEVaXyEggkxIKkRVDRLKp2gABJgACCJJBAXqRVyEw8tsfv14w9scfP+bgesoIFRzry1bXud+/5ncbNTsXt7RFTW/Dv2ojplRFzb0c8X6yYXyx5sST8tuL5csXsh4pHGxXNrZKp7ZQ7OwmT7YhJOWJC3eOmGtG40a540EpZaXlsKTGflCFteYii5uhaiblvQy/RzZKuVaI4JZJXsONntPspT/WIPzp9Jmvg1f9zFtQEW91Fau+gyrt0Oi3yLOaLRnxPG3bE762AuzXw8mbGs9aAMPDxgx69Xh/fDwjEuv6OBG9vL8a2HVzXw3EDYX/8z/V8yixlzeqL+B5/KQJ4cSFm7kNfAB0832cwEPAwFAAbR7hWUZRiPyKKBvhhQpzm4qIRaZqJABUbAvjnjsuUHNK4MBEy96xPLg4alottWWNgrbgAy/GwLFPYIhOvqeV6AVq3y7AGCr13RGSpJ+Y4oPHLcZ/p6R5DMTNZ6aKqKoZhUFUVg3iIKg7Ksky3BiQJWV5gmCaSJI0T1TNe8mOuaTFXpITGqZ8dmg97JEk4BhqmNXaa5UQivqpp+3smyTBlL05QFBVNN9DExSPx6kXR9CUt5fz2kMaxYzb3Z4L9vopvK6yKr5quKJKYXLjKv0T+GKbcljMm11MaJ0+7XJrQeLKk80C4uaLRXNW5v6kz/Z/J408WM22bp5LNvOzwpuuyrAesCq9pAZtdj1ei3ZndgtklATxzzuenXw0O/dbh4HWJHyY6HLin8OM/XQ4/0Tkyb3J0weHEssfZ1R5X1kNubUTc2xzwt3BzfcDsx5TXWwXvXmZ8BlsoHLSPeJflAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;image.png&quot;
        title=&quot;image.png&quot;
        src=&quot;/static/6065d393fa5dc50e3589726fab582773/f058b/demo2.png&quot;
        srcset=&quot;/static/6065d393fa5dc50e3589726fab582773/c26ae/demo2.png 158w,
/static/6065d393fa5dc50e3589726fab582773/6bdcf/demo2.png 315w,
/static/6065d393fa5dc50e3589726fab582773/f058b/demo2.png 630w,
/static/6065d393fa5dc50e3589726fab582773/40601/demo2.png 945w,
/static/6065d393fa5dc50e3589726fab582773/78612/demo2.png 1260w,
/static/6065d393fa5dc50e3589726fab582773/29007/demo2.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Junto a recomendaciones comunales:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACZUlEQVQoz12SyW/TQBhH81+CBBc4cSoHECoSByTgwCIWCdQLhFViEUtBiAIClbJ0o61C21DaLHbiLbZjO3bS1nbiPj6nSFA8epr5zeh7mvFMYUzJuPsr4/HKDuOljDcLGR/mMiZnM6aEzzKems/4tCjzsj6xkvGqPODJesKDyha3axFFNeJms8dYM6JwvTJgQunTaKc0nBTNTjFaKZZgC06rj2PnSHb7WEIryDA6A5phitlL+WiEFOsdirnwys+Ur1rCZsdF1xq4joVlaui6imlpQ9qejW2bGEZT5hv8/y1YIqv43M+Fl5ZjPlR69HdSao7BL60uu7VQBS2wBecfdrMRtoc0JMeDmEWzw72NNg8bIjw/vcn7hYh4J6bqGayZClVXoybjum/uQQmsYZ+v5ahdZ1i3JMIH6y6P1ZDChVshbyY6JNI2RJQLhzJBySV/UIPW3yxixRdCm77UzdtyMfWA22qXwpnjHuMvfFJZqLg6P/UaVUfbLch35pl/xnuzKtKq5GSwzTdvk2t6j8vKFoWTIw5Pn3vE0sqWylJtjXJ+bCmsSWE92KWWkwuDv3OVoXCLL8E2F/SY8+sxhWPHbJ699uSudvC3A9zQIUpCumlEr9+jl3aHdIUoiYQuofRhHOELMKDUSbijJhRLIjwx6nL1jsH3ss1M2WFGfu50xWWm5jKruMw12nzXPRYNj5Lls9LyWbMDNnJaAXXJX+W5TFT7vJtNKJw67TFyzuTQRYUDN+rsK9bZ/7DBwfEmh9/qHJm0ODptMzrvcnbJ59oPeXPLIY+WI54LL0sR71djvqz2mZtK+A2KbRZOMPZHDAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;image.png&quot;
        title=&quot;image.png&quot;
        src=&quot;/static/89557d0019385ad47eaa2706a85e5bfe/f058b/demo3.png&quot;
        srcset=&quot;/static/89557d0019385ad47eaa2706a85e5bfe/c26ae/demo3.png 158w,
/static/89557d0019385ad47eaa2706a85e5bfe/6bdcf/demo3.png 315w,
/static/89557d0019385ad47eaa2706a85e5bfe/f058b/demo3.png 630w,
/static/89557d0019385ad47eaa2706a85e5bfe/40601/demo3.png 945w,
/static/89557d0019385ad47eaa2706a85e5bfe/78612/demo3.png 1260w,
/static/89557d0019385ad47eaa2706a85e5bfe/5f78c/demo3.png 1606w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Y finalmente un pronóstico de Precipitaciones:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 27.21518987341772%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsSAAALEgHS3X78AAAAvklEQVQY05WO3W6DMAxG8/7PR7UKQspGpQniJPwISoH4a3CvNq5q6cj6bOvIClKMGCM+LWY+oR4bQ/8OMLpAaQyyLENRFKjrGnmeo6oq6dfrFy6XDFprycfNtm0nsdrTZxQG+BBgyYGcg/MeIXRwzqNprcwo7awlgYjk/hD8/1iBI/auxtSWCY3ZGky2FGYyko/+DD/gqRGWcEff3jDab4z0ZvL3pNqhOAl56RFPdKcZ1lHYlwHr3P/lMSRhxAu9nX/B1w1+TQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Captura de pantalla 2024-09-06 a la(s) 2.58.05 p. m..png&quot;
        title=&quot;Captura de pantalla 2024-09-06 a la(s) 2.58.05 p. m..png&quot;
        src=&quot;/static/1111a7f3ef0a3d28aa607ce7cb0d818e/f058b/Captura_de_pantalla_2024-09-06_a_la(s)_2.58.05_p._m..png&quot;
        srcset=&quot;/static/1111a7f3ef0a3d28aa607ce7cb0d818e/c26ae/Captura_de_pantalla_2024-09-06_a_la(s)_2.58.05_p._m..png 158w,
/static/1111a7f3ef0a3d28aa607ce7cb0d818e/6bdcf/Captura_de_pantalla_2024-09-06_a_la(s)_2.58.05_p._m..png 315w,
/static/1111a7f3ef0a3d28aa607ce7cb0d818e/f058b/Captura_de_pantalla_2024-09-06_a_la(s)_2.58.05_p._m..png 630w,
/static/1111a7f3ef0a3d28aa607ce7cb0d818e/40601/Captura_de_pantalla_2024-09-06_a_la(s)_2.58.05_p._m..png 945w,
/static/1111a7f3ef0a3d28aa607ce7cb0d818e/cec12/Captura_de_pantalla_2024-09-06_a_la(s)_2.58.05_p._m..png 1187w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Junto a consejos para los vecinos:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAAC2klEQVQozyWS6VOaVxSH+XMznVYjGMUACojAC6IGkphUZVSUurCkSSdNTQxLktqWDhhIW7ugQlSUVVZ5EXx6JffT/XDmOc/5naOYP+zh+fuGrWQHd/Bn3BtvWdkM49mK4PW9Y307ypoviscfZdkXZskfZiEQ5klwl8cvwqz8W2E5U2chW2c+W0Mxn+6y+tcN3lgDs0VibESJSjVIwL/Jp1SC5Mc4f6T2SSXj5E6zhHZ3ME5osRj1SBYz3lSOjeMaq8dVljJVFI//ucad6uL+cIlt9iEa4zgDIypCkQj1ep1ms4XcuaZ1dcXt208luae7j27KgM0xi+/jGdtHVbxHl6zcAl1/yszH2rheFrBMO9FM6hhUq9h5+4Z8Ps9Z5phqpUylUqEjd/g19htK7Sg6szCcdvAscUowfcnmYRmvsFQ8iLV4EKwjuXOYbV+AA6NKXod2hV2TYqFAuVSiWCwiyzKx+O8M69RoTRN9YGD/hOBhhe10ie+EqcK5VkOaq2CYO2VKcjJm1HBn6Gt+erNDvVoVZuU+uCr+vW6XX4Th3fv3RJ0Wq8OB9+CczZMG62LcpaM6imltGf1kiTHb5z5w0mJELTIKRcLkLy7E2Bciy8YXYK9HPBFHo9eJOpMAzrCQKbNUkHmaazF92ERhHCmKbgWUUhaT1YlktWDQG4iIpZRLRQE97+d3a9put0nEE5hMJuyShDQzy7fnNRYvb3CdyZgPrlDoNHmGzXm+cWQwWF1oJ/QMqYaJvv9A+/qGYqVGtdGieSX3t5xMpTBNmbHb7eIq5lg/qxOswEa2w2KijUKjLTAk5flqLoPFasdhHMWsGeL5Dz/yIiYCf/8fz/Yy7H06ga5Yyt47xtVKpsbVWCULvnSVVzl4nb7m1Z4AavWlPvCO8zMDNj+D9lUGZta469pA+cTH8FMfIwt+dO4AFs/3SMsB7IvbzC5u8cjznJepBqGDHtGUOKmwzP8JZ7aPgGDCfwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;image.png&quot;
        title=&quot;image.png&quot;
        src=&quot;/static/c20bf959aaaaf85bbf1312b9606ae8b4/f058b/demo4.png&quot;
        srcset=&quot;/static/c20bf959aaaaf85bbf1312b9606ae8b4/c26ae/demo4.png 158w,
/static/c20bf959aaaaf85bbf1312b9606ae8b4/6bdcf/demo4.png 315w,
/static/c20bf959aaaaf85bbf1312b9606ae8b4/f058b/demo4.png 630w,
/static/c20bf959aaaaf85bbf1312b9606ae8b4/40601/demo4.png 945w,
/static/c20bf959aaaaf85bbf1312b9606ae8b4/78612/demo4.png 1260w,
/static/c20bf959aaaaf85bbf1312b9606ae8b4/29007/demo4.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Aquí un pequeño video (no tiene audio):&lt;/p&gt;
&lt;p&gt;&lt;video style=&quot;max-width: 100%&quot; preload=&quot;metadata&quot; src=&quot;/3b43f7c6d17c93a903068c56805e6a72/La-Comarca-Segura.mp4&quot; controls&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h3&gt;Programación&lt;/h3&gt;
&lt;p&gt;Esta sección es un poquito más técnica 🤓, el repositorio es público y lo puedes ver en GitHub: &lt;a href=&quot;https://github.com/codeness-io/la-comarca-segura&quot;&gt;codeness-io/la-comarca-segura&lt;/a&gt; (está igual a como lo presentamos).&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Stack tecnológico&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nextjs.org/docs&quot;&gt;Next 14&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://sdk.vercel.ai/&quot;&gt;El AI SDK de Vercel&lt;/a&gt; para integrarnos con OpenAI&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mui.com/material-ui/&quot;&gt;MUI&lt;/a&gt; como librería de diseño&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nos fuimos por lo seguro: con Eli tenemos experiencia en React, y como era una aplicación más “full-stack”, decidimos irnos por el framework Next, que lo es.&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;API de datos&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;Utilizamos los mapas de riesgo climáticos para Chile, que son parte de un proyecto del Ministerio del Medio Ambiente del Gobierno de Chile.&lt;/p&gt;
&lt;p&gt;En particular, usamos los &lt;a href=&quot;https://arclim.mma.gob.cl/atlas/view/asentamientos_inundaciones/&quot;&gt;datos de Inundaciones&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Cómo usamos OpenAI&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;El prototipo lo armamos de forma incremental:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mostrar una descripción sencilla del riesgo de una comuna en base a sus indicadores&lt;/li&gt;
&lt;li&gt;Mostrar recomendaciones a nivel comunal&lt;/li&gt;
&lt;li&gt;Mostrar recomendaciones a nivel personal&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para la primera etapa, utilizamos los datos de inundación, que consisten en 80 columnas (la mayoría son indicadores) y 346 filas (una para cada comuna). No tiene sentido entregarle todo el Excel a OpenAI, esto es derrochar créditos, así que escribimos el siguiente Prompt:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Eres un asesor de gobierno sobre riesgo y mitigación de consecuencias del cambio climático en Chile.

Tu objetivo es explicar de manera simple (ELI5) los principales riesgos que vez en una comuna específica.

Para esto, te entregaremos indicadores sobre inundaciones de la comuna a analizar.

Los indicadores que te entregaremos son los siguientes (CSV):

${attributesText}

Tu misión es explicar de manera simple los riesgos que ves en la comuna a analizar.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La parte que dice &lt;code class=&quot;language-text&quot;&gt;${attributesText}&lt;/code&gt; se reemplaza por la descripción de las 80 &lt;em&gt;columnas&lt;/em&gt; pero en formato CSV (que usa menos tokens que JSON).&lt;/p&gt;
&lt;p&gt;Luego, cuando una persona consulta en la página por una comuna específica, buscamos los datos de la comuna, y junto al prompt anterior, agregamos la consulta específica:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;La comuna a analizar es: ${floodData.properties.NOM_COMUNA}

Los indicadores para esta comuna son: ${JSON.stringify(floodData.properties, null, 2)}
  
Para responder, hazlo en formato markdown, es español, y no incluyas los valores de los indicadores. Puedes marcar con negrita los puntos más importantes.

La estructura que debes seguir es la siguiente estructura JSON:

{
  &amp;quot;risk&amp;quot;: &amp;quot;(Amenaza de inundaciones)&amp;quot;,
  &amp;quot;exposition&amp;quot;: &amp;quot;(Cuántas personas están en riesgo)&amp;quot;,
  &amp;quot;risk_vs_exposition&amp;quot;: &amp;quot;(Riesgo - amenaza vs exposición)&amp;quot;,
  &amp;quot;improvements&amp;quot;: [&amp;quot;Sugerencia de mejora 1&amp;quot;, ..., &amp;quot;Sugerencia N&amp;quot;]}
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le pedimos un objeto JSON como respuesta, lo bueno es que con el &lt;a href=&quot;https://sdk.vercel.ai&quot;&gt;SDK de AI de Vercel&lt;/a&gt; esto es muy fácil de hacer:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;  &lt;span class=&quot;token comment&quot;&gt;// Primero defines el objeto&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; expected &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; z&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    risk&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; z&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    exposition&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; z&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    risk_vs_exposition&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; z&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    improvements&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; z&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;z&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// Luego lo pides&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; object &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;generateObject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    model&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;openai&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;gpt-4o&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    schema&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; expected&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ⬇️ es el primer prompt (el que tiene la definición de indicadores)&lt;/span&gt;
    system&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getFloodSystemPrompt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ⬇️ es el segundo prompt, que tiene la comuna en particular&lt;/span&gt;
    prompt&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getFloodUserPrompt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;commune&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;Todas las piezas juntas&lt;/h4&gt;
&lt;p&gt;Dada una comuna, conseguimos sus indicadores (consultando ARCLIM) y le pedimos a OpenAI que haga una explicación en fácil, y también le pedimos recomendaciones.&lt;/p&gt;
&lt;p&gt;Luego, usamos la API de &lt;a href=&quot;https://open-meteo.com/&quot;&gt;Open Meteo&lt;/a&gt; para datos de precipitaciones de los próximos 15 días. Ejecutamos un algoritmo sencillo para saber si estas precipitaciones serán extremas, para así mostrar las recomendaciones vecinales ante el frente meteorológico.&lt;/p&gt;
&lt;p&gt;A continuación puedes ver un diagrama que resume todo lo anterior:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 44.93670886075949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAAA+klEQVQoz42RCQrEMAhFc/9jtqX7vu8OT7CEwgwjSBo1r191wzDIcRxitiyLEDPPskyqqlJP01TGcZR936Xve+m6Tmu2bdOTu4vjWKZpUiiJuq4lDEMh/s2Akk+SRB0R/CyKInFA1nWVtm2laRr95sF1XXLftzoxFKAKdcQQQA13jNh5nuJIcPENxfwAAE67qA6CQDugNcvN86xvgD9AX40Bi6LQx8DyPNfWLMadLjAgfwFpsSxLnY2pA8RYfGUGfFq2gG8UowAwUBYAlI3Tro0DMf5MFWgDBwLA1BGnmA0CBcaJQk4cKHlgvKPe2QJQZJu0dn6Zjefd8gcYMrl1BJgI2gAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;La Comarca Segura.png&quot;
        title=&quot;La Comarca Segura.png&quot;
        src=&quot;/static/4214d4f90dde020380f996f0ff5baa15/f058b/La_Comarca_Segura.png&quot;
        srcset=&quot;/static/4214d4f90dde020380f996f0ff5baa15/c26ae/La_Comarca_Segura.png 158w,
/static/4214d4f90dde020380f996f0ff5baa15/6bdcf/La_Comarca_Segura.png 315w,
/static/4214d4f90dde020380f996f0ff5baa15/f058b/La_Comarca_Segura.png 630w,
/static/4214d4f90dde020380f996f0ff5baa15/40601/La_Comarca_Segura.png 945w,
/static/4214d4f90dde020380f996f0ff5baa15/78612/La_Comarca_Segura.png 1260w,
/static/4214d4f90dde020380f996f0ff5baa15/4352a/La_Comarca_Segura.png 1364w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Diseño&lt;/h3&gt;
&lt;p&gt;Pasamos del mock-up que hizo Eli en un cuaderno (17:00 hrs del sábado):&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAEEAv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAG1CiUyH//EABgQAAMBAQAAAAAAAAAAAAAAAAEDEAIy/9oACAEBAAEFAowgajOv/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFhAAAwAAAAAAAAAAAAAAAAAAECAx/9oACAEBAAY/AhE//8QAGhAAAgIDAAAAAAAAAAAAAAAAAAERIRBRcf/aAAgBAQABPyEoWJR1rDYspw//2gAMAwEAAgADAAAAED8v/8QAFREBAQAAAAAAAAAAAAAAAAAAARD/2gAIAQMBAT8QSf/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABkQAQADAQEAAAAAAAAAAAAAAAEAEUEh8P/aAAgBAQABPxAKOYRLcWBDra0OsVIpsJi+rP/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;20240906_153309.jpg&quot;
        title=&quot;20240906_153309.jpg&quot;
        src=&quot;/static/8b35a38b3336438d9f2d01b503676d55/828fb/20240906_153309.jpg&quot;
        srcset=&quot;/static/8b35a38b3336438d9f2d01b503676d55/ff44c/20240906_153309.jpg 158w,
/static/8b35a38b3336438d9f2d01b503676d55/a6688/20240906_153309.jpg 315w,
/static/8b35a38b3336438d9f2d01b503676d55/828fb/20240906_153309.jpg 630w,
/static/8b35a38b3336438d9f2d01b503676d55/0ede0/20240906_153309.jpg 945w,
/static/8b35a38b3336438d9f2d01b503676d55/3ac88/20240906_153309.jpg 1260w,
/static/8b35a38b3336438d9f2d01b503676d55/d2602/20240906_153309.jpg 4032w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A una primera versión (9PM del sábado):&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 601px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 133.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAIAAADzvTiPAAAACXBIWXMAAAsSAAALEgHS3X78AAAGV0lEQVQ4yx2T6VOaWRbG3z9hamo+dE9SiYqgqKiYuGFERQ0uBAyurEbEqCAKCGIQERONorhEQSNGWQTfZgd3EDS4jEhcUJNK91TmwySd2N2prp6qrpn5Om9P1a9unXNuPc9z74cD5KfAclFR9SXoCV7Jy66KQVpmNyGRWxxPxUTX3b0pfpg23FI43lY69LhY2VJs7Kef2AeOLU9DoOIIVAAVOSnIm3+5lxQ1JSC+klbJqZjm4oQxZtYADdNPLxhjY8HnDPdEi03JmpdRrCru5Yrq2Drwxj544VYCuYlRhWgEKS1mVkgyyGtJmPgM+LdDdExRKmxWyhrhkhcUrI0Z/uokh0nMGmgj/00vjbiHIRwv+AC/MlMtY3TR8MJKzGgH8VkrkZyLoucnM+6nj/Cq2IR7soZycKR1SlxblINsq8Y6hh6fuEbBcQEpJwEQkNBSUV0+Lv2bP/8JfvtGQuytqBvfwG799W5CbEp8bPSNbxPg0clxMGT0TQw6kVlFTEfBCzKTinNScGkwgEXIUHdT2LUVtEfcplYhu6WT2yHlCXra+D0cvpzX2cfhy7gCWYewVyRRqFQaNkfCbhFkpyCzUTFAduLtLlpen6hNs+jRmdfMTr9tdd/tPfb4jle2w25vyLV5ZF8/WPbsGRw7BptfbwuodSvJSGRpJhyY6aH0sYtGe7jTWuus3rH43caSw29y+CEX0L1jWdu3rO6bPa8NjsCCdVsLeiGGp5ep5XmyRjyg76M4VGytUjKiNs4s2rSmFaPda13ds6wGbRuHa7vnHv+Zc/vUthUG10NG196iPajSgEHb5HUYBIJL8q8R245dMzazrLN69dYtKNO6tufcCq3sRDb3r3yH7xzbZ1bvyfJ6SO/aW7AHR6aNbwOL/3rnAX575/7339dCa3Ojar3B7jM6A8ueoGXtwOk7WQ1erb7+A4f/3OI9Ma+HDK6DBfve8AvdW/+rn89twNcL138+bL7dMSjVS+a1I8vWG2cg4tq58Ly+WoHYvfTsXDi2Tx2+U9MqJN5/ZQsqJ7WfjsGfI3bgt0vTfz+s/+NgeWoeBDdPwPWwzXvm8EfcgQgk8+xEViCx79zqPTWvh/Wufa3jsHd41jX/9GpzBvjpaOT3790/7C68XAAtvguL98y+feEMXLkDVy7/pd0XAdfCBufhHLg7bdga1Xpm5kx27VArjzvEqwCgf//+w/qnI2N7cyO5hllRRSsn1eLLKovvk3C4svy8+3nYons5+ZjsXEwmBp16Z07Gem8S63TqChIB+N6vfR/QhpxjTQ8L0PExyYgYFByWHIe4kxCfkYTMQiGzkxMzUQkZKCTUouPh5MJ0PgU3IaYJJELgvU/z1qd+2dsgopfhMWnQdRIiNj4WloiAo+LgKUgERCoSAdUoBCwlLiYZfgubAhNTcM8EDOD6jelyY3pMUCek4UswKfdS41KRsQmxMYjo2/CoW2hk7J0kxN1EBDYtCZeJKspCYVPh+Mz4FjJW3lAGfAmbbeP8IS65k4avKcqoKkzHZyUXZyZDJyEHTcNnswhYNim/vQ4vZpR30kqFlOL2mvxuJr6vkQBcbryY6WZoJAwlr6qLXtL6ML+JiG2vKhRR8FJmuYJdMcypHuuoG+dTJ4R0FZ86LqCO8+uec8gyVingnORPiymQXsWvlbEI7TU4XhVORMVL6CW9LMJgC3msgzItrp/tbpyRsKZEzEkhfeZJ/Si/pv8xEZiTMl9KmRoJbaS9WtFElNDxImpxT32Z/A9l5Vh7nbqrfq6ncb63CQIq1JJ6tYQxIax91koCXskbtLJHkHi0oxrq5Y0EKP9p88PnnErotbNPHukUj5cGOeYhHsTSIHdB0ax5Uj8rZar4NcDSQLO+nw3lT3RSBjhkRTOpl/1AxnrQ2/gAsoCMuhil3fVlXcwSRTPxaStJ2lAiZhR20gv4VCzQzSgSUwv4tVhedU5HTa6QktfFxMmbSga5D1RC8mRXzWwvwzjUZJng2V/w3Br+ula0re/eNckOLApgoZ9mVjY6p9s250VBs+zYMXC2orzcGH+/PfVhd/ZzSPf1DPz1wvrrpR1a+1/OLV9Owc/hpU9H+o+HOuBLSP/l2PBjSA/x6UgHTf8PNDF+Pl66DpuuT0BodX+J2H46s16fWX58Y/54bPx4pPvn4eL/AIw0IYFESdWmAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;image.png&quot;
        title=&quot;image.png&quot;
        src=&quot;/static/38d52b408a0896fc687215bc96aa3769/d8f62/demo5.png&quot;
        srcset=&quot;/static/38d52b408a0896fc687215bc96aa3769/c26ae/demo5.png 158w,
/static/38d52b408a0896fc687215bc96aa3769/6bdcf/demo5.png 315w,
/static/38d52b408a0896fc687215bc96aa3769/d8f62/demo5.png 601w&quot;
        sizes=&quot;(max-width: 601px) 100vw, 601px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Al reporte propiamente tal (12:00PM Domingo)&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 590px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 132.91139240506328%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAAAsSAAALEgHS3X78AAADcElEQVRIx6VViW7jOgzM/39c8dpic/mOz8SO7yPxkVmObKfb7tvFQ5+BAWlKHlFD0dq8vr7i5eUFb29vME0Tu90Ouq6jKAqFsiwV1ve/gfM2eZ7j/f0dtm0rsu12C8dx8N1nc7vd0Pc9xnFUWN+7rkPbtpimCY/HQ63OxZlJnmdic2RZ9syO/v1+x8ayLJWVYRjwfR+apuF0OuFwOGC/3ytSPkEQqDhh+zE0N0Z4uaJcyAgmtPlT6szqe1seHtCDHPrxAEOKwoLUdaMGs3aCZgfQZEyT+PF4xPV6VWNF0+Nw1LCT3THrNYnNME7woxiBbNfzfLiui6qq1IS6vcELIimSreKUZB1LiwpBGKpiep6ndFeE4zggvlxw+QWFiM+nE/3OUYQkSRDHMc7n85MwF834zow5nqYphmEg4agEZYDV4gdNM2+ZFV8nM85Ks5JKDvkmlAwjWZCo63rOkMeCzMR6RIj1GDFOu8Y5h+8k5oK0xDq2+W41vz7TSsgMKDi3djlfnlpFq3aiKQ80fYKacYwarpVVSS1Wbdm0TEVKTTzfU75hGqqKllSRBDzYfHc9V46QhlBi/3Z2N9NjQja1MBMf+tmFJdbJIpwEfpUgbFJlg+o621oybDNlT/l5hszlN+1wkypLhkGb4nh2sPXlYCce7DyClYU4lZe/wq1iZb06gd9e0ayEUZdjH1r44RkK+9CGdnGhxx4MWYBWj0UG7oJ+skBimsBKQwRdhna8L4S3mXAXWLAldTMN4BTnOZPi94yefrHaM7wm+Ux4iGxsJbuV1C1jOKKPIpYPaVeQgGOnL4t+IjSvwXNrJPNFF65OfbxqQb2A8eXdrz/iM6FUOehS0U7HP/YeP3wDBynQTiSw8lAVhxKYYg1aAe0zLqCeTrVkyHPYDncUbYWsKVHdGlWt/4p2Af1hGtl60//ruaVLnp0iv0Ncy1ZaKkEmLcbW4t+Ffw+23HqXMMYx+iv6of/Ufoqw6x8wohKee5IWtOWvrOGo6dJqIXS5Z0zTUlaT2FZuRVrbdrCXO6dp2s/J8gp4yL5vdYamTBW6OkdbER8x+ozfReeuKZ5z+q7G1HcYFVo8pmEmnHIHt0RX6GJaY8Hs36+mwqP2gTZCJ37q75F6Av+ANJC7xt2ib/O5ypNcAyReMX3xn5B5K8Zf/A+M+Am94wwATURa3gAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Captura de pantalla 2024-09-06 a la(s) 3.36.41 p. m..png&quot;
        title=&quot;Captura de pantalla 2024-09-06 a la(s) 3.36.41 p. m..png&quot;
        src=&quot;/static/9a57b79cb40dffb6c5295d829747a72a/fcda8/Captura_de_pantalla_2024-09-06_a_la(s)_3.36.41_p._m..png&quot;
        srcset=&quot;/static/9a57b79cb40dffb6c5295d829747a72a/c26ae/Captura_de_pantalla_2024-09-06_a_la(s)_3.36.41_p._m..png 158w,
/static/9a57b79cb40dffb6c5295d829747a72a/6bdcf/Captura_de_pantalla_2024-09-06_a_la(s)_3.36.41_p._m..png 315w,
/static/9a57b79cb40dffb6c5295d829747a72a/fcda8/Captura_de_pantalla_2024-09-06_a_la(s)_3.36.41_p._m..png 590w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;También hicimos una Landing Page, para presentar directamente desde el prototipo y no de una diapositiva:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/2e70c79c94f57d1b03d99de4def5b715/CleanShot_2024-09-06_at_15.38.04.gif&quot; alt=&quot;CleanShot 2024-09-06 at 15.38.04.gif&quot;&gt;&lt;/p&gt;
&lt;p&gt;Aquí nos gustaría agradecer a Valentina Reyes (mentora en UX, &lt;a href=&quot;https://www.linkedin.com/in/valentinareyes/&quot;&gt;aquí su LinkedIn&lt;/a&gt;) que nos dio consejos súper buenos para mejorar la presentación de nuestra solución 💕&lt;/p&gt;
&lt;h2&gt;Resultados de la competencia&lt;/h2&gt;
&lt;p&gt;La evaluación fue en dos partes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Clasificación a la final&lt;/strong&gt;: los 32 equipos debían presentar su solución en 5 minutos, poniendo énfasis en el impacto y en lo avanzado durante la hackathon.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La final&lt;/strong&gt;: 12 equipos seleccionados presentaban ante los jueces y el “mundo entero” su solución, también en 5 minutos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si bien no quedamos en la final, nos fuimos satisfechos con nuestra participación. Logramos tener un producto completo que funciona, a pesar de que nos costó decidir qué construir. Además, Eli se lució en la presentación.&lt;/p&gt;
&lt;p&gt;Obviamente, íbamos con la intención de ganar y quedar en la final, pero hay hartas cosas que nos perjudicaron y que quedan como aprendizajes a futuro.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 67.08860759493672%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsSAAALEgHS3X78AAADJElEQVQozwEZA+b8ALuXfcKrns2xn62UiZCJjYB0cF5STT84NllSU2RcX2FaXGVfZWdia2ReZWVgaF9aY1pWXVdSWF1ZY11bYwDLrZnJtqvIsaermJS1tLt4bmpwYVhLOzJQPjFlUUhiVldUSk0+MzRgV1xaTkxMPDJQQTlqYWFpX1tVSD4Az7OhyrOmcG16UFVrgYulWGiOO0xwL0hsREdYRTY4YUtFW05TTUE/TEE/MiMWVUIvWkk8XUxBRzIlSjQkANm7p4NwaCcfJCskKSYiMYyq1KbR/3yv7Gqg6lyKzU83LGVLOoR5d3JlYG5iXX10cnVraU0/QB8VFSEUEQDWtqFJODMOChASEBcVDRicpLnU7v/D3fa12f+IuPBTPDWTc1+kpq+VhoyOgoSlpKiKg4qWaW0hCQAAAAEA1raeTjguEQwQDw4WKxcZwcHL0PL/xOX8xOf/jcH2Pz1NW1BcU2KJf1RTgmBioImSaz1CmYiXfVpUUT88ANe5pUUyLBQNDwoFCSMqPJS414yz0YetynqjxV6DszQ4SC4nJxYmM1UtLXUlHnBlbpCDnlVbcjs6Sz8yOADIsaItJyoSEBMjICdNSFFxaWxuWVSaVEA4KCADAwlEMB5PLRQoIyMuHiNVLip3eYlqb44YFiMPDxgRFCAAeXFwEhEXLCoxOzpDOTU8PDY8QUJNonlyiXFmX2Z1kIqRjIGEVlReEhUcJSs0bWV5NzNDDg4YCwsRDAsSAEdFSgwKDyQjKx0cJCclLSUiJz8+SYl1dLmxtrvA0JeYo3dze1dTWBgWGg4IBygqNTI0Rg0NFggIDQsMEQBERE4fICcUFBkYFx8UExkWFRssKC42MjlWUlJaU08/NzE2Lys6NDQcGBkgGhQnKDMjJDYMDRYTFBwYGSMALy0wFxYdFBMZFxcfDw4SCwsOGRcdJiIoNzMzV09LVU1JQz07ODU3ISAhQD5ARURQDQ4aCAgODA0UCwwUADQsIhobJRoaIBISGBMTGQ0MEQkIDB4dIjY0NjIuLjYxMTYxMTItLzw5PU5LUFBOWg0PHQMECAkIDg0OGRYD94nynQd/AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli Presentando La Comarca Segura)&quot;
        title=&quot;Eli Presentando La Comarca Segura)&quot;
        src=&quot;/static/25e1898fa62d701f62c12d9a70f83a98/f058b/demo6.png&quot;
        srcset=&quot;/static/25e1898fa62d701f62c12d9a70f83a98/c26ae/demo6.png 158w,
/static/25e1898fa62d701f62c12d9a70f83a98/6bdcf/demo6.png 315w,
/static/25e1898fa62d701f62c12d9a70f83a98/f058b/demo6.png 630w,
/static/25e1898fa62d701f62c12d9a70f83a98/40601/demo6.png 945w,
/static/25e1898fa62d701f62c12d9a70f83a98/72372/demo6.png 1149w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Eli Presentando La Comarca Segura. Créditos a &lt;a href=&quot;https://gallery.communityos.io&quot; target=&quot;_blank&quot;&gt;https://gallery.communityos.io&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Aprendizajes para el futuro&lt;/h2&gt;
&lt;p&gt;Siendo bien honesto, nuestra solución no nos convencía a nosotros mismos de su utilidad e impacto 😂. No porque no lo viéramos como algo importante, sino que por falta de conocimiento del tema, nos costaba imaginarnos su aplicación en el mundo real. Por este mismo punto, no sabíamos muy bien qué otros datos útiles podríamos obtener para así hacer más dinámico el reporte.&lt;/p&gt;
&lt;p&gt;El feedback que recibimos es que si bien la presentación estuvo bien, hubo un vacío entre la información mostrada y el impacto para las personas que la recibían, ya que estos eran un poco genéricos.&lt;/p&gt;
&lt;p&gt;No sé si mejorar eso nos hubiese hecho quedar en la final, pero fue algo que teníamos en el radar y que no alcanzamos a implementar. Quizás en vez de invertir tiempo en una “landing page”, podríamos haber hecho que los consejos fueran más específicos, y además, en preparar una presentación (”PPT”) como el resto de los grupos, para vender mejor la solución y su desarrollo a futuro, así dejar claro que no era solo inundaciones, sino que también podríamos incluir más riesgos.&lt;/p&gt;
&lt;p&gt;Entonces, resumiendo estos aprendizajes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ojalá tener a alguien que sepa mucho de la temática en el equipo&lt;/li&gt;
&lt;li&gt;Presentar con slides 😂&lt;/li&gt;
&lt;li&gt;SIEMPRE pensar en lo que construyes en la hackathon como si fuera un producto que vas a vender&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Feedback de la hackathon&lt;/h2&gt;
&lt;h3&gt;Lo Bueno&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Participar fue ganar por todos lados: muy buena comida, los créditos de OpenAI quedaron para el equipo (200 USD 🎉).&lt;/li&gt;
&lt;li&gt;La comida fue genial, tanto en sabor como en abundancia 🐷 (esto es algo que los eventos suelen fallar, pero aquí no!)&lt;/li&gt;
&lt;li&gt;El diseño del evento quedó genial, las instalaciones se sentían como si estuviéramos en una sede de OpenAI.&lt;/li&gt;
&lt;li&gt;Había muchos mentores, los que nos asignaron eran muy buenos, nos dieron tips útiles, sobre todo en cómo orientar la solución.&lt;/li&gt;
&lt;li&gt;Las instalaciones de la Cámara Chilena de la Construcción fueron muy buenas, harto espacio, sillas cómodas para trabajar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 99.36708860759494%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAFbUlEQVQ4yx2U+VcTVhbHc+pYJUXFvYO2QB2XQYwLyhk9Fec4VBT1eChCKd20tOIYVikiOygpYQkQDCQYEkAgQEgghC37QgIJUpz19IeZP+Yzb/rDPeed8+77vvu993u/kmWrhWBkHX94Fd9aCHcwQPhthPVf3hLe3ECt01Pd2IrWMIJf3K9vbWCamaFLrcHp9/2W7/B6mLKYKS38FknvjSy8Pi/hjQivBvp59ryOobEJXAE/U7NzmCxW8cjPjM1Gn3aQppdK2rp6WPE6MU2MYNRpMM9MsuRyYJuzIlFfy8BmNRN59xbjUD993Qq0egO1TT+j0mgJbUb5x39/xSkYdAjAgZFR9CK6lEoyLqWSnPAx186fQ93Xg3ctjKTrajrLziU2/vmOFdc8hgElEzYLW//5lUBkjde61+gUSl48+AFjZSWTZSX038qiIuUM50/9kbMnTnDhD8foKCkmuL6GpO+LLwhsrhNYmmeoVYHm8SPeyOVMFRUx/vl99BmZGItLMZWXo0tIQrPvAIZDh1EnJHDlo484sjeO60eP0nooHsNjOZKBwu8xlsoZFj8s9tax0l3MRO5NTFn3sP5YhMM4JNoRZfWXCLbKCuwnjrOYmMC0oPqNLIXPrqTRePcOg7dvokxNQaJMOY2xooy3W162Aio2neUErB3452xs/OudUECI1ZAPv99FY10tFbl5jN27i1kmY+plLY5RFbOF15n84Qbmn3LElBMT8VoMWK2DWEcUBOcV+FwLOJdsBMNOgiEn0b9tEIqGMb0Zpqa2BuOwnrmMDEzVZXitnSxXfspIZhLWyntIVPGHeXP1MuPPn2CozebFl6k0lRYw3l2CqaWAvsoCZifaiKzPsr4ZwR9wo39WxeiH8Yx/k43VkIdF9RktFSloVdeQdB45zPiBA8wI2pPDSsrupPB1+ic05p+mNU9GS84l2h7/Bf/CS0LrS4TfRTCVyNGkXcaY/icaG/5MzfOTPG1MRKFORtKxfx/zhQ/wbq7h9s6jKb9F03dXMHTko6u5jro8nVntI9HTOrwLnaz9PYpbyKwp5z6KrNv0NOcwpM+krfMqClGppFd2FofdgiPsxesy01JwkeaHl/BMPyVgq2FtqYGoo5ngXDW+xQ5CG34Bukl7czPf5+Rh0MkZVF+kpiGB+hYZEk1uLo5VN46AC8eymbYHn/Kq4R7h+Wq803IiKy1EnQo8M1U4LXVi2jOE/r0lpvoQ1cFD9JV/hXEii/beszS0n0OiLS3BHQ3gDgdYme6l9SsZw+oiwvYqPFOPCNlrRaX1LIw+wT5WgcMxRkBUOJKTjSlWiiYpEZU8D21jPi+K74oePi2jV9fP3KJYO30P8gfZjA3/jG+ultX5/1NuxqQppLv+LlpNPUseB+Y5C8+TkxnZv5fR/XG074ihaccHNEljkbwWQrW7RdKsmfz8XDJu3qK7R4lJX4nPVkfQXo++vYBK+ef0C2dZFK5SJS8me2cMIwf3MbZ/D0N7d6PdE8ur3VIk+jPn8IgfPdEQ05ZJ1AMa1P1q+tSN2K0qnAvdaLorhZt0CjAXff39XP7w9zyMjeX1nl28EUCGXVK00p107v4AyfixU0LlmTjcC7+BugMePEEvrqCbFd+KOLuZW7JjWV6mXaUiPekYX0qltAi5tQqA6rhdFMUf5OuTSeRcEDqckaViPJqE8dYd7GK1PML3/MK2vGJIfrHHXhFDRgPPfnzE7Y8TyI6L47ZwGFlMDEff306cdAfJxxNIPXOcqxdPC8rHTzJ7/hITKRcYTDlLx41Muqp+QtetYqyzA82Tv3I/LY20I0f4RFS1SxrD77ZvZ9u2bbwvYud77xEveng6IZ6Lp5L4H/SE5masbaDUAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Sí. Le saqué foto a la comida, porque la encontré genial.&quot;
        title=&quot;Sí. Le saqué foto a la comida, porque la encontré genial.&quot;
        src=&quot;/static/1c2ebdb43fa150111b178d72848903b4/f058b/311c16f5-13dc-4244-91d6-1205386c1c02.png&quot;
        srcset=&quot;/static/1c2ebdb43fa150111b178d72848903b4/c26ae/311c16f5-13dc-4244-91d6-1205386c1c02.png 158w,
/static/1c2ebdb43fa150111b178d72848903b4/6bdcf/311c16f5-13dc-4244-91d6-1205386c1c02.png 315w,
/static/1c2ebdb43fa150111b178d72848903b4/f058b/311c16f5-13dc-4244-91d6-1205386c1c02.png 630w,
/static/1c2ebdb43fa150111b178d72848903b4/40601/311c16f5-13dc-4244-91d6-1205386c1c02.png 945w,
/static/1c2ebdb43fa150111b178d72848903b4/78612/311c16f5-13dc-4244-91d6-1205386c1c02.png 1260w,
/static/1c2ebdb43fa150111b178d72848903b4/e8950/311c16f5-13dc-4244-91d6-1205386c1c02.png 2000w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Sí. Le saqué foto a la comida, porque la encontré genial.&lt;/p&gt;
&lt;h3&gt;Lo no tan bueno&lt;/h3&gt;
&lt;p&gt;Con Eli somos muy estructurados y nos gusta tener pautas para este tipo de actividades, aquí hubo una, pero no sentimos que fuera tan clara.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Teníamos que vender un producto o no?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mencionaron varias veces que era una hackathon más “hacker” que una donde se venda un producto propiamente tal. De hecho, en algún momento los organizadores mencionaron que no perdieran el tiempo haciendo muchas diapositivas, porque lo importante era tener algo corriendo en nuestros computadores.&lt;/p&gt;
&lt;p&gt;Nosotros tomamos esto como un “no hagan diapos”. Pero, algo entendimos mal, ya que muchos grupos sí lo hicieron. Hace todo el sentido del mundo, ya que es un súper buen apoyo en el caso de quedar en la final.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Y qué pasó con el Cambio climático?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En la inauguración, se mencionó que trabajaríamos en problemas importantes como el “Cambio Climático”, pero si viste la final, solo un grupo era relacionado con esta temática.&lt;/p&gt;
&lt;p&gt;Sé que no tuvo muchas postulaciones, y creo que eso da cuenta de la dificultad de hacer un proyecto en ese ámbito. ¿Pero de verdad no había más material para la final?&lt;/p&gt;
&lt;h2&gt;Palabras finales&lt;/h2&gt;
&lt;p&gt;La “AI Hackathon” fue una experiencia inmersiva, donde todos los participantes estaban de cabeza construyendo sus proyectos, según nos contaron, varios pasaron de largo sin dormir (¿o será la juventud? 😂)&lt;/p&gt;
&lt;p&gt;La organización estuvo excelente. Se cumplieron los tiempos, lograron que muchas personas estuvieran trabajando un sábado y un domingo, por muchas horas.&lt;/p&gt;
&lt;p&gt;Felicidades al grupo ganador de “Justa”, su presentación transmitió mucha pasión, motivación, y cumplieron con los tiempos a la perfección. Hubo muchos grupos trabajando cosas muy interesantes y entretenidas, en la final estábamos con Eli creyéndonos jurado debatiendo qué grupo debía ganar en cada categoría 🤭.&lt;/p&gt;
&lt;p&gt;Me voy con una experiencia muy positiva, a pesar de las cosas que comenté en la sección anterior.&lt;/p&gt;
&lt;p&gt;Si bien no quedamos en la final, me pareció muy entretenido trabajar codo a codo con mi compañera y esposa Eli 💕&lt;/p&gt;
&lt;p&gt;P.D: si quieres saber más sobre cómo fue el evento, te recomiendo leer el artículo de Fintual: &lt;a href=&quot;https://fintualist.com/chile/tecnologia/por-que-el-evento-oficial-de-openai-en-chile-fue-tan-importante-la-ai-hackathon/&quot;&gt;“Por qué el evento oficial de OpenAI en Chile fue tan importante: la AI Hackathon”&lt;/a&gt;, escrito por Omar Larré.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/9b01d0e60be269513ca2f9e40deef43d/f3583/og.png"></media:content></item><item><title><![CDATA[Nuestra experiencia en la Connectathon 2024]]></title><description><![CDATA[Este año fuimos a la Connectathon 2024, un evento donde distintos equipos pusieron a prueba sus conocimientos sobre interoperabilidad para…]]></description><link>https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2024/</link><guid isPermaLink="false">https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2024/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Wed, 24 Jan 2024 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Este año fuimos a la &lt;a href=&quot;https://hl7chile.cl/connectathon-chile-2024/&quot;&gt;Connectathon 2024&lt;/a&gt;, un evento donde distintos equipos pusieron a prueba sus conocimientos sobre &lt;a href=&quot;https://blog.codeness.io/interoperabilidad/&quot;&gt;interoperabilidad&lt;/a&gt; para hacer que los sistemas de salud conversaran entre ellos.&lt;/p&gt;
&lt;p&gt;A Eli y a mí nos encanta el mundo de la salud digital, así que cuando supimos que se realizaría una nueva versión del evento, nos inscribimos inmediatamente. Lo mejor fue que a aquellos equipos que además participamos en los talleres previos, se nos otorgó un &lt;strong&gt;certificado de validación técnica&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Esta vez fuimos bajo el nombre de equipo “Galletas de Coco” 🍪. Como participó el MINSAL, muchos equipos tenían nombres muy serios, así que el nuestro llamó la atención. Al final del artículo comentaré el por qué del nombre 🤭.&lt;/p&gt;
&lt;p&gt;En este evento, esperábamos aprender más sobre el estándar HL7 FHIR, entender el contexto de interoperabilidad en Chile, conocer más personas que estuvieran en el rubro y ganar la Connectathon. Logramos todo esto, excepto “ganar”, ya que esta vez no fue una competencia 😣 jaja.&lt;/p&gt;
&lt;p&gt;Si participaste en la organización del evento, ¡Muchas gracias! La pasamos muy bien, comimos rico y por supuesto aprendimos un montón.&lt;/p&gt;
&lt;p&gt;A continuación dejaré una reseña del evento, lo que construímos y parte de lo que aprendimos.&lt;/p&gt;
&lt;h2&gt;Día 1: Miércoles - El Comienzo de la Aventura&lt;/h2&gt;
&lt;p&gt;El evento se realizó en el Duoc UC sede San Joaquín, y comenzó a las 9 am.&lt;/p&gt;
&lt;p&gt;Como he estado trabajando remotamente desde mi casa del año 2017, esto realmente significó salir de mi zona de confort 😂&lt;/p&gt;
&lt;p&gt;Luego, estando allí, me llevé una grata sorpresa al ver que el auditorio estaba repleto. Parecía que había más de 200 personas.&lt;/p&gt;
&lt;p&gt;Durante el día, se impartieron distintas charlas, las cuales quedaron &lt;a href=&quot;https://www.youtube.com/watch?v=BvlDDfntkko&quot;&gt;grabadas en YouTube&lt;/a&gt;. También hubo coffee breaks y almuerzo incluido. En mi caso, eran tantas las personas, que preferí salir a comer afuera.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ef75efb4575fd1eefdafa322cc5d0b84/f43e4/inicio.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsSAAALEgHS3X78AAADh0lEQVQozw2S209aBwDGj8K53zjAgXERQS4HmHKTixwooDhvVRxUwJZCHRdBQamIILazus1BU2vZspd2c5eXZWuyZFnMHvZilqV9WLb0dcmy9/0Fex7Jl+/p9z38kg9IGjfSiu44uawjvE5piIRIBqd0rEpJ0yOM2CCT6US0maEDCkVmzLrFBcpcKmt4f1H1VZi9AgKSWyX1w231Z/dUz+5z3ZDKZZGrjSw7JharKUovkThG1EGzadVsqRgsDyeCh/Z43lpP6D9f0v4CLGpTOV25NnJc1By/x5WjYy5eZ5kyGYJWk48zzjgdsWCgmFhec9lqZsPTKf+pb37TXkxyl0vaV0DGud7gWrtvXezoLuvWetwRrGWT9WyynIpXbt8p3Er2CvHuQekO733gMH4R8jwPRU+Dldz4i5Wx18C6cu1It9+Q/NDSXp9NVQuB0Cdnh+e9k/3K5lGn097Z6h+vXHxQ2AjzHafu21n7d9HAkxupHfezde4a2LWsdQ2NDPprQfn715FiPRo9P270juqNannv8cXJeaPfn+1/WMxF+LZj9PW7jt9uuk8D03FrIWF6CfQjiW/seyHB30nJXz+GkoUbkdPdUreWqzbbWx9ftHqt7qPFT49yS0Ff2qh8s2b/I+bcdNsXbNE17jnwJc9f+3b0wH8x6ZufZ+Yz/vB+sdCslfL3O6VWe++g1s4kevXc7Yi/adP8uzH1cs7V8rnb89uH3hfA1bTzVbA4CvxzV/PTn7G57chiI795UCw0suvNe+nDfLqTiT/Zy6cj/qJVdbXqLE5yCU6ZC6ycBJvA9wHLpS+mEHy0oMr2eT7t9M/5wu94fHM+z5Lfs+B1LfOeuwvh6XFLZUKbtWkjE6a4U/FgJXIW2QZuqtQGgoBBAY4gCpxiMZwCQQaGMSGIQbAURVkUk2GYGid3J41V3jJpNM6+ranygY5rFdCSMgiEESGoplQakiEgTIyTcpJmMAIRQiIUHYSEERKEZzTy1ISON+jco+KcXl6zmoDBdQEAECOwjSHkKEoh2GBJI6iGkbIkTUAIhaA0jIpghBKCMgynEWTA60lCT+KAmZVAw0NuhjBRtIYWKQiKgCBwWKAQMZyUZWBEhGJiFJeiuATFcAiCIWjQMhxnUBxQM1oSgbUSmWAYFVNiCckIhoZwodDBirysaCBMQDABQjgIUTBMQjCDE6MUKUUxOUH+D0hR1+gQTB75AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Bienvenida a FHIR Connectathon 2024&quot;
        title=&quot;Bienvenida a FHIR Connectathon 2024&quot;
        src=&quot;/static/ef75efb4575fd1eefdafa322cc5d0b84/f058b/inicio.png&quot;
        srcset=&quot;/static/ef75efb4575fd1eefdafa322cc5d0b84/c26ae/inicio.png 158w,
/static/ef75efb4575fd1eefdafa322cc5d0b84/6bdcf/inicio.png 315w,
/static/ef75efb4575fd1eefdafa322cc5d0b84/f058b/inicio.png 630w,
/static/ef75efb4575fd1eefdafa322cc5d0b84/40601/inicio.png 945w,
/static/ef75efb4575fd1eefdafa322cc5d0b84/f43e4/inicio.png 1120w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La jornada concluyó con un cóctel donde los asistentes pudimos interactuar:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f3096197594c165ceceafb69643427bb/f43e4/coctel.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsSAAALEgHS3X78AAADfElEQVQoz2NgnnaGccpJ20W3Yjf/9l/93XfFF+/ln72WffJc+hENuS/54L7kvceS926LgeiDx5IPDKyzzzDMvaTWvTt527fIbf/DNv4KWf8zeN3PoLVA9ANErgOhgDXfA1Z/h5KroWwGnr7drEuv604+lL33e8Le/3E7/8Xu+Bez/S8ERW+DoqitQPQncgsUAblAQQa+JZcFl121n3Wk7PiPjGP/0w//Tzv0P/Xg/5QDUBKCkveDUNK+/0n7/6fs/5dy4B9QGYPRuuu6m++ELT/Rf/1Hw/X/tZf/11wGkY3X/ldf/Ft5/m/F+X/l5/6VnP1XfOZv0am/pWf/V1z8X3Plf+X5fwzalTNtp2xOWrh30fU38x/8WPTo95Kn/5Y8+1e++uTy5z9Wffq/9M3/Ra//z3/9f86r/zOf/59891/vxU8tR57OefGfIaChV8nUTdXE0yO6JDCtLiK3Lb6sd+rWE8lVkyumrmpff7R/5/mJuy90bjnZuPpA6+pD68/ebFuyPaN94YoztxmqN+9In7agYcbMTTu2TJqzpKlr+rR5K+au2pZdMyEtty44IisqsbS2Y3Zh3dS+2Wt3n77z8uWNwwc31rVPamnvYzD2DPItrAnOryguiZ89b8Lm7dsqqptScqoT8pvXrFnVM2n6xCmzps+cs2Pvzh17tu7dv/PUsc0LF05PzK6YPmsmA4eAsrFbiHVQqllIoV14npZNCAOPrrimu6ldqKG+raymY2x2Q1hkSmpGuoKaYXRUyoyZM3yCkzp7+taumMXALagoq2ysb2wrbhmjHdYoZhDAwCYl4V5i23dJyTJeVMXFxjPbJbzCwjdbVifIwCZLN7TJ1j83I7/k+oUDDJz8cnxiCpx8EioGbmruOcI6XoxsYuIBTWKxc1lFDJkl7bnl3WQ0XaRssiUtslQdciR1vGR13GOiPEurKxi4heTUJfXVJNRFDDxlXLJEdTwZGPnEnTOEbVKYuGTZRfVZ+ZRYBNV5tcI4JS2V7TJULKL4Zcz8Pcx9/VwYogUMW0UCapX9guXd7KzSedQdGBg4hWR15fUcmDilmHiVGbiV+MVUxVTsWIR0xHUDVWwTRVSdTI21vN1MGXQEHdikIgXlQhIFzXvE3ITlzVm4ZaT13eS0LIXl9XmlDARkjJjZhKRkNaTltOQ07OVNI6S03bTMPHnF1QG3tqhFD7ogvAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cóctel en la terraza del DuocUC&quot;
        title=&quot;Cóctel en la terraza del DuocUC&quot;
        src=&quot;/static/f3096197594c165ceceafb69643427bb/f058b/coctel.png&quot;
        srcset=&quot;/static/f3096197594c165ceceafb69643427bb/c26ae/coctel.png 158w,
/static/f3096197594c165ceceafb69643427bb/6bdcf/coctel.png 315w,
/static/f3096197594c165ceceafb69643427bb/f058b/coctel.png 630w,
/static/f3096197594c165ceceafb69643427bb/40601/coctel.png 945w,
/static/f3096197594c165ceceafb69643427bb/f43e4/coctel.png 1120w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Tuve la oportunidad de conversar con algunos ingenieros del CENS, como José y Marcelo, con Jorge (CERO), Paulo (OpenSaludLab) y Pablo (Hospital Digital) (Hola! 👋)&lt;/p&gt;
&lt;h3&gt;De qué se habló durante el evento&lt;/h3&gt;
&lt;p&gt;A modo de síntesis, las 3 ideas más compartidas a lo largo de la jornada sobre la integración de sistema de salud fueron las siguientes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La parte técnica es la simple (le sumaría que no por eso es fácil 😁)&lt;/li&gt;
&lt;li&gt;Es complicado estandarizar procesos de salud para adaptarlos a casos de interoperabilidad&lt;/li&gt;
&lt;li&gt;La parte difícil es coordinar a las personas 😮‍💨&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto, sumado al contexto en que Chile se encuentra respecto a interoperabilidad, resulta muy interesante. Hace 1 año, en la Connectathon anterior, hubo mucha menos participación. La gran diferencia ahora, es que contamos con la participación del MINSAL, y además, nos encontramos en un contexto distinto. Por ejemplo, a nivel normativo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Proyecto de Ley que modifica Deberes y derechos de las personas (&lt;a href=&quot;https://bcn.cl/2f7cj&quot;&gt;20.584&lt;/a&gt;)&lt;/strong&gt;: con el objeto de establecer la interoperabilidad de las fichas clínicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ley Telemedicina (&lt;a href=&quot;https://bcn.cl/3dens&quot;&gt;20.541&lt;/a&gt;):&lt;/strong&gt; la ficha clínica electrónica y los sistemas que la soporten deberán estar diseñados para interoperar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ley Ciberseguridad (&lt;a href=&quot;https://www.senado.cl/a-ley-nuevo-marco-legal-sobre-ciberseguridad-e-infraestructura-critica&quot;&gt;aprobada en diciembre 2023&lt;/a&gt;)&lt;/strong&gt;: considera al sector salud como servicio esencial.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto, sumado al gran trabajo de &lt;a href=&quot;https://hl7chile.cl/&quot;&gt;HL7 Chile&lt;/a&gt;, nos acerca cada vez más a que todos los sistemas de salud en Chile conversen entre ellos 💕&lt;/p&gt;
&lt;p&gt;Queda un largo camino, pero es cierto que en un año se avanzó mucho.&lt;/p&gt;
&lt;h3&gt;Reflexiones personales&lt;/h3&gt;
&lt;p&gt;En la mayoría de las ocasiones, cuando se discutía sobre interoperabilidad, solía quedarme con la impresión de que, aunque el mensaje era atractivo, había pocas posibilidades de concretar acciones.&lt;/p&gt;
&lt;p&gt;Sin embargo, esta vez observé algo distinto. Las iniciativas ya están en marcha, existe voluntad, se han establecido normativas, hay tecnología disponible y existe el talento.&lt;/p&gt;
&lt;p&gt;Por lo tanto, me llevé una excelente impresión del primer día; &lt;strong&gt;superó mis expectativas&lt;/strong&gt; 👏.&lt;/p&gt;
&lt;h2&gt;Día 2: Jueves - Manos a la Obra en el Connectathon&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/4ce98b78f809eccc6fcdfb217c82fb4c/5a190/connectathon-2024.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 56.32911392405063%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAADOUlEQVQozx2R20/bdRiHfzFRJxLdCMwBG2dWOUgpTMoZZJTBSlsYh1LKUQZt1xNUkMGQwSjMAQoUdUAQHQzNGE0cZMvMPCYsXszEJV597/Q/MNHbbx5/evFcvZ88ed/Pqyxdu8qcx8FETzvXrCZ2+vys9TzidrNgzhiWtblVzNkWxcaHbvH1xjBH4WW5e32Y5SEX/oF2dmc8PBp3c3/exfaaD2X5xiwPwns83FkhHBrj2zE3BxO/st//Dw+9P8jRS13MdiyKzQWXWJjsZH30PbnqvMJEZzslZXo+9vRxYGvl+147hztDKKGlJXZ/PuLp800e74/wS7CfZ6Ej9gf/4s+lJ/LBjXE+sN4Sju4WMf1+O4O2eumx1GGsKKKkMIdPAwNsdTbxxNrAYagHZX1rk+3DAx5/9wXh9Umer/l5urrNnaFn/H1vT/64MkbAuilmbyyKtUk/Ib9TGsqKiU+Lo8tcyef+d5mqryBYqmXBpQrvLU9z/5MZwmu32P0oyO93RvnjyyW+CW6z5e2Qi45mWgxTwucOCGd/Dz6nTxovNuJwuPG3mmgp0DB5/m3G8tKpLspD6TZX/XcGi5dNrDgsHEw7+Gn+KqsjowQu6mSv8TxD3V5ha7UKe0c7TseAHPR68Pm8NOh11KXHM1uYyYo+g0ZtMkpTaT4NRTq8ZgPuZhOW8nzOZZ0lK/k0eempsqa4mujXXhEddpvweVw0NBjlQH8v9i4r5RlJuHJSmM4/y02VrpxUFGtVNTX6AgxltapIR3TkyyREnyD1VBQnIo/LCl0Z5spiEZoPiru3Q7xTWSgn/T34exvRaOKxZCbizE5iJjcVs+YMii4jg5pirSrLIj76JHFRr5MWG0NCTBSvHouQhuwU9q5cEMFxt2hpqqOprlT+dneGTqMeTVYChZrTGBJOYlaxpMah1Bak01aVzfW+coqyEol46RhRkZH/o8pldkI8E/UlYirQLTLfSmZ52C4/G7GRqWa12hTeTIvlnCqrSXwDS9IplEq1SFOhho2JOvxtel5QXuR4RARadZibEisDJjs3+ztF26VqUaoW/9X0ZVlbqSVN3SxZfUhyehzajDNcUPM5cTH8C0ygx5wl+hNoAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli y Nico en el auditorio donde fueron las charlas&quot;
        title=&quot;Eli y Nico en el auditorio donde fueron las charlas&quot;
        src=&quot;/static/4ce98b78f809eccc6fcdfb217c82fb4c/f058b/connectathon-2024.png&quot;
        srcset=&quot;/static/4ce98b78f809eccc6fcdfb217c82fb4c/c26ae/connectathon-2024.png 158w,
/static/4ce98b78f809eccc6fcdfb217c82fb4c/6bdcf/connectathon-2024.png 315w,
/static/4ce98b78f809eccc6fcdfb217c82fb4c/f058b/connectathon-2024.png 630w,
/static/4ce98b78f809eccc6fcdfb217c82fb4c/5a190/connectathon-2024.png 800w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para participar en la Connectathon, tuvimos que inscribirnos en uno de los tracks disponibles, que eran:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tiempos de espera&lt;/li&gt;
&lt;li&gt;Receta electrónica&lt;/li&gt;
&lt;li&gt;Identificador de pacientes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Escogimos el track de “Tiempos de Espera” porque nos parecía técnicamente el más desafiante.&lt;/p&gt;
&lt;p&gt;Este track se enfocó en el proceso de solicitud de interconsulta (SIC) desde el nivel primario de salud (APS) a una consulta de especialidad en el nivel secundario, mediante el intercambio de recursos HL7 FHIR con la plataforma interoperable de Tiempos de Espera.&lt;/p&gt;
&lt;p&gt;El enunciado está disponible &lt;a href=&quot;https://drive.google.com/file/d/1bQZM9bqaNPVay_dabKd8DBKgaqHHc3Az/view?usp=sharing&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Desafíos del primer día&lt;/h3&gt;
&lt;p&gt;Si viste el enunciado, podrás notar que había muchos ejercicios. Realmente el tiempo para dedicarles no era mucho, ya que entre las sesiones de trabajo había charlas y otras actividades como coffee-breaks y almuerzo.&lt;/p&gt;
&lt;p&gt;Nada que decir con respecto a los breaks para alimentarse 😂, sin embargo, creo que sería beneficioso tener sesiones de trabajo más extensas, para poder entrar en “el flujo” y avanzar sin interrupciones.&lt;/p&gt;
&lt;p&gt;Nosotros avanzamos bien porque éramos 2 personas (lo que facilitaba la comunicación), conocimientos previos (tanto en el área de salud, como trabajando con FHIR) y nos dividimos los ejercicios.&lt;/p&gt;
&lt;h3&gt;Resultados del primer día&lt;/h3&gt;
&lt;p&gt;Logramos completar 4 ejercicios al final del día (50%). Por lo que observamos, fuimos de los pocos grupos que alcanzaron ese nivel el primer día.&lt;/p&gt;
&lt;p&gt;Había ciertos aspectos confusos en las guías de implementación, pero en general estaban bastante bien.&lt;/p&gt;
&lt;p&gt;Lo que más me llamó la atención fue que ciertas operaciones duplicaban la información. Sin embargo, nos explicaron que eso dependía de la implementación del servidor FHIR. Una vez que entendimos esto, pudimos avanzar con más confianza.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/2b57dfe1d0e9004d42114d7f86a805e6/e5166/eli-nico-trabajando.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 133.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEBf/EABYBAQEBAAAAAAAAAAAAAAAAAAECAP/aAAwDAQACEAMQAAABe3McVWTgSNryM2koz//EAB0QAAICAgMBAAAAAAAAAAAAAAECAAMSMRAREyP/2gAIAQEAAQUCpPTJZ6QaqtKLU+BLwUPiWNU+LRjN8f/EABYRAQEBAAAAAAAAAAAAAAAAAAEQIf/aAAgBAwEBPwFjk//EABURAQEAAAAAAAAAAAAAAAAAABAx/9oACAECAQE/ASn/xAAeEAABAwQDAAAAAAAAAAAAAAAAAREhEBIxcQIiQf/aAAgBAQAGPwLkvjGKNly0w5MKd5HuVNC6Jp//xAAdEAEAAwACAwEAAAAAAAAAAAABABEhMVFBYXGx/9oACAEBAAE/IUQe1qai4VkoQs9zYWDHPkQ4fxLA5ObECwHzWz8mWRjl3it1W+4GT//aAAwDAQACAAMAAAAQYOZz/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAwEBPxA9sbSlv//EABgRAQADAQAAAAAAAAAAAAAAAAEAESEQ/9oACAECAQE/EAalwxvP/8QAHhABAAMAAgIDAAAAAAAAAAAAAQARITFxQVFhgZH/2gAIAQEAAT8QvJEOa0XfyDyqKW7IQFRSBrYYOD9VD7Atzz6dEXA6rtAdRJBzjgNtzkgskFaIqkfM0U5dsB+LJjOFPfuIPM2quECgJ//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli y Nico trabajando&quot;
        title=&quot;Eli y Nico trabajando&quot;
        src=&quot;/static/2b57dfe1d0e9004d42114d7f86a805e6/828fb/eli-nico-trabajando.jpg&quot;
        srcset=&quot;/static/2b57dfe1d0e9004d42114d7f86a805e6/ff44c/eli-nico-trabajando.jpg 158w,
/static/2b57dfe1d0e9004d42114d7f86a805e6/a6688/eli-nico-trabajando.jpg 315w,
/static/2b57dfe1d0e9004d42114d7f86a805e6/828fb/eli-nico-trabajando.jpg 630w,
/static/2b57dfe1d0e9004d42114d7f86a805e6/0ede0/eli-nico-trabajando.jpg 945w,
/static/2b57dfe1d0e9004d42114d7f86a805e6/e5166/eli-nico-trabajando.jpg 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Día 3: Viernes - Conectando Puntos y Clausura&lt;/h2&gt;
&lt;p&gt;Este día tuvimos menos charlas que el anterior, por lo que todos tuvimos más tiempo para dedicarnos al desafío.&lt;/p&gt;
&lt;p&gt;Continuamos con la división de ejercicios, trabajando en dos simultáneamente. Así, logramos terminar el desafío cerca de las 14:30 🎉&lt;/p&gt;
&lt;p&gt;Una vez que terminamos, pensamos en tomar otros desafíos, pero nos enteramos de que crear un “frontend” para los datos (mostrarlos de cierta manera) era considerado el nivel legendario 😎, y quisimos alcanzar ese nivel.&lt;/p&gt;
&lt;p&gt;Nos pusimos manos a la obra y desarrollamos una aplicación en menos de dos horas:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9c785e0f03ad09ec4462e698fe494d92/07d7d/prototipo.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 60.12658227848101%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsSAAALEgHS3X78AAAA60lEQVQoz5VSyxKCMAzk/7/Dn/Hk1QMHHQZ8gGChpbTpw61h1FEPsAemTbLdZEPWNM0p4dyJfpomvQYZETnngidP2ljjvQ/LgMrMGBsD5Ve92d6cj8sBfmatJWsPRbXbH6vqNAwDGqFleJKJxL3rmguAc1zTtoFUWZZ5nsM8XNe1DSilhBDjOMLDFYZx23VdF0WBjeH6evgXn6mZzMqwCnvmHAb52ypkPl+fyXiGc7xnRJJOiJKkdhoHH1KcNbjmrZxMjlFKyeIAqsFpqe2pf5HhCPjfZO6TnZ+nimlC4e7KqRR5Xvn/5eHxfQDkacBWq6komwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Prototipo de Track Tiempos de Espera&quot;
        title=&quot;Prototipo de Track Tiempos de Espera&quot;
        src=&quot;/static/9c785e0f03ad09ec4462e698fe494d92/f058b/prototipo.png&quot;
        srcset=&quot;/static/9c785e0f03ad09ec4462e698fe494d92/c26ae/prototipo.png 158w,
/static/9c785e0f03ad09ec4462e698fe494d92/6bdcf/prototipo.png 315w,
/static/9c785e0f03ad09ec4462e698fe494d92/f058b/prototipo.png 630w,
/static/9c785e0f03ad09ec4462e698fe494d92/40601/prototipo.png 945w,
/static/9c785e0f03ad09ec4462e698fe494d92/78612/prototipo.png 1260w,
/static/9c785e0f03ad09ec4462e698fe494d92/07d7d/prototipo.png 1478w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Puedes ver el resultado en &lt;a href=&quot;https://tiempos-de-espera.netlify.app/&quot;&gt;https://tiempos-de-espera.netlify.app/&lt;/a&gt; ya que los servidores todavía están disponibles. En resumen es una mini aplicación que permite buscar el estado de la interconsulta a partir de su identificador, mostrando un pequeño historial de sus diferentes estados.&lt;/p&gt;
&lt;p&gt;En cuanto a stack tecnológico, optamos por utilizar lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React para el frontend,&lt;/strong&gt; empleando Create React App. Sí, está depreciado, y no, no nos interesa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Express para el backend&lt;/strong&gt;, funcionando como un proxy para hacer llamadas al servidor real de FHIR.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Ceremonia de Clausura&lt;/h3&gt;
&lt;p&gt;Aunque no fue una competencia, recibimos reconocimiento por ser uno de los grupos que completó todos los desafíos en el track de tiempos de espera.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/34a4776c03857260a44e93a69faac329/2bef9/resultados.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsSAAALEgHS3X78AAADiklEQVQozx3Q6VMaBxjH8f0DOtPM5E0ltWlitK7cq4uCi4ALHgjFQHBUMGpQA+sg57IgsK4XWCM0JjXNNE1m6oE1GtMRuQ9ZcLFx+keVdubz4jfPzPfNAwx0dXbz2DAXFHS0sX9o4YKtEBcUctqF3AYQ4oGd/I4uAVsEccQQVwbzEYiNcB7pe7hP+yBAj0iGJCIlAqO9sKynU9otlIk7UQRW9XUP90s0SmQE7dWqpPph2dhI/zPDoEmjUEDtJhlkU4kAMyrTSnum9UMzBrVZP2wa05iM2qkx7dS4zjypN5sMU9NjFsvkwtykdd7kwKannwwPi3kLg91ujQSYG1FOjCjtSxbMbbMFXDYqiEXW7fGdpde7zl/fuN+/x/f38YN9/OjIdXwSPj3Fnpt0iMClQyhjH4DphmbGHwfOzrypHJEvEwU6UKqF6DpZ+5u8vl2p367Wbxs7TDMhmlktlZ12i0EOu0eRtUa8ODq4MDsZvEx5kml/rhQoVMirGkUz61Vmq34TvWY2av+rMlSVWSmWPc55vQLG1GLK0Au4nqixxfngRXI5XwpkCo1ytVpfo2vhfOX5YWqVvtm+/Wfr5ku0TEcrV1v5rMdjG0O7Q0bZ25l+wKYbsOMOMpNdzpX8lxmqcr2WK0Yvk95k0bB9tLWzE6tdx2vMVp5O/LV3/mnTRTj7RTwzCr+ZUQCmQbmbCpLpDJHJ+ZNpslwNnZ1Fzj/5PmfItcjvhPWn89Nt5iaWy28X85FihvBYBex2lYi7OyUH5rVK//ZGKJvzpbLEZYYsXHkPPgaPEuSHD9TeBnGwHk6dbDJfqGI5XKmt5Eu4a/6xHHbqkD/mlMBsI375Iti4prL+TCFUrq4c/ra5F/ftvbbH3nrikWD6YqXx6kIpWCiR2azHYdFKhYtaybtnKDCtUwVe7eDHf7qOjt0np95kmkoc+PcTROLQkbgIvDsOFmh/seJL5325YihXcDssKMx5qhL9bJYDOlRsnTViCxN2zLzksTpxzB12u1b9ThInoiHvy4gvtonHIvjuC++rGPFL3Gkzyzo7jHLhsl4CDEgEYiHI73jEBf/DZ7dB3HaRAOzt4sh7+EpplxoVjw4iRo18/EeFeRSd0KJiXpuhj7eohoEhCV8Bc0S8Nojdym1vAdsesFisr76+03Dn7t3m5m+bWKxvmpru3WN9f7/54YPvWlvuQ+BDTQ/b1M//F0ergviiwkaCAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Resultados, nuestro grupo GDC dentro de los mejores&quot;
        title=&quot;Resultados, nuestro grupo GDC dentro de los mejores&quot;
        src=&quot;/static/34a4776c03857260a44e93a69faac329/f058b/resultados.png&quot;
        srcset=&quot;/static/34a4776c03857260a44e93a69faac329/c26ae/resultados.png 158w,
/static/34a4776c03857260a44e93a69faac329/6bdcf/resultados.png 315w,
/static/34a4776c03857260a44e93a69faac329/f058b/resultados.png 630w,
/static/34a4776c03857260a44e93a69faac329/40601/resultados.png 945w,
/static/34a4776c03857260a44e93a69faac329/2bef9/resultados.png 1024w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En la imagen, somos “GDC46”. También felicitamos a “Pronova61”, que logró el mismo alcance 👏.&lt;/p&gt;
&lt;p&gt;Según lo que mencionaron los organizadores, hubo mejores resultados de los esperados, ya que muchos equipos lograron avanzar, incluso algunos sin tener nada de experiencia en el estándar.&lt;/p&gt;
&lt;p&gt;E incluso varios equipos logramos llegar a construir un frontend que utilizara los servicios trabajados durante estos 2 días.&lt;/p&gt;
&lt;p&gt;Lo que es súper importante, porque demuestra que en estas jornadas de trabajo, cuando existe la motivación, se puede compartir mucho conocimiento.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/0e201f00afc7cc873ce3ea6487e15abb/b17f8/reconocimientos.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQX/xAAWAQEBAQAAAAAAAAAAAAAAAAADAQL/2gAMAwEAAhADEAAAAXyFMr0iEW//xAAZEAEAAwEBAAAAAAAAAAAAAAABAAIREhP/2gAIAQEAAQUCaFp5g5HvO4Xsz//EABYRAQEBAAAAAAAAAAAAAAAAAAARIf/aAAgBAwEBPwG6r//EABgRAAIDAAAAAAAAAAAAAAAAAAABAgMh/9oACAECAQE/AZaK0//EABoQAAICAwAAAAAAAAAAAAAAAAABETEQIaH/2gAIAQEABj8CxRtiacwV0//EAB0QAQEBAAEFAQAAAAAAAAAAAAERAFEhMUFhcYH/2gAIAQEAAT8hXBUMHTyzI9vzKdOQuoUe515wNL+Rv//aAAwDAQACAAMAAAAQxw//xAAWEQEBAQAAAAAAAAAAAAAAAAABERD/2gAIAQMBAT8QIpx//8QAFhEBAQEAAAAAAAAAAAAAAAAAAQAR/9oACAECAQE/EFtSUAS//8QAHhABAAICAQUAAAAAAAAAAAAAAQAhMVERQWFxgZH/2gAIAQEAAT8QUiOXfUIdtXKfM5dIbmi6l1vpGvit70xsVFQbx7n/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Reconocimiento y entrega de medallas a participantes, entre ellos Nico&quot;
        title=&quot;Reconocimiento y entrega de medallas a participantes, entre ellos Nico&quot;
        src=&quot;/static/0e201f00afc7cc873ce3ea6487e15abb/828fb/reconocimientos.jpg&quot;
        srcset=&quot;/static/0e201f00afc7cc873ce3ea6487e15abb/ff44c/reconocimientos.jpg 158w,
/static/0e201f00afc7cc873ce3ea6487e15abb/a6688/reconocimientos.jpg 315w,
/static/0e201f00afc7cc873ce3ea6487e15abb/828fb/reconocimientos.jpg 630w,
/static/0e201f00afc7cc873ce3ea6487e15abb/0ede0/reconocimientos.jpg 945w,
/static/0e201f00afc7cc873ce3ea6487e15abb/3ac88/reconocimientos.jpg 1260w,
/static/0e201f00afc7cc873ce3ea6487e15abb/b17f8/reconocimientos.jpg 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Conclusiones Generales&lt;/h3&gt;
&lt;p&gt;Si el año pasado mencionamos que fue emocionante ver a tantas personas reunidas con un mismo foco, este año se reafirma, ya que los equipos participantes eran muchos más. Y resulta gratificante ver a tantos representantes del servicio público, como de empresas privadas.&lt;/p&gt;
&lt;p&gt;Desde el punto de vista técnico, también hemos podido ver cómo vamos madurando poco a poco como país en temas de interoperabilidad, abordando procesos más complejos, como lo es el seguimiento de una interconsulta.&lt;/p&gt;
&lt;p&gt;Valoramos lo importante que es como desarrolladores, ser partícipes no sólo de aprender del estándar, sino también de entender las diferentes partes del proceso y participar de estas instancias que nos permiten validar y ayudar a mejorar las guías de implementación que se han desarrollado para nuestro país.&lt;/p&gt;
&lt;p&gt;Estos eventos, además de enseñarnos cosas técnicas y permitirnos conectar con otras personas, muchas veces funcionan como una inyección de energía, para recordarnos el propósito final de las líneas de código que escribimos cada día, que va más allá de sólo crear una bonita aplicación o un código de alta calidad. Si trabajamos en salud, lo escribimos para impactar y mejorar la salud de las personas.&lt;/p&gt;
&lt;p&gt;Volvemos a agradecer a los organizadores, se vieron muchas mejoras con respecto al año pasado (y eso que el año anterior ya fue una gran experiencia). El cariño que le ponen a este trabajo se nota en los detalles, como por ejemplo, nuestra medalla de reconocimiento.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/b918c663866f7082f35b04b465bdc37b/e5166/medalla.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 133.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAQFAwL/xAAVAQEBAAAAAAAAAAAAAAAAAAACA//aAAwDAQACEAMQAAABTcw5FGxYc1906ApMKwx//8QAHBAAAgICAwAAAAAAAAAAAAAAAQIAEQMSFCEi/9oACAEBAAEFAhZm9KuUGB+nU415IpALPpAsEIjGj//EABgRAAIDAAAAAAAAAAAAAAAAAAABAhAR/9oACAEDAQE/AWYmRr//xAAZEQADAQEBAAAAAAAAAAAAAAAAARECEjH/2gAIAQIBAT8BWuWVm/aQ/8QAHhAAAgEEAwEAAAAAAAAAAAAAAAECEBEhMRIiQTL/2gAIAQEABj8C2JbyZwccClCTsLrd+nrOK2fLpB0//8QAHRABAAMAAwADAAAAAAAAAAAAAQARITFBUWFxsf/aAAgBAQABPyHKlPuBQLayDKBLxC5Ud2XPaIHkpsya42Xmr8S7YfpiVsU+9wAA15YlI1P/2gAMAwEAAgADAAAAEAsq8//EABYRAQEBAAAAAAAAAAAAAAAAAAEAEf/aAAgBAwEBPxDSMu1I6I2X/8QAGBEBAQEBAQAAAAAAAAAAAAAAAQARITH/2gAIAQIBAT8QMTxsODdCCTb/xAAfEAEAAwABBAMAAAAAAAAAAAABABEhMUFRcYGx0fD/2gAIAQEAAT8QqChQFV8xHV7vRSqGy/UxZHHF46RBAUJzjlmYXLbr8qYChwz78RKbWoLdHI+uJy6e4JMwILNXlwJg7R12NlDmrn//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;La medalla que nos entregaron&quot;
        title=&quot;La medalla que nos entregaron&quot;
        src=&quot;/static/b918c663866f7082f35b04b465bdc37b/828fb/medalla.jpg&quot;
        srcset=&quot;/static/b918c663866f7082f35b04b465bdc37b/ff44c/medalla.jpg 158w,
/static/b918c663866f7082f35b04b465bdc37b/a6688/medalla.jpg 315w,
/static/b918c663866f7082f35b04b465bdc37b/828fb/medalla.jpg 630w,
/static/b918c663866f7082f35b04b465bdc37b/0ede0/medalla.jpg 945w,
/static/b918c663866f7082f35b04b465bdc37b/e5166/medalla.jpg 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Extra: ¿Por qué nos llamamos “Galletas de Coco”?&lt;/h3&gt;
&lt;p&gt;El origen de “Coco” se remonta a la edición de 2023, cuando participamos representando a las empresas para las que trabajamos, Codeness y Continuum. Ese año, nos apodamos “Co-Co” 🥥 en alusión a ellas.&lt;/p&gt;
&lt;p&gt;Así que esta vez era natural llamarnos “Coco”. El problema surgió porque nos pedían un equipo de tres personas. Al consultar si era posible participar solo dos, nos respondieron: “consíganse un galleta”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Galleta: Generalmente en nuestras “Pichangas” faltan algún jugador y se busca cualquier reemplazante. A este se le llama Galleta, que destaca por no vestir como el resto y, muchas veces, no conocer a nadie en el campo de juego. – &lt;a href=&quot;https://www.goal.com/es-cl/noticias/diccionario-para-entender-el-f%C3%BAtbol-de-barrio-en-chile/blta6481851a546e69b&quot;&gt;Fuente&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/255cbdc4f70ce99d1b751e084bf2bd90/68de2/significado-galleta.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 37.34177215189873%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsSAAALEgHS3X78AAABVUlEQVQY012OWU+DUBCF+SOyXCgXuC2kUPYKLftOa+kSH7SJ1Tam2lfjg4n/3Ismxjj5ck5mJiczhCwrM3+eZXkYREXZZkWdZmVZtXWzSrI6Tss0b4pqWS+6OK3a5aZq+7mqmYIgEYbprm/3ZdPl9a65e1sfP5v9++rhI9++VreXYPFU7F7y7TnfnNP1c3RzwlrsLhOvpkiakMZO3J1m1d4r76PFIWwP4eIx645DWUNI5qEEWJ7jIIbleMAOWHbAcTxWhmGJ2NJbf2pYtqaOWQA4ALD2+wEPIQQMIEmKIinyChtN0+AHhgF92NbMyE81OzCdULfmquHrdqianuFGuh3gFimmOJoMxw4UZZpmcOYXQpk4blBZ09hwQ92e29eJNU0cLwmzlR83SLHE4UREKlIMXhh93/wTFkU0Go6gIAqCCCEWCfLYJCQhDE3R+Oe+SOrfWcwXmgFaOZu+3zkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Resultado en Google de la búsqueda de galleta&quot;
        title=&quot;Resultado en Google de la búsqueda de galleta&quot;
        src=&quot;/static/255cbdc4f70ce99d1b751e084bf2bd90/f058b/significado-galleta.png&quot;
        srcset=&quot;/static/255cbdc4f70ce99d1b751e084bf2bd90/c26ae/significado-galleta.png 158w,
/static/255cbdc4f70ce99d1b751e084bf2bd90/6bdcf/significado-galleta.png 315w,
/static/255cbdc4f70ce99d1b751e084bf2bd90/f058b/significado-galleta.png 630w,
/static/255cbdc4f70ce99d1b751e084bf2bd90/68de2/significado-galleta.png 677w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Afortunadamente, unos meses antes, un amigo me había consultado sobre interoperabilidad en el sector salud, un campo en el cual él estaba incursionando. Aprovechando la oportunidad, lo invitamos a ser nuestro tercer miembro.&lt;/p&gt;
&lt;p&gt;Así completamos nuestro equipo. Dado que su incorporación surgió de la necesidad de “encontrar un galleta”, decidimos llamarnos “Galletas de Coco”, un nombre que refleja con humor nuestro inicio.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/1191b4a893088628ba95e3576b3cdfe1/f3583/og.png"></media:content></item><item><title><![CDATA[Construyendo Cesar AI]]></title><description><![CDATA[Cesar AI es una aplicación web que transforma información de un paciente (de cualquier formato) al recurso Patient de HL7 FHIR. Es un…]]></description><link>https://blog.codeness.io/construyendo-cesar-ai/</link><guid isPermaLink="false">https://blog.codeness.io/construyendo-cesar-ai/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Tue, 04 Apr 2023 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://cesar-ai.web.app/&quot;&gt;Cesar AI&lt;/a&gt; es una aplicación web que transforma información de un paciente (de cualquier formato) al &lt;a href=&quot;https://blog.codeness.io/que-es-hl7-fhir/&quot;&gt;recurso Patient de HL7 FHIR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Es un experimento que construí, que podría ayudar a acelerar procesos de integración entre distintos sistemas informáticos en salud.&lt;/p&gt;
&lt;p&gt;A continuación te explico de qué trata el experimento, cómo lo construí y consideraciones a futuro de este tipo de aplicaciones.&lt;/p&gt;
&lt;h2&gt;Motivación&lt;/h2&gt;
&lt;p&gt;Luego del &lt;a href=&quot;https://blog.codeness.io/nuestra-experiencia-en-la-emprendethon-2023/&quot;&gt;evento de la Emprendethon&lt;/a&gt;, comencé a pensar en qué tipo de soluciones podrían ayudar a acelerar los &lt;a href=&quot;https://blog.codeness.io/interoperabilidad/&quot;&gt;proyectos de interoperabilidad en salud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si bien aprender a usar los &lt;a href=&quot;https://blog.codeness.io/estandares-interoperabilidad/&quot;&gt;estándares de interoperabilidad&lt;/a&gt; como FHIR es importante, a veces no es tan sencillo hacerlo.&lt;/p&gt;
&lt;p&gt;Imagina un Centro Médico que quiere interoperar y que tiene su propia base de datos. En esta, tendrá información bajo un cierto esquema, que probablemente es muy diferente al formato de datos en FHIR. Así que para lograrlo, tenemos que escribir código que transforme desde el formato del Centro Médico a FHIR, lo cual toma tiempo y puede ser costoso.&lt;/p&gt;
&lt;p&gt;¿Qué pasa si esa transformación se hace automáticamente? ¿Es posible crear un algoritmo que pase de un formato a otro de manera automática?&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/46a23edbf331f36477adde482b4d6f2c/c1b63/Cesar.AI.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC9klEQVQozw3R20+bdRzH8V6ZXSxOM2+MMXHsn5gX7n/wwsS4eDHhwmRbXDbNiJmoS9TIaW6ETDe1FCZQtnVAqRQohxY61tNGD7TjWaUt0PLw9OHpiR542idvfxevfH6H5Jt88zF9+rHBJx0Gn3W3uGAROSN4hBfCK4MLaZE5g4t5g/6iwXLFQK0boBsYZUH8FzcMpGWDVZuB6Vpni+/uGnT0CCMt2h1N2leFl0KiyRfJOhd36rTvN+jRdJbKTdRqExpNDK0FqRZHIZ3Uoo7P1sTkC1SRtTLX+lS+NB9xxdnkslfn0osGV6QWX2vwTRWuH0N3qcViqUH+SFxqYmCugR6povsNcksGwccNTA8f1LDbanT2VvjqT4WrNoXr7go3YgaXn2c5f7Obj7p+5fxP/XyfzOI60tFqx2jpfaLrG6TD27jH54mMp4nYWpiejhR4Mpqlq6dG1+gxNx1lbszl+CFSp8P2jDdPvMG7p09z6uRJrnp8LIlti1WdvY3XbCXi7Ms5QiEvLrOXzUdioH0txsvdML23ZbruZ7k1JfOjS+aWN8vnA/9w9swHfHjuHG1tbVz6d4EptUAmc4C0Esb/PMTC3Dz+YADf4ziRMbFyz1iM4cUEg7+V6HtYpteh8stchr6QSqfDx9vvvc+JU2/xzpk2vvWFcJTqyKkiIaeHjbVZpESCV9EgrkcrrJsPMS1PNPBOHnOvW+OOeY87k7sMruX5PVrij2SFAemAnwMxBrN57uVLTO4W2d8qsTnvJTE3QXzBT3x2FffEGit/yZji0jZydYu/+1M8sMhYXAUsvgJDEY0h6RDLToERpcKwXMCc0bBJGntRUX2gQMtTouZU2ZvURCkaK8OaKGVmFbvbyfhADutYAasrj9WnYo0Jr4WMyviOeNsWuaXyNKqSDqrwTEVfVlGdhySnVPxWldkhVZRyu4C9v8j03TxTYwdMLypMB4RNISn8l2daEuLiHFawBxWkdYWGW+FwQSE1oxB+ouAZVZgZUvgf3CrMV7VvwCcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cesar.AI.png&quot;
        title=&quot;Cesar.AI.png&quot;
        src=&quot;/static/46a23edbf331f36477adde482b4d6f2c/f058b/Cesar.AI.png&quot;
        srcset=&quot;/static/46a23edbf331f36477adde482b4d6f2c/c26ae/Cesar.AI.png 158w,
/static/46a23edbf331f36477adde482b4d6f2c/6bdcf/Cesar.AI.png 315w,
/static/46a23edbf331f36477adde482b4d6f2c/f058b/Cesar.AI.png 630w,
/static/46a23edbf331f36477adde482b4d6f2c/40601/Cesar.AI.png 945w,
/static/46a23edbf331f36477adde482b4d6f2c/c1b63/Cesar.AI.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Pruebas Preliminares&lt;/h2&gt;
&lt;p&gt;El último tiempo han aparecido varias aplicaciones que procesan texto, que son capaces de analizar sentimientos en un texto e incluso de crear contenido por ti. Muchas de ellas usan herramientas proveídas por una compañía llamada &lt;a href=&quot;https://es.wikipedia.org/wiki/OpenAI&quot;&gt;OpenAI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En redes sociales me topé con comentarios que decían que estas herramientas eran buenas para transformar datos de un formato a otro, que es justamente lo que yo quería hacer. Así que un siguiente paso es probarlas.&lt;/p&gt;
&lt;p&gt;Para ver si funciona para mi caso de uso, hay que responder las siguientes preguntas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;¿Me sirven estas herramientas para transformar datos de un paciente a FHIR? (Prueba 1)&lt;/li&gt;
&lt;li&gt;¿Puedo usar las herramientas desde mis propios programas? (Prueba 2)&lt;/li&gt;
&lt;li&gt;¿Es fácil usarlas en mis propios programas? (Prueba 3)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Primera prueba: ¿Me sirven estas herramientas para transformar datos de un paciente a FHIR?&lt;/h3&gt;
&lt;p&gt;La forma más rápida de responder a esta pregunta es usando el modelo más fácil de usar y popular: &lt;a href=&quot;https://chat.openai.com/chat&quot;&gt;ChatGTP&lt;/a&gt;. Si no lo logro con este, difícil que lo logre con los otros.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://chat.openai.com/chat&quot;&gt;ChatGTP&lt;/a&gt; es un programa creado por OpenAI diseñado para procesar y generar texto en muchos idiomas. Funciona como un asistente al cual le puedes escribir preguntas sobre distintos temas, y este hará lo posible por responder.&lt;/p&gt;
&lt;p&gt;Por ejemplo, le puedes preguntar “explica FHIR a un niño de 5 años” y te responderá algo como:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/519774a2d7402e4b127e0de548fd9a2d/5a190/Screenshot_2023-02-22_at_19.06.03.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 39.24050632911392%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAABQElEQVQoz3VQ2VLCQBDMN0lxqA8cITdVgcSEZHMCKgFF//+pnZmwUKXlQ293pmc7M2tMTR+zhQfLjWF7MRZWSDoSsB6M5ngYznqMZnf9D4zJcIrH8RyTZ4dgY/xkCWvNgYPh/C//xqiHYdYHmFkD307h+RlcdwvPy+D7uYBrQcA6w2qlxAuIg0Dd2CffcRK5a1jFDq7ao1InVPUHyuqMojyjbi7yzWj338hVJ7WmvYive9vdF5L0FbZ9DVxO1/BoOlV0yPMjMgIzByjCNnsj73SrFeWp71HHq9cJHCeFaUYUaMVwva0UuZFDJFx1cqmkaQoK5DpPJD0SwsHvwklykOmWy5gC6XDc9LZC3XyK5rXKql+ZV9XBukf38Y+jqJXpLOulD7TpQTebpgeZ66tmDsNKOIp3wtoL17VoPRmHMf8AWss3iN8nSGkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ChatGTP: FHIR es como una varita mágica que ayuda a los médicos a compartir información sobre cómo te sientes y tu salud con otros médicos que te atienden...&quot;
        title=&quot;ChatGTP: FHIR es como una varita mágica que ayuda a los médicos a compartir información sobre cómo te sientes y tu salud con otros médicos que te atienden...&quot;
        src=&quot;/static/519774a2d7402e4b127e0de548fd9a2d/f058b/Screenshot_2023-02-22_at_19.06.03.png&quot;
        srcset=&quot;/static/519774a2d7402e4b127e0de548fd9a2d/c26ae/Screenshot_2023-02-22_at_19.06.03.png 158w,
/static/519774a2d7402e4b127e0de548fd9a2d/6bdcf/Screenshot_2023-02-22_at_19.06.03.png 315w,
/static/519774a2d7402e4b127e0de548fd9a2d/f058b/Screenshot_2023-02-22_at_19.06.03.png 630w,
/static/519774a2d7402e4b127e0de548fd9a2d/5a190/Screenshot_2023-02-22_at_19.06.03.png 800w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;También puedes hacer solicitudes más complejas. Por ejemplo, si le pides que transforme datos no estructurados de un paciente a HL7 FHIR, te dará una respuesta suficientemente buena:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/dae5db3ea52323fb78acee08b94b813b/73fd0/Screen_Shot_2023-02-17_at_17.52.14.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 105.0632911392405%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsSAAALEgHS3X78AAADGElEQVQ4y5VTa1caSRScJzAgaMxudHOynrMnn/IpiYJvYRheguDwHnlIXEw0m+P//1qp28MgcXez7oea2/d2d3XV7Wlt/7iMYrmBs0ID1XoPXqWNcq1DdFFZIMrP3At82MvjY87Fx6yggN1cGPf2izg4rkDLHhRxcurh+OwceW44JXGEfPFCkcj4JF9XOOSmw5Oq2izYPyrj6LTGWEL2wIMmzO9382j5Y9zMH3A1/ozR5IuKgsn1Paazr6om82PmEiesXd98U3W/M6GgmlKqCHdzBWXX70zR6c/QJfzuFG2i6Y/Q6V2rTZdElEdjWSdtEusCRSjMl+0JxtM7DII5+sGfGF7NlypFhdRFbcB8OLpdzknuVXxlWxHK5wMJL1oB+sMbdXJ38AltqhBSUSnKRfWAB4mDYvkSbqmliApeS+XSZ2U5x0Zm91xk9z3e1CqKC4RjafhuLqxJz+W2V6OQ5Q5L0LxmgMLDN9SbI6qboUU0/SlabY7b1wqSh7UwV+sY/e6nZX5xOaHSLrRSI4A7u6UV9m10h3prjFrjSi2I0GiFeKxNVS6HRHm9OWYLelTIj+e2ecsBezdfnDpDqdpXJ8r8aozgljoKqzVFKBu9ak8RjqZ/8dbuFfrBZ6qe85Bb9IYh5ECpizqv0ufrGagoRMIjCBUSBc/nz1nnHy8voMrXUFvi6PT8cbxSl3VuySdxDy73Ly1XzgP88fYd4gkHcSeFhJMkGJOpMKqcSCzgLOocp9YySHLd1vabR4XV+hVeseBoOn41U9g0HVgxG1oqDs00oGnafyKd3vg74ZoZwy92Cmk7QcIYNMOAbpokJXT9H4n0RX19ffNHwq3t39WEEGZIqL1Yg/4yA/1FGvqaA92yfqow85Rw+7cdmLSXMGxYOm3aJBDblvksy08IA2y/3kGaluO2WNWfRfIvhN2wh1tvYEgvbAeOTnUJEifjSqnOqBvG/7Mc9fBVPIPNzAbMdJKWSWwZYXyWwgG0Ip9PpTYk4Y6asJIOlSVg8BJ05gb7aVs2bLYiFovD4lhnLYJhhD1e33gJr9zDd23BlUJbF9UwAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ChatGTP entrega un recurso FHIR a partir de un texto con información de paciente&quot;
        title=&quot;ChatGTP entrega un recurso FHIR a partir de un texto con información de paciente&quot;
        src=&quot;/static/dae5db3ea52323fb78acee08b94b813b/f058b/Screen_Shot_2023-02-17_at_17.52.14.png&quot;
        srcset=&quot;/static/dae5db3ea52323fb78acee08b94b813b/c26ae/Screen_Shot_2023-02-17_at_17.52.14.png 158w,
/static/dae5db3ea52323fb78acee08b94b813b/6bdcf/Screen_Shot_2023-02-17_at_17.52.14.png 315w,
/static/dae5db3ea52323fb78acee08b94b813b/f058b/Screen_Shot_2023-02-17_at_17.52.14.png 630w,
/static/dae5db3ea52323fb78acee08b94b813b/73fd0/Screen_Shot_2023-02-17_at_17.52.14.png 793w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La respuesta fue esta:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Patient&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;identifier&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;system&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;http://www.run.gov&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;66.2345.333-1&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;family&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Organa de la Rosa&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;given&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;Jan-Solo&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;gender&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;unknown&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;birthDate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1961-04-03&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;address&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;line&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;Av Los Caudillos, número 67&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;city&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Valparaíso&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;district&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Valparaíso&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;postalCode&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;xxxxx&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Así concluyo que estas herramientas sí permiten transformar datos de un paciente a FHIR.&lt;/p&gt;
&lt;h3&gt;Segunda prueba: ¿puedo usar estas herramientas desde mis propios programas?&lt;/h3&gt;
&lt;p&gt;En informática, cuando quieres conectar un sistema informático con otro, se usa algo llamado “API”. Por ejemplo, si tengo una aplicación donde quiero usar el valor actual del dólar, en vez de actualizar el valor a mano cada cierto tiempo, puedo usar un servicio externo (”API”) que me entregue el número actualizado.&lt;/p&gt;
&lt;p&gt;Las API permiten que nuestros programas usen sistemas externos para lograr distintas tareas. En mi caso, necesito acceder a una API que me permita hacer preguntas como lo hago con ChatGTP.&lt;/p&gt;
&lt;p&gt;La buena noticia es que OpenAI ofrece una API sobre la cual desarrolladores y empresas pueden construir aplicaciones. Me atrevo a decir que la base de su negocio es ofrecer este tipo de herramientas y cobrar por uso.&lt;/p&gt;
&lt;p&gt;Nota: en &lt;a href=&quot;https://openai.com/api/&quot;&gt;OpenAI API&lt;/a&gt; puedes ver todas las características y ejemplos de lo que puedes lograr.&lt;/p&gt;
&lt;p&gt;Si vas a la &lt;a href=&quot;https://platform.openai.com/playground&quot;&gt;página de Playground&lt;/a&gt;, puedes jugar con la herramienta sin necesidad de usar la API directamente. Para probar, le entregué el mismo texto que a ChatGTP:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/48bd080cd6ff62ee2eca36c673b04bd8/0c156/Screenshot_2023-02-22_at_19.37.31.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 39.87341772151899%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAAA+UlEQVQoz4WS6W7EIAyE8/6P2O3P3Ncu95lMMSTbVkpaSyMDMvanger1YvDeHwrwIcBEj33fLxXjhm0r2rcd2jkY5zGOE+Z5QcUYg5LquziWwrsIIea6c4AxDpxLaG3hXEBlrU0HAozxt2QaQMTuIHeJwFqXsjv27r0nUq1NrokxolrXJ9q2Q98NOZ+q6wZN02bRuu8HDMOYRWvSsqy5IQEIITN9ZRKhVBJCCWhj8tSfOolo+l0QoVK6EHa8x8f4wCgmJFfwV1w9EgU145kwedjyDo/pE/Vag2l2e/G6Wcn0DqTioX5iVguEFQgx/Gr4H+2ZyRbyj77dF0l6cLknnTmGAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;En PlayGround entregué los datos de un paciente y le pedí que me los transformara a FHIR&quot;
        title=&quot;En PlayGround entregué los datos de un paciente y le pedí que me los transformara a FHIR&quot;
        src=&quot;/static/48bd080cd6ff62ee2eca36c673b04bd8/f058b/Screenshot_2023-02-22_at_19.37.31.png&quot;
        srcset=&quot;/static/48bd080cd6ff62ee2eca36c673b04bd8/c26ae/Screenshot_2023-02-22_at_19.37.31.png 158w,
/static/48bd080cd6ff62ee2eca36c673b04bd8/6bdcf/Screenshot_2023-02-22_at_19.37.31.png 315w,
/static/48bd080cd6ff62ee2eca36c673b04bd8/f058b/Screenshot_2023-02-22_at_19.37.31.png 630w,
/static/48bd080cd6ff62ee2eca36c673b04bd8/40601/Screenshot_2023-02-22_at_19.37.31.png 945w,
/static/48bd080cd6ff62ee2eca36c673b04bd8/78612/Screenshot_2023-02-22_at_19.37.31.png 1260w,
/static/48bd080cd6ff62ee2eca36c673b04bd8/0c156/Screenshot_2023-02-22_at_19.37.31.png 1473w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La respuesta es la siguiente:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Patient&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;66.2345.333-1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;use&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;official&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;family&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Organa de la Rosa&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;given&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Jan&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Solo&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;gender&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;male&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;birthDate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1961-04-03&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;address&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;line&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Av Los Caudillos, número 67&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;city&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Valparaíso&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;state&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Valparaíso&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;postalCode&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Región de Valparaíso&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;extension&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;url&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;http://example.org/age&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;valueAge&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;61&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;url&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;http://example.org/visit&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;valueDateTime&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;2022-07-28T17:30:00&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;De aquí hay cosas que no me gustaron. Por ejemplo, el RUT lo dejó como &lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt;, y la edad la colocó como una extensión. Además, el JSON está incompleto.&lt;/p&gt;
&lt;p&gt;¿Por qué está incompleto? Pasa que las palabras que ingresas y las que te entregan se contabilizan en “tokens”, donde 1000 tokens equivalen aproximadamente a 750 palabras. En el PlayGround, el límite de tokens por defecto es 256, por eso no me da una respuesta completa.&lt;/p&gt;
&lt;p&gt;Para mejorar la calidad de respuesta, tengo que mejorar el texto inicial que dice &lt;em&gt;“Transforma los datos del siguiente paciente a FHIR”.&lt;/em&gt; Esta parte se le llama “prompt”, que son las instrucciones que le damos al modelo para así obtener las respuestas que queremos.&lt;/p&gt;
&lt;p&gt;Si bien hasta ahora la respuesta deja mucho que desear, la pregunta inicial es si puedo usar la herramienta desde mis propios programas. La buena noticia es que hay una opción que dice “View Code” que te genera el código exacto para usar en tu aplicación, en el lenguaje de programación que desees:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 618px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e42ef0e8b9f66ab6f137cd72c011baed/6e6fb/Screenshot_2023-02-22_at_19.38.34.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 91.77215189873418%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsSAAALEgHS3X78AAADNklEQVQ4y6VUSW9TVxj1AiFRqQscO7FRyJvnwe/Zaab+HFhAAacoCewQgtiJTQKt4CfQPRWLrljwO0DKDiRC4jhOmsF2Dudex6GhlbrgSUff8O4795vel/nw4SM2Njbw/t17fPq0ie95Tk5OkOl0Otjc/HyG7e0WWq0dKXd22lLf2to+Z2+3WtI3PCewu7uLfr+PzNHRETqdPbTbbRwcHOB7n8zr13/h0aMGGo1naDZ/x/rTF1hZWcfj5SaWa08G8lQ/w/IT1OtrWF9/zu9+wxplrbaGN2/eIrOwcB9jBQVuUIbrJQijCiw7hKa7UDUXphnAMHwoqgNNtaCrJiZUGxO6A8eNoRseTCuQHLV6A5nFhUWMjhZg+iWYjos4LqFUSqT0/QBpWqadwrIchK6BxDdg+T700OfFDnTNkO9GRnLMbJWEi0sYHbsCx0+RRmVMTc1genoWacKIaaeT05idncPMzBwS+kzTgarojJYgmYBp2iTMswwrIuVF5EeLSBlhxDSDIJIRhWGMKE6QlielnSQpU7fOSM6gDgiz2dyQcAljjNBmNH7EdEmi6DYjjlE+TTembyjFhYqiQT2NUNX+RcgI8wXoTsgiB/Ij1/GgWayRQ5uXePRHjFhcJqTvhbJ2w9RNRp69TMLaiqjhPeTHiih7Zcz5Fbg/sU6TKZRKGcZkBcHMFNwwghfFCNgsn3BDTgEboloWYbOhPrKFAuoN2eUl5NjlhO2f1UN4YhwcHzY7rvCDCZNjYtsDKWzbklJ1SUi/gCQsFlFvNgeEIsKKFWLOjFExmJ7hwtYsWStRdNnRb6F81c+lfG/pPgrFcaQc5p+dFCWbs0fymMPq2R4MFtz8HziseZ5Zrq4y5Vu/3MalH36EeUWFl1Ng5q7CzU9Ay4+jwGaJ7okZE8hm8/+pix/jwoWLePDgITIvX/6BGzduYoEDfqtaxW1CyDt3iOo85qu/oko5wD/1r5ifv4tr167j1as/ken3T9Dt9nB83EOv15e6wCH66PGd8He7fYnhGQGhc/1J/7lts7e3zz24xf0m9tqOxGfuuq3WQG+12nLfDc/s7/9NsmMcHh5JKdZft9uVu1DgCwZaOnmDq3rsAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Código node.js que sirve para hacer llamados a la API de OpenAI&quot;
        title=&quot;Código node.js que sirve para hacer llamados a la API de OpenAI&quot;
        src=&quot;/static/e42ef0e8b9f66ab6f137cd72c011baed/6e6fb/Screenshot_2023-02-22_at_19.38.34.png&quot;
        srcset=&quot;/static/e42ef0e8b9f66ab6f137cd72c011baed/c26ae/Screenshot_2023-02-22_at_19.38.34.png 158w,
/static/e42ef0e8b9f66ab6f137cd72c011baed/6bdcf/Screenshot_2023-02-22_at_19.38.34.png 315w,
/static/e42ef0e8b9f66ab6f137cd72c011baed/6e6fb/Screenshot_2023-02-22_at_19.38.34.png 618w&quot;
        sizes=&quot;(max-width: 618px) 100vw, 618px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Hasta ahora sé que puedo usar la herramienta en mis propios programas y que necesito mejorar las instrucciones que le doy para obtener mejores resultados.&lt;/p&gt;
&lt;h3&gt;Tercera prueba: ¿es fácil usarlas en mis propios programas?&lt;/h3&gt;
&lt;p&gt;El código que genera el Playground se ve bastante simple, así que ahora toca usar este código.&lt;/p&gt;
&lt;p&gt;En la documentación hay un &lt;a href=&quot;https://platform.openai.com/docs/quickstart/build-your-application&quot;&gt;Quickstart tutorial&lt;/a&gt;, donde te explican lo básico que tienes que saber y te dan una aplicación base de ejemplo. En esta aplicación colocas un animal y te sugiere nombres:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 458px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/3ac413e63e67624c5862ae1bee7b7e40/f7a31/Untitled.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 74.68354430379746%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsSAAALEgHS3X78AAABl0lEQVQoz6VTTUtCQRQd7Q/0KysMbGEtkiDIrG2LipbVpjKT8PkgLUoTor1amUItchHU+/A5b+bN1+vqswhNCbxchjP33jPnMMwgf2wopcZ0kT9BoGGpIAAbhlGpVIKilHLYBRrjNp3O7B8cAgDmv5QppSDIGCOEwIoxBqbg3CXdGEkO1N5arZ3dvdN05iR1elsuazm9cHmV1fT02Vm9Xh9w8Ydt4pKO41BCKSEepW27bZkmcV0pxEhlpoTnS08JpiT3FQP8vWW+AkAlh/SkGCRzJS1K2hh3KHEIsTGG1euNUsEhe5gzKbBgcMQg2SDYMCzTdgzT/vi0DMvhcFVK/U6pfFdwV7DuHf2QlQ+Nvx/TQFXC5HcNqR6Cw1afryMVbaGmR6t67OFi6TEPGXsEUIBttKZDa76qxZ8ubU4DPRQIvnt4OruMjmZCqQg6ng1r8al8IpxPIH0lfLGGcnF0PBc6icDA9Pnii2t2LSjVVyaSb7/eJxo3m83SRrOUbJbWG0XIZKMLkr0itBKN4tbLncO9vvIkH+MLZ1U8c752AeQAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Interfaz de la APP de prueba consiste en una caja de texto donde debes ingresar un animal y un botón para generar nombres&quot;
        title=&quot;Interfaz de la APP de prueba consiste en una caja de texto donde debes ingresar un animal y un botón para generar nombres&quot;
        src=&quot;/static/3ac413e63e67624c5862ae1bee7b7e40/f7a31/Untitled.png&quot;
        srcset=&quot;/static/3ac413e63e67624c5862ae1bee7b7e40/c26ae/Untitled.png 158w,
/static/3ac413e63e67624c5862ae1bee7b7e40/6bdcf/Untitled.png 315w,
/static/3ac413e63e67624c5862ae1bee7b7e40/f7a31/Untitled.png 458w&quot;
        sizes=&quot;(max-width: 458px) 100vw, 458px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Esta aplicación está construida con &lt;a href=&quot;https://nextjs.org/&quot;&gt;Next.js&lt;/a&gt;, que si bien no lo he usado anteriormente, conozco React y JavaScript al revés y al derecho.&lt;/p&gt;
&lt;p&gt;El código es bastante sencillo. Hay una función llamada &lt;code class=&quot;language-text&quot;&gt;generatePromp&lt;/code&gt; que es lo que hay que cambiar para que en vez de solicitar nombres de animales, me entregue información de pacientes.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;generatePrompt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;animal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; capitalizedAnimal &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
    animal&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toUpperCase&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; animal&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;slice&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toLowerCase&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;Suggest three names for an animal that is a superhero.
Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;${&lt;/span&gt;capitalizedAnimal&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;
Names:&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cambié la función a lo siguiente:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;generatePrompt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;patient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;Transforma los datos del siguiente paciente a un recurso de HL7 FHIR:

&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;${&lt;/span&gt;patient&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;

[INSERT]
&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nota: el texto &lt;code class=&quot;language-text&quot;&gt;[INSERT]&lt;/code&gt; es para indicarle al modelo donde tiene que rellenar la información.&lt;/p&gt;
&lt;p&gt;El resultado, si bien estaba truncado, parecía ser un recurso HL7 válido:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 507px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9a4755a01fa4b0a710c6939e72d6e40e/3ebb1/Screenshot_2023-02-23_at_10.57.36.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 79.11392405063292%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAAB0klEQVQ4y41Uy07qQBiuL3DewehZufeZ3JgT4zUxbtXkrIzJSbysXGlMjCJ4ibpTqFjCAlEqpRGlatUWsRBunX5OR8qBFguTfOl/mfn7/ZcZDl2WZVm+untxPwUghMA0TSZrmo5AYB+GUWS6bXf2uX/A9cIqn8/j5OS06z5fhrFYDDx/iXA4gmTyBrIsI5FIQBRFXFyEoShKMxNPwFb6jixJEqLRKwiCgHg8zgIJQozpkQgPXdc9Z9oYthq7Fd7vTBtD0yIoVMowqhWGTyo7MGqV/6C+Yq2KYr3K9B9TrhETWtGA+qrhXf/Am5bHi/qOUrkMAgt1u/MNMJkS+KQBPSk3R8WuhzstB41auf2kUw0dQ6FaxuzVIUbDu/gT2cMYH8BM9ADT0RDDFMXkZajpGznfwdL1ubeGpKEopQJ+bcyBWxkDtzqOvvUp/N5axND2XwxsLWCQyv2b88zHrU2A+zeK4b1ltMZoY1gx6zhT0jh4TOFYucNRTkTw8Rb7FEGGFEK5FLPb/uDDDXg162XYcVTqxG47/TZgsa59w8K3r8NZz2Db3XyjdzedkRnEtITkbQrPqoo7KcPk3NMT5PssjFKprWG+V6/X5fs4uK9gL3AH/QII0LwNBcqYcQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;El resultado dice: { &amp;quot;resourceType&amp;quot;: &amp;quot;Patient&amp;quot;, &amp;quot;id&amp;quot; ... }&quot;
        title=&quot;El resultado dice: { &amp;quot;resourceType&amp;quot;: &amp;quot;Patient&amp;quot;, &amp;quot;id&amp;quot; ... }&quot;
        src=&quot;/static/9a4755a01fa4b0a710c6939e72d6e40e/3ebb1/Screenshot_2023-02-23_at_10.57.36.png&quot;
        srcset=&quot;/static/9a4755a01fa4b0a710c6939e72d6e40e/c26ae/Screenshot_2023-02-23_at_10.57.36.png 158w,
/static/9a4755a01fa4b0a710c6939e72d6e40e/6bdcf/Screenshot_2023-02-23_at_10.57.36.png 315w,
/static/9a4755a01fa4b0a710c6939e72d6e40e/3ebb1/Screenshot_2023-02-23_at_10.57.36.png 507w&quot;
        sizes=&quot;(max-width: 507px) 100vw, 507px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Así concluye esta tercera prueba. Hasta ahora sé que es fácil usar la herramienta en mis propios programas, y que incluso tengo una base sobre la cual construir mi aplicación.&lt;/p&gt;
&lt;h3&gt;Resultado de las pruebas&lt;/h3&gt;
&lt;p&gt;Las pruebas fueron exitosas. &lt;strong&gt;A partir de un texto que tiene información no estructurada de un paciente, fui capaz de generar un recurso FHIR&lt;/strong&gt;. Además, descubrí que usarlo en programas propios era sencillo.&lt;/p&gt;
&lt;p&gt;Sin embargo, también me di cuenta de que no le estoy dando el enfoque correcto. &lt;strong&gt;Los costos son proporcionales a la cantidad de texto que entregas y a la cantidad de texto que recibes&lt;/strong&gt;. El recurso FHIR tiene mucha información repetitiva, hay palabras que me sobran.&lt;/p&gt;
&lt;p&gt;Debido a lo anterior, un mejor enfoque es pedir información del paciente en un formato texto. Por ejemplo:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/da39c0c9fed03fc09f953628082cd64a/32ac3/Screenshot_2023-02-23_at_12.17.27.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 37.9746835443038%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAABbUlEQVQoz41R2W6DMBDk/38uaVqpSsBgToOxuQyGXJ2uTRX1oQ+1NJrF3p1dZoNuHOHQT5PnaZ5xfdx33O+4PR6w2walOrSt8qy0izWMmWHtimWxntd1QyCFQCsbDymVL5KyRVMJyEZCU7GxFnleIssK5MXOv+HeOM98bsBZgizPkaYZ0ihGlnBwinkcIWYMXddjJsEwjBHR++USeQ5D5mPH53Po7/p+QJCm+U9XEuQcBXUTokZVVSjp3pIF87qCUeMwil9ijpMkhatnMad8gXleEBhXsCz0Qd7dbvjr7B7qF9yvuRqXv21XD0tNnY9BXVYQpN6QXwON3CmF3vlmDMww4k5F6/WKqqhR5gJZWqBtNHmuyWMFrXoMHS21G/alTFpjJWXXYaEpF9q2JbEnbfdJQnh+wawLTvwDR37CMTnhEL/hwHa4+8/yDFbH0BMtBf84TtCJnYp3HNIjopqhHRWaQaLuJYSuMZjRT/gNpUVZZblCaNMAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cambio en las instrucciones para que me entregue texto en un formato estructurado parecido a CSV&quot;
        title=&quot;Cambio en las instrucciones para que me entregue texto en un formato estructurado parecido a CSV&quot;
        src=&quot;/static/da39c0c9fed03fc09f953628082cd64a/f058b/Screenshot_2023-02-23_at_12.17.27.png&quot;
        srcset=&quot;/static/da39c0c9fed03fc09f953628082cd64a/c26ae/Screenshot_2023-02-23_at_12.17.27.png 158w,
/static/da39c0c9fed03fc09f953628082cd64a/6bdcf/Screenshot_2023-02-23_at_12.17.27.png 315w,
/static/da39c0c9fed03fc09f953628082cd64a/f058b/Screenshot_2023-02-23_at_12.17.27.png 630w,
/static/da39c0c9fed03fc09f953628082cd64a/40601/Screenshot_2023-02-23_at_12.17.27.png 945w,
/static/da39c0c9fed03fc09f953628082cd64a/32ac3/Screenshot_2023-02-23_at_12.17.27.png 1249w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En la imagen, la respuesta del modelo es &lt;code class=&quot;language-text&quot;&gt;| 66.2345.333-1 | Jan-Solo | Organa | de la Rosa | Unknown | N/A | N/A | Av Los Caudillos, número 67, Valparaíso, Provincia de Valparaíso, Región de Valparaíso | 3 de abril de 1961&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ya sé que el primer elemento entre los caracteres “&lt;code class=&quot;language-text&quot;&gt;|&lt;/code&gt;” es el RUT, el segundo elemento corresponde al nombre, y así. Gracias a esto, la respuesta es más barata porque usa menos “tokens”. Eso sí, ya no estamos hablando de FHIR, sino que es un formato muy parecido a CSV (donde la separación es con el carácter ”|”). Tendremos que pasar de este a FHIR, y para eso, hay que escribir código 😅&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/0e26b4e828427fb04dedff478e0bda99/c1b63/Cesar.AI_(1).png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABwUlEQVQoz41TTWvbQBDd35PQS6AQyCE/KOQQesjR4IMJRnHAEHpwgsF/oKg+5GrnUH+laUJJYxJcgxRZkWLLn7K0llev2pVEHUcpHRhW82Y082Z2liAQ3/eFxrJqr+L/I+TLJUNHCw3GwkSMMSyXS3EmFUgqHmPk5n6Cp96Qp0tkEwezyMcLeZ4nzvV4bhNKPTjOHJZlCXA6nUKWZZTLZei6HkdGHbA3BTnmui6WkY+YmhEksbFYLGCaJorFItLpNFKpFHInJxiPxlgE7HU7LPj59BTnZ2eoViqCJSfw+PCAXz9vBXMit75B0XvwgoS1eh2SJCGXyyGbzUI6Psbt1Q/ISgOH1yUoIwO72zv4uLWFDxubaLfbUBUFV40GWs0m5vM5yNenG4yoDeq40J+fkc/nkclkBEuevKdqaE80yL9rsH0K6SiL/b09fDo4wHA4gqZ0cNeo4v77tRgbCbqB53qwhmFLqqqiVCqhUCig2+0KjNoOZtZYfDvBvPr9PmazWfLadMw79F4U+NG8+Vx4pcFg8HotogvgOFfDMEAp/RsT33JdvYA+DZmwICv/aX2p13cvaa1iJauO917Kuv7rNf0BjSI0xdMwnpIAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Input =&amp;gt; OpenAI =&amp;gt; CSV Interno =&amp;gt; Función que transforma a FHIR =&amp;gt; Recurso FHIR&quot;
        title=&quot;Input =&amp;gt; OpenAI =&amp;gt; CSV Interno =&amp;gt; Función que transforma a FHIR =&amp;gt; Recurso FHIR&quot;
        src=&quot;/static/0e26b4e828427fb04dedff478e0bda99/f058b/Cesar.AI_(1).png&quot;
        srcset=&quot;/static/0e26b4e828427fb04dedff478e0bda99/c26ae/Cesar.AI_(1).png 158w,
/static/0e26b4e828427fb04dedff478e0bda99/6bdcf/Cesar.AI_(1).png 315w,
/static/0e26b4e828427fb04dedff478e0bda99/f058b/Cesar.AI_(1).png 630w,
/static/0e26b4e828427fb04dedff478e0bda99/40601/Cesar.AI_(1).png 945w,
/static/0e26b4e828427fb04dedff478e0bda99/c1b63/Cesar.AI_(1).png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Construyendo Cesar AI&lt;/h2&gt;
&lt;p&gt;La prueba de concepto funcionó bien. Ahora toca armar un prototipo de herramienta que pueda transformar los datos de un paciente a su formato en FHIR, con el formato que usamos en Chile.&lt;/p&gt;
&lt;h3&gt;Diseñando el MVP: qué funciones debía tener&lt;/h3&gt;
&lt;p&gt;Fue natural mantener una interfaz parecida a lo que ocurre en el PlayGround de OpenAI: a la izquierda colocar una caja de texto para ingresar la información del paciente, y a la derecha, el recurso FHIR transformado.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/039b3d5eb2fa1f5e964974f96d58e7cd/c1b63/Cesar.AI_(2).png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABOElEQVQoz52Sy06EUAyGeWZ9DHcsNTyBGxPZkbhzFsYQJ5NM3KIBh/vhcpjh+tsySgYCmNjkD4em/dpzWqXrOsyprmuwqaoKTdP6c9M0WIpnsSn4w3Rdh2EYQ8KacYwShiFYQgjEcTz6RuRPkgTl6QSZ56iqCg11Pqe2bc8d7rZbvO/3SAkgoggJwVh8Zl8YBPiybbyZJj4sCzLLkFGRqaqyPAPdwwEyTZHPqKDkiIAxwfmfE+fiRkDfdRerygvgZcwqsO9wBRhOgHOdjoCB5+EoZZ+QpkmvLD3DChoEv6WYAFc7/KSHDn0fkeejFQUaIVHFOfgp2O/QQPjanMhDmrsJ+wcgr8Uxl7ACB9ebO1w93+LGvKeB5NQtQX6q82rUS6J1GtbmdymLtsSD/YJH5xVP3g7/MV7sbzY3S/iNdooSAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Mockup de Cesar AI, a la izquierda donde escribes el input y a la derecha el output&quot;
        title=&quot;Mockup de Cesar AI, a la izquierda donde escribes el input y a la derecha el output&quot;
        src=&quot;/static/039b3d5eb2fa1f5e964974f96d58e7cd/f058b/Cesar.AI_(2).png&quot;
        srcset=&quot;/static/039b3d5eb2fa1f5e964974f96d58e7cd/c26ae/Cesar.AI_(2).png 158w,
/static/039b3d5eb2fa1f5e964974f96d58e7cd/6bdcf/Cesar.AI_(2).png 315w,
/static/039b3d5eb2fa1f5e964974f96d58e7cd/f058b/Cesar.AI_(2).png 630w,
/static/039b3d5eb2fa1f5e964974f96d58e7cd/40601/Cesar.AI_(2).png 945w,
/static/039b3d5eb2fa1f5e964974f96d58e7cd/c1b63/Cesar.AI_(2).png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Las funciones son 2:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Permitir ingresar datos a transformar.&lt;/li&gt;
&lt;li&gt;Poder ver esos datos transformados en un recurso FHIR.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Construyendo el MVP: usando el código base de OpenAI&lt;/h3&gt;
&lt;p&gt;El &lt;a href=&quot;https://platform.openai.com/docs/quickstart/build-your-application&quot;&gt;código base&lt;/a&gt; de OpenAI es fácil de modificar.&lt;/p&gt;
&lt;p&gt;Por ejemplo, en la siguiente imagen, podemos ver la función que entrega el resultado desde el servidor a la aplicación web. Aquí, cambié &lt;code class=&quot;language-text&quot;&gt;generatePrompt(animal)&lt;/code&gt; por una función nueva que creé, y también ajusté algunos parámetros del modelo. En particular, la temperatura la dejé en 0 para que el resultado que me entregara el modelo fuera siempre el mismo para un mismo input:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/07d6aa5e67c02ff3079ccd94b4c605e2/9e3ea/Screenshot_2023-04-03_at_19.21.55.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 20.253164556962027%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsSAAALEgHS3X78AAAAvklEQVQY02XPW2vDMAyG4fz/n1fY4aZraLNmOI7t+OyU5Z2SsYvRi4cPgYSkLs6OaZyxX5rsPI9Q2WqFtUFrv/nnqFdqS/gSUMai9nlj8LmQpKfzLmD1QrQL1QdaCEfuyhPP6hND+OSl9ZzsyHu8c/tWDEyHLodIjpkiG/ZMIqdCETU/W3NDFU3f7py95pIm1OZQyKWii0pC3k3GEfVM0IYwW7K8sy7LP01scunV3jm5D87mypvuxY1XPXApIz+q1DINDc3KhAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cambios en el código original fueron pocos&quot;
        title=&quot;Cambios en el código original fueron pocos&quot;
        src=&quot;/static/07d6aa5e67c02ff3079ccd94b4c605e2/f058b/Screenshot_2023-04-03_at_19.21.55.png&quot;
        srcset=&quot;/static/07d6aa5e67c02ff3079ccd94b4c605e2/c26ae/Screenshot_2023-04-03_at_19.21.55.png 158w,
/static/07d6aa5e67c02ff3079ccd94b4c605e2/6bdcf/Screenshot_2023-04-03_at_19.21.55.png 315w,
/static/07d6aa5e67c02ff3079ccd94b4c605e2/f058b/Screenshot_2023-04-03_at_19.21.55.png 630w,
/static/07d6aa5e67c02ff3079ccd94b4c605e2/40601/Screenshot_2023-04-03_at_19.21.55.png 945w,
/static/07d6aa5e67c02ff3079ccd94b4c605e2/78612/Screenshot_2023-04-03_at_19.21.55.png 1260w,
/static/07d6aa5e67c02ff3079ccd94b4c605e2/9e3ea/Screenshot_2023-04-03_at_19.21.55.png 1503w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notar también que estoy enviando como respuesta el recurso FHIR (variable &lt;code class=&quot;language-text&quot;&gt;resource&lt;/code&gt;), que es lo que &lt;a href=&quot;https://cesar-ai.web.app/&quot;&gt;muestro en la interfaz&lt;/a&gt; una vez haces clic en “Generar Recurso FHIR”.&lt;/p&gt;
&lt;p&gt;En cuanto al Frontend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilicé &lt;a href=&quot;https://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt; que es la librería para crear interfaces que más fácil se me da ocupar, aunque admito que es un poco mucho para el prototipo 😅.&lt;/li&gt;
&lt;li&gt;Lo que ocurre una vez le das clic a “Generar Recurso FHIR”, es muy parecida a la del tutorial: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/daf9fcd5b8d5c248d36bf5898a337068/27f8b/Screenshot_2023-04-03_at_19.29.00.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 34.810126582278485%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAABKklEQVQoz2WR2WrDMBRE/f8/2MeSlOLG8SJr30+vnWAKRRyuEEgzoxnc9GT9HlHjRDSBEiI1/qfFREie2c/cpjsfj09u64MlWHR3GDymewav5WAPpFSIuVJqo7b+jyakVtFB85xmlLKEnHAlkXq5GJyLqN0SfSQ4T68VuX3R3xz7WuVSyWzWo73HxoBL4v7PGpJzWFHT84ZbV8oRL+eTXgoI5xShKm58DhhnUZLsoRYWr4g1i/sDcRjUxib/GLUhh0D2El9EkrhtKYHE6vmYWbYBnSzrvvAjmGjPyLaISHLnHPQ48rzdKfJw0zt1V2ANiItzXlgR2XnEha915L6NbNVcnKUIQ4hFIhwNHv9TpZjXzCftzassL27mpJjMxlPKOVrVTR4SbD8I/AJl3yABgqjvfgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;En el frontend mucho menos cambios, ya que la funcionalidad es muy parecida&quot;
        title=&quot;En el frontend mucho menos cambios, ya que la funcionalidad es muy parecida&quot;
        src=&quot;/static/daf9fcd5b8d5c248d36bf5898a337068/f058b/Screenshot_2023-04-03_at_19.29.00.png&quot;
        srcset=&quot;/static/daf9fcd5b8d5c248d36bf5898a337068/c26ae/Screenshot_2023-04-03_at_19.29.00.png 158w,
/static/daf9fcd5b8d5c248d36bf5898a337068/6bdcf/Screenshot_2023-04-03_at_19.29.00.png 315w,
/static/daf9fcd5b8d5c248d36bf5898a337068/f058b/Screenshot_2023-04-03_at_19.29.00.png 630w,
/static/daf9fcd5b8d5c248d36bf5898a337068/40601/Screenshot_2023-04-03_at_19.29.00.png 945w,
/static/daf9fcd5b8d5c248d36bf5898a337068/78612/Screenshot_2023-04-03_at_19.29.00.png 1260w,
/static/daf9fcd5b8d5c248d36bf5898a337068/27f8b/Screenshot_2023-04-03_at_19.29.00.png 1730w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nota: si quieres aprender a hacer data fetching con React, te recomiendo leer el artículo &lt;a href=&quot;https://www.escuelafrontend.com/data-fetching-con-react&quot;&gt;“Data fetching con React usando useState y useEffect”&lt;/a&gt; que escribí para Escuela Frontend.&lt;/p&gt;
&lt;h3&gt;Problemas y limitaciones: Google Maps al rescate&lt;/h3&gt;
&lt;p&gt;La primera versión funcionaba bien. Solo había un problema: las direcciones.&lt;/p&gt;
&lt;p&gt;HL7 Chile definió un formato para guardar direcciones que básicamente tiene 4 componentes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Line: Calle y número&lt;/li&gt;
&lt;li&gt;City: &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/ValueSet-VSCodigosComunaCL.html&quot;&gt;Comuna&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;District: &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/ValueSet-VSCodigosProvinciasCL.html&quot;&gt;Provincia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;State: &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/ValueSet-VSCodigosRegionesCL.html&quot;&gt;Región&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Country: &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/ValueSet-CodPais.html&quot;&gt;País&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Por ejemplo, la dirección “C. Arturo Prat 210, San Nicolás, Ñuble” se debe descomponer en:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Line: Calle Arturo Prat 210&lt;/li&gt;
&lt;li&gt;City: San Nicolás (&lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/CodeSystem-CSCodComunasCL.html#CSCodComunasCL-16305&quot;&gt;código 16305&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;District: Punilla (&lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/CodeSystem-CSCodProvinciasCL.html#CSCodProvinciasCL-163&quot;&gt;código 163&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;State: Ñuble (&lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/CodeSystem-CSCodRegionCL.html#CSCodRegionCL-16&quot;&gt;código 16&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Country: Chile (código 152)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para lograr esto, hay que decirle a OpenAI que necesitamos la dirección con sus 5 componentes: línea, comuna, provincia, estado y país. Si bien el modelo detecta bien la dirección completa, es difícil que haga una buena descomposición. Hice las pruebas y además de que se equivocaba en la descomposición, el resultado entregado no es compatible con el listado de códigos definido por HL7 Chile.&lt;/p&gt;
&lt;p&gt;¿Cómo descomponemos una dirección en sus componentes? Hay una API que lo hace muy bien: &lt;a href=&quot;https://developers.google.com/maps&quot;&gt;Google Maps&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;De esta forma, Open AI se encarga de extraer la dirección, y luego Google Maps de descomponerla.&lt;/p&gt;
&lt;p&gt;El último desafío es que Google Maps no entrega los mismos nombres que están definidos en los &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/ValueSet-VSCodigosProvinciasCL.html&quot;&gt;códigos de provincias de Chile&lt;/a&gt;. Por ejemplo, “Punilla” para Google es “Provincia de Punilla”. Así como este, hay otras provincias con inconsistencias parecidas.&lt;/p&gt;
&lt;p&gt;Para mí es obvio que si Google me dice “Provincia de Punilla”, corresponde a “Punilla”. Pero programar eso no es tan sencillo, sobre todo considerando que Google no entrega el listado de provincias. Para solucionarlo, le pasé el listado completo de provincias al modelo de OpenAI, y luego le pregunto algo como: “¿a qué provincia corresponde este texto?”&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/0c45b15c95aaa1e1ff06e03ea84cc56c/c1b63/Cesar.AI_(3).png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbUlEQVQoz52Ty07CQBSG+6qyZs8LsOVhhJhgcMWKBXaBinJJI2AvFGsvw/Te+T0taVMpEuNJJpkzzfn+/8ycSroFMB8UAkIIFDshqlXmfw1JfuXY6cciSdOsUXxJ5JqQlDvzXIdgaXWY78MgqAryPMt+iv3mWnIsl4AMiqJgMBhA1zTYjoPVeg3X8xoFYRgW8Lrruph0t3iEbluQp1N0u13Isgzvy8KBwJahI0sS3Pb7uB8OwRjDdruFQ4J5lOC6ayk/4twvlDnnxQdOQJMKzc0GIopw02qh3W4XoOVqBY/AZSQkaBhGBZcOror9p3b1bkzTxIeqIotjbJYLWOSeWRYSykcPI3Q6HYzH4xNQdRWwyD61ILLGa9bbSskNd124BGO2jZjcTyYT9Ho9PM1m5SufjceFOcyh5/dVRpQleH6bI0iiE1CIrDFr53Fx4GnFBFP3Ol7mc7xrO6TEkv7zR1TOCcB8Dh76OAa86OIbUdhQ1bRy0nAAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Input → Open AI → Dirección → Google Maps → Provincia → Open AI → Código de Provincia&quot;
        title=&quot;Input → Open AI → Dirección → Google Maps → Provincia → Open AI → Código de Provincia&quot;
        src=&quot;/static/0c45b15c95aaa1e1ff06e03ea84cc56c/f058b/Cesar.AI_(3).png&quot;
        srcset=&quot;/static/0c45b15c95aaa1e1ff06e03ea84cc56c/c26ae/Cesar.AI_(3).png 158w,
/static/0c45b15c95aaa1e1ff06e03ea84cc56c/6bdcf/Cesar.AI_(3).png 315w,
/static/0c45b15c95aaa1e1ff06e03ea84cc56c/f058b/Cesar.AI_(3).png 630w,
/static/0c45b15c95aaa1e1ff06e03ea84cc56c/40601/Cesar.AI_(3).png 945w,
/static/0c45b15c95aaa1e1ff06e03ea84cc56c/c1b63/Cesar.AI_(3).png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Otra forma de hacerlo podría ser con una base de datos que permita hacer búsqueda por similitud. De esa forma, nos ahorraríamos llamados a OpenAI que estimo que es más caro.&lt;/p&gt;
&lt;h2&gt;Resultado final&lt;/h2&gt;
&lt;p&gt;El resultado final lo puedes ver &lt;a href=&quot;https://cesar-ai.web.app/&quot;&gt;aquí&lt;/a&gt; en vivo. &lt;/p&gt;
&lt;p&gt;El diagrama de funcionamiento final:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/60e943d1b2572773011875cbfe112be6/146da/cesar-ai-diagram.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 80.37974683544303%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAABkklEQVQ4y4WUiY7CMAxE8///h8R9Q7nvchUwepYmymZBWLLcNM7EM3Ybns+nvV4vU5Sz1rvJZOLOM5bnpBih1WpZs9n0A7KyLP1dp9OJICmQcthvt9sGRr1e9xg2m40tFgtbr9d2vV7tdrvZ8Xi06XRq2+3Wvtnj8bDVamWcJw8MYmDzfD7bcrm0+Xxus9ksRqyqKr8Ev9/vHsmHXn4BFnggKTeqxQeDgdVqNet2uy4D66Io7HA4eHWXyyXmI0fgJm7ONaKK0+nklXAQEGTB0Y889mEgJj8B9/t9BMaRodfr2Wg0clC05izOs1MG8BtlQNgTfSZhPB47bQCgrQiLCKgKuZXmiOJwOPQG0XHAAaVinDNE3qlZ/yrkNuYK8Yk49Ha7Xexiahpq7A+gKkynngTAGo2GO11mkDXMsMDVlI+AuYZoQ2OoEO36/b5H1jjy6OxHyvmnpenni0BTQNRZKkNDpBCjCCh98rGhGs1dykI5vBOg9gMLqgCAiqgEAOhCO7X0b5QDxgpZpDTk+qRykF+AbzlY2E6P1I3IAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Diagrama de funcionamiento de CesarAI junto a OpenAI y Google Maps&quot;
        title=&quot;Diagrama de funcionamiento de CesarAI junto a OpenAI y Google Maps&quot;
        src=&quot;/static/60e943d1b2572773011875cbfe112be6/f058b/cesar-ai-diagram.png&quot;
        srcset=&quot;/static/60e943d1b2572773011875cbfe112be6/c26ae/cesar-ai-diagram.png 158w,
/static/60e943d1b2572773011875cbfe112be6/6bdcf/cesar-ai-diagram.png 315w,
/static/60e943d1b2572773011875cbfe112be6/f058b/cesar-ai-diagram.png 630w,
/static/60e943d1b2572773011875cbfe112be6/146da/cesar-ai-diagram.png 943w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Consideraciones a futuro&lt;/h2&gt;
&lt;p&gt;CesarAI es un prototipo que busca transformar datos de un paciente en cualquier formato a uno interoperable (HL7 FHIR), funciona bien, pero faltan cosas que mejorar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modelo de negocio:&lt;/strong&gt; ¿hay mercado? En Chile, la interoperabilidad viene fuerte, entonces la cantidad de proyectos que necesitarán disponer datos en el formato interoperable van a ir en aumento. Además, una herramienta de este estilo podría ahorrar varias horas de desarrollo, y se puede cobrar en base a ese ahorro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ético y Legal:&lt;/strong&gt; En Italia &lt;a href=&quot;https://www.bbc.com/news/technology-65139406&quot;&gt;restringieron el uso de ChatGTP por razones de privacidad&lt;/a&gt;. Además, según &lt;a href=&quot;https://compliancy-group.com/hipaa-and-chatgpt/&quot;&gt;este artículo&lt;/a&gt;, tampoco cumple con &lt;a href=&quot;https://www.cdc.gov/phlp/publications/topic/hipaa.html&quot;&gt;HIPAA&lt;/a&gt;, ya que estás entregándole información de paciente personal. Si bien en los &lt;a href=&quot;https://openai.com/policies/terms-of-use&quot;&gt;términos de uso&lt;/a&gt; dicen no usar el contenido que entregas para mejorar sus servicios, también menciona que si quieres procesar datos personales, hay que entregar el aviso legal correspondiente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branding:&lt;/strong&gt; El nombre se llama “CesarAI”, pero la verdad se me fue dejarlo solo en “Cesar”. “Powered by AI” no es un &lt;em&gt;feature&lt;/em&gt;, es simplemente una característica interna.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Siguientes pasos&lt;/h2&gt;
&lt;p&gt;Debido a las consideraciones éticas y legales, creo que &lt;strong&gt;por ahora no es bueno usar una herramienta de este estilo para datos de paciente&lt;/strong&gt;. Sin embargo, puede servir como una herramienta de estudio del estándar HL7 FHIR.&lt;/p&gt;
&lt;p&gt;Alternativamente, habría que explorar si existen otros modelos que cumplan regulaciones estrictas como &lt;a href=&quot;https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act&quot;&gt;HIPAA&lt;/a&gt; y &lt;a href=&quot;https://en.wikipedia.org/wiki/General_Data_Protection_Regulation&quot;&gt;GDPR&lt;/a&gt;, y así actualizar la herramienta para que los use.&lt;/p&gt;
&lt;p&gt;Finalmente, es posible explorar otras ideas que buscan solucionar la misma problemática. ¿Qué pasa si en vez de entregar datos de paciente, entregas el “formato” de tus datos? Cesar podría generar una función en cualquier lenguaje de programación que transforme tus datos a HL7 FHIR. Así, es posible contribuir a disminuir costos de implementación sin comprometer datos personales.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/46a23edbf331f36477adde482b4d6f2c/f3583/Cesar.AI.png"></media:content></item><item><title><![CDATA[Nuestra experiencia en la Emprendethon 2023]]></title><description><![CDATA[Después de una semana intensa, ganamos la “Emprendethon”, evento donde nos pasaron juguetitos nuevos con los que armamos dos prototipos de…]]></description><link>https://blog.codeness.io/nuestra-experiencia-en-la-emprendethon-2023/</link><guid isPermaLink="false">https://blog.codeness.io/nuestra-experiencia-en-la-emprendethon-2023/</guid><dc:creator><![CDATA[Eliana Quijada]]></dc:creator><pubDate>Mon, 23 Jan 2023 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Después de una semana intensa, ganamos la “Emprendethon”, evento donde nos pasaron juguetitos nuevos con los que armamos dos prototipos de aplicaciones.&lt;/p&gt;
&lt;p&gt;En este artículo, describiremos de qué trató este evento, cuáles fueron esas dos aplicaciones que construimos, qué ganamos y nuestras impresiones generales de la jornada.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/posts/codewithnico_muertos-pero-lo-logramos-ganamos-el-emprendethon-activity-7019779706434539520-S4eo&quot;&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 72.78481012658227%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAAECUlEQVQ4yx3Tf0zUdRzHcdr6oz9aY62tVWtzVnNmE1nTbDamp8QPgTR1gRIQAglSoUQapjank1ZrVGvNWrHZ1mbW1iBMhmlw9/1y3J3c7+N+cT/gTg48BTw4Djw+zz7HH6+9//l8Hnu99/1+svCqQnhUseJQhLDKmBSxrAyKZZ0qlnRGkdJZxZLiFktqQCYiMy1S6oxYNs6L1MiSSIykxaxFiGmZqEyWxFhx6lixq0y5R4m4RkmMh5kLj7M4OS1zl2RUJhJnYTxOIhRncfw+btsUAdMsD8xpJEbUAiE5s8SoKpbNgyJt1QujwSK0Q0YRvzctgqGQSDyYE8uppEjNPxDJuVmxMDMj5uOzInlvRoTD8oz9nogZUiJiXhFB2c5nRTZ0qCwbB5lXB7gTDKI3jmCzO7kTjWB3uLj5nyKj5XpfP93dvdhUlTGfi2DQT2w0zpi6QFC29FkFHhuyoUUlJbGkosV220pL+0VOnj7PlStX+en3Xkre/5SS+hY0FTVszC/hi6+a+bX3G37W/4nPMoFbgl4Jum0Clz2zskllSTtAQqsw7vXT+d0PtH92li+/7uTSb39Q2tBGYdVR8vZXklNQwvffHqPm8F4u/duF1ya3kOCoJb2K2R0ZcFg2HNSxoJiwm8x0df1C2+kzlDc0U3v8EwprPmRPSz07qyvYoCmivb2OnYU7OH/5ImOuSczqPE5rehWzujLg0DAprYFFvQ39gMLZc59ztPUYpQerKK54l+KqRuo6mtl37D3W5eWzdtMmnnxpHe80lhPwTGNSE9hsaaxOCXoyoH6ElM7MwpATs95Ex4ULNDY1sDV/N5qyt9ldXUdRZS27Kio5fq6dthONPLXmOVrPNODz3mV4KIHZLkG3XNm/urKDlOIkqfdhGFQ4dfIUJ5ob0RSX8Hp+MbmFb7FeU8CLeRo+Ot1GbdNhsh59jPzyUtzuaVS9BF1pbBJzhDKgwSNBL4vDIXT9t2hpaaWhpppXNm9Fs7ec3CIJ7shn/fZdPL9lG4+veYFHnshmfc5GdFovBssiFs9DHEGBcyIDGgMSDEgwyo3u6xw50sQbmjfJXvsy+z/4mGc3b+Pp3C088+prZG/IIae4iF3Vh9i5p4yBATdGRwqr/+Eq5oqughMSjEhwCuXmIK1trRysquZAXSOdV7opOFRJWW0Ve+tr2L7vAFXH2+i43MWP3X9hGolgcC4IeygtnBJz3sm8ZWOMh/q7zGljxD0xJj0RJpxhwvYwY+YAPnMQ90gAl2kMu3EMy7Afg+rBbApy2ya/sieJYyK9ism/KNPwPmnDHPNDM0z0R3H1yEvd8pKM0uPnlpz9cvb97efaNT89//jpvRGgTzvOkH0Ga2hJOCIrwjkpG8ZY+R9C+p6w2su3DwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Muertos, pero lo logramos. Ganamos el Emprendethon&quot;
        title=&quot;Muertos, pero lo logramos. Ganamos el Emprendethon&quot;
        src=&quot;/static/13f93eb097bdb541c054feb7b4a68497/f058b/linkedin.png&quot;
        srcset=&quot;/static/13f93eb097bdb541c054feb7b4a68497/c26ae/linkedin.png 158w,
/static/13f93eb097bdb541c054feb7b4a68497/6bdcf/linkedin.png 315w,
/static/13f93eb097bdb541c054feb7b4a68497/f058b/linkedin.png 630w,
/static/13f93eb097bdb541c054feb7b4a68497/40601/linkedin.png 945w,
/static/13f93eb097bdb541c054feb7b4a68497/78612/linkedin.png 1260w,
/static/13f93eb097bdb541c054feb7b4a68497/9e7e4/linkedin.png 2056w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;¿Qué es la Emprendethon?&lt;/h2&gt;
&lt;p&gt;Durante la semana del 9 al 13 de enero, se realizaron en la ciudad de Valparaíso, Chile, dos importantes eventos para el mundo de la salud digital, la &lt;strong&gt;Connectathon&lt;/strong&gt; y el &lt;strong&gt;Make Health Latam&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La Connectathon, estuvo enfocada a que distintos grupos pudiesen aplicar el uso del estándar &lt;a href=&quot;https://blog.codeness.io/que-es-hl7-fhir/&quot;&gt;HL7 FHIR&lt;/a&gt;, utilizando los  perfiles adaptados para nuestro país.&lt;/p&gt;
&lt;p&gt;En el Make Health, hubo charlas, paneles, workshops y una Datathon, en dónde los equipos estuvieron enfocados en utilizar bases de datos entregadas por diferentes organizaciones, para hacer &lt;a href=&quot;https://aws.amazon.com/es/what-is/data-science/&quot;&gt;Ciencia de Datos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;Emprendethon&lt;/strong&gt; funcionó de forma transversal a estos 2 eventos, y consistía en que emprendedores aprendieran a utilizar distintas herramientas en el ámbito de interoperabilidad y ciencia de datos, pero no solo desde el punto de vista técnico/académico, sino que también mostrar cómo lo vería un usuario ya sea profesional de salud o paciente, intentando transmitir la cadena de valor completa que nos entregan esos datos.&lt;/p&gt;
&lt;h2&gt;Connectathon&lt;/h2&gt;
&lt;h3&gt;El desafío durante la Connectathon (días 1 y 2)&lt;/h3&gt;
&lt;p&gt;Para el primer desafío, bajo el alero de la Connectathon, se nos entregó un &lt;a href=&quot;https://drive.google.com/file/d/1gYBajA4IeesYzXHqmnPLR7yOfDnPcWkz/view?usp=sharing&quot;&gt;caso de uso&lt;/a&gt; donde el objetivo era que lográsemos guardar y consultar información de un paciente y sus diagnósticos.&lt;/p&gt;
&lt;p&gt;Obviamente, los datos tenían que cumplir con &lt;a href=&quot;/estandares-interoperabilidad/&quot;&gt;estándares de interoperabilidad&lt;/a&gt;, para lo cual nos dieron acceso a un servidor &lt;a href=&quot;/que-es-hl7-fhir/&quot;&gt;FHIR&lt;/a&gt; disponibilizado por AWS, el cual contaba con las reglas de &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/&quot;&gt;la guía core de Chile&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Además, utilizando algunas herramientas de AWS, debíamos construir una aplicación web que se conectara al servidor FHIR y consultara los datos almacenados. La herramienta debía ser publicada en una URL de manera de que cualquier persona pudiera visualizarla.&lt;/p&gt;
&lt;h3&gt;Nuestra solución&lt;/h3&gt;
&lt;p&gt;Lo primero que hicimos fue extraer la información del caso de uso e identificar los recursos FHIR que podían servirnos para almacenar esta información. En &lt;a href=&quot;https://github.com/codeness-io/emprendethon-recursos-json&quot;&gt;este repositorio GitHub&lt;/a&gt; están los archivos JSON, con los recursos que logramos armar. Por temas de tiempo y de las definiciones que nos entregaron para esta situación, hubo varios que finalmente no utilizamos.&lt;/p&gt;
&lt;p&gt;Una vez guardados los datos en el servidor, siguiendo las definiciones del estándar, llegó el momento de construir la aplicación.&lt;/p&gt;
&lt;p&gt;Nuestro diseño y planificación inicial tenía 3 partes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un buscador, que recibiera el rut del paciente, y que se encargará de ir a “preguntar” al servidor por la información.&lt;/li&gt;
&lt;li&gt;Una vista de resumen de paciente, que mostrara los datos traídos de la consulta anterior.&lt;/li&gt;
&lt;li&gt;Otra pantalla que tuviese un formulario, para poder crear un paciente, o al menos agregarle un nuevo diagnóstico al paciente existente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8359b9050fe78e4b2c0bc35bfce94d7d/9568a/prototipo_1.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAECAwQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAcsrHLbwvIlQf//EABwQAAEEAwEAAAAAAAAAAAAAAAIAAREyAxAiMf/aAAgBAQABBQJrwsw9tZEMofdf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFxAAAwEAAAAAAAAAAAAAAAAAAAEQIf/aAAgBAQAGPwJzB13/xAAaEAEAAgMBAAAAAAAAAAAAAAABABARIVEx/9oACAEBAAE/IRl4jkHwDXKqwXlptf/aAAwDAQACAAMAAAAQQwB9/8QAFhEAAwAAAAAAAAAAAAAAAAAAABAh/9oACAEDAQE/ECv/xAAWEQADAAAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8QK//EABoQAQEBAQADAAAAAAAAAAAAAAERACExofD/2gAIAQEAAT8Q4l9XAHjRkJtI81z76lmCgcJvdylmFd//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Prototipo de muy baja fidelidad, hecho con lápiz y papel&quot;
        title=&quot;Prototipo de muy baja fidelidad, hecho con lápiz y papel&quot;
        src=&quot;/static/8359b9050fe78e4b2c0bc35bfce94d7d/828fb/prototipo_1.jpg&quot;
        srcset=&quot;/static/8359b9050fe78e4b2c0bc35bfce94d7d/ff44c/prototipo_1.jpg 158w,
/static/8359b9050fe78e4b2c0bc35bfce94d7d/a6688/prototipo_1.jpg 315w,
/static/8359b9050fe78e4b2c0bc35bfce94d7d/828fb/prototipo_1.jpg 630w,
/static/8359b9050fe78e4b2c0bc35bfce94d7d/0ede0/prototipo_1.jpg 945w,
/static/8359b9050fe78e4b2c0bc35bfce94d7d/3ac88/prototipo_1.jpg 1260w,
/static/8359b9050fe78e4b2c0bc35bfce94d7d/9568a/prototipo_1.jpg 3024w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Como suele suceder cuando se crean soluciones tecnológicas, el tiempo no era el suficiente y nos tocó priorizar. Es decir, para armar nuestro MVP (producto mínimo viable, por sus siglas en inglés) tuvimos que preguntarnos &lt;strong&gt;cuál de todos estos puntos entregaba más valor y era el más esencial&lt;/strong&gt;. La respuesta fue: la vista de resumen con los datos del paciente ya guardados. Así que ese fue el objetivo inicial, si nos quedaba más tiempo íbamos a ir por el buscador y luego el formulario.&lt;/p&gt;
&lt;p&gt;Por supuesto no nos quedó más tiempo, al finalizar el segundo día, logramos desplegar la aplicación con la vista de resumen del paciente solamente.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/515fa5a42aa0a4bd7b833cafd1f2cb85/b5666/Screen_Shot_2023-01-11_at_00.42.00.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 33.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABYlAAAWJQFJUiTwAAAA1ElEQVQoz52Quw7CMAxFQ/+BMjMhYGNCYkNiQOKvWSiv8hCIL+hQdWrSAk2aS5zyLHTB0pGd69zYCusOJ2j2Rmj1x3DbA7B6G06jg5r7winlcu8dNp158JYbbA8n+PsjvNUW8/UOC39vobqM1R+Ys3fXycuUlJAyA7TGV/zSigaqgsVxjCzLLFIpKIM0Q5IkAecCQghbUxaiyOfzxd6/kkeqAuMjjdEFbTYh8jy3D2pdvUGxuP7wEFSTl4VhiCAILFEUWfHfoEcZ5xwP0jR9TvwH+qobUc7pDOn4UCoAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Vista final de la aplicación que muestra el resumen de paciente y sus antecedentes&quot;
        title=&quot;Vista final de la aplicación que muestra el resumen de paciente y sus antecedentes&quot;
        src=&quot;/static/515fa5a42aa0a4bd7b833cafd1f2cb85/f058b/Screen_Shot_2023-01-11_at_00.42.00.png&quot;
        srcset=&quot;/static/515fa5a42aa0a4bd7b833cafd1f2cb85/c26ae/Screen_Shot_2023-01-11_at_00.42.00.png 158w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/6bdcf/Screen_Shot_2023-01-11_at_00.42.00.png 315w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/f058b/Screen_Shot_2023-01-11_at_00.42.00.png 630w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/40601/Screen_Shot_2023-01-11_at_00.42.00.png 945w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/78612/Screen_Shot_2023-01-11_at_00.42.00.png 1260w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/b5666/Screen_Shot_2023-01-11_at_00.42.00.png 3118w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Detalles técnicos&lt;/h4&gt;
&lt;p&gt;Si no entiendes mucho de términos específicos de desarrollo web, puedes saltarte esta sección que podría sonar a chino y pasar a la siguiente sin perderte nada, de todos modos intentaré explicarlos lo más en “humano” posible.&lt;/p&gt;
&lt;p&gt;El recurso &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/1.7.0/StructureDefinition-CorePacienteCl.html&quot;&gt;Patient&lt;/a&gt;, que como se puede deducir hace alusión al paciente, lo armamos siguiendo las definiciones y ejemplos de la guía para Chile.&lt;/p&gt;
&lt;p&gt;Un tip interesante a recordar de la guía core de Chile es que el atributo &lt;em&gt;Address&lt;/em&gt; se reemplaza por &lt;em&gt;CL Address&lt;/em&gt;, que es igual, pero incluye extensiones obligatorias (city, district, state y country que para nosotros sería: comuna, provincia, región y país respectivamente).&lt;/p&gt;
&lt;p&gt;La idea del ejercicio era que también utilizáramos el recurso &lt;a href=&quot;https://hl7chile.cl/fhir/ig/CoreCL/1.7.0/StructureDefinition-BundleCl.html&quot;&gt;Bundle&lt;/a&gt;, que en resumen permite agrupar y crear al mismo tiempo varios recursos relacionados en este caso con el mismo paciente, es por eso que en el detalle se puede ver que contiene varios recursos &lt;em&gt;Condition&lt;/em&gt;, que son los diagnósticos del paciente.&lt;/p&gt;
&lt;p&gt;Una vez creado este &lt;em&gt;Bundle&lt;/em&gt;, que como ya comentamos en el &lt;a href=&quot;/nuestra-experiencia-en-la-connectathon-2023/&quot;&gt;post anterior&lt;/a&gt;, nos demandó más tiempo del planificado, porque no lográbamos que el servidor aceptara la información. Llego el momento de construir la aplicación.&lt;/p&gt;
&lt;p&gt;Para desarrollar, por temas de velocidad y conocimiento de ambos, decidimos utilizar el framework de desarrollo fron-end &lt;em&gt;React&lt;/em&gt; y le pusimos un poquito de estilo con la librería de interfaz de usuario &lt;a href=&quot;https://ant.design/&quot;&gt;Ant Design&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para realizar el despliegue utilizamos 2 herramientas de AWS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/es/amplify/&quot;&gt;AWS Amplify&lt;/a&gt;, para hostear la aplicación.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/es/codecommit/&quot;&gt;AWS CodeCommit&lt;/a&gt;, que nos permitía desplegar cambios con solo hacer push a la rama &lt;em&gt;main&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando desplegamos la aplicación realizando la consulta por los datos del paciente al servidor FHIR, nos encontramos con un problema importante de seguridad, la aplicación desplegada en Amplify no admitía realizar una consulta a un servidor que no fuera https, y el que nos entregaron para trabajar solo funcionaba con http 😞.&lt;/p&gt;
&lt;p&gt;Googleando, logramos encontrar librerías que hacían de proxy para forzar este tipo de llamadas, pero ninguna nos funcionó. Luego Nico dio con el código open source de una (&lt;a href=&quot;https://github.com/Rob--W/cors-anywhere&quot;&gt;cors-anywhere&lt;/a&gt;) y levantó su propio proxy que si dio resultado 🎉 (todo esto último lo hicimos en unos 20 minutos 😅).&lt;/p&gt;
&lt;h2&gt;Datathon&lt;/h2&gt;
&lt;h3&gt;El desafío durante la Datathon (días 3 y 4)&lt;/h3&gt;
&lt;p&gt;El tercer día comenzó el evento Make Health y con este la Datathon. El día inició un poco confuso para nosotros, ya que por llegar “heredados” de la Connectathon ni siquiera tenían registro de nuestros nombres en la entrada 😂. &lt;/p&gt;
&lt;p&gt;Una vez ingresamos, similar al primer día, tuvimos un par de charlas que se extendieron hasta bastante avanzada la tarde, así que comenzamos a revisar la información para trabajar cerca del final del día.&lt;/p&gt;
&lt;p&gt;En este caso se nos disponibilizaron datos del Registro Hospitalario de Tumores de la FALP (Fundación Arturo López Pérez), la idea era que utilizando herramientas de AWS lográsemos trabajar con esos datos, analizarlos y quizás lograr crear un modelo predictivo.&lt;/p&gt;
&lt;p&gt;Nuevamente, tal como se planteó en el desafío anterior, se debía crear una aplicación que pudiese interactuar de alguna manera con todos estos datos trabajados.&lt;/p&gt;
&lt;h3&gt;La solución&lt;/h3&gt;
&lt;p&gt;La primera alternativa era limpiar los datos, analizarlos y buscar una forma de que estos datos “ordenaditos” se mostraran de una forma amigable para un usuario, por ejemplo, del ámbito clínico. No nos gustó mucho la idea, porque queríamos jugar más con las herramientas de AWS (no todos los días se puede acceder gratis a estas cosas).&lt;/p&gt;
&lt;p&gt;Otra opción, y con esta alternativa podíamos utilizar más los conocimientos de Nico en Data Science, fue intentar hacer un modelo predictivo que se entrenara con los datos que nos entregaron. Para esto me puse estudiosa, a tratar de refrescar los conocimientos adquiridos en fisiopatología y epidemiología, para intentar buscar una predicción que pudiese resultar de valor. Una idea loca que surgió fue intentar predecir la sobrevida de un paciente con cáncer según la etapa en la que se diagnóstica y el tipo de tratamiento que recibe, era un tema interesante, pero requería más tiempo.&lt;/p&gt;
&lt;p&gt;Así que finalmente nos decidimos por algo un poco más simple, y que más que nada sirviera de prueba de concepto de las herramientas que estábamos probando. Por lo que decidimos crear un formulario que recibiera cierta información demográfica del paciente e información del cáncer diagnosticado, y que predijera el estadio de este cáncer. (Para recordar todo esto de las etapas y el estadio me sirvió mucho, entre otra documentación, esta página: &lt;a href=&quot;https://www.cancer.org/es/tratamiento/como-comprender-su-diagnostico/estadificaciondelcancer.html&quot;&gt;cancer.org&lt;/a&gt;).&lt;/p&gt;
&lt;h4&gt;Detalles técnicos&lt;/h4&gt;
&lt;p&gt;En este desafío para poder llegar a tiempo nos tocó dividirnos según experiencia y conocimiento, así que, por un lado, Nico se dedicó a construir el modelo predictivo y por mi parte, armé la aplicación con el formulario de ingreso de datos.&lt;/p&gt;
&lt;p&gt;Con respecto al modelo predictivo, no partimos de cero. Los datos entregados por la FALP no eran solo bases de datos, sino que también incluían instrucciones de limpieza y de exploración. Por ejemplo, había archivos (&lt;a href=&quot;https://empresas.blogthinkbig.com/python-para-todos-2-jupyternotebook/&quot;&gt;Jupyter Notebooks&lt;/a&gt;) donde analizaban los datos:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/11d23c4f03ee047c1794196983839540/525d3/dataset-exploration.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.202531645569614%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAABLklEQVQoz3WRyY6EMAxE8/8/h4SAZl/Cvu9w9LgipdXM9BxKTpD9Ui5EmyTUpymNRUGDlO86ty1d10Xnef6r4zj+SMggoMT3qWZA3TRU1TWVrKIsqWTleU4FPwJJPlf4xueqqpRq7oXQiyrQlGYZ5ewqjuN3Y8Pwz0YtgPENPdM00TzPD4kgjMgwDHIcRwFbdioZnnIMAGAIcDgdx5Hu+36svO/7Q0LKnFzXpdfrRVEUUcZuAUs4W+1iGAbq+14B4WJZFiWct21TIFRIYNjnDAPOMgxDBQcYLuEQ7gDquk7ddW64Y3VANVA5zHgQEDgC1LIsVfEIIsAQoBCGvq2pYQqIH4L8sDJAWgDgdbjDeuu6Plb71MNhzM5M01RQvbJt2+R5nsoSK+rcvmX2G/gDqdOdx6SwXPkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Expliración sobre el conjunto de datos&quot;
        title=&quot;Expliración sobre el conjunto de datos&quot;
        src=&quot;/static/11d23c4f03ee047c1794196983839540/f058b/dataset-exploration.png&quot;
        srcset=&quot;/static/11d23c4f03ee047c1794196983839540/c26ae/dataset-exploration.png 158w,
/static/11d23c4f03ee047c1794196983839540/6bdcf/dataset-exploration.png 315w,
/static/11d23c4f03ee047c1794196983839540/f058b/dataset-exploration.png 630w,
/static/11d23c4f03ee047c1794196983839540/40601/dataset-exploration.png 945w,
/static/11d23c4f03ee047c1794196983839540/525d3/dataset-exploration.png 1090w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;También incluía una descripción del Dataset:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ad9a0a6b2b5119c57f8f9307c08919ba/8cae4/dataset-description.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 45.56962025316456%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAABWUlEQVQoz32SyZKCMBiEeRfLDQFBFkEBx6jgwqagzhy9zPs/AJWe/DkwM1Xq4asuUkmn+yeK6yzaJDm1jO1btjm0UbRtdcP9x0SzW1W1pGq68xbFsjzU5xpVccF2s8dGEMcbqYyl3XcQxKC9o5GB8Xj6EsW2ff55vfHsWPD9PuciKV+vUx6GjE+nLresucS2A26aHldV8y2Kabqo6zuuzRfKskaeXySnUwVxAQ6HAmmaIYqYSLmCOCSTkD5D8dwl8kOGRhgmuyMCP4JIB8dZQKSXNWczH5o2E3VfG3WGZJAwhp0wC0WKXk9Fvz/pGAw0oZrU4VCXM3w3R2XuLVFmBerLHVXVYLXaCnZS6aeQUt04/l33RQhKTThO0LUgVXw/xLk84/H4xq25IzuVOB4rOS+q7boLecjzQqmG4Uh03X7CDApt+hC3UuU4WssnQonIjGZCNf/y7skQP2hxJseD80lsAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Conjunto de datos, cada columna explicada (23 en total)&quot;
        title=&quot;Conjunto de datos, cada columna explicada (23 en total)&quot;
        src=&quot;/static/ad9a0a6b2b5119c57f8f9307c08919ba/f058b/dataset-description.png&quot;
        srcset=&quot;/static/ad9a0a6b2b5119c57f8f9307c08919ba/c26ae/dataset-description.png 158w,
/static/ad9a0a6b2b5119c57f8f9307c08919ba/6bdcf/dataset-description.png 315w,
/static/ad9a0a6b2b5119c57f8f9307c08919ba/f058b/dataset-description.png 630w,
/static/ad9a0a6b2b5119c57f8f9307c08919ba/40601/dataset-description.png 945w,
/static/ad9a0a6b2b5119c57f8f9307c08919ba/8cae4/dataset-description.png 1109w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Y código para limpiar:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c3fb940bcc4ae73cd77795da31527b8c/3e096/transform-stages.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 12.658227848101264%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsSAAALEgHS3X78AAAAi0lEQVQI15WNQQ7DIAwE8/8ftmoPVU8lSiBgCBBg6kT9QC2NxrKl3Wm3huQWZBOCDfRaGcdxwRj8O9P8cXgrrLMlamiVSImJLLqXStPg3hqjD3rv6q4eF+30+VP67z4975bbw/B6Wz4mENaAXxzWzLgtEL3TEiGnjGhRyYk9Hhc+FJIXingk7Ww+8wVlXummSptFAAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Código que normaliza la columna de Estadio&quot;
        title=&quot;Código que normaliza la columna de Estadio&quot;
        src=&quot;/static/c3fb940bcc4ae73cd77795da31527b8c/f058b/transform-stages.png&quot;
        srcset=&quot;/static/c3fb940bcc4ae73cd77795da31527b8c/c26ae/transform-stages.png 158w,
/static/c3fb940bcc4ae73cd77795da31527b8c/6bdcf/transform-stages.png 315w,
/static/c3fb940bcc4ae73cd77795da31527b8c/f058b/transform-stages.png 630w,
/static/c3fb940bcc4ae73cd77795da31527b8c/40601/transform-stages.png 945w,
/static/c3fb940bcc4ae73cd77795da31527b8c/78612/transform-stages.png 1260w,
/static/c3fb940bcc4ae73cd77795da31527b8c/3e096/transform-stages.png 1718w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A base de todo lo anterior, pudimos notar que &lt;a href=&quot;https://machinelearningparatodos.com/problemas-comunes-en-aprendizaje-automatico/&quot;&gt;&lt;strong&gt;el problema es de clasificación&lt;/strong&gt;&lt;/a&gt;, en donde dado ciertos atributos demográficos del paciente como género, edad y comuna, hay que predecir en qué estadio de cáncer se encuentra.&lt;/p&gt;
&lt;p&gt;Para continuar con la creación del modelo, seguimos los siguientes pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Análisis de los datos:&lt;/strong&gt; el conjunto de datos era un CSV con 19.000 filas y 23 columnas. Los archivos que nos entregaron incluían una pequeña exploración, donde indicaba la cantidad de pacientes, distribución según género, entre otros aspectos. Nos quedamos con este análisis por temas de tiempo, aunque nos hubiese encantado hacer uno más profundo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limpieza de los datos:&lt;/strong&gt; el dataset venía con instrucciones para limpieza e incluso código en Python, así que no fue tan complicado limpiarlos. Nos quedamos con 2.346 filas, y varias columnas menos. Por ejemplo, no usamos información del tratamiento, ya que esto es algo que ocurre después de la clasificación de estadio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El modelo predictivo:&lt;/strong&gt; aquí usamos dos herramientas de Amazon. Una fue &lt;a href=&quot;https://aws.amazon.com/es/sagemaker/canvas/&quot;&gt;SageMaker Canvas&lt;/a&gt; y la otra &lt;a href=&quot;https://aws.amazon.com/es/sagemaker/autopilot/&quot;&gt;SageMaker Autopilot&lt;/a&gt;. SageMaker Canvas fue un primer acercamiento, en menos de 15 minutos nos creó un modelo con 89% de precisión y nos decía qué atributos eran más importantes. Lo malo es que no encontramos una opción para poder usarlo fuera de la herramienta. Así que nos cambiamos a SageMaker Autopilot, que demoraba más en entrenar (~40 minutos) pero nos dejaba un modelo disponible para ser usado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La puesta en marcha del modelo:&lt;/strong&gt; Elegimos el mejor modelo sugerido por SageMaker según la precisión (no encontramos cómo cambiar la métrica), y con 1 clic lo pusimos en ejecución.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disponibilizando el modelo para la web:&lt;/strong&gt; Gracias a la sugerencia de los “amigos de Amazon” (mentores), logramos hacer que el modelo estuviera disponible a través de internet. Esto lo hicimos con una función Lambda (&lt;a href=&quot;https://gist.github.com/muZk/3b4c2050203c79838972af3b67c9c12e&quot;&gt;código fuente&lt;/a&gt;), que respondía a eventos HTTP y que se comunicaba con el modelo creado con SageMaker.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/3b294605fc4cb740b885803b1798fe3f/c1b63/emprendethon-resultado-modelo.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACzklEQVQoz3WSW0iTYRjHX9zUoUmWlTMbHQg1spsiQyMDEyON5kwzMyOyiLqR0kKLqC4sIuhgB+iy6GDeuPKik2AHc1ZaljHzsNSmWY5V08jD1n49btVVPfDnfb7n+7+/53m/71XG6PWsnJXNwpmZRESko52RgYpcK8pANyeLqQs2ETovh/DYPKbE5aM1ZKH061BRRvFkoqaZUJOlFmIiKCwXVbqqmAO5R8lK2MWc8AyBGtFOkQ26NUyfnY9pwzGSU0pJSz+MMascw9xCAnQmgsNy0IauR2kEGiBAJcDAbFTt5Tu8efYWa3MHLxpa6XzXS052uRiWs2TxXh7WdfKgtp0nD7t4JHn9I5vkNlqa+zlefkt869BqJoCZBAcXouzWbv6E2+P2rXt2XhBDAqvTDvmePzqH+VeYzc/EZyQ8fJesZWg0V1E9L9t9Lz1uDy6Xf2PJ9goxLCM19SCenx7e2wdwOp243W6Rh9HRcZ+vsrIRvf4w8fE3iYl5TFzsO9SHV53+dl4vQ64hX3pwR4VvwnQBepFG33/g/en2yzsBnQB6qKqyMn/+LdLSWklO7mXRon458ssOH8Q16sXx1Q88IhMGy4TpK/bzvnuAN1Y7vT0Oursd9PR8wWb7hsPxnYoKmzR+SnR0F1FRvRgMAux/1SG9vLjHPQwN+Y9cXngWvUpicfQWthWcJj//PFu3XqGgoIq8vNtsyquTWhOmzDaWLu0iMfED+ki7wAXY99zKyPgY4yNjDP/+hicLz2NQKWxJPUZzi4W2tlZet7xgcNDO/+LUqWEBDqCcXX1/i2P4//LF3VeJUxvZnHiGB3ct1JifUl3dwP37rTQ1DdDQYMdi6aex8RP19Z9pb/9CUZFLgA6UpeAclpJr1BVXUlN0A3NZNfviT5Ci9pCkPcqSsLPMC71ExKTrhISYCQq6J/etXtQssops6HR9BGgGCQz8xi8v4lJDxzk3gAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Usamos 15 columnas como input. El resultado, 88.7 precisión, donde PT, categoría y sub-categoría fueron los más importantes&quot;
        title=&quot;Usamos 15 columnas como input. El resultado, 88.7 precisión, donde PT, categoría y sub-categoría fueron los más importantes&quot;
        src=&quot;/static/3b294605fc4cb740b885803b1798fe3f/f058b/emprendethon-resultado-modelo.png&quot;
        srcset=&quot;/static/3b294605fc4cb740b885803b1798fe3f/c26ae/emprendethon-resultado-modelo.png 158w,
/static/3b294605fc4cb740b885803b1798fe3f/6bdcf/emprendethon-resultado-modelo.png 315w,
/static/3b294605fc4cb740b885803b1798fe3f/f058b/emprendethon-resultado-modelo.png 630w,
/static/3b294605fc4cb740b885803b1798fe3f/40601/emprendethon-resultado-modelo.png 945w,
/static/3b294605fc4cb740b885803b1798fe3f/c1b63/emprendethon-resultado-modelo.png 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;De esta imagen, podemos ver que el input consiste en 15 columnas, y que el resultado fue 88.7 precisión, con &lt;code class=&quot;language-text&quot;&gt;PT&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;categoría&lt;/code&gt; y &lt;code class=&quot;language-text&quot;&gt;sub-categoría&lt;/code&gt; como campos más importantes. Posiblemente hay cosas por mejorar, como por ejemplo, el par comuna y región quizás no es necesario, ya que la región se infiere de la comuna. Es posible que pase lo mismo con el par categoría y sub-categoría.&lt;/p&gt;
&lt;p&gt;Gracias a lo anterior, ya podíamos hacer solicitudes HTTP para hacer predicciones. Por ejemplo, con Postman:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f6f71d073cb1f9a5ed1322b2b50c40fe/a3a5c/emprendethon-postman.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 37.34177215189873%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAAAz0lEQVQoz52QzU4EIRCEef/EF/EtNh69+AR72NMqM4PIQtP8TG0NZj3o6iSSfAE6VHU1JqWEGCOcc8g5Ex27qg7KRim/EqlXSXg+ZTy+JBjvPUIIw9BOFta+YbIW8zxjWRbW30eTW4OfFKyt4OmoeDjQUNlFRKBMJSQxbdE8um+CrBWt48+1rrdDham8CJMEO8HFCtF2V7Hu0OlTa4PZ5Ikj+vMroijTbHG+C/YSfj7odDWFBpH/FGaHzjFb31HvGJvMmBf/gYuUr+J/aa3hCh8ZJQJxOaI5AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Ejemplo de solicitud al modelo a través de Postman&quot;
        title=&quot;Ejemplo de solicitud al modelo a través de Postman&quot;
        src=&quot;/static/f6f71d073cb1f9a5ed1322b2b50c40fe/f058b/emprendethon-postman.png&quot;
        srcset=&quot;/static/f6f71d073cb1f9a5ed1322b2b50c40fe/c26ae/emprendethon-postman.png 158w,
/static/f6f71d073cb1f9a5ed1322b2b50c40fe/6bdcf/emprendethon-postman.png 315w,
/static/f6f71d073cb1f9a5ed1322b2b50c40fe/f058b/emprendethon-postman.png 630w,
/static/f6f71d073cb1f9a5ed1322b2b50c40fe/40601/emprendethon-postman.png 945w,
/static/f6f71d073cb1f9a5ed1322b2b50c40fe/78612/emprendethon-postman.png 1260w,
/static/f6f71d073cb1f9a5ed1322b2b50c40fe/a3a5c/emprendethon-postman.png 1277w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En cuanto a la aplicación, tal como la anterior, la construimos en &lt;em&gt;React&lt;/em&gt; y utilizamos para la interfaz de usuario &lt;a href=&quot;https://ant.design/&quot;&gt;&lt;em&gt;Ant Design&lt;/em&gt;&lt;/a&gt;. Los campos disponibles en el formulario eran:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edad&lt;/li&gt;
&lt;li&gt;Sexo&lt;/li&gt;
&lt;li&gt;Región de residencia&lt;/li&gt;
&lt;li&gt;Categoría del cáncer&lt;/li&gt;
&lt;li&gt;Subcategoría del cáncer&lt;/li&gt;
&lt;li&gt;Categoría TNM clínica (Tumor-Nódulo-Metástasis)&lt;/li&gt;
&lt;li&gt;Categoría TNM patólogica (Tumor-Nódulo-Metástasis)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le puse cariño en la construcción del formulario para que además de verse decente mostrara las diferentes alternativas de forma bonita para el usuario, aunque “por detrás” mapeaba cada respuesta a cómo el modelo esperaba recibirlas. Esto lo hice creando “diccionarios” en formato JSON, que se encargaban de transformar cada respuesta.&lt;/p&gt;
&lt;p&gt;Ejemplo del cómo se transformaban las regiones:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 411px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/79f7a69d0ad9d647c7195e71f9d984f1/2a432/regiones.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 77.84810126582278%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAABuElEQVQ4y5WU2XKCQBBFeY27CLKNAaMsLuWaaLRitFJJ/v+PbrobAbWsqA9dPcDMnbmne9BM1UW52UbNcFBruZRdVPV0XKUoNy1UGm1UON8RWtNT6G5GcJM+bH+AaLlHuPhEd7yGP1iSuI3yI4INx8PzMoGaxWg5PnrTLZLVF8L5Dr3JVk78kKClXvBUM8iWhXLdpMVm/pGFMrF7RTXTC4RhtWUfGXpis9pyhCXnR0Q1XTHDMZykBxVOEb8exC4zjJcHyis0TO/+EzLDzoIYTiNiGAhDLkxEhWGGLN5od85QXItsQ2FYqptXLBXVTdm2/41svWa4fs6QRSpHfpIzlkee0pvyPh3z/GxufkJddYShNwxhBwPqwZ3YZdudeEEc94KBx2yfIxitCMcGg/U3+vRsB0khKAznMdQkkj7kybyIRYPhmxRHRVNYtBlv2J99YLT5pQ3mwpZPfMqxYKgXrCp6YT8fn7BN7Vqy7pKjZjgpQ37I+Jw29a1CXFY6Zbgdwx32pQ+H7z/oku0m2cmqf6tVzvqwbrsFQzcQyFwY3Q5I0Lj7DueCrh+iRE2b/VXkup20wSM/Bo4/1yiW5ZOXZqAAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Estracto de archivo json que muestra el texto que veía el usuario y el texto que se enviaba al modelo&quot;
        title=&quot;Estracto de archivo json que muestra el texto que veía el usuario y el texto que se enviaba al modelo&quot;
        src=&quot;/static/79f7a69d0ad9d647c7195e71f9d984f1/2a432/regiones.png&quot;
        srcset=&quot;/static/79f7a69d0ad9d647c7195e71f9d984f1/c26ae/regiones.png 158w,
/static/79f7a69d0ad9d647c7195e71f9d984f1/6bdcf/regiones.png 315w,
/static/79f7a69d0ad9d647c7195e71f9d984f1/2a432/regiones.png 411w&quot;
        sizes=&quot;(max-width: 411px) 100vw, 411px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;La parte que requirió más detalle fue lograr clasificar las sub-categorías, de tal manera de que una vez seleccionada la categoría principal, solo le permitiera al usuario seleccionar las sub-categorías correspondientes.&lt;/p&gt;
&lt;p&gt;Ejemplo del cómo se agrupaban las sub-categorías dentro de cada categoría:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 520px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e04e10cd70378b886da525f8d6f0232c/69902/subcategorias.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 72.78481012658227%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsSAAALEgHS3X78AAACKklEQVQ4y42UW3OiQBCF87ZRREDuICAqoKJi4iVZScyaVLJbW5v//3NOelq8bIpU5eGUUwzzcbrntFea1YXq+FBIbd2D6SdQrRC6P4AZJCzNDqE5EZzeGLrXR0u1IGk2WjW6asgG7KyPeJvDzYYYlQ8I8wLxZI1wvEREsqIMNmlQlHDjCR0koPoFUKKvKZaP7P4Rs/0ronkBWbfQbOu4bmm4lju0Nlg/JBUNen6ACahVD5Q7LkbrFyQ3O/iDOZLbHWYPf2GHKSTFpBedw4GOU+vqKMGqgA5Gm2cUT+8Y372w4ukdDOpXk4H2t3XhcI/85xuK3T/qV8rlcqkElGrEz9VD2dLF+gQUro7QbPkEbzhDjy6ml28QZLfUjkd00wVfSjRZsXr5mvZu+LLM7pDBDBS9EUBxSPQuW/3iF0frZ0zuXzHd/uYPTcs/GC5Kbgeviy0Uk2JHsWrr7qFkYV0xPAIs2JWIisibQTn0BjP4wzk5K8575NAMUnYbTzeUCJdbcypZNX107AANWedIcO8U49CnKi5HiX2x16z2xJn/o0NA3QlpMnwuu93xaCp6HBPpGJPP0pzauJxuudk2YSUxwlUKN0kxLvc0GX1yeOGscs8Oq/I+g85Asq/5AbJyi3i5QLSYIxhP4fVzGHRzopdi7MTaoqCLX5GKOth59HSfAHP6Y0hZViBmd8QAEQeX4AJqhRl/gFvyFVBciGZ3qyDrLC5PPpfYoHn+bskfaiCE9ye7ncQAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Estracto de archivo json que muestra la agrupación de subcategorías dentro de cada categoria de cáncer&quot;
        title=&quot;Estracto de archivo json que muestra la agrupación de subcategorías dentro de cada categoria de cáncer&quot;
        src=&quot;/static/e04e10cd70378b886da525f8d6f0232c/69902/subcategorias.png&quot;
        srcset=&quot;/static/e04e10cd70378b886da525f8d6f0232c/c26ae/subcategorias.png 158w,
/static/e04e10cd70378b886da525f8d6f0232c/6bdcf/subcategorias.png 315w,
/static/e04e10cd70378b886da525f8d6f0232c/69902/subcategorias.png 520w&quot;
        sizes=&quot;(max-width: 520px) 100vw, 520px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para terminar, conectamos esta aplicación con el endpoint que Nico había generado. Es decir, envíabamos los datos recogidos por el formulario a ese endpoint, para que estos fueran procesados por el modelo y este nos entregara como respuesta el estadio del cáncer. Finalmente, la aplicación le mostraba al usuario este resultado.&lt;/p&gt;
&lt;p&gt;El siguiente GIF muestra el resultado final:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/8a5bb4c5dc8988bd19b243c97d22ae55/FALP-2.gif&quot; alt=&quot;Interfaz web donde luego de enviar los datos, se muestra el Estadio&quot;&gt;&lt;/p&gt;
&lt;h2&gt;¿Qué ganamos?&lt;/h2&gt;
&lt;p&gt;El honor y la gloria de ganar un evento como estos ⚔️, junto a un iPad y un curso para cada uno para seguir aprendiendo sobre HL7 🤓.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/cf85e2103ea72e80b90dadae20d50c20/b17f8/premiacion.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 44.93670886075949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAJABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABAADBf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAABC/j55URKf//EABwQAAEDBQAAAAAAAAAAAAAAAAMAAQIREhQxQf/aAAgBAQABBQIRLJ5I08quTfHX/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8Biv/EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPwGVj//EABkQAAIDAQAAAAAAAAAAAAAAAAIRAAEhIP/aAAgBAQAGPwJmU1y0Wcf/xAAcEAEAAgEFAAAAAAAAAAAAAAABABExECFRYcH/2gAIAQEAAT8hs01XFxEzvURSidrZ46Mp/9oADAMBAAIAAwAAABCvD//EABcRAAMBAAAAAAAAAAAAAAAAAAABIRH/2gAIAQMBAT8Qw6yJh//EABcRAQEBAQAAAAAAAAAAAAAAAAEAIRH/2gAIAQIBAT8QQDlvb//EAB0QAQACAgIDAAAAAAAAAAAAAAEAEVGxECFhkdH/2gAIAQEAAT8QbDUVbvxGVAYtV7jlkpqQmjQn1vj/AP/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;En la premiación, Eli hablando y Nico sosteniendo los premios&quot;
        title=&quot;En la premiación, Eli hablando y Nico sosteniendo los premios&quot;
        src=&quot;/static/cf85e2103ea72e80b90dadae20d50c20/828fb/premiacion.jpg&quot;
        srcset=&quot;/static/cf85e2103ea72e80b90dadae20d50c20/ff44c/premiacion.jpg 158w,
/static/cf85e2103ea72e80b90dadae20d50c20/a6688/premiacion.jpg 315w,
/static/cf85e2103ea72e80b90dadae20d50c20/828fb/premiacion.jpg 630w,
/static/cf85e2103ea72e80b90dadae20d50c20/0ede0/premiacion.jpg 945w,
/static/cf85e2103ea72e80b90dadae20d50c20/3ac88/premiacion.jpg 1260w,
/static/cf85e2103ea72e80b90dadae20d50c20/b17f8/premiacion.jpg 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Impresiones generales&lt;/h2&gt;
&lt;p&gt;Como conclusiones finales de estos agotadores, pero gratificantes 4 días de trabajo, podemos decir que fue emocionante ver a tanta gente reunida en la misma sintonía, buscando cada uno desde su lugar impactar en mejorar la salud con el apoyo de la tecnología. Como enfermera, cuando estaba en el mundo clínico me tocaba ver estos conceptos como algo totalmente lejano, y es esperanzador ver que hoy ya son una realidad.&lt;/p&gt;
&lt;p&gt;Por eso este tipo de instancias, con espacio para ir a escuchar, pero también para participar activamente y “ensuciarse” las manos, permite no solo aprender, sino que también compartir el conocimiento y las experiencias, de sea cual sea el rol que tienes en la salud (profesional clínico, informático, paciente, familiar).&lt;/p&gt;
&lt;p&gt;Un aspecto súper positivo fue el apoyo que se consiguió de AWS, ya que no solo nos facilitaron cuentas para utilizar gratis sus diferentes herramientas durante el periodo del evento, también estaban los “amigos Amazon” como los llamamos con Nico, monitores que nos enseñaron en simples pasos a usar las herramientas y nos resolvían cualquier duda que tuviésemos sobre ellas.&lt;/p&gt;
&lt;p&gt;En cuanto a las herramientas de AWS, nos llevamos una grata sorpresa. Amplify se ve muy robusto para crear aplicaciones, mientras que las herramientas de SageMaker nos facilitaron mucho la vida a la hora de crear el modelo predictivo, nos resultó infinitamente más sencillo que haber creado nosotros mismos los modelos.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7f8f128efb34e31d00bb66dbdddb6062/29007/eli-nico-trabajando.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 48.734177215189874%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsSAAALEgHS3X78AAACbUlEQVQozwFiAp39AGh9eF1lY46RjYuepYSbnGJ4eXSLjG6HjqG8wN3w8qvC0Yqgt8jc5LvS3cTd5Ka+y3aKm4iWnYKLkH+GiQB1kItrcnCcn5ugsbSNpZ98ioeRsKt1kZOWsrLD5vGatsmessPM5e+90uDF5/KoxdN9jpmUn6KRmZqPlpUAWWNlV2JmeoKElJ+dkaSheH6BprWygJWZobiyjaSvb4CRvsHLtczWtszWw9rkmrG+fYqSk5uckJaVjpSRAFZrcGFmXH95aKGajnl+gh8vQnB0faKsrnuRmlltgnN7j8bBza+/yZasvJywvoWWooSSlpKbmoyTkYyTjwCrsq+LgG5zbl9pa2dLUVpLUFpvdoGHmKF5j510hZZ4gpJ3hphWb4hHYX08WHRGX3SBj5CJlY6CjomDjYcANjQwNDY0Ojs8VVxhaWlpbG5xcHd9Y2hwUl9xYWh4SFNmbmh6S1luQFVqPlJkXGt2oquuq7W2e35+eX99AFpPQ1FEOE9DPGBUUDU2Ox4pNTY0QmpmdFpeaFVYZGdrd4RnbzhEVjJCU2VcWnJjW2RcWWFhY2FiZHJ1dQAjJCIRHiQPFR1UREI/O0AjKzdRVmFiW1pLPzprYFpyb21lXFc2NT4+QUpycW98cmeIb1d8YUdiTj1LQDcADBYZFxsaMS0lVj8tZ0kzU05MUFxqTTwvYkgwl3hZf2VPZVlMb1Q9RUFAN0lZQ1hoUF1kZmRddWJMNzEsAEI3I0Y4JIdmPoltTEI1J3ZbQIFkRnpVKpNpPJVvTIRdO45lQIxlQpd8Zn51bzEzNSo6Ryg5RBwmLBkiJCnoED4yRImRAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli y Nico trabajando con vista al mar&quot;
        title=&quot;Eli y Nico trabajando con vista al mar&quot;
        src=&quot;/static/7f8f128efb34e31d00bb66dbdddb6062/f058b/eli-nico-trabajando.png&quot;
        srcset=&quot;/static/7f8f128efb34e31d00bb66dbdddb6062/c26ae/eli-nico-trabajando.png 158w,
/static/7f8f128efb34e31d00bb66dbdddb6062/6bdcf/eli-nico-trabajando.png 315w,
/static/7f8f128efb34e31d00bb66dbdddb6062/f058b/eli-nico-trabajando.png 630w,
/static/7f8f128efb34e31d00bb66dbdddb6062/40601/eli-nico-trabajando.png 945w,
/static/7f8f128efb34e31d00bb66dbdddb6062/78612/eli-nico-trabajando.png 1260w,
/static/7f8f128efb34e31d00bb66dbdddb6062/29007/eli-nico-trabajando.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nos hubiese encantado participar de todas las instancias, las charlas, los paneles, el espacio de la innovación, pero estábamos sumergidos en intentar hacer lo mejor posible en el track que elegimos. Así que ahora nos queda la tarea de ver las grabaciones.&lt;/p&gt;
&lt;p&gt;Como en cualquier situación de la vida, hubo cosas mejorables, pero lo más importante fue que los organizadores lograron hacer esto realidad. Había momentos en que estuvimos súper perdidos sin saber cómo continuar, y qué debíamos entregar, pero con Nico nos reíamos pensando en que por algo se llamaba “Emprendethon”, cuando emprendes todo es medio incierto, no necesariamente sabes lo que tienes que hacer, y así estábamos nosotros.&lt;/p&gt;
&lt;p&gt;Sentimos que logramos el objetivo, partimos intentando plasmar cómo se recogen los datos ingresados por un usuario, se guardan estandarizados y luego se consultan para su uso primario. Después, continuamos con lo que se puede hacer si esos datos se procesan y se utilizan para crear herramientas que aporten en cierta forma a mejorar algún aspecto de la salud.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/eac026d636760f092adc8d235857d83d/47498/preview.jpg"></media:content></item><item><title><![CDATA[Nuestra experiencia en la Connectathon 2023]]></title><description><![CDATA[Año 2020. Con Eli comenzamos a escribir el “Blog de Nessy”. Para uno de los primeros artículos, ella armó un diseño en Canva para el Blog…]]></description><link>https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2023/</link><guid isPermaLink="false">https://blog.codeness.io/nuestra-experiencia-en-la-connectathon-2023/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Wed, 11 Jan 2023 11:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Año 2020. Con Eli comenzamos a escribir el “Blog de Nessy”. Para &lt;a href=&quot;/estandares-interoperabilidad/&quot;&gt;uno de los primeros artículos&lt;/a&gt;, ella armó un diseño en Canva para el Blog sobre interoperabilidad.&lt;/p&gt;
&lt;p&gt;Casi 3 años después, ese mismo diseño aparece en una de las diapositivas de la “Connectathon”, evento sobre interoperabilidad en salud. Este detalle solo lo notamos nosotros, no tenemos ni idea cómo llegó ahí. Pero es una anécdota que nos hizo partir el evento con mucha motivación 💪&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/3a17fa6d82a9b1e1de33a16ebe51ded1/ff72e/20230109_102632.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 68.9873417721519%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQBAv/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABq7YSLWb/AP/EABkQAAIDAQAAAAAAAAAAAAAAAAEQAAIRE//aAAgBAQABBQILpdkbP//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAEDAQE/AVf/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAADAAAAAAAAAAAAAAAAAAAQIEH/2gAIAQEABj8CET//xAAbEAACAwADAAAAAAAAAAAAAAAAAREhMVGRof/aAAgBAQABPyG2r0gaXnUiSE95ENaP/9oADAMBAAIAAwAAABDjH//EABcRAQADAAAAAAAAAAAAAAAAAAABEVH/2gAIAQMBAT8QlXH/xAAXEQEAAwAAAAAAAAAAAAAAAAAAARFR/9oACAECAQE/EFTr/8QAHBABAQACAgMAAAAAAAAAAAAAAREAITFhUZHR/9oACAEBAAE/ECuQTxpMJGWzi5KJdK+5A3db0zIkDGiM95WEvZn/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;En las diapositivas aparece una imagen que armó Eli con Canva&quot;
        title=&quot;En las diapositivas aparece una imagen que armó Eli con Canva&quot;
        src=&quot;/static/3a17fa6d82a9b1e1de33a16ebe51ded1/828fb/20230109_102632.jpg&quot;
        srcset=&quot;/static/3a17fa6d82a9b1e1de33a16ebe51ded1/ff44c/20230109_102632.jpg 158w,
/static/3a17fa6d82a9b1e1de33a16ebe51ded1/a6688/20230109_102632.jpg 315w,
/static/3a17fa6d82a9b1e1de33a16ebe51ded1/828fb/20230109_102632.jpg 630w,
/static/3a17fa6d82a9b1e1de33a16ebe51ded1/0ede0/20230109_102632.jpg 945w,
/static/3a17fa6d82a9b1e1de33a16ebe51ded1/3ac88/20230109_102632.jpg 1260w,
/static/3a17fa6d82a9b1e1de33a16ebe51ded1/ff72e/20230109_102632.jpg 2964w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si participaste en la organización del evento, ¡Muchas gracias! La pasamos muy bien, aprendimos mucho y conocimos a más personas con intereses similares.&lt;/p&gt;
&lt;p&gt;Nota: nosotros participamos en el track de “Emprendethon”, así que las observaciones y comentarios serán como asistentes a esa experiencia, que puede ser diferente al resto.&lt;/p&gt;
&lt;h2&gt;Nuestras impresiones del evento “Connectathon”&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;¿Qué es la Connectathon?&lt;/strong&gt; Es un evento que reúne a decenas de proveedores y emprendedores del mundo clínico en un periodo de varios días, los que variaran según el organizador. En el transcurso de este evento, son puestas a prueba en la práctica las funcionalidades de interoperabilidad de los diferentes sistemas — &lt;a href=&quot;https://hl7chile.cl/connectathon-chile/&quot;&gt;Fuente&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No sé tú, pero muchas veces en la vida me han recomendado series o películas que terminaron siendo menos de lo que esperaba. Creo que las expectativas previas que tienes sobre acontecimientos son también parte del evento en sí.&lt;/p&gt;
&lt;p&gt;En este caso, nos preparamos para poder estar la semana completa. Eli, que trabaja para &lt;a href=&quot;https://continuumhq.com/&quot;&gt;Continuum&lt;/a&gt;, asistió como representante de la vertical salud, para poder adquirir conocimientos importantes tanto para ella como para la empresa (uno de los muchos beneficios de trabajar en un lugar centrado en las personas), así que debió gestionar con su equipo como se continuaría avanzando en su ausencia. Por mi lado, trabajo independiente, así que adelanté trabajo las semanas previas para tener la semana disponible.&lt;/p&gt;
&lt;p&gt;Para la estadía, coordinamos con mi mamá, que tiene una cabañita en Laguna Verde, y así estar más “cerca” del sitio del evento. Hace años que no me despertaba antes de las 7 am para trabajar 😂, además resulta toda una experiencia trasladarse 1 hora con computadores y pendones en las veloces &lt;a href=&quot;https://www.tiktok.com/@the_gabriel01/video/7134030826488089862&quot;&gt;micros de Valparaíso&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Imagina lo enojado que estaría si el evento no hubiese cumplido mis expectativas 😅. La verdad es que me ha gustado mucho el evento, y definitivamente volvería a ir para ediciones futuras.&lt;/p&gt;
&lt;p&gt;Siendo un poco más concreto, estas son mis observaciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programa:&lt;/strong&gt; el programa del evento fue compartido con nosotros con anticipación. Entonces, en todo momento, sabíamos más o menos qué cosas venía. O el menos Eli. Yo soy de esos que no leen las instrucciones en los juegos (y, aun así, no me perdí… creo). El track de Emprendethon estuvo extraño: partió muy básico, pero finalizó con alta complejidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logística:&lt;/strong&gt; siento que hubo más coffee breaks de lo planeado, lo cual es bueno 😂. Esto no afectó las actividades planificadas, ya que todos los días terminamos a la hora y tuvimos tiempo suficiente para realizar las actividades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Servicios:&lt;/strong&gt; coffee break un 7. Los jóvenes que nos registraban también, eran muy atentos. Además, siempre estaba todo muy limpio, el personal de aseo higienizaba con mucha frecuencia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ambiente:&lt;/strong&gt; se sentía mucha buena onda y motivación. Vi muchas personas saltándose los coffee breaks para poder seguir programando, ¿quién hace eso?. También fue genial ver personas de las que he aprendido tanto, como miembros del capítulo de HL7 y profesores del CENS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aprendizaje&lt;/strong&gt;: fue una grata sorpresa tener una pincelada de algunos de los servicios de AWS. Por el lado de FHIR, si bien teníamos cierta experiencia con FHIR, no habíamos interactuado con un servidor que implementara los perfiles del Core de Chile. En consecuencia, tuvimos que seguir las guías de implementación (esto sí que lo leí 😅) y sufrimos con el caso de uso de la Emprendethon. Aquí la culpa es compartida: algunos aspectos técnicos del servidor no funcionaban bien, detalles del enunciado ambiguos y cosas que nosotros no manejábamos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Nuestros puntos de frustración durante la Emprendethon&lt;/h2&gt;
&lt;p&gt;El track de Emprendethon tenía dos componentes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Utilizar el estándar HL7 FHIR para registrar información de un paciente, una organización, un profesional y algunos diagnósticos.&lt;/li&gt;
&lt;li&gt;Construir una pequeña aplicación desplegada con AWS Amplify que consumiera estos datos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Me gustaría comentar puntos de “dolor” que tuvimos al desarrollar estos dos componentes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Las charlas iniciales del “Emprendethon” eran introductorias, al contrario de lo que entendimos de la descripción del track. Llegamos a pensar que deberíamos haber ido a otro, hasta que llegamos a la parte práctica, donde el caso de uso se volvió más complejo de lo que pensamos.&lt;/li&gt;
&lt;li&gt;No había instrucciones muy claras respecto a lo que debíamos hacer técnicamente hablando. Teníamos que crear un recurso FHIR Bundle, pero no había claridad del tipo. Asumimos por un taller previo de historia clínica que debíamos usar un “document” enviando un “composition”. Cuando nos dijeron que no iba el &lt;em&gt;composition&lt;/em&gt;, cambiamos a tipo “collection”, pero ninguna de estas opciones eran aceptadas por el servidor. Las instrucciones verbales fueron confusas, y finalmente, luego de ensayo de error y con la bendición de nuestro guía, usamos el tipo “transaction”.&lt;/li&gt;
&lt;li&gt;Todo lo anterior hizo que se nos fuera mucho tiempo entendiendo el alcance del proyecto, sus restricciones y los parámetros con los cuales nos evaluarían. Por lo mismo, gastamos mucho tiempo intentando modelar todo el caso de uso con recursos FHIR, hasta que nos dijeron que utilizáramos solo un subconjunto de toda la información.&lt;/li&gt;
&lt;li&gt;El servidor FHIR que usamos tenía ciertos problemas técnicos. El día 1, los pacientes de ejemplo del Core no pasaban la validación ($validate). Eso hizo que nos preguntáramos si estábamos haciendo algo mal o si era problema del servidor.&lt;/li&gt;
&lt;li&gt;El servidor FHIR que nos disponibilizar usa HTTP, mientras que AWS Amplify fuerza HTTPS. Eso significa que la aplicación que subiéramos no iba a funcionar por un error de seguridad. Nos dimos cuenta al final, cuando quedaban 15 minutos.&lt;/li&gt;
&lt;li&gt;En la presentación final mostraron estadísticas de creación de recursos para nuestro track, las cuales estaban desactualizadas. Logramos crear al menos 4 recursos de “Condition” (se dijo que fueron 0 entre todos los grupos), pero al mismo tiempo, mostraron capturas de pantallas de dos aplicaciones que los rescataban (entre esas, una era la nuestra 🙌).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esto no es un reclamo, simplemente fueron las cosas que nos costaron o frustraron. En este tipo de actividades siempre estamos expuestos a este tipo de situaciones, así que estábamos mentalizados. Por ejemplo, logramos “solucionar” el problema número 5 utilizando un “proxy” (con Heroku, eso sí, estábamos apurados).&lt;/p&gt;
&lt;p&gt;Nota: tenemos cierta experiencia con el estándar, nos sabemos mover por la documentación y sabemos hacer las consultas.&lt;/p&gt;
&lt;h2&gt;El resultado de nuestra participación en estos dos días&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7f8f128efb34e31d00bb66dbdddb6062/29007/Untitled.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 48.734177215189874%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsSAAALEgHS3X78AAACbUlEQVQozwFiAp39AGh9eF1lY46RjYuepYSbnGJ4eXSLjG6HjqG8wN3w8qvC0Yqgt8jc5LvS3cTd5Ka+y3aKm4iWnYKLkH+GiQB1kItrcnCcn5ugsbSNpZ98ioeRsKt1kZOWsrLD5vGatsmessPM5e+90uDF5/KoxdN9jpmUn6KRmZqPlpUAWWNlV2JmeoKElJ+dkaSheH6BprWygJWZobiyjaSvb4CRvsHLtczWtszWw9rkmrG+fYqSk5uckJaVjpSRAFZrcGFmXH95aKGajnl+gh8vQnB0faKsrnuRmlltgnN7j8bBza+/yZasvJywvoWWooSSlpKbmoyTkYyTjwCrsq+LgG5zbl9pa2dLUVpLUFpvdoGHmKF5j510hZZ4gpJ3hphWb4hHYX08WHRGX3SBj5CJlY6CjomDjYcANjQwNDY0Ojs8VVxhaWlpbG5xcHd9Y2hwUl9xYWh4SFNmbmh6S1luQFVqPlJkXGt2oquuq7W2e35+eX99AFpPQ1FEOE9DPGBUUDU2Ox4pNTY0QmpmdFpeaFVYZGdrd4RnbzhEVjJCU2VcWnJjW2RcWWFhY2FiZHJ1dQAjJCIRHiQPFR1UREI/O0AjKzdRVmFiW1pLPzprYFpyb21lXFc2NT4+QUpycW98cmeIb1d8YUdiTj1LQDcADBYZFxsaMS0lVj8tZ0kzU05MUFxqTTwvYkgwl3hZf2VPZVlMb1Q9RUFAN0lZQ1hoUF1kZmRddWJMNzEsAEI3I0Y4JIdmPoltTEI1J3ZbQIFkRnpVKpNpPJVvTIRdO45lQIxlQpd8Zn51bzEzNSo6Ryg5RBwmLBkiJCnoED4yRImRAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli y Nico trabajando con el mar de fondo&quot;
        title=&quot;Eli y Nico trabajando con el mar de fondo&quot;
        src=&quot;/static/7f8f128efb34e31d00bb66dbdddb6062/f058b/Untitled.png&quot;
        srcset=&quot;/static/7f8f128efb34e31d00bb66dbdddb6062/c26ae/Untitled.png 158w,
/static/7f8f128efb34e31d00bb66dbdddb6062/6bdcf/Untitled.png 315w,
/static/7f8f128efb34e31d00bb66dbdddb6062/f058b/Untitled.png 630w,
/static/7f8f128efb34e31d00bb66dbdddb6062/40601/Untitled.png 945w,
/static/7f8f128efb34e31d00bb66dbdddb6062/78612/Untitled.png 1260w,
/static/7f8f128efb34e31d00bb66dbdddb6062/29007/Untitled.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Analizando el resultado concreto, nos fue bastante bien. Logramos crear los recursos FHIR correspondientes (Patient, Organization, Practitioner, Condition), creamos una mini aplicación que mostraba la información del paciente obteniéndola desde el servidor, y también pudimos desplegarla en AWS Amplify.&lt;/p&gt;
&lt;p&gt;Gracias a esto, mostraron una captura de nuestra web en la presentación final 🎉 Sin embargo, nos fuimos con un sabor un poco amargo, teníamos expectativas personales mayores. Queríamos hacer un frontend mucho más bonito y con más funcionalidades, pero al menos cumplimos con el MVP 😂&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/515fa5a42aa0a4bd7b833cafd1f2cb85/b5666/Screen_Shot_2023-01-11_at_00.42.00.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 33.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABYlAAAWJQFJUiTwAAAA1ElEQVQoz52Quw7CMAxFQ/+BMjMhYGNCYkNiQOKvWSiv8hCIL+hQdWrSAk2aS5zyLHTB0pGd69zYCusOJ2j2Rmj1x3DbA7B6G06jg5r7winlcu8dNp158JYbbA8n+PsjvNUW8/UOC39vobqM1R+Ys3fXycuUlJAyA7TGV/zSigaqgsVxjCzLLFIpKIM0Q5IkAecCQghbUxaiyOfzxd6/kkeqAuMjjdEFbTYh8jy3D2pdvUGxuP7wEFSTl4VhiCAILFEUWfHfoEcZ5xwP0jR9TvwH+qobUc7pDOn4UCoAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Captura de la aplicación&quot;
        title=&quot;Captura de la aplicación&quot;
        src=&quot;/static/515fa5a42aa0a4bd7b833cafd1f2cb85/f058b/Screen_Shot_2023-01-11_at_00.42.00.png&quot;
        srcset=&quot;/static/515fa5a42aa0a4bd7b833cafd1f2cb85/c26ae/Screen_Shot_2023-01-11_at_00.42.00.png 158w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/6bdcf/Screen_Shot_2023-01-11_at_00.42.00.png 315w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/f058b/Screen_Shot_2023-01-11_at_00.42.00.png 630w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/40601/Screen_Shot_2023-01-11_at_00.42.00.png 945w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/78612/Screen_Shot_2023-01-11_at_00.42.00.png 1260w,
/static/515fa5a42aa0a4bd7b833cafd1f2cb85/b5666/Screen_Shot_2023-01-11_at_00.42.00.png 3118w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;center&gt;Captura de nuestra aplicación, el equipo Co-Co 🥥 (Continuum + Codeness).&lt;/center&gt;
&lt;hr&gt;
&lt;p&gt;Ahora estamos preparándonos para los próximos 3 días. Seguiremos en el track Emprendethon, ahora acogidos por la Datathon. No sabemos qué nos espera, sin embargo, seguiremos con la motivación para continuar aprendiendo 🤓.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/7d82941d51a5b395432443e70555731e/47498/preview.jpg"></media:content></item><item><title><![CDATA[¿Cómo montar un servidor FHIR en Google Cloud?]]></title><description><![CDATA[Como desarrollador de software en salud, hace tiempo le eché un ojo a Cloud Healthcare API de Google, que según la página te permite…]]></description><link>https://blog.codeness.io/montando-fhir-en-google-cloud/</link><guid isPermaLink="false">https://blog.codeness.io/montando-fhir-en-google-cloud/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 06 Oct 2022 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Como desarrollador de software en salud, hace tiempo le eché un ojo a &lt;a href=&quot;https://cloud.google.com/healthcare-api&quot;&gt;Cloud Healthcare API&lt;/a&gt; de Google, que según la página te permite almacenar y gestionar datos en formato &lt;a href=&quot;/que-es-hl7-fhir/&quot;&gt;FHIR&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Al fin me di el tiempo de hacer una pequeña prueba. Aquí está el paso a paso, de manera de que tú también puedas hacerlo.&lt;/p&gt;
&lt;h2&gt;Requisitos&lt;/h2&gt;
&lt;p&gt;Este artículo es algo técnico. Si bien la creación de la instancia FHIR es mediante la interfaz de Google, si quieres probar agregando recursos (por ejemplo, un paciente), tendrás que ejecutar ciertos comandos.&lt;/p&gt;
&lt;p&gt;Para crear el recurso, necesitarás usar &lt;a href=&quot;https://www.postman.com/&quot;&gt;Postman&lt;/a&gt;, así que tenlo instalado si aún no lo haces.&lt;/p&gt;
&lt;p&gt;Nota: &lt;a href=&quot;https://www.postman.com/&quot;&gt;Postman&lt;/a&gt; es una aplicación que te permite interactuar con APIs. Es una manera sencilla de hacerlo, ya que no necesitas escribir comandos en la consola. Todo lo haces mediante una interfaz gráfica.&lt;/p&gt;
&lt;h2&gt;Paso a Paso para tener tu servidor FHIR andando&lt;/h2&gt;
&lt;h3&gt;1) Activar tu cuenta en Google Cloud&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Nota: si ya has usado Google Cloud, este paso no es necesario.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lo primero que tienes que hacer es entrar a &lt;a href=&quot;https://console.cloud.google.com&quot;&gt;https://console.cloud.google.com&lt;/a&gt; para activar tu cuenta en Google Cloud.&lt;/p&gt;
&lt;p&gt;Aquí tendrás que aceptar las condiciones, y con esto estás OK.&lt;/p&gt;
&lt;h3&gt;2) Crear un proyecto en Google Cloud&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Nota: si ya tienes un proyecto donde quieres montar tu servidor FHIR, no necesitas crear uno nuevo.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tienes que &lt;a href=&quot;https://console.cloud.google.com/projectcreate&quot;&gt;crear un proyecto&lt;/a&gt;, y debes colocarle un nombre que represente tu proyecto.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 551px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/53d6ff54b33c28b37afefce463657e6d/db783/project.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 42.405063291139236%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAABIklEQVQoz5VRQVKEMBDkqf7AZ3j3Dd48efXixS9YxborSGGVEsJCKAiQTGgzEVbddQ+mqjNVmZrunnQ0DAPSNEWSJCiKAkQEYyystTBnYH+BME0GSik45xBprZHnObIsC4TOzSDfYLgTUACTWKJAyO/MEceb8B5xo+s6sNO2bSGEQF3X2HtIKVFVVRCSsoSsNWQzfZH6Od5mrXzmeUbE1ziOYZCVaFH+CWPMYT3GsfN5cR8IlWqx3b0g3jyHfxRlGYaI3EH9GKsQk6huwu6t9+4HOLLeIU0weg9nWu+yRN00YJG+7wPhaQjfgXGdfIB6MBh9MCGUp1Tj5l7g9kFA7DVa1aBZElv/5dz5qxXdPVa4uNri8jrF68eAUryHtVey/+ITa4Jr2OQqczwAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Yo le coloqué nessy-fhir-test&quot;
        title=&quot;Yo le coloqué nessy-fhir-test&quot;
        src=&quot;/static/53d6ff54b33c28b37afefce463657e6d/db783/project.png&quot;
        srcset=&quot;/static/53d6ff54b33c28b37afefce463657e6d/c26ae/project.png 158w,
/static/53d6ff54b33c28b37afefce463657e6d/6bdcf/project.png 315w,
/static/53d6ff54b33c28b37afefce463657e6d/db783/project.png 551w&quot;
        sizes=&quot;(max-width: 551px) 100vw, 551px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Una vez creado, te llevará a un panel con mucha información:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/38f330c42cbc350afa51c0d88860861b/d74fe/project-dashboard.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 44.93670886075949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAABYUlEQVQoz1WS207DMBBE/f/fhXjjFYEQotCm5OKkzsWX2EmGHSOjstIq7nZyPDut+jhrnC9XzNMEHwLGcYQxPK+wzqEfBrSdRt12aKQ73UPL7GZMbica7zy8D/h8HaGeX97w8PiEbrBgreuKaztBGwFah2WesSwL+r7HLOcYY9aUdkFga8Awe/Sjg4obsB2Q4YHjOLBtG7TWGUAQq8zpno5SStj3Pbc2A94vJ5y+v3BuKijvxbJ0kptZFBPUNI2sbv4BCaNLPgswxYSJMd0Mgqyt+PIgmQTJrwC996jr+g/IIpAAwssF/EwtGfMy5w2UtTavV4DMKAcdIoLkEdMhLxKQsoZ6NvMjlMD7eBQHzKwM6JBrmcmh6yd5BqRtz0A6KxEUl9QT2LZtPiu6IbAMCjDIRc5ZbClmGB2V79n32fqs/c01A5nhJP/DkhUvqKoqi0oxCm7BnLgyoZyVH5EmCPwBAEm5iTeovkwAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Dashboard de un proyecto en GCP&quot;
        title=&quot;Dashboard de un proyecto en GCP&quot;
        src=&quot;/static/38f330c42cbc350afa51c0d88860861b/f058b/project-dashboard.png&quot;
        srcset=&quot;/static/38f330c42cbc350afa51c0d88860861b/c26ae/project-dashboard.png 158w,
/static/38f330c42cbc350afa51c0d88860861b/6bdcf/project-dashboard.png 315w,
/static/38f330c42cbc350afa51c0d88860861b/f058b/project-dashboard.png 630w,
/static/38f330c42cbc350afa51c0d88860861b/40601/project-dashboard.png 945w,
/static/38f330c42cbc350afa51c0d88860861b/d74fe/project-dashboard.png 1164w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;3) Habilitar Cloud Healthcare API&lt;/h3&gt;
&lt;p&gt;Google Cloud Platform es un producto de Google… Así que la forma más fácil de navegar por la herramienta es usando el buscador.&lt;/p&gt;
&lt;p&gt;Arriba, en la barra de search, coloca “healthcare”, debería salirte algo así:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9c760a58cf0096c3ca2560a47ebc2f6e/35a31/search-healthcare.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 28.48101265822785%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABKUlEQVQY021Q7W6CMBTl/R9kUYwgggTcMhf3CID+2/6N8RUoFMECnt3WuWiyJidtb+89PedodcVQFgV426IsS2RZTsjAeQNW11SrkKYpajqfz+cHcN7iIz7hM+YoiKOqKmg1F6gaATFMkCtJUqxsHxv/DdvnF4RhiNOpA2M1hmFQPZfL5WHP8gK71x3e93torB1QMIGuH9Xjd5JgrhswrQ3MlYUgCBRhSqq7rkPf9wrjOP4R5nkO3VziaTmHNtDDRPVxvCqUdk3DwGKhYzab4XA4oKU45NA0XXtu6u4JbccmITq0pqGsGIMQ4tdyAs/zYFkWdGqIokgRfsWxyu1fyyRi62/hez40Gbgku/0u767rwiCVEsfjURGVFLi0ea/uNiMJHcfBer3GDyShu/Srf7HqAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Aparece &amp;quot;Products &amp;amp; Pages&amp;quot;, la primera opción es &amp;quot;Healthcare&amp;quot;&quot;
        title=&quot;Aparece &amp;quot;Products &amp;amp; Pages&amp;quot;, la primera opción es &amp;quot;Healthcare&amp;quot;&quot;
        src=&quot;/static/9c760a58cf0096c3ca2560a47ebc2f6e/f058b/search-healthcare.png&quot;
        srcset=&quot;/static/9c760a58cf0096c3ca2560a47ebc2f6e/c26ae/search-healthcare.png 158w,
/static/9c760a58cf0096c3ca2560a47ebc2f6e/6bdcf/search-healthcare.png 315w,
/static/9c760a58cf0096c3ca2560a47ebc2f6e/f058b/search-healthcare.png 630w,
/static/9c760a58cf0096c3ca2560a47ebc2f6e/40601/search-healthcare.png 945w,
/static/9c760a58cf0096c3ca2560a47ebc2f6e/35a31/search-healthcare.png 1028w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Selecciona la primera opción, que dice “Healthcare data storage and processing”, lo cual te llevará a la siguiente pantalla:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9c3ace0543da8c0cb5d967d0ca9071ba/e185b/ch_api.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABTklEQVQoz4VSy07DMBDMd/ML/AJnJMQvIIGQOEHU0vTAiYcQaUnTKHXs2E5sD143qRqatitNLNub2V3PRLqx0EpBSgnlV2v9XmvUtQxnhLZtYYzxq4FuGjjncCwiLjQ26xxFXqAoikC2YQxZtsIqzwOItPFEVLCqeChKpNbD/UN0UKK72A8i6OFGSAaE1rpA0rHhxDRdvTOElNQah4fpBlzCj7rEdDLBfJ4gfnlGHMdIkgSz2Qxpmo6SDt6QPmne4PJmiY+FhtIGnwuBdCXx/SvAuPaCtEEYGvlc11F/8J4q/6MLojBeg3uQ0kLQWu8UF0LsUFVVyN8njQ4tYDx8kvPdKukttUVvKyLfL0DqDwj7Db0jxeMrw8XVD67v1iC9Sm7Baru7Pzby4A2DNbrDty+B2/sMT0kZTFwyhbLyxlfNUWUPOhyrNN7J1lqn4g87C1uEIx3O7wAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cloud Healthcare API, con un botón de &amp;quot;Enable&amp;quot;&quot;
        title=&quot;Cloud Healthcare API, con un botón de &amp;quot;Enable&amp;quot;&quot;
        src=&quot;/static/9c3ace0543da8c0cb5d967d0ca9071ba/f058b/ch_api.png&quot;
        srcset=&quot;/static/9c3ace0543da8c0cb5d967d0ca9071ba/c26ae/ch_api.png 158w,
/static/9c3ace0543da8c0cb5d967d0ca9071ba/6bdcf/ch_api.png 315w,
/static/9c3ace0543da8c0cb5d967d0ca9071ba/f058b/ch_api.png 630w,
/static/9c3ace0543da8c0cb5d967d0ca9071ba/e185b/ch_api.png 691w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Y ahí le das clic a “ENABLE” (o habilitar).&lt;/p&gt;
&lt;h3&gt;4) Habilitar Billing&lt;/h3&gt;
&lt;p&gt;Es probable que te aparezca el siguiente mensaje:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/3c93f0028d8f0d7834b9a6e5ff535624/e35ec/billing-required.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.59493670886076%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAAByUlEQVQoz42T746aQBTFeee+Qh+gm+q2rlYExIKoyABiP5iuRo3v0DRGdiO49e+HJrTN9nTuNZCmtrGEX+7MnZmTcy+DYjk+hO+jbVuwJa2WCcuyGMdxMBgMEIbhf6O8eGnD9QJU6wZu7zS8uWvAaDZhmia63S6GwyGLRlHE8RqKanqs7PY9pu8JeJ4HIeS430ev12NInPLXHCsfhucNviybEMKHJ4SMosjlBEHwT8E8rwTFZAAad3oCtkNufS7zGrlQIRhFf/YhLBxTiQSVTtF13Qto3++iimnL8vyQFzudTnF4MpkgjmMsl0usViuOaZpis9kwNN7tdpjNZnymcEgl8seQSRIlMbou0+kUp9MJSZIUAn97FouFvG4295f6rrTb9kXjyel4PEaWZdhutzgcDjgejzLucdjvOW63T/j+LWOHJJi3SNE0nRNEfpk1TcNoNLpw8+MZkC+efwJfs3NuPp/zuUJQ13WoqopGo1HESqXCd4/crddrJk0TxI8pHh4TrB7W+PQ5Rrr5gvv7j7IiB2FAFYqzoGEYTFP+ITQn0VqthnK5zJRKJVSrVbluQK3XcXPzCq/LFdy+fQdVt/DedtGSWO0+fgFyr/63JQ6howAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cloud Healthcare API requires a project with a billing account.&quot;
        title=&quot;Cloud Healthcare API requires a project with a billing account.&quot;
        src=&quot;/static/3c93f0028d8f0d7834b9a6e5ff535624/f058b/billing-required.png&quot;
        srcset=&quot;/static/3c93f0028d8f0d7834b9a6e5ff535624/c26ae/billing-required.png 158w,
/static/3c93f0028d8f0d7834b9a6e5ff535624/6bdcf/billing-required.png 315w,
/static/3c93f0028d8f0d7834b9a6e5ff535624/f058b/billing-required.png 630w,
/static/3c93f0028d8f0d7834b9a6e5ff535624/e35ec/billing-required.png 861w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Así que tienes que habilitar el “Billing” en tu proyecto. Lo bueno es que te dan 300 USD en créditos gratuitos que podrás usar en los próximos 90 días.&lt;/p&gt;
&lt;p&gt;Lo malo es que igual necesitas colocar una tarjeta de crédito.&lt;/p&gt;
&lt;p&gt;Sin embargo, esta prueba no te consumirá recursos para que tengas que pagar de tu bolsillo.&lt;/p&gt;
&lt;h3&gt;5) Crear tu instancia FHIR&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Nota: en adelante, me cambié de cuenta para no activar los créditos gratuitos. Así que ahora el proyecto se llama “apposito-Dev” y no “nessy-fhir-test”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ahora tenemos todo lo necesario para crear una instancia FHIR. Puedes ver &lt;a href=&quot;https://cloud.google.com/healthcare-api/docs/how-tos/fhir?hl=es-419&quot;&gt;la guía oficial&lt;/a&gt;, que está bien explicada para más detalles.&lt;/p&gt;
&lt;p&gt;Te voy a explicar con mis palabras lo que vamos a hacer a continuación:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crear un “Dataset” (conjunto de datos). Un Dataset es un conjunto de datos donde vivirán tus instancias de FHIR. Dependiendo del proyecto, puede que necesites tener más de un servidor FHIR, y esta es una manera de agruparlos.&lt;/li&gt;
&lt;li&gt;Crear un “Datastore”. Un Datastore es un almacén de datos, y corresponderá a tu instancia FHIR.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En otras palabras, para crear una instancia de FHIR (almacén de datos, Datastore), necesitas colocarlo dentro de un conjunto de datos (Dataset). Así que…&lt;/p&gt;
&lt;p&gt;Lo primero que tienes que hacer es crear un dataset:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d29ab46115dbfe10895a642e052b584a/77800/create-dataset.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 77.84810126582278%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAAB+klEQVQ4y5VU3W7TMBjNmwzEHeJiQtoD8FIILkAg7QrxHjwIQkjcANuoaKnWTlsb57dJk9hObOfsi7NAlqarsHTyJfHn4/N9PolzchrgxccIJ6c+nr1leP7ew/E7hqdvPDx+5eHJa58iw9FLF48IRwfgfJ+u8e18gfPLAEtfEjhmK46LRYyvZ1f48mOBn/MAl57EnHGCeBDONlfY5hXKykBpoFLoDUOo8T/D8WMBL8pRSANeAqICCiERxTGSdIuQYl5wS2vqdot7qHuRLk62TRAGPrSq/u6SBwEWvyZYTae4nkwQL5cwRKyiCHoEivLrsmwVKqUgZUnstE9dWyXa91HO51CrNeC6MC6zixS9t3EIxmCkbAn79dd1269SCKSUpDmVSveoqi7B5uygt94ZTjZjm2X4PZuBeR7WRHyzduF6MTw/xGazQZIkFs19TMjz/B9hX11HKEhVGIZUrWsXCmpJLox1Au7OvcsdVjdKmBUKV9cuoihEWbb91VrdyxvDHsIaigzJmAefDoFTH4uisHGoajh2Su6i0tp6MElTS9S0gHOBxhGtWk0wLei5ETCqsFHXBK3pVDW31m3M2hJoSziGZkNru309jFKFz2cZ3EiiKqUle6h3XSd2SjZ3M39uOD58WtFPIUOWxmRDdfAb3lMy9ja+M/ChU74FLIzEzM4kdOsAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Interfaz de crear dataset te solicita un nombre y una región&quot;
        title=&quot;Interfaz de crear dataset te solicita un nombre y una región&quot;
        src=&quot;/static/d29ab46115dbfe10895a642e052b584a/f058b/create-dataset.png&quot;
        srcset=&quot;/static/d29ab46115dbfe10895a642e052b584a/c26ae/create-dataset.png 158w,
/static/d29ab46115dbfe10895a642e052b584a/6bdcf/create-dataset.png 315w,
/static/d29ab46115dbfe10895a642e052b584a/f058b/create-dataset.png 630w,
/static/d29ab46115dbfe10895a642e052b584a/77800/create-dataset.png 855w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Tienes que elegir un nombre y una región. Yo le colocaré “test”, y lo crearé en “us-east1”:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 555px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/80b9a1b1aaa5527434b45afccdd3c554/cd039/create-dataset-2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 84.81012658227847%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsSAAALEgHS3X78AAABx0lEQVQ4y61Ty46bQBDkt3NNjvmC3CLlkv9xhOVdm4dhMQHGmIdnhmelu7WQSIls7ypIpRmGVlFd1eO0bQvf9xEEAaIoQhiGOBwOSNMU73mc6/WKzWaD/X6PJElwPB4Rv7wgz3PM84xpmh4G1zt93yOKY9iukz/wIWOkgq7rCd0D6KGNQT8McJi5rhtcLhecz2dRVsq+RFEoaK2FfBhGjOPfGJaVyJjL4Zeqqoi0xv94HFbgeZ4EwvKttbLyubUEo8HBsdcM3mttZM81TdPI3lDLKyGnvCTN63brYrd7RhgXePJOFFJKFiiyoBBbFnsYSikBdymhDENPLxdpmQvKspS/GWPRmhmNpqTnN7RctxbbJ5/GJRR1/56/eU3/HpyWWo/SGqckXv1bvKrJHx6JP8fpLuFILRd5JgPNChsh6V7bNjIOC+GtZyWcyCAOhj1kVUzIRKxyOeP5uqdy9ZAVuK4r6hQPNiX5M8uEaBnYW+hlHdG81tPVG+hmVERWyu3glJU6k0L9ECGD67ieb41zyxMu5HbHG5Dv4/Tbw+fY4PP3Ez59S+AGGrotkWX5+6/e7njFx68BPnzx8cNrYXVFPqrV6EfHZcEvGR4pqSAxWpoAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Le coloqué &amp;quot;Test&amp;quot; y en &amp;quot;us-east1&amp;quot;&quot;
        title=&quot;Le coloqué &amp;quot;Test&amp;quot; y en &amp;quot;us-east1&amp;quot;&quot;
        src=&quot;/static/80b9a1b1aaa5527434b45afccdd3c554/cd039/create-dataset-2.png&quot;
        srcset=&quot;/static/80b9a1b1aaa5527434b45afccdd3c554/c26ae/create-dataset-2.png 158w,
/static/80b9a1b1aaa5527434b45afccdd3c554/6bdcf/create-dataset-2.png 315w,
/static/80b9a1b1aaa5527434b45afccdd3c554/cd039/create-dataset-2.png 555w&quot;
        sizes=&quot;(max-width: 555px) 100vw, 555px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Luego de esperar un momento (1 minuto?), tu “Data Set” estará listo.&lt;/p&gt;
&lt;p&gt;Puedes acceder a tu Dataset, donde verás la opción de crear un “Data Store”:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7687f9fe9fccc47f5acdf8b30fd7af99/f0551/create-data-store.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 41.77215189873418%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAABH0lEQVQoz42QuU4DMRCG/TBQUCGBEA0dTwWi4CpoeDyKEAkIUjaxN2a96+z69o9tkShCrMhIn4/RzD8HOb5d4uKpxuUzx/kjw8kdxdkDxek9xdENxeE1xcHVYm/I5L3CdLbAy+sM87oD7yyYUJhzjcnHEtNPBi4dqNDJ/z+kkR4r4SCkhTIR2gLWAQge3ipY3cM7g32NNJ1CzWWiS2KxYH3EoCyqOnXK1pBSomtb9H1fkkKMoxBrNNpWQIgmhcYfkAoIvKVV8Gad1hBAvzR4a9IkDiFExPg3JB8hhMLGmc1aA85XMEahHxR02kUW8j6MihXB3fl3BfN4jDFUVZW6F0lYJ8z2zr4ck99a6y1krJJzriQMw1Dw3m8nyfz+b/gGrilVOe/5rtwAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;En la vista de tu dataset, puedes crear un Data Store&quot;
        title=&quot;En la vista de tu dataset, puedes crear un Data Store&quot;
        src=&quot;/static/7687f9fe9fccc47f5acdf8b30fd7af99/f058b/create-data-store.png&quot;
        srcset=&quot;/static/7687f9fe9fccc47f5acdf8b30fd7af99/c26ae/create-data-store.png 158w,
/static/7687f9fe9fccc47f5acdf8b30fd7af99/6bdcf/create-data-store.png 315w,
/static/7687f9fe9fccc47f5acdf8b30fd7af99/f058b/create-data-store.png 630w,
/static/7687f9fe9fccc47f5acdf8b30fd7af99/f0551/create-data-store.png 862w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El formulario es guiado, ahí puedes ir seleccionando las opciones que estimes convenientes. Para este ejemplo, a mi instancia FHIR le coloqué como nombre “test”, de tipo “FHIR”, y en “R4” (&lt;a href=&quot;https://core.hl7chile.cl&quot;&gt;la guía de implementación de Core-CL está en FHIR R4&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 623px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7e23f5594084f68813b189218ed582e2/6114d/create-data-store-form.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 120.25316455696202%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsSAAALEgHS3X78AAACVUlEQVQ4y51Vi46iQBD0/z/OGDWing8EFBB5Cyivuqlxx7B6i+xNUkkzAz3VXd3NKM0bZHkOXddhmqYE7VzscbVt+yuM6qaRxv1+R1mWqKpK2nVdoxFnCoMdFsUNURShKAokSQLf96Xj18WXh6zR0rhB27rQFnNoyyUWiwU0TcOyY6/Xa+x2u0EpGDGcOI5xOp1wu93e2NBmGpgCtd/HdlTVrQzZMAycz2cZMuG6rny+XC4yh11His0PDoEgjDCbzbDZbGDbDhzHwfF4lKD9yrg3h01TI01T4cjG9XoVYRfIsqssGyLLMnlOwXj+kSFzk+eZYGPiYFjYmSF0S4QdxtJRHD8cEXT+0WEjHMZpAdMSIToxdLfGOap/DOlzyHWFIClxviRw/AInr0BZUYRWiDGsmLsXybIJowT6wRClY8EyjWf5DF1d1iO0FXSnhLaxcTjssRUFzF6OolDmjTVKQZQozGsX1OAbw/tXmxX5VdYdP6S6D0FiWaNE11bgO28ht00F2y9hOSEC//JUlFC3/yrkWoiSZA1sN4BlifFlWc8xxqLusnkFy6jbRY9eFg6jaw3PT2Te/CBAIMDpQ/AjjrO+kvnGkCE7QYU/e1uIsYMhmHGysIeZNzonQ/Y3be6pfie6A0UyVLMvz1IhiidfCsPw2XaqQwjVjoTafwtZjqavzf9db6LcS6H05SY6pB70cW+nsDTIkrlQ/5Qu1LnC62z857TxPA/z+VzMwy1Wq5Uc//v9HtPpVNrcm0wmGI/HUqxeh+qPx8XbFRPuKQV5abfI+ybOX9BHTKyTM1/zAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Formulario con los datos llenados&quot;
        title=&quot;Formulario con los datos llenados&quot;
        src=&quot;/static/7e23f5594084f68813b189218ed582e2/6114d/create-data-store-form.png&quot;
        srcset=&quot;/static/7e23f5594084f68813b189218ed582e2/c26ae/create-data-store-form.png 158w,
/static/7e23f5594084f68813b189218ed582e2/6bdcf/create-data-store-form.png 315w,
/static/7e23f5594084f68813b189218ed582e2/6114d/create-data-store-form.png 623w&quot;
        sizes=&quot;(max-width: 623px) 100vw, 623px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nota: Las opciones de BigQuery y de Cloud Pub/Sub por ahora puedes omitirlas.&lt;/p&gt;
&lt;p&gt;Le das clic a crear y listo, tendrás tu instancia FHIR creada:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f28a1f3b341f920a91f8b535d2181d43/b97f6/datastore-created.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 36.708860759493675%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAABCUlEQVQoz41Qu07EMBD0b9EgUdEgCvgkmisogD9EEHKJ87jYceLH2sPauosiGm6l0dpja2Z2xf1rhaePCs+Mh7cGj+9N6XeHCjcvX7g91Gccr4Komx51O6A6dlgsYXEEvRLGSaEfRlBMCJTgKcIH+heiVxHt6KGWyGKAsQARYbUOel5gZg0KHikRrikxGwPZ9ZiUKkRKwLI6fP6c8N3MmLRHN2juKydI/J4QOXVMO+zugkKAtfzZ+83FWgspWyxmhjIBkyFOnmBdPJumDfvKd/GXyBXYREqJgXdoWNQ7W8YObGp4IudcCZCRz1rrjRN7t4ugywl5DafJFPG80xConBWv5sJlZJE99wt/AQwFp1D79QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Dataset con la instancia nueva creada&quot;
        title=&quot;Dataset con la instancia nueva creada&quot;
        src=&quot;/static/f28a1f3b341f920a91f8b535d2181d43/f058b/datastore-created.png&quot;
        srcset=&quot;/static/f28a1f3b341f920a91f8b535d2181d43/c26ae/datastore-created.png 158w,
/static/f28a1f3b341f920a91f8b535d2181d43/6bdcf/datastore-created.png 315w,
/static/f28a1f3b341f920a91f8b535d2181d43/f058b/datastore-created.png 630w,
/static/f28a1f3b341f920a91f8b535d2181d43/40601/datastore-created.png 945w,
/static/f28a1f3b341f920a91f8b535d2181d43/b97f6/datastore-created.png 958w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si le das clic, podrás ver más información de tu almacén FHIR:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/fd9a42d6b186bcd42fcdd91902a8aac1/2bef9/datastore-details.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 32.911392405063296%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAAA3UlEQVQoz5WO3WrCQBCF95VaqheFXgm98aGKtSC02JfUJhsTG92su9nf052ESBCKOvDB2ZnZM4fNvzMQsy+O13WB2SfH88cPHt42eEw8LTJMl/lVJu85XlYcLCv22OYlpHY4tQ5CeVS/AhkvEzsIqdDaAG38TbDq4NCoCGXQEbyHdxbWGhjTwibuKbYrKxyPAjE9iKZpwHmBGCN8CAghdvpWmNYqJTG9fWo451I6e14IybQfxXOKsb7ssctGXdeQUnaajIUQ3cFr0K7WGmwcl4qGlHI4Qnr4QPynB8M/P3IMgMXSZAUAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Detalles como ID, type y path&quot;
        title=&quot;Detalles como ID, type y path&quot;
        src=&quot;/static/fd9a42d6b186bcd42fcdd91902a8aac1/f058b/datastore-details.png&quot;
        srcset=&quot;/static/fd9a42d6b186bcd42fcdd91902a8aac1/c26ae/datastore-details.png 158w,
/static/fd9a42d6b186bcd42fcdd91902a8aac1/6bdcf/datastore-details.png 315w,
/static/fd9a42d6b186bcd42fcdd91902a8aac1/f058b/datastore-details.png 630w,
/static/fd9a42d6b186bcd42fcdd91902a8aac1/40601/datastore-details.png 945w,
/static/fd9a42d6b186bcd42fcdd91902a8aac1/2bef9/datastore-details.png 1024w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Lo más importante de aquí es el “path”, ya que lo usarás para poder hacer &lt;a href=&quot;https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-3/&quot;&gt;operaciones FHIR&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Crear un paciente de prueba (usando Postman)&lt;/h2&gt;
&lt;p&gt;Tu instancia de FHIR ya está OK. Ahora veremos como realizar una &lt;a href=&quot;https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-3/&quot;&gt;operación FHIR&lt;/a&gt; en el almacén que acabamos de crear.&lt;/p&gt;
&lt;p&gt;De todo este tutorial, esto fue lo que más me costó. Por alguna razón, no podía autenticarme de manera correcta. Ahora te diré cómo hacerlo de manera fácil.&lt;/p&gt;
&lt;h3&gt;1) Obtener token de autenticación&lt;/h3&gt;
&lt;p&gt;Para crear un recurso en tu almacén FHIR (por ejemplo, un paciente), necesitas autenticar la operación que vas a realizar. Esto en términos técnicos, es agregar un &lt;em&gt;token&lt;/em&gt; de autenticación en el &lt;em&gt;header&lt;/em&gt; de tu solicitud HTTP.&lt;/p&gt;
&lt;p&gt;Para obtener el &lt;em&gt;token&lt;/em&gt;, lo más fácil es hacer lo siguiente. Hay un ícono al lado derecho del buscador:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/db632b59624ce6b3e361e59efc0d2b31/54c3a/active-shell-icon.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 20.88607594936709%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsSAAALEgHS3X78AAAA5ElEQVQY002OzU6EQBCEeUQT4eDqHvRpvJkVFxOfzD2aLLj8z/AzzADD54AbYyfVla50V5fnH2L2Uczu+M0uSgnCCzcvMQ9RwuNHyv17iv962XT/iuAtIzjmBFHO/vmTu8OZ2zDjKTzh5VVHWjTITqPHhcFMCCEoygqlDXZZHOwfL47NoDCNwJYpKklQ3YDsR0Sr8URryMrWmVmmGVTfo7XGzjPWOuF/ObO1mqLgfPpCVA29HjDGME+GaTR4a+u61h3bbVnKZltYk0zuw7Ilu8L+Gna9IqskeVlT17WbNZU09MrwAwmfIetHdH9HAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Activate Cloud Shell Icon&quot;
        title=&quot;Activate Cloud Shell Icon&quot;
        src=&quot;/static/db632b59624ce6b3e361e59efc0d2b31/f058b/active-shell-icon.png&quot;
        srcset=&quot;/static/db632b59624ce6b3e361e59efc0d2b31/c26ae/active-shell-icon.png 158w,
/static/db632b59624ce6b3e361e59efc0d2b31/6bdcf/active-shell-icon.png 315w,
/static/db632b59624ce6b3e361e59efc0d2b31/f058b/active-shell-icon.png 630w,
/static/db632b59624ce6b3e361e59efc0d2b31/40601/active-shell-icon.png 945w,
/static/db632b59624ce6b3e361e59efc0d2b31/54c3a/active-shell-icon.png 1257w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Es como un “&gt;_”, que dice “Activate Cloud Shell”. Le das clic, y te abrirá un Terminal dentro de tu browser:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8bdbaa9006a7fb3342bf5c23628563a5/afa26/cloud-shell-terminal.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 51.89873417721519%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAAB00lEQVQoz32Q3W7TQBCF/R6JVC6qCjUIVETIoyC1RaICiQveB5WWIvEK3JGmSRMH0r4Dl01Tx6b+Wf/srtc+zGxw2nLBSJ9mfWb2eGad3cMF3n25wcHnJQ5OAux98vHq4w3ennh4/zXAG9J2Sds7umP/mPqOArymvG+1Vc+H419wglsB/3eCNFdQZQ2tS4g4QhjeotQKQE1UD3KpJYwu6GxQSA1JZLlGGOdwIiERhCmkpkYDCCFQFAWMMRaOuq7XcESxwJWXIEwKZKmAUhKVKZEkMRxNU2RZSs2VbRZpirIsUVXVnWHDX8NEpLi69rFcBrRJiEgUZK4QRmSIe8EXsiyzmQ1TMs/zfA1PzjWpNK6XAjE9TRzHVCugtKEJEzj/rqO1tvBlNlFKrTVt3xR2A56Mf859kmDN9304PEmzHmfP87BYLGwxiiI09YaakFJiPp+vTXkTNubvByvbN6Sx2dSYCv8LnqjZ6n44/dMBBoMBzsYzfOvPMJnOcHl5gZ8/priYuZhOXUwmLlyXzkT/bILvxHg8xindHQ6HVJ9gdH6O0WgEp9d7iW63ixfd5+j1nmFn5ym2tzvodB7jSWcTW1ub2Nh4hFarZWm3mbal0Vb6SvsDQBO6TPePoFgAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Cloud Shell Terminal&quot;
        title=&quot;Cloud Shell Terminal&quot;
        src=&quot;/static/8bdbaa9006a7fb3342bf5c23628563a5/f058b/cloud-shell-terminal.png&quot;
        srcset=&quot;/static/8bdbaa9006a7fb3342bf5c23628563a5/c26ae/cloud-shell-terminal.png 158w,
/static/8bdbaa9006a7fb3342bf5c23628563a5/6bdcf/cloud-shell-terminal.png 315w,
/static/8bdbaa9006a7fb3342bf5c23628563a5/f058b/cloud-shell-terminal.png 630w,
/static/8bdbaa9006a7fb3342bf5c23628563a5/40601/cloud-shell-terminal.png 945w,
/static/8bdbaa9006a7fb3342bf5c23628563a5/afa26/cloud-shell-terminal.png 1258w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ahora, en la consola, ejecuta el siguiente comando:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gcloud auth application-default print-access-token&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Te aparecerá una ventana que dice que la terminal te está solicitando datos, le das aceptar y deberías ver un texto:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/2004a697fcb40b4cc2ba0a39708cfef2/27e9a/print-access-token.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 3.79746835443038%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAAAsSAAALEgHS3X78AAAAM0lEQVQI12M4b8b3/7Qx3/9j+iL/j+iKAGnR/0f1RIG0GJBGiIHo3arc/3ercAExN04MAFVwJ4xR4iFjAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Access token en la Terminal&quot;
        title=&quot;Access token en la Terminal&quot;
        src=&quot;/static/2004a697fcb40b4cc2ba0a39708cfef2/f058b/print-access-token.png&quot;
        srcset=&quot;/static/2004a697fcb40b4cc2ba0a39708cfef2/c26ae/print-access-token.png 158w,
/static/2004a697fcb40b4cc2ba0a39708cfef2/6bdcf/print-access-token.png 315w,
/static/2004a697fcb40b4cc2ba0a39708cfef2/f058b/print-access-token.png 630w,
/static/2004a697fcb40b4cc2ba0a39708cfef2/40601/print-access-token.png 945w,
/static/2004a697fcb40b4cc2ba0a39708cfef2/27e9a/print-access-token.png 1253w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Copia ese texto (que es el token), lo necesitarás en el siguiente paso.&lt;/p&gt;
&lt;h3&gt;2) Crear un Request&lt;/h3&gt;
&lt;p&gt;En Postman, crea un nuevo HTTP Request:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/86fd30214b33a91a2a16135d4c86519d/0fcea/postman-new-http-request.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 63.291139240506325%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAABcklEQVQ4y61T2VLDMAzM//8fL32AMjAlJW2aw/GdLJJsUY7CA4OnWyfSSNqVlGYYBoQQ4D2B7lDhvS+2L/ju82JzzgkaSUhGOdtGvw3rutbXjf+vqH6xf/BpDKPZ7Xa4f+5w93DE46HD+XTCOI5UzRLjhGFJmGzB7BJSysLI+BXjUmw2ZOhp9vs9XrsOh5cWbXsktGDWMUaknEVSjCURg1mklGprImK1q6Km73scB4dDbykwSKJIAf2ZmM4WTyeHbvTIZMu1wLIsMC4L61yllvYQQ2stjFkwkEyWygHMYJomsO8yjPQ8V6bxOhS6rXV1QCVGEvJk/uuIZK5ufMLFBFxmGr+P4pxnYujIZiLJiyQ3iTRmY4wRudYXO7PTzWj4hZvOUlQSV1IZumfcPw7iW/pMUJ/6Sw95IUOWYA3SBv9JslbgxNb59+brov6G7cOiKxqdkqedmhyvRZkcD0tvBk9cnzXmlpJm+/Q53a76E26xfgMArvubl0+3pwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Crear un nuevo HTTP Request&quot;
        title=&quot;Crear un nuevo HTTP Request&quot;
        src=&quot;/static/86fd30214b33a91a2a16135d4c86519d/f058b/postman-new-http-request.png&quot;
        srcset=&quot;/static/86fd30214b33a91a2a16135d4c86519d/c26ae/postman-new-http-request.png 158w,
/static/86fd30214b33a91a2a16135d4c86519d/6bdcf/postman-new-http-request.png 315w,
/static/86fd30214b33a91a2a16135d4c86519d/f058b/postman-new-http-request.png 630w,
/static/86fd30214b33a91a2a16135d4c86519d/0fcea/postman-new-http-request.png 851w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Como vamos a crear un recurso, tienes que seleccionar POST.&lt;/p&gt;
&lt;h3&gt;3) Agregar autenticación&lt;/h3&gt;
&lt;p&gt;En la sección &lt;code class=&quot;language-text&quot;&gt;Headers&lt;/code&gt; agrega uno que se llame &lt;code class=&quot;language-text&quot;&gt;Authorization&lt;/code&gt; y en el valor, coloca &lt;code class=&quot;language-text&quot;&gt;Bearer &amp;lt;tu token&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/58f2c0cc78917a4a5655d1637ce5d307/42de8/postman-auth.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 36.708860759493675%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAABIElEQVQoz31Ry07DMBD0d/IDfBCXckaiCIkjH9NE6oEDyttxnPidDLsurQJCHEZeaWdnZtfCWotlWSClxDiOGIYBxhhs24Z1Xf+FUgrTpODjis9uwUetIFiIBRnTNEEvc67neYbWOr/X+sq7gYyTNygqg7ujxv2bhmjbNicbyW1WMsN5D07OSWOMCCHAOYeU0g/EyG9EpFrbiH4OEKfTCXVdZ0fnLDwN8rAnUV6/aRp0XZfXYxP33f+N4MkweIiiKFBV1UWQRPYkTi5JVI0S1lDfmgv+EPQ+oCeuKMsyC/Z9n1fckziZJCMPwO3hyHiXlpPzRswX5/M5C/Lh+eduN6LbdWqCeX/F+vSA9PKI9HxAOh4QxwFpQ+ZcbhnzLH/wF3B8GK87HysNAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Authentication: Bearer TOKEN&quot;
        title=&quot;Authentication: Bearer TOKEN&quot;
        src=&quot;/static/58f2c0cc78917a4a5655d1637ce5d307/f058b/postman-auth.png&quot;
        srcset=&quot;/static/58f2c0cc78917a4a5655d1637ce5d307/c26ae/postman-auth.png 158w,
/static/58f2c0cc78917a4a5655d1637ce5d307/6bdcf/postman-auth.png 315w,
/static/58f2c0cc78917a4a5655d1637ce5d307/f058b/postman-auth.png 630w,
/static/58f2c0cc78917a4a5655d1637ce5d307/40601/postman-auth.png 945w,
/static/58f2c0cc78917a4a5655d1637ce5d307/42de8/postman-auth.png 1033w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;4) Armar la URL base de tu servidor FHIR&lt;/h3&gt;
&lt;p&gt;La URL base de tu servidor FHIR es algo así: &lt;code class=&quot;language-text&quot;&gt;https://healthcare.googleapis.com/v1/{path}/fhir&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;¿Recuerdas que te dije que el &lt;code class=&quot;language-text&quot;&gt;path&lt;/code&gt; era importante? (cuando creaste tu almacén de datos FHIR), bueno, ahora vamos a usarlo.&lt;/p&gt;
&lt;p&gt;En mi caso, el path es: &lt;code class=&quot;language-text&quot;&gt;projects/apposito-dev/locations/us-east1/datasets/Test/fhirStores/test&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Reemplaza en la URL que coloqué arriba donde dice &lt;code class=&quot;language-text&quot;&gt;{path}&lt;/code&gt; por el PATH de tu almacén, y tendrás como resultado la URL base de tu servidor FHIR. En mi caso:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://healthcare.googleapis.com/v1/projects/apposito-dev/locations/us-east1/datasets/Test/fhirStores/test/fhir&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nota: no olvidar colocar al final &lt;code class=&quot;language-text&quot;&gt;/fhir&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;5) Enviar solicitud&lt;/h3&gt;
&lt;p&gt;Para interactuar con un recurso en FHIR, tenemos que hacerlo mediante la URL del recurso, la cual es &lt;code class=&quot;language-text&quot;&gt;Base&lt;/code&gt; + &lt;code class=&quot;language-text&quot;&gt;/Recurso&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;Base&lt;/code&gt; es la URL base del servidor FHIR (paso anterior), y el recurso que usaremos ahora es &lt;code class=&quot;language-text&quot;&gt;Patient&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En mi caso, la URL para interactuar con &lt;code class=&quot;language-text&quot;&gt;Patient&lt;/code&gt; es:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://healthcare.googleapis.com/v1/projects/apposito-dev/locations/us-east1/datasets/Test/fhirStores/test/fhir/Patient&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Y esa URL hay que colocarla en Postman:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f149362c96363ac1cdb32e2f2306556a/7a1fb/postman-url.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 10.126582278481013%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsSAAALEgHS3X78AAAAXElEQVQI13XMQQqAQAgF0C7Yvtu16lhtgxjIJkcdGOOHA+1KeMhX+IOZQVVBRF1KCcwMd0dr7Vf8c85d8xs7KdbtxBAlpRTUWvGWi0gX9/CVY6saYg5xTAtjnC88+zGY+nx6rNYAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;La URL incluyendo &amp;quot;Patient&amp;quot; en Postman&quot;
        title=&quot;La URL incluyendo &amp;quot;Patient&amp;quot; en Postman&quot;
        src=&quot;/static/f149362c96363ac1cdb32e2f2306556a/f058b/postman-url.png&quot;
        srcset=&quot;/static/f149362c96363ac1cdb32e2f2306556a/c26ae/postman-url.png 158w,
/static/f149362c96363ac1cdb32e2f2306556a/6bdcf/postman-url.png 315w,
/static/f149362c96363ac1cdb32e2f2306556a/f058b/postman-url.png 630w,
/static/f149362c96363ac1cdb32e2f2306556a/40601/postman-url.png 945w,
/static/f149362c96363ac1cdb32e2f2306556a/7a1fb/postman-url.png 1030w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Finalmente, en el “body” de la solicitud, debemos colocar los datos de paciente:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;use&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;official&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;family&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Smith&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token property&quot;&gt;&quot;given&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                &lt;span class=&quot;token string&quot;&gt;&quot;Darcy&quot;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;gender&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;female&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;birthDate&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;1970-01-01&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;resourceType&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Patient&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Eso en Postman, va dentro de “body”, seleccionar “raw” y luego “JSON”:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e75d74e667d4c17e35a108318683bddf/35a31/postman-body.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 37.34177215189873%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAAA6UlEQVQoz5WRSU4EMQxF65RcgYux5UDsYYMKqjI4cab6fKdoEN1IiEhfieP4eciSc4aIYNu2qXVdEULA6B2ttW9d2Z22cw5u3+kbeHlLeHresBgkxggDp5QgSRDllPd++iyh7RddbJEE4EDQgfvHiLsHj0VVJ8geKKFBIoLfkSXw/kxib2JSlH7geh3Headt4NU3AkuZoMys1dqpFYWAarIz/VO1oTBojFsdVGfbWjuWyllYoLLCwtk5KQT3r+w/9TtwQulvrRLIYFNndWF9hxedQ76F/S37qEWtFVZYNaMNc3zOBv9fVukH79kjX7osmj4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Copiamos y pegamos lo anterior en postman&quot;
        title=&quot;Copiamos y pegamos lo anterior en postman&quot;
        src=&quot;/static/e75d74e667d4c17e35a108318683bddf/f058b/postman-body.png&quot;
        srcset=&quot;/static/e75d74e667d4c17e35a108318683bddf/c26ae/postman-body.png 158w,
/static/e75d74e667d4c17e35a108318683bddf/6bdcf/postman-body.png 315w,
/static/e75d74e667d4c17e35a108318683bddf/f058b/postman-body.png 630w,
/static/e75d74e667d4c17e35a108318683bddf/40601/postman-body.png 945w,
/static/e75d74e667d4c17e35a108318683bddf/35a31/postman-body.png 1028w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Y le damos clic a “Send”. Si todo salió bien, deberías ver como Response a tu paciente:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d3a1e2aeb833a01e399959db9749acc9/23592/postman-success.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 30.37974683544304%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAAA0ElEQVQY032R247DIAxE8/8f2kbdKAkBY7BNZg1RVn3oFmkkLvLxeJi25QfHcSARIeaEGCOYGVUEKhXneeJeqgouDBJG8bcu9j2LYomKPRVMIexYtw3sQEoOTIScs4sgXmxmaA5trV3wIYz9revO3FjApH7QWpGeM+Y14xUKqChytaFe/V78v64mk6gNF2XfQcuC4LYfDn665i3jIHF319hv039cA1gdKJ6X+MhWenaGfqfWhjrszvGbwz9g8UC15+SBl3UFVxmZfer+zdn9ab8o19fFXW4c8gAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;JSON de resultado de la operación, incluye el ID&quot;
        title=&quot;JSON de resultado de la operación, incluye el ID&quot;
        src=&quot;/static/d3a1e2aeb833a01e399959db9749acc9/f058b/postman-success.png&quot;
        srcset=&quot;/static/d3a1e2aeb833a01e399959db9749acc9/c26ae/postman-success.png 158w,
/static/d3a1e2aeb833a01e399959db9749acc9/6bdcf/postman-success.png 315w,
/static/d3a1e2aeb833a01e399959db9749acc9/f058b/postman-success.png 630w,
/static/d3a1e2aeb833a01e399959db9749acc9/40601/postman-success.png 945w,
/static/d3a1e2aeb833a01e399959db9749acc9/23592/postman-success.png 1031w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Visualizar tus recursos con FHIR viewer&lt;/h2&gt;
&lt;p&gt;Ahora que ya creaste tu recurso Patient, puedes usar la misma interfaz de Google Cloud para ver la información.&lt;/p&gt;
&lt;p&gt;En Google Cloud, haces clic en FHIR viewer:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f685a67e9b2bf9b7e54c88e5c5369b2b/715a3/fhir-viewer.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 34.810126582278485%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAABUUlEQVQoz12Q22rbQBRF9TstlFJKS5umr/mqQtJb2qd+XAnBhODIrm1pJEuWxqO5ydLKSL6k5MBin9GeOWyd6M1XwfnvjIs/BZ9+5bz9Jnj/Q/Duu+DVZcbrqzz4az6HOx9+Cs6uBR8POtx58SU98TIQ3d4vuItT/k5i4mRDXruRebrh9v4fk+mSm7sZq3xLIR3r2j4hbfi2p9w6ktIQ7byjURKrFdBzrLZt2SqL9y3eefruyeP/tu9HuuB774mM0VTVZuRoDiUKzSyRpIVjlpqQXh+0CarH88OqYZ5ZFrljujJkZUMkyhA1PFrmBqk7lAHtwLqWYqMoqwa51RitqesaHVRKiVIKY2xI1p1COOdCQg9Hwow9vqdSO7KqC/vswn562l2Htfb0cBh0+uVDP/jRfiHPgaJYE8dT5vMZIk3HnaZBsyxDCDFqkiTj8GMN/SN9CQNzSTv4ugAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Seleccionar FHIR viewer&quot;
        title=&quot;Seleccionar FHIR viewer&quot;
        src=&quot;/static/f685a67e9b2bf9b7e54c88e5c5369b2b/f058b/fhir-viewer.png&quot;
        srcset=&quot;/static/f685a67e9b2bf9b7e54c88e5c5369b2b/c26ae/fhir-viewer.png 158w,
/static/f685a67e9b2bf9b7e54c88e5c5369b2b/6bdcf/fhir-viewer.png 315w,
/static/f685a67e9b2bf9b7e54c88e5c5369b2b/f058b/fhir-viewer.png 630w,
/static/f685a67e9b2bf9b7e54c88e5c5369b2b/715a3/fhir-viewer.png 830w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Seleccionas tu almacén FHIR, y verás un listado de recursos. Buscas el recurso &lt;code class=&quot;language-text&quot;&gt;Patient&lt;/code&gt;, le das clic y podrás ver los datos de prueba que ingresaste:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c9d5708afc0df43174b7f25d64143072/32ac3/fhir-viewer-patient.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 35.44303797468354%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAABS0lEQVQoz3WQ3U4DIRCF91WNxppUExufwAfRRm3VJ7KXTfxL7S4ssMACCxwHjKY3TvKFsHvOmRma2XKHy/Ue84cOF2uG0+Uexzc7LB5bXD3zP85XDLM7hrP7omlxcvtV7/MVx+KJ42jZ43q9QaMVhxIMSAGltOSQvIUfDd0ykQ6IlTQ5DKJDDBY5OlhrofUIPwGNHEYIZRFIG8mjBg2lLUbnoY2BMbaezntEEkwxkmbAZvOC7XaLjjF0XQelVB2oETqiHyZYnzESQk/YdRRiA5wbCU84pJSoaUamoScK5oo8LiCEgEQfS7NMZ4ODKiYpJXVsa0itkoBcxUKN6IWkqQ24ULSmQd/zOl1Zu/ibIszVRCvTOq9vH3h7/wTjAkKqGnAIYz28p6lSrAG//OY0JesvkH4wrtAyMksDSW/Lha6wfoAcfp4ipoz/6htTtg6aHxKYUgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Patient con sus datos&quot;
        title=&quot;Patient con sus datos&quot;
        src=&quot;/static/c9d5708afc0df43174b7f25d64143072/f058b/fhir-viewer-patient.png&quot;
        srcset=&quot;/static/c9d5708afc0df43174b7f25d64143072/c26ae/fhir-viewer-patient.png 158w,
/static/c9d5708afc0df43174b7f25d64143072/6bdcf/fhir-viewer-patient.png 315w,
/static/c9d5708afc0df43174b7f25d64143072/f058b/fhir-viewer-patient.png 630w,
/static/c9d5708afc0df43174b7f25d64143072/40601/fhir-viewer-patient.png 945w,
/static/c9d5708afc0df43174b7f25d64143072/32ac3/fhir-viewer-patient.png 1249w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Palabras finales&lt;/h2&gt;
&lt;p&gt;Montar un servidor FHIR con Google no es tan complejo. De hecho, toda la creación se hace mediante la interfaz de Google, sin necesidad de escribir código.&lt;/p&gt;
&lt;p&gt;La interacción con el servidor es un poco más complicado. Por un lado, debes saber como realizar operaciones FHIR, como autenticar tus solicitudes y descubrir cuál es la URL de tu servidor FHIR para poder enviar solicitudes.&lt;/p&gt;
&lt;p&gt;Sin embargo, la herramienta FHIR viewer permite ver los recursos que has ingresado, con toda la información e incluso permite hacer búsquedas. Todo esto mediante la misma interfaz, sin código.&lt;/p&gt;
&lt;p&gt;Lo bueno de usar Google Cloud es que permite conectarte con otras herramientas de manera “nativa”. De hecho, una siguiente prueba que quiero hacer es insertar datos de FHIR a partir de Firestore.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/dd346c5c2c657bfb90b96b8814b29373/f3583/preview.png"></media:content></item><item><title><![CDATA[Herramientas digitales para emprendedores]]></title><description><![CDATA[En los últimos años, el mundo ha tenido un crecimiento acelerado en cuanto a adopción de tecnología, tanto por empresas como por las mismas…]]></description><link>https://blog.codeness.io/herramientas-digitales-para-emprendedores/</link><guid isPermaLink="false">https://blog.codeness.io/herramientas-digitales-para-emprendedores/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 15 Sep 2022 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En los últimos años, el mundo ha tenido un crecimiento acelerado en cuanto a adopción de tecnología, tanto por empresas como por las mismas personas.&lt;/p&gt;
&lt;p&gt;Latinoamérica no se queda atrás. La pandemia trajo muchos cambios culturales relacionados con internet. Las cuarentenas hicieron que muchas personas comenzaran a utilizar aplicaciones como WhatsApp para mantener contacto con sus familiares. Además, comenzó a ser más común comprar en línea, donde muchos superaron el miedo de sacar la tarjeta para pagar.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/3ebbf21a2418f110b974e41873b6270f/75609/compradores-primerizos.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 55.69620253164557%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACOUlEQVQoz4WTy2oUQRSG5zlcufAVXAq6E4S40KCvoKDG6FbcxCyUYEJ0F0gkusvCiJC4MmYnImSlieYy09fqy/Rlemb63p/VPTMJCOKBn67uU+erv051tY41m5/HBoeK4FfH4uBERzcttFqGJcc2qiFQdYEhHBTNRNhuk1N0s8nXiuOEsixp6TLRUY1RoSxqK8Z4soQYI2hHQpSx6vEkX9fUi1hOF9v1yYuCFv+JsqyoqrP3vCgZDhNqI8Jxcbq+hHk4bhdXjluFnFBrmBZkWU6WxuRZNsFBlY3EiNofxETRACEdKrouXRvNDlVVl63o1g5L7DDj6vMOm99D7r3R2fgasLLjsbXXY3sv4MuPkG9HA3b3+81iYT/G62fEOY0m4QeBBJY5Wjfl3P3frHz2uPj0hBcfHa7Md3iyYXFtQeHumsGdVYOplyoUEhgN0ewA3QnpDVPKcU806bhFlaN7KRceH7K260lQm6VPLtdl8fwHm+llldl3JjNvTW691imzBC+I6Mlt/x2GadZbrjC8jPOzh6zu+lyaa7O47UpnKnObDjeWVAkTPFgX3FzWmsJef4jr9xpwKvuejntuToCNw0cHrO64XJ47YnHLYmqhzbP3gumlNg/XdWakbr9SmsJIHoxwfEzboyvB9WGeOqz3n+Yl+1qEF6UciwFuL6VtDbCDBNWNMb2k0ZEYkhVVc9KWewachCkErX6SEyWF/Neq01/jX89C3gRvkDcO/TDC9cKml/X3+pYkScof9+khatbPBfkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Muchas personas que compraron por primera vez online durante pandemia lo seguirán haciendo&quot;
        title=&quot;Muchas personas que compraron por primera vez online durante pandemia lo seguirán haciendo&quot;
        src=&quot;/static/3ebbf21a2418f110b974e41873b6270f/f058b/compradores-primerizos.png&quot;
        srcset=&quot;/static/3ebbf21a2418f110b974e41873b6270f/c26ae/compradores-primerizos.png 158w,
/static/3ebbf21a2418f110b974e41873b6270f/6bdcf/compradores-primerizos.png 315w,
/static/3ebbf21a2418f110b974e41873b6270f/f058b/compradores-primerizos.png 630w,
/static/3ebbf21a2418f110b974e41873b6270f/40601/compradores-primerizos.png 945w,
/static/3ebbf21a2418f110b974e41873b6270f/75609/compradores-primerizos.png 994w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Es por eso que es clave tener presencial digital, aunque tu negocio no lo sea. Incluso si no te interesa tener un canal de marketing digital, puedes aprovechar el boom de tecnología para mejorar ciertos aspectos de tu emprendimiento. Quizás hay algunos procesos que puedes optimizar con tecnología.&lt;/p&gt;
&lt;p&gt;El tren de la digitalización partió hace muchos años, pero ahora ha estado acelerando. ¿Te subes? Aquí te presentaré algunas herramientas que te pueden ayudar a digitalizar tu emprendimiento o parte de él, de manera de que puedas hacer más con menos.&lt;/p&gt;
&lt;h2&gt;Redes Sociales&lt;/h2&gt;
&lt;p&gt;Las redes sociales puedes usarlas para dar a conocer tus productos y para generar confianza con posibles clientes. No es necesario utilizar TODAS las redes sociales al mismo tiempo.&lt;/p&gt;
&lt;p&gt;Las redes sociales más populares son, junto al grupo etario más activo (estadísticas obtenidas &lt;a href=&quot;https://sproutsocial.com/insights/new-social-media-demographics&quot;&gt;aquí&lt;/a&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://instagram.com&quot;&gt;Instagram&lt;/a&gt;: 25-34 (31.2%), con 18-24 muy cerca (31%)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://linkedin.com&quot;&gt;LinkedIn&lt;/a&gt;: 25-34 (58.4%)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://facebook.com&quot;&gt;Facebook&lt;/a&gt;: 25-34 (31.5%)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtube.com&quot;&gt;YouTube&lt;/a&gt;: 15-35 (mayor alcance)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com&quot;&gt;Twitter&lt;/a&gt;: 18-29 (42%)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tiktok.com&quot;&gt;TikTok&lt;/a&gt;: 10-19 (25%)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;¿Cuál usar? Diría que la que se adapte más a tu público objetivo (¿cuál es la que más usan tus clientes, y para qué las usan?).&lt;/p&gt;
&lt;p&gt;Sugerencia: los grupos de Facebook son un buen lugar para ver a personas de tu nicho interactuando en vivo. Por ejemplo, si vendes productos para “mamás cuidadoras”, de seguro encontrarás un grupo en Facebook de mamás cuidadoras. Puedes hacerte parte de él y hacer un poco de &lt;a href=&quot;https://es.wikipedia.org/wiki/Netnograf%C3%ADa&quot;&gt;netnografía&lt;/a&gt;: ¿qué productos recomendan? ¿qué problemas tienen? ¿qué palabras usan? ¿que visión del mundo tienen?. Creo que es una verdadera mina de hora si te das el tiempo de investigar.&lt;/p&gt;
&lt;h2&gt;Herramientas de automatización de redes sociales&lt;/h2&gt;
&lt;p&gt;Si eres como yo, prefieres estar una mañana creando publicaciones para un mes completo, que estar todos los días subiendo contenido.&lt;/p&gt;
&lt;p&gt;Existen herramientas donde puedes dejar publicaciones programadas, de manera de que aunque las crees a las 12 de la noche, tus seguidores la verán a las 8 del día siguiente (o a la hora que tú quieras).&lt;/p&gt;
&lt;p&gt;Algunas de estas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://buffer.com/&quot;&gt;Buffer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://publer.io/&quot;&gt;Publer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambas tienen para agendar contenido en prácticamente todas las redes sociales.&lt;/p&gt;
&lt;p&gt;Hay otras herramientas donde además de agendamiento, te sugieren publicaciones que se han hecho viral a modo de inspiración. Estas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.taplio.com&quot;&gt;Taplio&lt;/a&gt; para LinkedIn.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tweethunter.io/&quot;&gt;Tweethunter&lt;/a&gt; para Twitter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin embargo, estas dos funcionan bien para escribir en inglés.&lt;/p&gt;
&lt;h2&gt;Páginas web&lt;/h2&gt;
&lt;p&gt;Ya con tus redes sociales andando, lo siguiente es tener una página web donde puedan leer más sobre tus servicios o productos.&lt;/p&gt;
&lt;p&gt;Para crear una página no necesitas tener un programador. Y si tienes más tiempo que dinero, quizás puedes armarla tú.&lt;/p&gt;
&lt;p&gt;Existen distintos servicios que te permiten crear una página sin saber programar, alguno de ellos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bio.link&quot;&gt;bio.link&lt;/a&gt;: esta es una página donde muestras enlaces relevantes. Por ejemplo, puedes colocar links de tus productos, link a otras redes sociales, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://carrd.io&quot;&gt;carrd.io&lt;/a&gt;: te permite armar un sitio de una sola página. Perfecto para landing pages, lead magnets, páginas de venta, entre otros.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://webflow.io&quot;&gt;webflow.io&lt;/a&gt;: te sirve para armar un sitio con muchas páginas, que tenga productos, blog y otro tipo de contenido generado. Es más caro que las opciones anteriores, pero a la vez mucho más poderoso.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://shopify.com&quot;&gt;shopify&lt;/a&gt;: te sirve para armar una tienda online (“ecommerce”) para que vendas tus productos.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://salduu.com/&quot;&gt;salduu&lt;/a&gt;: para vender contenido digital (como cursos, ebooks, pdfs, etc).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Investigación de Mercado&lt;/h2&gt;
&lt;p&gt;¿Cuáles son las últimas tendencias? ¿Qué nicho te conviene servir? ¿Cuáles son los problemas que tu audiencia o nicho tienen? ¿Qué está haciendo tu competencia?&lt;/p&gt;
&lt;p&gt;Una forma de resolver estas dudas es investigando. Hay algunas herramientas que te pueden ayudar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ads.google.com/home/tools/keyword-planner/&quot;&gt;Google Keyword Planner&lt;/a&gt;: Te ayuda a saber qué es lo que la gente está buscando en Google, qué tanto volumen hay y búsquedas relacionadas&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://similarweb.com&quot;&gt;SimilarWeb.com&lt;/a&gt;: te permite ver el posicionamiento de una página web en internet (tráfico mensual, de qué países, distribución por edad, competidores y sitios similares).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.facebook.com/groups/explore/&quot;&gt;Facebook Groups&lt;/a&gt;: puedes hacer “netnografía” para ver qué hacen, que piensan, qué recomiendan. De seguro hay un grupo en tu nicho de mercado.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tally.so&quot;&gt;Tally Forms&lt;/a&gt;: te permite crear formularios web sin código y de una manera muy amigable. Un formulario web te puede servir para solicitar información a tus clientes, recoger reviews, hacer encuestas, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Herramientas para productividad&lt;/h2&gt;
&lt;p&gt;Estas herramientas te ayudan a ahorrar tiempo en tareas o cuando trabajas en equipo.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://workspace.google.com/&quot;&gt;Google Workspace&lt;/a&gt;: Solución de Google para trabajo en equipo. Incluye muchas herramientas: Email (Gmail con correo corporativo), Calendario (compartido), archivos compartidos (Google Drive). Alternativa: &lt;a href=&quot;https://www.notion.so/&quot;&gt;Notion.so&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://calendly.com&quot;&gt;Calendly&lt;/a&gt;: Si quieres tener reuniones con posibles clientes o con tu equipo, puedes enviar tu disponibilidad para que ellos tomen una reunión contigo en tus horas disponibles.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://clickup.com&quot;&gt;ClickUp&lt;/a&gt;: Herramienta para planificar y llevar seguimiento de tareas. Muy útil para saber en qué está cada miembro de un equipo. Alternativas: &lt;a href=&quot;https://asana.com/es&quot;&gt;Asana&lt;/a&gt;, &lt;a href=&quot;https://monday.com/lang/es/&quot;&gt;Monday&lt;/a&gt;, &lt;a href=&quot;https://trello.com/&quot;&gt;Trello&lt;/a&gt;, &lt;a href=&quot;https://basecamp.com&quot;&gt;Basecamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://loom.com&quot;&gt;Loom&lt;/a&gt;: en vez de tener reuniones, puedes grabar un video explicando algo mientras compartes tu pantalla.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Email Marketing&lt;/h2&gt;
&lt;p&gt;Las redes sociales son geniales, pero no te dan una forma directa de contactar a tu audiencia. Además, si te cierran la cuenta, pierdes todos los contactos…&lt;/p&gt;
&lt;p&gt;En cambio, si armas una lista de correo electrónico, puedes contactarlos de manera directa. Puedes compartir contenido de valor, generar conversaciones interesantes y eventualmente ofrecer productos y servicios, todo directo en la casilla de tus suscriptores. Además, es posible armar automatizaciones para que todo esto ocurra de manera automática.&lt;/p&gt;
&lt;p&gt;Hay muchos software que te permiten armar una lista de correos, lo que he usado son los siguientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mailchimp.com&quot;&gt;Mailchimp&lt;/a&gt;: Plataforma de Marketing por correo orientada en todo tipo de negocio, desde creadores de contenido hasta tiendas online.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://convertkit.com&quot;&gt;Convertkit&lt;/a&gt;: Herramienta de Marketing por correo orientada a creadores de contenido.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambas herramientas permiten automatización, segmentación de suscriptores, creación de páginas web para adquirir más suscriptores, etc.&lt;/p&gt;
&lt;p&gt;Cosas interesantes que puedes hacer: si un usuario intentó comprar pero se arrepintió, le mandas un descuento (con fecha de expiración) a su correo para concretar la venta.&lt;/p&gt;
&lt;h2&gt;Comunicación con tu equipo&lt;/h2&gt;
&lt;p&gt;Cuando ya tienes un equipo, se hace una necesidad tener un canal de comunicación digital. Algunas herramientas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://whatsapp.com/&quot;&gt;WhatsApp&lt;/a&gt;: Puedes usar WhatsApp para comunicarte con tu equipo de trabajo y colaboradores.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://slack.com&quot;&gt;Slack&lt;/a&gt;: Es como un WhatsApp, pero donde la información la puedes tener mucho más ordenada. Por ejemplo, puedes organizar tu chat por canales. Además permite integración con otras herramientas. Por ejemplo, puedes tener un canal donde luego de cada venta en Shopify te llega un mensaje de celebración.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://discord.com&quot;&gt;Discord&lt;/a&gt;: El Chat de los jóvenes. Si tienes un equipo de trabajo jóven, de seguro conocen Discord. Te permite tener las conversaciones ordenadas, tener video llamadas, etc. Lo mejor de todo es que el plan gratuito es muy permisivo.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zoom.us&quot;&gt;Zoom&lt;/a&gt;: para tener videollamadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Atención al cliente&lt;/h2&gt;
&lt;p&gt;¿Qué pasa si tienes que ofrecer un canal de soporte? Quizás puedes ofrecer un chat directo contigo. Entre las opciones están:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://manychat.com/&quot;&gt;ManyChat&lt;/a&gt;: Te permite tener chat con tus prospectos o clientes. Además puedes automatizar con bots.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://api.whatsapp.com/&quot;&gt;WhatsApp&lt;/a&gt;: Puedes colocar un “click para chatear”, y cuando una persona lo presiona, te lleva directamente a una conversación contigo. El enlace tiene este formato: &lt;code class=&quot;language-text&quot;&gt;https://wa.me/1XXXXXXXXXX&lt;/code&gt;, donde reemplazas el número al final por el tuyo.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.intercom.com/&quot;&gt;Intercom&lt;/a&gt;: Herramienta avanzada para comunicación con tus clientes y soporte. Es un todo en uno: Chat, email y centro de ayuda. Alternativa: &lt;a href=&quot;https://crisp.chat/&quot;&gt;crisp&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Analítica web&lt;/h2&gt;
&lt;p&gt;¿Cuáles son las páginas más visitadas en tu sitio? ¿De qué país son tus visitantes? ¿Cómo encontraron tu página?&lt;/p&gt;
&lt;p&gt;Para responder estas preguntas, necesitas tener instalado en tu página web una herramienta de analítica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://analytics.google.com&quot;&gt;Google Analytics&lt;/a&gt;: es uno de lo más usados, además tiene integración con Google Ads y con otras herramientas de Google. Es gratis, aunque pagas con la privacidad de tus visitantes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://usefathom.com/&quot;&gt;Fathom Analytics&lt;/a&gt;: una alternativa a Google Analytics que respeta la privacidad de tus clientes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Todas estas herramientas son de fácil integración.&lt;/p&gt;
&lt;h2&gt;Testimonios (boca a boca)&lt;/h2&gt;
&lt;p&gt;Uno de los mejores motores de crecimiento es el boca a boca. Existen algunas herramientas que te ayudan a obtener estos “testimonios” de tus clientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.google.com/business/&quot;&gt;Google Business&lt;/a&gt;: Puedes agregar tu empresa en “Google Business” de manera de que aparezca en Google Maps. Luego con eso en mano, tus clientes pueden agregar testimonios (“Reviews”).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://testimonial.to/&quot;&gt;Testimonial.to&lt;/a&gt;: Te permite recoger y mostrar testimonios de tus clientes (texto y video). Los testimonios los puedes agregar luego a tu página web. Alternativa: &lt;a href=&quot;https://senja.io&quot;&gt;senja.io&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Diseño&lt;/h2&gt;
&lt;p&gt;Mi herramienta favorita de diseño es lejos &lt;a href=&quot;https://canva.com&quot;&gt;Canva&lt;/a&gt;. Te permite crear contenido visual para múltiples propósito, desde logos hasta presentaciones. Incluso ahora han agregado opción para diseñar páginas web…&lt;/p&gt;
&lt;h2&gt;Palabras finales&lt;/h2&gt;
&lt;p&gt;Como puedes ver, hay muchas herramientas digitales que nos hacen la vida más fácil. La mayoría no requieren tener a alguien experto en informática, y si se usan bien, puedes incrementar tus ventas, desminuir costos y tener más tiempo libre. ¿Qué mejor?&lt;/p&gt;
&lt;p&gt;Mi única sugerencia es que vayas aplicando herramientas de a poco, y que uses la que encuentras más fácil de usar para tu contexto particular. Recuerda que la idea de la herramienta es facilitarnos la vida, no complicarla.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/9210c6b857d2be29b8c7b6c22acf3dea/f3583/preview.png"></media:content></item><item><title><![CDATA[Por qué descontinuamos el Nessy Letter]]></title><description><![CDATA[Julio 2022 fue el último mes que escribimos el “Nessy Letter”, un newsletter mensual que reúne noticias y artículos que encontramos…]]></description><link>https://blog.codeness.io/por-que-descontinuamos-el-nessy-letter/</link><guid isPermaLink="false">https://blog.codeness.io/por-que-descontinuamos-el-nessy-letter/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Tue, 23 Aug 2022 01:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Julio 2022 fue el último mes que escribimos el “Nessy Letter”, un newsletter mensual que reúne noticias y artículos que encontramos interesantes sobre salud + informática.&lt;/p&gt;
&lt;p&gt;En este artículo voy a escribir las razones por las cuales comenzamos a escribirlo, por qué lo descontinuamos y los aprendizajes del proceso.&lt;/p&gt;
&lt;h2&gt;Por qué partimos con Nessy Letter&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;“Darnos a conocer y ver qué pasa en el proceso”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Con &lt;a href=&quot;https://enfermeraprogramadora.cl&quot;&gt;Eliana&lt;/a&gt; comenzamos a escribir en el Blog de Nessy en noviembre 2020, buscando publicar al menos una vez a la semana.&lt;/p&gt;
&lt;p&gt;Nuestro objetivo era darnos a conocer en la vertical de salud, decirle al mundo que estábamos creando cosas, y en el camino entregar contenido de valor. No teníamos nada que vender, ningún servicio que ofrecer. Más bien queríamos compartir contenido y ver qué pasa.&lt;/p&gt;
&lt;p&gt;El Nessy Letter tiene un origen parecido. Partimos agregando una sección al blog para que las personas interesadas se suscribieran: &lt;em&gt;“Nessy Letter — Boletín sobre informática en salud. Compartiremos a tu correo todo lo que estamos aprendiendo de este mundo.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;La propuesta de valor es vaga, del estilo “Suscríbete para más”. Eso es porque solo queríamos ver qué pasaba si agregábamos la cajita.&lt;/p&gt;
&lt;p&gt;Luego de ver que habían personas que se registraban pensamos: &lt;em&gt;¿qué pasa si compartimos mensualmente lo que vamos aprendiendo?&lt;/em&gt; Y así nació Nessy Letter.&lt;/p&gt;
&lt;h2&gt;Los resultados iniciales&lt;/h2&gt;
&lt;p&gt;En el periodo que estuvimos activos publicando en el blog y compartiendo en LinkedIn  (noviembre 2020 - febrero 2021) de 582 visitantes, se suscribieron 7 personas. Ahí fue cuando decidimos enviar &lt;a href=&quot;https://buttondown.email/codeness/archive/nessyletter-febrero-2021/&quot;&gt;la primera edición&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Todo lo que puedo decir del resultado inicial fue que nadie se desuscribió 😁. No medimos las aperturas de correos ni los clicks, ya que esas métricas por sí solas (sin un objetivo de negocio por detrás) no vale la pena medirlas. Además, la caja de suscripción dice “respetamos tu privacidad”, y hay que ser consecuentes.&lt;/p&gt;
&lt;p&gt;Por otro lado, la acción en sí de escribir el Newsletter me pareció entretenido. Además, me obligaba a tener que estar pendiente de noticias en el área.&lt;/p&gt;
&lt;p&gt;Hasta ahí, todo bien.&lt;/p&gt;
&lt;h2&gt;Lo malo de no tener un objetivo muy claro desde el principio&lt;/h2&gt;
&lt;p&gt;Pasaron 18 ediciones para decir stop: &lt;em&gt;“¿por qué estamos haciendo esto?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Por un lado, creo que la decisión de partir un boletín mensual fue buena. Los Newsletter son una buena forma de compartir conocimiento, aprender y además se prestan para generar conversaciones interesantes.&lt;/p&gt;
&lt;p&gt;Por otro lado, los resultados no fueron muy buenos. El origen del blog y del newsletter fue darnos a conocer en la vertical de salud. El blog cumplió su objetivo con creces, mientras que el Newsletter… ni idea.&lt;/p&gt;
&lt;p&gt;Eliana consiguió su trabajo actual en gran parte gracias a distintas entradas que fue publicando. Por mi parte, se han contactado conmigo por distintos posts que he escrito, colegas me han recomendado para trabajos de tecnología en salud y posibles clientes me han encontrado por alguna entrada del blog.&lt;/p&gt;
&lt;p&gt;Pero nada de lo anterior pasó gracias al Newsletter. Quizás este servicio amplificó el mensaje, pero ¿qué hubiese pasado si el tiempo invertido en el Newsletter lo invertíamos en escribir el Blog?&lt;/p&gt;
&lt;p&gt;Parte del problema es no haber tenido un objetivo claro. Ojo no suscribo a la idea de que “si no sabes a dónde vas, no sabrás nunca si has llegado”. Soy más de la liga de hacer algo y ver qué pasa, estar abierto a las posibilidades que una acción te da. Sin embargo, hay que saber cuándo parar.&lt;/p&gt;
&lt;p&gt;En este caso, el objetivo podría haber sido “hagamos 8 ediciones y veamos qué pasa”. Pero ni siquiera fue algo que consideramos. Entramos en modo automático y escribimos 18 ediciones 👍&lt;/p&gt;
&lt;h2&gt;¿Qué pasa si aumentamos la cantidad de lectores?&lt;/h2&gt;
&lt;p&gt;El Nessy Letter en un año consiguió cerca de 30 suscriptores. Si pocas personas leen, ¿cómo saber su utilidad?&lt;/p&gt;
&lt;p&gt;Por eso siempre fui publicando en LinkedIn las distintas ediciones. De esa manera, al menos aumentaba la cantidad de personas que lo leían, o por lo bajo, que sabían que estaba escribiendo sobre la industria (esas publicaciones tuvieron al menos 600 impresiones cada una).&lt;/p&gt;
&lt;p&gt;Luego pensé: ¿qué pasa si publico en un Newsletter de LinkedIn? Para inicios de año contaba con unos mil seguidores, entonces no partiría desde cero. Esta fue la forma más sencilla de aumentar los suscriptores que se me ocurrió.&lt;/p&gt;
&lt;p&gt;Es por eso que la edición de &lt;a href=&quot;https://buttondown.email/codeness/archive/nessy-letter-febrero-2022/&quot;&gt;Febrero 2022&lt;/a&gt; la publiqué con la &lt;a href=&quot;https://www.linkedin.com/help/linkedin/answer/a522525&quot;&gt;herramienta de Newsletter de LinkedIn&lt;/a&gt;, donde 300 personas se suscribieron y recibieron las siguientes ediciones hasta Julio 2022.&lt;/p&gt;
&lt;h2&gt;La decisión de no continuar&lt;/h2&gt;
&lt;p&gt;En mitad de Julio hablé con Eli sobre para qué queríamos seguir escribiendo el Newsletter, y no llegamos a una razón para continuar.&lt;/p&gt;
&lt;p&gt;Algunas consideraciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Para darnos a conocer, tenemos el blog. Ha demostrado ser mucho más efectivo.&lt;/li&gt;
&lt;li&gt;No tenemos un motivo para obligarnos a leer noticias y compartirlas, considerando que hay una inversión de tiempo ahí.&lt;/li&gt;
&lt;li&gt;No tenemos una forma de medir el valor generado para la audiencia. Y aunque existiera, no hay valor para nosotros.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como no llegamos a un buen motivo, decidimos pararlo.&lt;/p&gt;
&lt;h2&gt;Aprendizajes de haber escrito el Newsletter por más de un año&lt;/h2&gt;
&lt;p&gt;Te dejo algunos aprendizajes de haber escrito Nessy Letter por más de un año:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es más difícil de lo que parece. Soy un consumidor de distintos Newsletter, y la verdad es que desde afuera se veía mucho más fácil. El proceso de recolección de noticias toma tiempo, así como también el de redacción. Yo diría que me tomaba al menos 4 horas, sin considerar el tiempo de edición de Eli.&lt;/li&gt;
&lt;li&gt;Es una buena forma de obligarte a estar pendiente de las noticias relevantes en tu industria y además te permite darte a conocer sin necesidad de escribir contenido propio (como un blog).&lt;/li&gt;
&lt;li&gt;Es difícil saber si estás haciendo las cosas bien. Yo diría que el “boca a boca”, que tu audiencia invite a sus pares o comparta tus ediciones, es un buen indicador. Así como también la cantidad de conversaciones que genera. Open Rate / Click rate son métricas de vanidad que por sí solas no sirven.&lt;/li&gt;
&lt;li&gt;Intenta tener un objetivo. El de nosotros fue “darnos a conocer y ver qué pasa”. No es &lt;a href=&quot;https://blog.hubspot.es/marketing/5-ejemplos-de-metas-inteligentes-para-tu-empresa&quot;&gt;“SMART”&lt;/a&gt;, y no tiene por qué serlo. Sin embargo, creo que es clave colocar una limitante de tiempo para ver si se están cumpliendo tus expectativas.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/4a141d9b475581ae3ba175941fdfc0ac/f3583/preview.png"></media:content></item><item><title><![CDATA[¿Qué son las Healthtech?]]></title><description><![CDATA[Healthtech, conocidas también como Health Technology, son una serie de investigaciones relacionadas a la tecnología y la salud; o, mejor…]]></description><link>https://blog.codeness.io/que-son-las-healthtech/</link><guid isPermaLink="false">https://blog.codeness.io/que-son-las-healthtech/</guid><dc:creator><![CDATA[Diana Núñez]]></dc:creator><pubDate>Fri, 29 Jul 2022 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Healthtech, conocidas también como Health Technology, son una serie de &lt;strong&gt;investigaciones relacionadas a la tecnología y la salud&lt;/strong&gt;; o, mejor dicho, enfocadas en el desarrollo de dispositivos, aplicaciones y sistemas que favorezcan el cuidado personal y la salud de las personas.&lt;/p&gt;
&lt;p&gt;Dicho esto, abarcan desde los conocimientos en el sector de la salud y el desarrollo de nuevas medicinas y vacunas, hasta la implementación de novedosos procedimientos y tratamientos que mejoren la atención de las enfermedades y afecciones.&lt;/p&gt;
&lt;p&gt;Esta tecnología sanitaria &lt;strong&gt;existe desde los inicios de la medicina&lt;/strong&gt;, ya que cada avance médico requiere de investigaciones tecnológicas que funcionan como sustento para su buen desarrollo. Gracias a ello, Healthtech forma parte de nuestro día a día.&lt;/p&gt;
&lt;h2&gt;Vertientes principales de Health Technology&lt;/h2&gt;
&lt;p&gt;Ahora que entendemos mejor lo que son las Healthtech, hablemos un poco sobre los sectores principales de sus investigaciones. En la actualidad, esta tecnología se aplica a todos los sectores de la salud:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Salud mental: Acceso a servicios de salud mental de forma online. (Ej: Yana, Terapify).&lt;/li&gt;
&lt;li&gt;Telemedicina: Prestación de servicios de salud virtual por parte de profesionales de medicina general y especializaciones. (Ej: 1Doc3)&lt;/li&gt;
&lt;li&gt;Seguros de salud integral: Mejoras en cuanto a la ubicación y elección de los seguros privados. (Ej: QuePlanCl)&lt;/li&gt;
&lt;li&gt;Farmacias online: Procesos de compra y obtención de medicamentos de manera remota. (Ej: Farmalisto, Vitau).&lt;/li&gt;
&lt;li&gt;Dispositivos médicos: Tecnologías que optimizan el proceso de diagnóstico y prevención de enfermedades. (Ej: Eva, Unima, Whoop, Fitbit, OuraRing).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con la llegada del Covid-19 al mundo, se hizo necesaria una &lt;strong&gt;actualización en cuanto a la atención médica remota&lt;/strong&gt;, para así evitar la saturación de los centros de salud y la exposición de personas sanas o con otras afecciones a la peligrosa enfermedad.&lt;/p&gt;
&lt;h2&gt;¿Qué ventajas ofrece Healthtech?&lt;/h2&gt;
&lt;p&gt;La tecnología sanitaria se basa en mejorar la calidad de vida de las personas; principalmente, al autocuidado de los pacientes, a la adherencia a los tratamientos y a evitar hospitalizaciones, tratamientos y procedimientos innecesarios.&lt;/p&gt;
&lt;p&gt;Con cada Health Technology, &lt;strong&gt;los sectores de la salud se vuelven más eficientes&lt;/strong&gt; y los pacientes se ven recompensados con mejoras en la detección oportuna de las enfermedades, así como al olvidarse de las largas listas de espera o de las visitas a la farmacia de turno.&lt;/p&gt;
&lt;p&gt;Sin duda, se trata de &lt;strong&gt;una oportunidad para avanzar&lt;/strong&gt; en un campo importante en la vida del ser humano.&lt;/p&gt;
&lt;h2&gt;Recursos Adicionales&lt;/h2&gt;
&lt;p&gt;Si te interesa aprender más sobre health tech, te dejo los siguientes recursos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://startupeable.com/healthtech/&quot;&gt;Healthtech en Latinoamérica: Guía Definitiva&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.df.cl/healthtech-en-chile-como-es-el-ecosistema-de-salud-en-chile&quot;&gt;HealthTech: ¿Cómo es el ecosistema de salud en Chile?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/cf4604a9fe9f94cf546b5d5e276b7f52/47498/preview.jpg"></media:content></item><item><title><![CDATA[Apposito — Versión 1.0.28]]></title><description><![CDATA[¿Qué hay de nuevo? Desde el punto de vista de usuario, hay 2 funcionalidades nuevas: 1) Desbloquear Pantalla cuenta con opción para…]]></description><link>https://blog.codeness.io/apposito/version-1-1-28/</link><guid isPermaLink="false">https://blog.codeness.io/apposito/version-1-1-28/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Tue, 26 Jul 2022 16:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;¿Qué hay de nuevo?&lt;/h2&gt;
&lt;p&gt;Desde el punto de vista de usuario, hay 2 funcionalidades nuevas:&lt;/p&gt;
&lt;h3&gt;1) Desbloquear Pantalla cuenta con opción para reiniciar contraseña&lt;/h3&gt;
&lt;p&gt;Haciendo pruebas con la aplicación, siempre me pasaba que se me olvidaba la contraseña. Lo cual es malo cuando Apposito se bloquea por inactividad, ya que te quedas encerrado sin poder hacer mucho.&lt;/p&gt;
&lt;p&gt;Debido a esto, agregamos 3 mejoras a la pantalla de bloqueo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Agregamos un cerrar sesión.&lt;/li&gt;
&lt;li&gt;El formulario de contraseña incluye la opción de reiniciar contraseña, y además, te muestra un hint del correo con el que iniciaste sesión.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/7aa027a8becf97c0e86857c7e7f2dd8a/29007/apposito-unlock-preview.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 58.22784810126582%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACt0lEQVQoz32T+UsUARTH/Qeiv6ADDIzAzDWo7Pipw2rtskiSatVwNyWl7DKNtaLtJMsiOzwIKvpFKCssqpVgzTPtgFUqLIi0dt2jcWZ23Jn108yOpUE0w+O9N+/x4cub9xIKUoaxz/NTkOJnV/J4HM+N2LS/Y7021+z/Y3r+u5bg0INii8DeNIHDi8OUpAoUp4nkJn9m5fR6MmY2YE1sYOWMm6yZ1oRzvcA7j0zPS4lut4S3W6apRiRvjg5NHTaAAfbPl6g/Psjz5iHO7RimJCWCLfkDlqllZC4rJWdbKYsTi0mfcoMz2yV+ShHCkoIgjQIavS0KuUl+HAbQnhLgcLrAw8YvuPu+03BikD1zZXKS+rl68jltHe9xt76hrbWXooxnODeGkSQVSdYQRU0HxmhvjpA7exzoSA2wb77IhfwQjaf9OK0jeh4he5aX7tYvGM+YGnecKuyi3BokqsYYjcaQZQM4RufTSUBD4cFF5vzKlobifv9CmexEL+6mfmRRJRQU0cZknLY2KjKDOkyL2z+BhWkBnKskKldPWMVyxVToGYgrGwmZEl2FnZTHgf9RWLY6iO+bStCn4h9UGRFUup5o5Fn6eN3zlu++IAMDQwQEHzWuVo6uC6GMaiiKps/SnGHHk0nAI2uDqLFYvKBhem+7hn3BR6ouVXGxupqqi5e5cv085UV3ObZJRNWHGtPfqGYq7HoWmfjLBtDTqPDiloz7tkzLHZnHNVEKl3ygIKcSW1YleVuOk7f1CLsy63BlS/z4GmXos8q3T/p8fRqe+5GJPTy4IkBHs8KrBxFa7ol06ivw6JqCY8EAh3bXUppfy96ddRxwXKNk8wMqrAIXbAInNvzk7LYwriw9zxdwWMzrSjDOxZ6qy7UMxz8a3j5+esZKOSzBP96uH4HRb/TsTpuw36drnN8vBwvFgb8PzTcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;La pantalla de inactividad ahora incluye parte del correo y una opción para recuperar contraseña&quot;
        title=&quot;La pantalla de inactividad ahora incluye parte del correo y una opción para recuperar contraseña&quot;
        src=&quot;/static/7aa027a8becf97c0e86857c7e7f2dd8a/f058b/apposito-unlock-preview.png&quot;
        srcset=&quot;/static/7aa027a8becf97c0e86857c7e7f2dd8a/c26ae/apposito-unlock-preview.png 158w,
/static/7aa027a8becf97c0e86857c7e7f2dd8a/6bdcf/apposito-unlock-preview.png 315w,
/static/7aa027a8becf97c0e86857c7e7f2dd8a/f058b/apposito-unlock-preview.png 630w,
/static/7aa027a8becf97c0e86857c7e7f2dd8a/40601/apposito-unlock-preview.png 945w,
/static/7aa027a8becf97c0e86857c7e7f2dd8a/78612/apposito-unlock-preview.png 1260w,
/static/7aa027a8becf97c0e86857c7e7f2dd8a/29007/apposito-unlock-preview.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;2) Ahora puedes eliminar tu cuenta&lt;/h3&gt;
&lt;p&gt;Desde el 30 Junio del 2022, si quieres publicar en Apple y tu aplicación ofrece creación de cuenta, es &lt;a href=&quot;https://developer.apple.com/support/offering-account-deletion-in-your-app&quot;&gt;obligatorio ofrecer una opción de eliminar cuenta&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.linkedin.com/posts/codewithnico_apple-rechaz%C3%B3-la-actualizaci%C3%B3n-de-mi-app-activity-6955517378881298432-Ve87?utm_source=linkedin_share&amp;#x26;utm_medium=member_desktop_web&quot;&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 523px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 91.77215189873418%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsSAAALEgHS3X78AAACPElEQVQ4y4WUya7TQBBF/bmw4TtAYon0dnwGQvwCYoPi4Myx48QZ7Yx2Jqfwqbxq9QLxWrqqHsrVfW9VOfjx/Zt8ffkiSZzIcDiUOI5lNBrJdruV/X4vt9vtn7jf725e17XicrlI8PnjJ3n34b38jkLJZpmkaSr9fl+KotCAh8NBcTwenQWn08nNCcQgaJDnW+lMJlLsD5LnuWw2G8myTANaMEBwgmDtIrP4csYI0nQq/W4ks/GvxmEnu92+wU6dsHwAfda8hiAmB+fmy5kGrKpKP6rKndw9PUyn6/Xq9kw3rMHWNgLoxU1CsmyhCRmPx2pJEPPBYKDrJHkmDX3ZYw16vZ5aLn6lnEqn01FngkPF6PqUoIm+WLQ2ysxhyHg8HhIgpglMtny6PiXs/wbB9IXcslqtFNy2Xq9luVzqS2yf9WKxkLeGvtDSblSh5YMLABcQ2Hy4gDlgzvf6QgRFZLoDHZGgLEstA6wV8Pl8dmcmk60JRrVoQDZ9B3Q0kDngr9HT1jY3fZWytRovBJQB5YJlHwZRFLkSmk6nysT28OM7a79gNptJGIauzjjEkTnOlFS323U1yPmkaVX2ObeLqVV0Dsgst87ncyE4ILMkgrpEI6NT1w9XHvfa9mrXUdhnHb42uV+TgGAkw09SWVaNX/OHOaVyrp7n/mgoTyXqdKXVCpUaQB8APXRjbpTb7XYjUUt6f3420nA+VFYuy3EylzwJJS9y9ydBBms3+9PwOr9zjqdz41e4NsQPhn8B1XlT7+3iamMAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;&amp;quot;Quejándome&amp;quot; de la política en LinkedIn&quot;
        title=&quot;&amp;quot;Quejándome&amp;quot; de la política en LinkedIn&quot;
        src=&quot;/static/49f60b1fbb09c1f749834b129ba48b4a/3e286/linked-in.png&quot;
        srcset=&quot;/static/49f60b1fbb09c1f749834b129ba48b4a/c26ae/linked-in.png 158w,
/static/49f60b1fbb09c1f749834b129ba48b4a/6bdcf/linked-in.png 315w,
/static/49f60b1fbb09c1f749834b129ba48b4a/3e286/linked-in.png 523w&quot;
        sizes=&quot;(max-width: 523px) 100vw, 523px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si bien esta funcionalidad no estaba en nuestro Roadmap, tuvimos que hacerlo debido a esta nueva política de Apple.&lt;/p&gt;
&lt;p&gt;Al eliminar tu cuenta, eliminaremos solo tu acceso a Apposito. Los registros que hayas subido no serán eliminados, ya que es información de pacientes.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/db5c23ab3715cd9de0ed75f858ce6f46/29007/apposito-delete-preview.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 58.22784810126582%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACuElEQVQoz22TWU+TQRSG+S/uwcTERH+B3hjiD9AoSwShlaU1AdoiIRqIQVDjgkaqF4oXoAmxSoFStpaWzVZkdW2RKhGwpfu3lPRxpKAYzeTNmbyTPHPmzDlZZ3atcXa3kIi5e9YoOJDZ//FWKTy4TmF29LeKDkY4lx0kb29IKBML9gcpOvSDrIemCK1VEcyGCPd0YepPrW/uH1RuezEqjr+j9IRDyEVZjhPtsQmqcwI0afw0FS9y7byf+twvFB9eIwsUZFUFUsTCKgPtcZS0RFSSkEkQWklTV2qhqqaCapMRU91F9JpGzPUzeN66sdpceOdHGex5jfboKlkJWSYSVVBSKt8DMn1PYwIcJroaRIqF+O5PUVtiQXuhmIpSHTqdFm1uA61X5nBPjHHl7ggdr1wMWb1ojgigvKEQiSkkFIVvSxK2thiKyC4RiqDKMZY/q1w3OLBbOuht72Co6znmZgt3aqZ4MzNKp8WFtdtJv9WD5ugWMCqASVVhWWTYK4BxWVySUJE2VHzvJR41zqAqKomoLEqTZtQe4Gb1JD7fe+anFvj0cYGhnmmR4cr/gQkBjMZlfp35t4DJZEqUJgN09QW4ZZxkds7Pi84vOB2LDPfO/Q8o7QAqSCmZJfHkG6YRbIM2urrt9DvsmG/baKl9w4DDzeO2ETpfOum1eDKfkhS1C0dk4pLC10WJnifiU5LbnsQ3f5qa4peU6crR6w3oK/Vo8xu5XzeLd2qcibEJPJ5xbBZvBgiqWAq/YjAoM/AsLh617cmE1qCu7AWVl8ow1FZhvKyjQnMVc8M0sx/cTHpHmZpzM2zfahuzKcyD6jBmY5gWvWjs0yFajTs8XZTy4wtoTwyKxnZSmjOE5tgYhpMBmrU+GkVTN5X4aMhbzDT25oht6ffo/eVlRq8oOyb07+jl7xPaMXo/AenN6y0dFLaKAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Flujo de eliminación: 1) Ir a Cuenta. 2) Eliminar cuenta. 3) Ingresar contraseña. 4) Cuenta eliminada&quot;
        title=&quot;Flujo de eliminación: 1) Ir a Cuenta. 2) Eliminar cuenta. 3) Ingresar contraseña. 4) Cuenta eliminada&quot;
        src=&quot;/static/db5c23ab3715cd9de0ed75f858ce6f46/f058b/apposito-delete-preview.png&quot;
        srcset=&quot;/static/db5c23ab3715cd9de0ed75f858ce6f46/c26ae/apposito-delete-preview.png 158w,
/static/db5c23ab3715cd9de0ed75f858ce6f46/6bdcf/apposito-delete-preview.png 315w,
/static/db5c23ab3715cd9de0ed75f858ce6f46/f058b/apposito-delete-preview.png 630w,
/static/db5c23ab3715cd9de0ed75f858ce6f46/40601/apposito-delete-preview.png 945w,
/static/db5c23ab3715cd9de0ed75f858ce6f46/78612/apposito-delete-preview.png 1260w,
/static/db5c23ab3715cd9de0ed75f858ce6f46/29007/apposito-delete-preview.png 1600w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Si bien solo en iPhone es obligatorio, los usuarios de Android también tendrán habilitada esta opción.&lt;/p&gt;
&lt;h2&gt;Qué sigue&lt;/h2&gt;
&lt;p&gt;Estamos trabajando en una actualización para el listado de pacientes, que hará que sea más eficiente en cuentas pertenecientes a una organización.&lt;/p&gt;
&lt;h2&gt;Dónde descargar Apposito&lt;/h2&gt;
&lt;p&gt;Apposito está disponible en &lt;a href=&quot;https://apps.apple.com/cl/app/apposito/id1559789088?itsct=apps_box_link&amp;#x26;itscg=30200&quot;&gt;iPhone&lt;/a&gt; y &lt;a href=&quot;https://play.google.com/store/apps/details?id=io.codeness.apposito&quot;&gt;Android&lt;/a&gt;. Puedes acceder a la &lt;a href=&quot;https://apposito.codeness.io&quot;&gt;página web de Apposito&lt;/a&gt; para más detalles de la aplicación.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/60b82f423a05c1b6a94bae147b8a2557/47498/preview.jpg"></media:content></item><item><title><![CDATA[¿Qué es HL7 FHIR?]]></title><description><![CDATA[Partiré con una definición menos formal sobre HL7 FHIR. Si pensamos en idiomas, sabemos que el inglés es un lenguaje “Universal”. Por…]]></description><link>https://blog.codeness.io/que-es-hl7-fhir/</link><guid isPermaLink="false">https://blog.codeness.io/que-es-hl7-fhir/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 11 Jul 2022 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Partiré con una definición menos formal sobre HL7 FHIR.&lt;/p&gt;
&lt;p&gt;Si pensamos en idiomas, sabemos que el inglés es un lenguaje “Universal”. Por ejemplo, si quisieras comunicarte con una persona que solo habla Chino, lo más seguro es te comuniques con ella en Inglés.&lt;/p&gt;
&lt;p&gt;Es por eso que saber inglés es importante, ya que te abre puertas para poder comunicarte con el resto del mundo.&lt;/p&gt;
&lt;p&gt;En sistemas informáticos pasa algo parecido… Distintos sistemas se pueden comunicar entre ellos, y para hacerlo, se ponen de acuerdo en el “lenguaje” en el cual van a intercambiar información.&lt;/p&gt;
&lt;p&gt;En el ámbito de salud, &lt;strong&gt;es muy importante que apuntemos como sociedad a que todos los sistemas de salud hablen entre ellos&lt;/strong&gt;. Y para eso, es necesario que se haga en un lenguaje “común”, algo así como sería el Inglés.&lt;/p&gt;
&lt;p&gt;Es aquí donde entra “HL7 FHIR” (o simplemente “FHIR”). El cual es un “lenguaje” único que permite que distintos sistemas informáticos en salud se comuniquen entre ellos. Es decir, “FHIR” es como el “inglés” pero para sistemas informáticos en salud.&lt;/p&gt;
&lt;p&gt;Finalmente, cuando dos sistemas informáticos son capaces de intercambiar información entre ellos, decimos que “interoperan” o que son “interoperables”.&lt;/p&gt;
&lt;h2&gt;Definición formal de HL7 FHIR&lt;/h2&gt;
&lt;p&gt;FHIR es un &lt;a href=&quot;/estandares-interoperabilidad/&quot;&gt;estándar&lt;/a&gt; para el intercambio de datos de salud. Fue creado por &lt;a href=&quot;https://www.hl7.org/&quot;&gt;HL7&lt;/a&gt;, una organización sin fines de lucro que desarrolla estándares sintácticos desde 1987.&lt;/p&gt;
&lt;p&gt;FHIR es el acrónimo de &lt;strong&gt;F&lt;/strong&gt;ast, &lt;strong&gt;H&lt;/strong&gt;ealthcare, &lt;strong&gt;I&lt;/strong&gt;nteroperability, &lt;strong&gt;R&lt;/strong&gt;esources, lo que significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast&lt;/strong&gt;: implementación es más rápida. Poner en marcha un sistema interoperable con FHIR es más rápido comparado con otros estándares como HL7 v2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Healthcare&lt;/strong&gt;: es un estándar hecho para salud. Puede ser usado para otras cosas pero no tiene mucho sentido hacerlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;: creado para intercambiar información entre 2 o más sistemas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resources&lt;/strong&gt;: utiliza una arquitectura de alta conectividad de la WEB llamada &lt;a href=&quot;https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional&quot;&gt;“REST”&lt;/a&gt;, la cual se basa en “recursos”.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aunque si le preguntas a uno de sus creadores, te responderá algo como:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“(FHIR) no es un estándar, es una &lt;strong&gt;comunidad&lt;/strong&gt; que convive para facilitar el intercambio de datos en salud, usando tecnologías web”&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esto de “comunidad” no se lo toman a la ligera. Hay muchos espacios digitales donde las personas pueden ser parte de FHIR, entre ellos: &lt;a href=&quot;https://www.hl7.org/fhir/&quot;&gt;la documentación&lt;/a&gt;, &lt;a href=&quot;https://chat.fhir.org&quot;&gt;chat&lt;/a&gt;, &lt;a href=&quot;https://confluence.hl7.org/display/FHIR/Blogs&quot;&gt;blogs&lt;/a&gt; y &lt;a href=&quot;http://community.fhir.org/&quot;&gt;foro&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;¿Por qué es importante FHIR?&lt;/h2&gt;
&lt;p&gt;FHIR es el “caballo de batalla” de HL7, lo que significa que hoy en día es el estándar por defecto a utilizar para proyectos de interoperabilidad en salud.&lt;/p&gt;
&lt;p&gt;Hay algunas acciones de la organización HL7 que dan cuenta de esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El objetivo de FHIR es que sea un estándar de uso global.&lt;/li&gt;
&lt;li&gt;Hay un “FHIR Accelerator” que te ayuda a implementar proyectos de interoperabilidad con FHIR asesorados por HL7 internacional.&lt;/li&gt;
&lt;li&gt;El logo de HL7 cambió a uno muy parecido a FHIR 😉.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Cómo nace FHIR?&lt;/h2&gt;
&lt;p&gt;Hay estándares anteriores que son más usados en el mundo, como HL7 v2, pero la tecnología evolucionó más rápido que ellos. Nos movimos del mundo offline al mundo online, de desktop a mobile, de software a aplicaciones, de servidores al mundo cloud, de sistemas cerrados a APIs abiertas…&lt;/p&gt;
&lt;p&gt;Mientras tanto, en el mundo de la tecnología nació &lt;a href=&quot;https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional&quot;&gt;REST&lt;/a&gt;, que es un patrón arquitectónico donde todo puede ser modelado como un recurso y donde todo puede hacerse en base a 4 simples operaciones: crear, leer, actualizar y destruir (operaciones &lt;a href=&quot;https://es.wikipedia.org/wiki/CRUD&quot;&gt;CRUD&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Es así como REST marca los cimientos de FHIR (Fast Healthcare Interoperability Resources), permitiendo definir el mundo de la salud en recursos que puedan ser entendidos por clínicos y por informáticos.&lt;/p&gt;
&lt;h2&gt;¿Por qué FHIR y no otro estándar?&lt;/h2&gt;
&lt;p&gt;Hay varias razones por las cuales preferir FHIR por sobre sus predecesores. Algunas de ellas son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FHIR fue hecho para implementadores.&lt;/li&gt;
&lt;li&gt;Cuando haces desarrollos, la dificultad siempre existe. La pregunta es, ¿dónde movemos la dificultad?&lt;/li&gt;
&lt;li&gt;Es fácil de implementar. En promedio, implementar otros estándares tomaba 1 año y medio, mientras que con FHIR son solo 6 meses.&lt;/li&gt;
&lt;li&gt;Tiene posibilidad de “mapeo” a otros formatos. Es decir, es fácil transformar de FHIR a HL7V2 o CDA.&lt;/li&gt;
&lt;li&gt;Mejor capacidad de comunicar información.&lt;/li&gt;
&lt;li&gt;Costo de implementación bajos (500USD). Esto es considerando solo costo de diseño y costo del sistema base.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Dónde podemos encontrar ejemplos y proyectos que usan HL7 FHIR?&lt;/h2&gt;
&lt;p&gt;En la página &lt;a href=&quot;https://simplifier.net/&quot;&gt;simplifier&lt;/a&gt; podemos encontrar la documentación de proyectos a nivel global.&lt;/p&gt;
&lt;p&gt;En Chile, algunas organizaciones que están usando FHIR: Araucanía sur, Iquique, El ministerio de salud, UC Christus, el metropolitano sur oriente y La clínica Alemana. Además, ya existe una &lt;a href=&quot;http://core.hl7chile.cl/&quot;&gt;Guía de implementación FHIR para Chile&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Recursos&lt;/h2&gt;
&lt;p&gt;Te dejo algunos recursos que te pueden ayudar a aprender o implementar FHIR:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/recursos-para-aprender-fhir/&quot;&gt;Recursos para aprender sobre HL7 FHIR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/hl7-principios-y-fundamentos/&quot;&gt;Apuntes de curso del CENS “HL7 FHIR: Principios y Fundamentos”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://core.hl7chile.cl/&quot;&gt;Guía de implementación FHIR para Chile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y si tienes alguna duda, puedes &lt;a href=&quot;https://codeness.io/servicios/consultoria&quot;&gt;agendar una reunión con nosotros&lt;/a&gt;.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/f980bd0820f4b7c7c9ab9a9da17b1e69/47498/preview.jpg"></media:content></item><item><title><![CDATA[Cómo implementar un campo único en Firestore]]></title><description><![CDATA[Imagina que tienes que guardar un campo de RUT de pacientes en Firestore y que además tienes que preocuparte de no duplicarlos. ¿Cómo lo…]]></description><link>https://blog.codeness.io/campos-unicos-en-firestore/</link><guid isPermaLink="false">https://blog.codeness.io/campos-unicos-en-firestore/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Fri, 08 Jul 2022 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Imagina que tienes que guardar un campo de RUT de pacientes en Firestore y que además tienes que preocuparte de no duplicarlos. ¿Cómo lo haces?&lt;/p&gt;
&lt;p&gt;Firestore no tiene una forma nativa para guardar campos únicos, así que tenemos que usar técnicas para lograrlo.&lt;/p&gt;
&lt;p&gt;En este post, veremos una técnica para guardar campos únicos, que podría ser usada para no duplicar registros en base al &lt;a href=&quot;https://es.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario&quot;&gt;RUT&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nota: El RUT es un número único implantado en Chile, que se usa como identificación tributaria. En registros clínicos, se suele usar para identificar al paciente de forma inequívoca.&lt;/p&gt;
&lt;h2&gt;Meta&lt;/h2&gt;
&lt;p&gt;La meta de este artículo es mostrarte un paso a paso de cómo lograr guardar valores únicos en un documento de firestore.&lt;/p&gt;
&lt;p&gt;Para el resto del artículo, consideraremos que existe una colección de pacientes (&lt;code class=&quot;language-text&quot;&gt;patients&lt;/code&gt;) y que queremos hacer que el campo rut sea único.&lt;/p&gt;
&lt;h2&gt;¿Qué es un campo único?&lt;/h2&gt;
&lt;p&gt;Un campo único es un dato particular que debe ser único entre todos tus registros.&lt;/p&gt;
&lt;p&gt;Estos van a depender de la aplicación que estés construyendo, pero algunos ejemplos que suelen ser únicos: identificadores, RUT de pacientes y correo electrónicos.&lt;/p&gt;
&lt;h2&gt;¿Por qué guardar un campo único en Firestore no es fácil?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://firebase.google.com/products/firestore&quot;&gt;Firestore&lt;/a&gt; no tiene la funcionalidad para guardar un campo único. No es como otros motores de base de datos donde puedes decir “mira, quiero que la propiedad rut sea única para todos estos registros”.&lt;/p&gt;
&lt;p&gt;Para lograrlo, hay que usar distintas técnicas, y va a depender de tu caso particular.&lt;/p&gt;
&lt;h2&gt;¿Cómo podemos guardar un campo único?&lt;/h2&gt;
&lt;p&gt;En este artículo veremos dos formas, las cuales van a depender de tu situación particular.&lt;/p&gt;
&lt;p&gt;La primera es la más sencilla: &lt;strong&gt;haz que el campo único sea el identificador de tu documento en Firestore&lt;/strong&gt;. Te conviene esta solución cuando no puede existir un registro sin el dato.&lt;/p&gt;
&lt;p&gt;La segunda es más complicada: &lt;strong&gt;crea una colección para tu campo único y controla la escritura mediante reglas de seguridad&lt;/strong&gt;. Te conviene esta solución cuando no puedes usar la primera.&lt;/p&gt;
&lt;h2&gt;Alternativa #1: Haz que el campo único sea el identificador de tu documento en Firestore&lt;/h2&gt;
&lt;p&gt;Si tienes registros de pacientes y por requerimientos siempre existirán pacientes con RUT, puedes optar por esta alternativa.&lt;/p&gt;
&lt;p&gt;Cuando crees pacientes, en vez de usar la función &lt;code class=&quot;language-text&quot;&gt;add()&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Tendrás que hacerlo con &lt;code class=&quot;language-text&quot;&gt;doc()&lt;/code&gt; y &lt;code class=&quot;language-text&quot;&gt;set()&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Luego te recomiendo agregar en &lt;a href=&quot;https://firebase.google.com/docs/firestore/security/get-started&quot;&gt;Reglas de Seguridad&lt;/a&gt; que el ID del documento sea igual al RUT:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;match /patients/{patientId} {
  allow create: if patientId == request.resource.data.rut;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puedes validar también que &lt;code class=&quot;language-text&quot;&gt;patientId&lt;/code&gt; &lt;em&gt;parezca&lt;/em&gt; un rut válido (mediante una &lt;a href=&quot;https://firebase.google.com/docs/reference/security/database/regex&quot;&gt;expresión regular&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Nota: para validar el dígito verificador, tendrías que hacerlo en una &lt;a href=&quot;https://firebase.google.com/products/functions&quot;&gt;Cloud Function&lt;/a&gt;, ya que en &lt;a href=&quot;https://firebase.google.com/docs/firestore/security/get-started&quot;&gt;Firestore Security Rules&lt;/a&gt; no puedes usar loops (aunque quizás es posible hacerlo sin loops 🙃).&lt;/p&gt;
&lt;h2&gt;Alternativa #2: Crea una colección para tu campo único y controla la escritura mediante reglas de seguridad&lt;/h2&gt;
&lt;p&gt;Si no puedes optar por la solución anterior, tendrás que hacer algo más complicado.&lt;/p&gt;
&lt;p&gt;La idea es tener una colección aparte, que sea como un mapa entre tu campo único y el ID del documento que lo tiene. Luego agregar validaciones mediante reglas de seguridad. A esta colección la llamaré &lt;code class=&quot;language-text&quot;&gt;identifiers&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;El resultado final será que para cada registro de paciente, también existirá un registro en la colección de identificadores. Por ejemplo:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/6893f556191b99070fb4efc1f529e053/05244/Screen_Shot_2022-07-06_at_13.54.32.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 28.48101265822785%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAAAtUlEQVQY04WQ6wqDMAyF+/7vKIq/ButF3Wzt9SwJKIVtGPga0qQnSdW6rojxQErpwnuPfd+htYa1FlzjnBM4Zr8sy3XXox4uQm8JIWbUUlBrRWsNdMAfGfaV8dwy3qGgUa5QTQ/X9yhtLLRxMOS5q4iJNYRUqVmRhjkXyd2heAVDqxljBO4icpSstSGmLF8QCJ7ozP0zxXuz0PlfveCvh7cTTtMEZhgGYRxHied5pjXzl8jdhB8P9NPEcBKnwgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Paciente con ID = 5dedf…&quot;
        title=&quot;Paciente con ID = 5dedf…&quot;
        src=&quot;/static/6893f556191b99070fb4efc1f529e053/f058b/Screen_Shot_2022-07-06_at_13.54.32.png&quot;
        srcset=&quot;/static/6893f556191b99070fb4efc1f529e053/c26ae/Screen_Shot_2022-07-06_at_13.54.32.png 158w,
/static/6893f556191b99070fb4efc1f529e053/6bdcf/Screen_Shot_2022-07-06_at_13.54.32.png 315w,
/static/6893f556191b99070fb4efc1f529e053/f058b/Screen_Shot_2022-07-06_at_13.54.32.png 630w,
/static/6893f556191b99070fb4efc1f529e053/40601/Screen_Shot_2022-07-06_at_13.54.32.png 945w,
/static/6893f556191b99070fb4efc1f529e053/78612/Screen_Shot_2022-07-06_at_13.54.32.png 1260w,
/static/6893f556191b99070fb4efc1f529e053/05244/Screen_Shot_2022-07-06_at_13.54.32.png 1752w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Paciente con ID = 5dedf…&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ff99d3872bc64caa7bbc2f92e2f868d7/bcec6/Screen_Shot_2022-07-06_at_13.52.58.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 20.253164556962027%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsSAAALEgHS3X78AAAAkElEQVQY042Q2QpDIQxE/f8/dUWtpi6xU2O5fSlcKhwmCyQTlXUOxnqUSuh9bPqh1ooYI5z3eJQKerZTb639cNWJCKqNBZcnQpkYY2Ixgzdrra2fnkkM6i/881QpBcZoaK3ht5sQwkFi2ZyIEesEz/l1f4cSm9bawzVQVJh7CLM47+ecnDNSSucrBImvXFT6b7aENiaJ2YZNAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Identificador con ID = 1111111-1, y patientId = 5dedf…&quot;
        title=&quot;Identificador con ID = 1111111-1, y patientId = 5dedf…&quot;
        src=&quot;/static/ff99d3872bc64caa7bbc2f92e2f868d7/f058b/Screen_Shot_2022-07-06_at_13.52.58.png&quot;
        srcset=&quot;/static/ff99d3872bc64caa7bbc2f92e2f868d7/c26ae/Screen_Shot_2022-07-06_at_13.52.58.png 158w,
/static/ff99d3872bc64caa7bbc2f92e2f868d7/6bdcf/Screen_Shot_2022-07-06_at_13.52.58.png 315w,
/static/ff99d3872bc64caa7bbc2f92e2f868d7/f058b/Screen_Shot_2022-07-06_at_13.52.58.png 630w,
/static/ff99d3872bc64caa7bbc2f92e2f868d7/40601/Screen_Shot_2022-07-06_at_13.52.58.png 945w,
/static/ff99d3872bc64caa7bbc2f92e2f868d7/78612/Screen_Shot_2022-07-06_at_13.52.58.png 1260w,
/static/ff99d3872bc64caa7bbc2f92e2f868d7/bcec6/Screen_Shot_2022-07-06_at_13.52.58.png 1834w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Identificador con ID = 1111111-1, y patientId = 5dedf…&lt;/p&gt;
&lt;p&gt;Para lograrlo, son dos pasos:&lt;/p&gt;
&lt;h3&gt;1) Agregar colección de identificadores&lt;/h3&gt;
&lt;p&gt;Al crear pacientes, ahora tenemos que también crear identificadores. Por ejemplo:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; patientRef &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ID auto generado&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; identifierRef &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;identifiers&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ID de RUT&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; identifierRef&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; patientId&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; patientRef&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; patientRef&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Aquí estamos creando ambos documentos. El problema es que esta no es una &lt;a href=&quot;https://es.wikipedia.org/wiki/Operaci%C3%B3n_at%C3%B3mica#:~:text=Una%20operaci%C3%B3n%20at%C3%B3mica%20es%20una,la%20operaci%C3%B3n%20se%20haya%20completado.&quot;&gt;operación atómica&lt;/a&gt;, es decir, si falla la creación de uno, el otro documento no se ve afectado.&lt;/p&gt;
&lt;p&gt;Para solucionar este problema, tenemos que usar &lt;a href=&quot;https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes&quot;&gt;escrituras en lotes (Batch writes)&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; batch &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; patientRef &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; identifierRef &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;identifiers&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientRef&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPatient&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;identifierRef&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; patientId&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; patientRef&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;commit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Ocurrió un error. Quizás el RUT ya estaba en uso :)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Con esto tenemos listo la primera parte. Ahora debemos hacer que esta operación falle si el RUT está en uso.&lt;/p&gt;
&lt;h3&gt;2) Agregar reglas de seguridad para evitar duplicados&lt;/h3&gt;
&lt;p&gt;Si ya existe un paciente con el RUT, la creación de paciente debe fallar. Como estamos usando una transacción, basta con la siguiente regla de seguridad:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;match &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;identifiers&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;identifierId&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  allow create&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;patientId&apos;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; request&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;resource&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Encapsulando la lógica anterior en una función llamada &lt;code class=&quot;language-text&quot;&gt;createPatient&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createPatient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;patientData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; batch &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;batch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; patientRef &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; identifierRef &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;identifiers&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientRef&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newPatient&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;identifierRef&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; patientId&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; patientRef&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	  &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; batch&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;commit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	  &lt;span class=&quot;token comment&quot;&gt;// Ocurrió un error. Quizás el RUT ya estaba en uso :)&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Al intentar ejecutar el siguiente código, obtenemos el siguiente resultado:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createPatient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; rut&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Chewy 1&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// ^funciona, y crea al paciente y al identificador (id = 11111111-1)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createPatient&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; rut&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Chewy 2&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// ^falla, identificador id = 11111111-1 ya existe, la operación se considera&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// como un update, por lo tanto las reglas de seguridad la rechazan&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Esto ocurre porque el segundo llamado está escribiendo sobre el identifier con ID igual a 11111111-1, como ya existe, estamos hablando de una operación &lt;code class=&quot;language-text&quot;&gt;update&lt;/code&gt; la cual no es permitida.&lt;/p&gt;
&lt;p&gt;Pero la regla no evita que agreguemos los pacientes directamente:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Las siguientes llamadas funcionan:&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; rut&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Chewy 1&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; rut&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Chewy 2&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ni tampoco evita que agreguemos identificadores cuando los pacientes no existen:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;identifiers&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; patientId&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;no existe&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Es por eso que necesitamos agregar las siguientes 2 reglas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Cuando creo un identificador, verificar que el paciente existe:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;patientExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;identifierId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; identifier &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getAfter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;databases&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;documents&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;identifiers&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;identifierId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; patient &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getAfter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;databases&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;documents&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;patients&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;identifider&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; identifierId &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; patient&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

match &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;identifiers&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;identifierId&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  allow create&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;patientExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;identifierId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La función &lt;a href=&quot;https://firebase.google.com/docs/reference/rules/rules.firestore#.getAfter&quot;&gt;getAfter&lt;/a&gt; obtiene el documento asumiendo que la solicitud actual se realiza correctamente. Si el paciente no existe, la verificación fallará, ya que el &lt;code class=&quot;language-text&quot;&gt;getAfter&lt;/code&gt; del paciente fallaría.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Cuando creo un paciente, verificar que el identificador existe:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;identifierExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;patientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; patient &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getAfter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;databases&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;documents&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;patients&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; identifier &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getAfter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;databases&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;database&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;documents&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;identifiers&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patient&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; identifier&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;patientId &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; patientId&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

match &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;patients&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  allow create&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;identifierExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Esto es lo mismo que la regla anterior, pero desde el punto de vista del paciente.&lt;/p&gt;
&lt;p&gt;Gracias a estas dos reglas, los casos anteriores funcionan como deberían:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// Prueba 1: ambas llamadas fallan porque no existe identifier&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; rut&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Chewy 1&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; rut&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;Chewy 2&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// Prueba 2: falla porque no existe paciente&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;identifiers&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;11111111-1&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; patientId&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;no existe&apos;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La única forma de crear pacientes ahora es con una operación atómica, como la que tenemos en la función &lt;code class=&quot;language-text&quot;&gt;createPatient&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;En este artículo vimos como implementar la funcionalidad de “campo único” en Firestore.&lt;/p&gt;
&lt;p&gt;Como ejemplo, nos pusimos en la situación donde queremos guardar pacientes con un campo único &lt;a href=&quot;https://es.wikipedia.org/wiki/Rol_%C3%9Anico_Tributario&quot;&gt;“RUT”&lt;/a&gt;, que es un identificador único que tienen los ciudadanos en Chile 🇨🇱. De todos modos, puedes usar las mismas técnicas para otros tipos de identificadores, tales como pasaporte, nombres de usuario o incluso correos.&lt;/p&gt;
&lt;p&gt;Las técnicas que vimos son 2:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La fácil, que es utilizando tu campo único como ID del documento.&lt;/li&gt;
&lt;li&gt;La difícil, que es utilizando una colección auxiliar que funciona como un registro que guarda los valores únicos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Me gustaría destacar que las técnicas mostradas le falta una capa adicional de privacidad, ya que el RUT estaría visible en el administrador:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ec8879020c01984433210dccaf2ad109/05fb0/Screen_Shot_2022-07-06_at_13.19.54.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 42.405063291139236%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABDklEQVQoz5VSXU+EMBDk//8/ow9qTj2IvQNaoN1+d9xyQo74YG6SCaG7nZ1habq2hRDfkOMAZwkxBnjvd4YQYK3F21mCyKLr2rVXLzO0nrnuD/2NmmbIyUAtDgtFGBdZ9J4JsYq6m7hU3D8TlHaQfEfbcOhvKBSIKeIkLD4uBKE8cs5/WEpGSgk8D/2SMTA7mXCdE9fKzmZk++3XJ16en3B6f8X1ItAPA/q+3znwuxBifZIvkCbjPCZoV1BxG/grWCPVKJ4Z2UF1cYwcD2eZNQzHXIyHmjSMIdyjwQOoDiosL887CyXlmqAO2urNff7/WKNVOOfYGS9SKd60Xv+CXfARZ5tg/UREtApvZ1vPD2NecPagXeHtAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Screen Shot 2022-07-06 at 13.19.54.png&quot;
        title=&quot;Screen Shot 2022-07-06 at 13.19.54.png&quot;
        src=&quot;/static/ec8879020c01984433210dccaf2ad109/f058b/Screen_Shot_2022-07-06_at_13.19.54.png&quot;
        srcset=&quot;/static/ec8879020c01984433210dccaf2ad109/c26ae/Screen_Shot_2022-07-06_at_13.19.54.png 158w,
/static/ec8879020c01984433210dccaf2ad109/6bdcf/Screen_Shot_2022-07-06_at_13.19.54.png 315w,
/static/ec8879020c01984433210dccaf2ad109/f058b/Screen_Shot_2022-07-06_at_13.19.54.png 630w,
/static/ec8879020c01984433210dccaf2ad109/40601/Screen_Shot_2022-07-06_at_13.19.54.png 945w,
/static/ec8879020c01984433210dccaf2ad109/05fb0/Screen_Shot_2022-07-06_at_13.19.54.png 1138w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Además, ¿qué pasa si el campo único tiene caracteres que a Firebase no le gusta en sus IDs?&lt;/p&gt;
&lt;p&gt;Y solo vimos un único identificador, ¿cómo podemos hacer que existan otros tipos de identificadores? Por ejemplo, permitir que pacientes tengan RUT o Pasaporte.&lt;/p&gt;
&lt;p&gt;A continuación te dejo contenido extra de cómo abordar estos requerimientos.&lt;/p&gt;
&lt;h2&gt;Extra: Cómo esconder el identificador&lt;/h2&gt;
&lt;p&gt;Si no quieres que tu campo único esté visible desde Firebase:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ec8879020c01984433210dccaf2ad109/05fb0/Screen_Shot_2022-07-06_at_13.19.54.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 42.405063291139236%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABDklEQVQoz5VSXU+EMBDk//8/ow9qTj2IvQNaoN1+d9xyQo74YG6SCaG7nZ1habq2hRDfkOMAZwkxBnjvd4YQYK3F21mCyKLr2rVXLzO0nrnuD/2NmmbIyUAtDgtFGBdZ9J4JsYq6m7hU3D8TlHaQfEfbcOhvKBSIKeIkLD4uBKE8cs5/WEpGSgk8D/2SMTA7mXCdE9fKzmZk++3XJ16en3B6f8X1ItAPA/q+3znwuxBifZIvkCbjPCZoV1BxG/grWCPVKJ4Z2UF1cYwcD2eZNQzHXIyHmjSMIdyjwQOoDiosL887CyXlmqAO2urNff7/WKNVOOfYGS9SKd60Xv+CXfARZ5tg/UREtApvZ1vPD2NecPagXeHtAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Screen Shot 2022-07-06 at 13.19.54.png&quot;
        title=&quot;Screen Shot 2022-07-06 at 13.19.54.png&quot;
        src=&quot;/static/ec8879020c01984433210dccaf2ad109/f058b/Screen_Shot_2022-07-06_at_13.19.54.png&quot;
        srcset=&quot;/static/ec8879020c01984433210dccaf2ad109/c26ae/Screen_Shot_2022-07-06_at_13.19.54.png 158w,
/static/ec8879020c01984433210dccaf2ad109/6bdcf/Screen_Shot_2022-07-06_at_13.19.54.png 315w,
/static/ec8879020c01984433210dccaf2ad109/f058b/Screen_Shot_2022-07-06_at_13.19.54.png 630w,
/static/ec8879020c01984433210dccaf2ad109/40601/Screen_Shot_2022-07-06_at_13.19.54.png 945w,
/static/ec8879020c01984433210dccaf2ad109/05fb0/Screen_Shot_2022-07-06_at_13.19.54.png 1138w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Puedes “ofuscar” el identificador, de manera que en vez de guardar el RUT, guardes su valor encriptado.&lt;/p&gt;
&lt;p&gt;Para esto, tienes que usar alguna función que &lt;a href=&quot;https://firebase.google.com/docs/reference/rules/rules.hashing&quot;&gt;esté disponible en Cloud Firestore Rules&lt;/a&gt;, por ejemplo, &lt;code class=&quot;language-text&quot;&gt;md5&lt;/code&gt; o &lt;code class=&quot;language-text&quot;&gt;sha256&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Usando &lt;code class=&quot;language-text&quot;&gt;sha256&lt;/code&gt;, el ID del documento ahora será el RUT encriptado:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; patientId &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sha256&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;firestore&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;patients&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Y tendrías que actualizar las reglas de seguridad para verificar que el RUT del paciente sea igual al RUT encriptado:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;jsx&quot;&gt;&lt;pre class=&quot;language-jsx&quot;&gt;&lt;code class=&quot;language-jsx&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;verifyPatientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; patientData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; patientId &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; hashing&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sha256&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientData&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;rut&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toHexString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

match &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;patients&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  allow create&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;verifyPatientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; request&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;resource&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  allow update&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;verifyPatientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;patientId&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; request&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;resource&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Así, el ID en vez de ser &lt;code class=&quot;language-text&quot;&gt;11111111-1&lt;/code&gt;, queda en &lt;code class=&quot;language-text&quot;&gt;5dedf71e6903bbb3c0b08ab5d94db62a4a5dea268bf2ef8d591089345989f82f&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f61f565e0fb8570a9a448c4f6f6668d8/c5bb3/Screen_Shot_2022-07-06_at_13.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 73.41772151898735%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsSAAALEgHS3X78AAABp0lEQVQ4y41Ta2+CQBDk//8p4yvqx5Y0hk+2iPJ+qIAciFNm7VlL1XjJuDt37u5wu2csl0vkeY5st8OuQ1EUqOsaSimx96DPqqpCEATXuOPxCGM8Hsvml21j7TiIkwRK/qwk8BmYMAxDZFmGw+Eg3ADXueXPD9qONp1p0DTNQ5UEz9u2xel0El8UfoYN7KjBu61grhUst8aHU+PNrlFUl0Ln8y/663afSY2qPkOdgKIGyg55dfELddF7L0Hf/5OQTp4fsN2sEQY+dlkiNvBd+L7XwZd72m63SNP0j6q+8mtCdsiTwAhJkiKKIkkSx7E0TPP9fv9P1cOEm81Gggn6ruvC6bpOS1Ahz/pJ7iZkd6gm6UaGn0VLrvc053i8rJDVb9XY3VzyU7nved6Vv5SQA6nVEQykIs0Jcn2Hj3DT5VxU6DukSjaBdrVaiWLeK4s+WxxwoyxLqUzwjhjEt0lVmtOS6zdLUARBnzlo+RwNKrIsC3zT8/kcpmmKnUwmguFwKJzn9Gmn06mcDQYDLBYLzGYzjEYjKWzoavqBk1OJVt33b3l/n734Bpjuff45jdFQAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Screen Shot 2022-07-06 at 13.png&quot;
        title=&quot;Screen Shot 2022-07-06 at 13.png&quot;
        src=&quot;/static/f61f565e0fb8570a9a448c4f6f6668d8/f058b/Screen_Shot_2022-07-06_at_13.png&quot;
        srcset=&quot;/static/f61f565e0fb8570a9a448c4f6f6668d8/c26ae/Screen_Shot_2022-07-06_at_13.png 158w,
/static/f61f565e0fb8570a9a448c4f6f6668d8/6bdcf/Screen_Shot_2022-07-06_at_13.png 315w,
/static/f61f565e0fb8570a9a448c4f6f6668d8/f058b/Screen_Shot_2022-07-06_at_13.png 630w,
/static/f61f565e0fb8570a9a448c4f6f6668d8/c5bb3/Screen_Shot_2022-07-06_at_13.png 680w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El código de la segunda técnica bajo ofuscación te lo dejo como ejercicio 😆&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/761134b417e50e230b0a57daed1def97/47498/preview.jpg"></media:content></item><item><title><![CDATA[Sobre nosotros]]></title><description><![CDATA[El blog de Nessy es un blog sobre tecnología en salud, escrito y mantenido por Eliana Quijada y Nicolás Gómez.  Nace el 2020 como una forma…]]></description><link>https://blog.codeness.io/about/</link><guid isPermaLink="false">https://blog.codeness.io/about/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Tue, 28 Jun 2022 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;El blog de Nessy&lt;/strong&gt; es un blog sobre tecnología en salud, escrito y mantenido por &lt;a href=&quot;https://enfermeraprogramadora.cl&quot;&gt;Eliana Quijada&lt;/a&gt; y &lt;a href=&quot;https://gomezespejo.com&quot;&gt;Nicolás Gómez&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/57dbcbf64df04e5bd54b98ea3bfde392/0b533/nico-eli-scotland.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 62.65822784810127%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsSAAALEgHS3X78AAADJElEQVQozwEZA+b8ANfm7cfW38za4czb483b5M7c5L/O2q/B0afB2KvJ4LTF1b3W6KzN5bfL3aTQ7J7O7ZnN76vQ6rzQ4bTV7gDGz8/Y4OHh6+zX4+fP3eXc6Ovb5+rY5+/P6vjP8P/a7fjP4OnK4u7S4uq/2+y32O2/3O/K4OzO3ebC1uQAn66yqsLSpb/Sp8DTqsTYtczdw9bhydri2OXqs7W2qq2w2unt2OTn0+Hp0d/mzdnjzNnizt3kyNjjvs7bAJCci4+ouY2ovI6qvJOuwZu0xJqzxZqzxaG8znFfYY9sZKfA0p23zZ20xqnC2HKFeYSaoaXA26C4z5i1zgCmrJrCx8bBx8bEytG8xMm/yM6+xsq2wsmZjpZ9Uk15VU2Tlp2uuLuhqaWttrU1QyJQXUmvuLmTpJdmgFUAgIhPg4tIjJVckpqOlJqenKKfo6mmanF8WkVGWz88JR4nNjVCaGtvqK+ffoZqMD4gOUQmf4NGZXkxUWcgAG55MGt5Kmt6J4KKbnuCb3CBTjY6NhASIBAUHCIhL1NEVCIiMS8xOYSMWXKAQztJJThCImVsNnB/OHaFMwBjdDBdcCdoejuNlH5zgltddTY7Ry8UFiMPExsbGyZbWGkqKjgdHilmeTp4lDp9kT5yhTN0iDJxiT1rhDMAWGotVWsnbX5GgIppYG9EOEojND8nFhkjEhUfGBQeTT1MOTlGISIvZnw6bI4xZ4QzXn0tYYEqYYEtbowyADlJIS49GlJkL09dOElZMy48HyAmHRgbJRQXIhobJh4fKSAhLSoqOFx1N1VyKVBrKWSCMGSELlx1K2l9OQAlMRYuQRhAViNAWB9JYyFPaCU8TScQEyIXGyUUFyINEhsRFB8qLTNJWjBGWiNTaStoiDJHWyJDRSRaZTEAT3IaWH0dX4QgZYogY4YkdJoqPlQkDAocHx4kDxQdDxQaERIhOUwnRV0hLzYdQlIjRlckLjIaOkQgT2EmAFuAG1+EImOHH2mNIWGDJGaJJ2B7KzdBKjg6OzE9JiIrHBogIE5oJ1x+JktiJDtHIDI6HDY+HzxKI0ZQJYlkZ7fXlolUAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli y Nico en Escocia&quot;
        title=&quot;Eli y Nico en Escocia&quot;
        src=&quot;/static/57dbcbf64df04e5bd54b98ea3bfde392/0b533/nico-eli-scotland.png&quot;
        srcset=&quot;/static/57dbcbf64df04e5bd54b98ea3bfde392/c26ae/nico-eli-scotland.png 158w,
/static/57dbcbf64df04e5bd54b98ea3bfde392/6bdcf/nico-eli-scotland.png 315w,
/static/57dbcbf64df04e5bd54b98ea3bfde392/0b533/nico-eli-scotland.png 500w&quot;
        sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nace el 2020 como una forma de documentar y compartir nuestros aprendizajes sobre el mundo de tecnología en salud, con el objetivo de crear puentes entre ambos mundos.&lt;/p&gt;
&lt;h2&gt;¿Por qué “Nessy”?&lt;/h2&gt;
&lt;p&gt;Cuando fuimos a Escocia en 2017, nos dimos cuenta que en las tierras altas hay muchos lugares icónicos con sufijo Ness (Loch Ness, Inverness, etc).&lt;/p&gt;
&lt;p&gt;Amamos Escocia y también amamos programar. Así que cuando creamos nuestra empresa, se nos ocurrió unir ambos conceptos en una palabra: Codeness, que vendría a ser algo como “zona de código”.&lt;/p&gt;
&lt;p&gt;Luego fue natural usar a “Nessy” (el monstruo del Lago Ness) como nuestra mascota, y cuando armamos el Blog, decidimos que “El Blog de Nessy” venía muy bien.&lt;/p&gt;
&lt;h2&gt;Autores&lt;/h2&gt;
&lt;h3&gt;Eliana Quijada&lt;/h3&gt;
&lt;p&gt;Eliana es de profesión Enfermera (de la Universidad de Chile) y además es Programadora. Tiene más de dos años de experiencia creando software en el ámbito de la salud, y es Diplomada en en Emprendimiento e Innovación en Salud Digital.&lt;/p&gt;
&lt;p&gt;Una duda recurrente es cómo una enfermera ahora se dedica a la programación. Eliana habló sobre esto, puedes verlo en el video &lt;a href=&quot;https://youtu.be/7MNEgU0Li5M&quot;&gt;“De Enfermera a Desarrolladora”&lt;/a&gt; en YouTube. También escribió un artículo llamado &lt;a href=&quot;/iniciando-una-carrera-tech-desde-enfermeria&quot;&gt;“Iniciando una carrera Tech desde Enfermería”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Puedes contactarla a través de su &lt;a href=&quot;https://www.linkedin.com/in/eli-quijada&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Nicolás Gómez&lt;/h3&gt;
&lt;p&gt;Nicolás es de profesión Ingeniero Civil en Computación (de la P. Católica de Chile). Tiene más de 9 años creando sistemas informáticos, y además es Diplomado en Emprendimiento e Innovación en Salud Digital.&lt;/p&gt;
&lt;p&gt;Si bien no tiene experiencia clínica, ha trabajado creando aplicaciones en el ámbito de la salud desde el 2017. Primero trabajó para una start-up (nacida en Silicon Valley) que se dedicaba a crear productos para mejorar hábitos alimenticios. Luego, junto a Eliana el año 2021, crearon &lt;a href=&quot;https://apposito.codeness.io&quot;&gt;“Apposito”&lt;/a&gt;, una aplicación para documentar heridas de pacientes.&lt;/p&gt;
&lt;p&gt;Puedes contactarlo a través de su &lt;a href=&quot;https://www.linkedin.com/in/codewithnico&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/d4812b19dc1e93557a7b8bfe8630dba3/47498/preview.jpg"></media:content></item><item><title><![CDATA[Cómo fue trabajar 2 semanas desde Reino Unido]]></title><description><![CDATA[Con Eliana viajamos a Reino Unido durante 5 semanas, las primeras dos fue de trabajo remoto y las últimas 3 vacaciones. Las semanas que…]]></description><link>https://blog.codeness.io/como-fue-trabajar-2-semanas-en-reino-unido/</link><guid isPermaLink="false">https://blog.codeness.io/como-fue-trabajar-2-semanas-en-reino-unido/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Wed, 01 Jun 2022 22:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Con Eliana viajamos a Reino Unido durante 5 semanas, las primeras dos fue de trabajo remoto y las últimas 3 vacaciones.&lt;/p&gt;
&lt;p&gt;Las semanas que estuvimos trabajando fue para hacer un mini experimento de “nómadas digitales”. A ambos nos gustaría estar un tiempo en esto, y qué mejor que aprovechar un viaje que ya teníamos programado para hacer una prueba inicial.&lt;/p&gt;
&lt;p&gt;La primera semana la hicimos en Londres hospedados en el departamento de un amigo. Así que ahí teníamos todas las comodidades, como lavadora, escritorio, cocina y refrigerador. La segunda semana fue en Edimburgo, nos quedamos en un hotel cerca del centro de la ciudad.&lt;/p&gt;
&lt;p&gt;De este breve experimento, me gustaría compartirte 7 observaciones y aprendizajes que tuvimos.&lt;/p&gt;
&lt;h2&gt;1) Es posible conocer nuevos lugares y trabajar… pero no es “gratis”&lt;/h2&gt;
&lt;p&gt;Eli trabaja full-time, con horario de 9:00 a 18:00 en horario de Chile. Ese horario traducido a Reino Unido es de 14:00 a 23:00.&lt;/p&gt;
&lt;p&gt;Suena perfecto para poder salir a recorrer en las mañanas, almorzar y luego trabajar hasta tarde.&lt;/p&gt;
&lt;p&gt;Hasta que lo haces y te das cuenta de que es bien cansador.&lt;/p&gt;
&lt;p&gt;El horario en Chile tiene un descanso natural a la hora de almuerzo. Pero cuando estás viajando, prefieres hacer tu jornada de corrido de manera de terminar más temprano para tener la posibilidad de salir a conocer en la noche.&lt;/p&gt;
&lt;p&gt;Los primeros días estás bien, pero luego de 1 semana se comienza a sentir el cansancio físico y mental que esta rutina conlleva. Y luego las mañanas ya no rinden tanto como al principio. De hecho, los últimos días nos despertábamos más tarde y la hora de buscar donde almorzar llegaba muy rápido.&lt;/p&gt;
&lt;p&gt;Así que es posible viajar y conocer mientras estás trabajando, pero no es “gratis” desde el punto de vista del cansancio físico y mental.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9d094cb9598fbd9d07a3fe4d41bd0485/701e9/hyde-park.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 56.32911392405063%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsSAAALEgHS3X78AAACqklEQVQozwGfAmD9AD1YFDdQFig3ECUtDitCETVOEh8vCy9BE0laKlJfNmx2VXF5N2poKWxnL2pnK2VjK19cIlJPEF9dGm9tHgA7WA4sRwkjLgoeGA8OFwYlNwweKQ8nLho/SSdbZiozPxonNwdGTxlXUSg9PzMxNDFAQjheXjxSURVcWRQAQl8OLkkIL0MLMDURHiwJKkAIQ2IVVnYkX3EyaIA3WGozJSoVPEAhXFhTgnp9lIyLVlJXQENTXmE8Z2gqAFJtJE1pH1VyIWKBJmGCJl19Kl5wL2ZoS11jXV1hVFthQUlWK05gLbWajfLRwOnLutW1n0k+PjlHLFtwNAA3QSNBUCM8SxxGUSVGVCI/TyFUTzWKWF99YYdxaZdTTGk+UiR0d0KLZVS8knyDXUqLZ0+Ialw1Sw9oih4AHSQNISUOHiENGx4NExYGDREAppF87sa2mm59Tz9fPzVgMzwqko5T7L6u1auX06mU3begvJN+goBAbJIjAERVJElaK0hXKkNUKBcfCiIpEaOKeNOxm6KCb2REPRAFDx0lGYSRSr6WhZNrWsOahcSchKKBbX6GVlZnOgBMYSxNZS1AVCc+VhxZdiVjfDGahm/VsZ7GpZHfvKY7MDkICxM9QDasi3zOno+0jnd8XkYzMCc0OjkcIRYARVonTWItVnArb4w2dJUzTWIrtJaH1qmU3bWfxaCIPDNIDg0YBAYLXVBIq457bFVDW0EtJSEgJCYsNDc3AFVyJl17JXGPOmqJL157KBEZD0U2Ms6eidqxmYBmVSwpPx8eKgMFBBkVFCgYC1Y6Im9XRxobIigoL0NETQBScR5TcR9EYBlHYxxEVSoXFx4HBwaIcWZzXU8UERovLEYmIzUUFBwZGR4WDgo7LB8kISIaGyEsLTJISlFnkM3/CEB4DwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Nico y Eli en Hyde Park, Londres&quot;
        title=&quot;Nico y Eli en Hyde Park, Londres&quot;
        src=&quot;/static/9d094cb9598fbd9d07a3fe4d41bd0485/f058b/hyde-park.png&quot;
        srcset=&quot;/static/9d094cb9598fbd9d07a3fe4d41bd0485/c26ae/hyde-park.png 158w,
/static/9d094cb9598fbd9d07a3fe4d41bd0485/6bdcf/hyde-park.png 315w,
/static/9d094cb9598fbd9d07a3fe4d41bd0485/f058b/hyde-park.png 630w,
/static/9d094cb9598fbd9d07a3fe4d41bd0485/40601/hyde-park.png 945w,
/static/9d094cb9598fbd9d07a3fe4d41bd0485/78612/hyde-park.png 1260w,
/static/9d094cb9598fbd9d07a3fe4d41bd0485/701e9/hyde-park.png 1780w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;2) Diferencia horaria con Chile está bien para trabajo asíncrono, no tanto si tienes que cumplir con el horario chileno&lt;/h2&gt;
&lt;p&gt;Como mencione antes, de 9:00 a 18:00 en Chile se traduce a 14:00 a 23:00 en Reino Unido.&lt;/p&gt;
&lt;p&gt;Es perfecto para poder salir a conocer en las mañanas y trabajar en las tardes, pero hay algunos problemas cuando el horario es más estricto.&lt;/p&gt;
&lt;p&gt;En nuestro caso, teníamos una reunión a las 14:00. Para poder estar online a esa hora, significa que teníamos que encontrar un lugar para trabajar al menos a las 13:50, y uno para almorzar a las 12:50.&lt;/p&gt;
&lt;p&gt;Esto pone ciertas restricciones a las actividades que haces en la mañana. Ya no es un “tengo hasta las 14:00”, es más bien un “tengo hasta las 12:00”. De cierta forma, se siente que estás trabajando desde que buscas un sitio para comer.&lt;/p&gt;
&lt;p&gt;En un trabajo más asíncrono, donde las personas no tienen que estar conectadas en un horario particular, da más flexibilidad para viajar y conocer.&lt;/p&gt;
&lt;p&gt;Al menos cada vez que nos movíamos teníamos una vista hermosa al Castillo de Edimburgo 😂:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/fda847085287af6239ba06499b6478eb/68875/castillo-edimburgo.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 44.93670886075949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsSAAALEgHS3X78AAACMElEQVQozwElAtr9AE8wPUoyOzsnKoN5jLHA1LXB1qysv4NzgI6BiLq6yYVrg7Grv4l0iKSbpNbj89ro/rC2v2FgVGlkWmJfVQBGLzhGLjk1JyR/f42WlKGNjZN0ZXFtW2hlUky+xM/S3e/Z5fLY4vbb6vzc7P+ssLp0cmpcW09YWE1GRDgARDM2RCw1XkRQi4CPfGx/UzYwmJKWw8/mtb3NzNntlY+ac2Vkop+g5PT/0tvtfXpzV1VHT09ES0tAUVJHAFZKVD4mLVA4Qm5bYmdTXm1aZ52bodfp/9Dh+dHi+bm/04x/jKOdo7zBy5KQj2BbT0NEODI0KTI0KiksIQBMQkZPPD1rUGFpUFtkUVWIfoiAe3mkrsCrt8qZobG+yNnl8v+3vMZ0cmtmZFpnZVo7PjE/QjUlJx8cHhcAQS00TjdBTjhATzk+UkJEaVNbfGd2UVRSWVtVW11Ub3J1zdfopamsZ2dbTlBFRkg/RUc7TU5BMTIpICIaAEIyNTglJEs4OjwyME1FQ2FIUGtPW4h2fmRgWFJXSVFUS1daWXx9eFRVSTw/MzEzKjY3LVJUR1xdUFhaTQBHNjs3KiZIOTVORD1WSkhPSjNARi9hVldPUEZESUZHTEkzOT9hZGJXWk1ISj9dXVNTVEdFSDpPUUNBQzcAPTYnPDErNC4gOy0nS0g4QkkmTV0tSFgsTlIyUVc0SFMvVltAV1s/UlNCTE9EcG9jSkxAICIYQEI5OT0waOjeuCqHCq8AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;El castillo de Edimburgo&quot;
        title=&quot;El castillo de Edimburgo&quot;
        src=&quot;/static/fda847085287af6239ba06499b6478eb/f058b/castillo-edimburgo.png&quot;
        srcset=&quot;/static/fda847085287af6239ba06499b6478eb/c26ae/castillo-edimburgo.png 158w,
/static/fda847085287af6239ba06499b6478eb/6bdcf/castillo-edimburgo.png 315w,
/static/fda847085287af6239ba06499b6478eb/f058b/castillo-edimburgo.png 630w,
/static/fda847085287af6239ba06499b6478eb/40601/castillo-edimburgo.png 945w,
/static/fda847085287af6239ba06499b6478eb/78612/castillo-edimburgo.png 1260w,
/static/fda847085287af6239ba06499b6478eb/68875/castillo-edimburgo.png 2223w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;3) A diferencia de Santiago, hay muchas atracciones, tiendas y lugares para comer que cierran temprano (17:00)&lt;/h2&gt;
&lt;p&gt;En Edimburgo, a pesar de ser capital de Escocia, muchas atracciones, tiendas y sitios para comer cierran temprano (17:00) en comparación con lo que se acostumbra en Santiago de Chile.&lt;/p&gt;
&lt;p&gt;En un tour que hicimos después, nos dijeron que la sociedad allá valora el tiempo en familia, y por eso las jornadas laborales terminaban a una hora razonable de tal manera de priorizar el tiempo que pasas con tus seres queridos ❤️&lt;/p&gt;
&lt;p&gt;Los Starbucks y otras cadenas similares donde tenías un lugar cómodo para trabajar cierran tipo 19:00. En nuestro caso, significaba que a las 18:45 teníamos que movernos al hotel, el cual no era muy cómodo para trabajar.&lt;/p&gt;
&lt;p&gt;Si salías a comprar algo para comer después de las 19:00, lo más probable es que terminaras en el McDonald’s o algún otro punto de comida rápida, los cuales eran los únicos que estaban hasta más tarde. Incluso los bares comienzan a cerrar la cocina tipo 20:00.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e8fc152ad971f938234894d71d9be346/701e9/mc-donnals.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 56.32911392405063%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsSAAALEgHS3X78AAACqklEQVQozwGfAmD9AFiTuWOdwXesypW90o691Iu91Y271IS61ZPC2pbI4JbL5IrJ44fN6ZTD11dJRKl/bJRuXVpBN7h1bPGbkQBUkrlgnMB6qcWWuc6LudGNu9SSus+Qxd2fyt+gzOGo0OOkzuGz2OiLqbiCXE6kb1ubbVnJooy+f3Lsl40AX5O2hqW6jrDFj7jPhazEg4OLspCElYmLjLnRiMHcmMbdstLis9TjlMzknoV9tXpls39rxJyG3piJ9I+GAKympY2KjK6ytcPJzImDjp50Z8mVgFg2Q3qFnqjS5ZPC2qHI3YG92me84pmWl6dlT59uW6qDbMGOgJ9mYQBHOTIfFxM7MSpMQ0CPcWzUnIm2gG0+KDNtYnDUyMDMyMfT1dfZ2trG1dy9x8y2i3mebliPXUpENjQSFBEAEQ0KEQ0LGRQRIh0bPy8rw4t5y5B6RS4zUDtAimdXimlcmHdrp4h7uZqLzLOlrZ6VfVlLSy8mDAoIFA0JAAYDAQsHBBEMCTAnIiAaFzspJDMjHxkQI1dBRnBTR2hLQmNFO15ANFo8MFw9MUo1LT41Mi4pJSojHw0JBQAUDwocFxEZFA4aFRAmHhsbEg8RCAskGjNeSE1zWVOIc3B9Z2FmT0ZZQjlMMytVQjuzqqSWjYhpX1kjHBcAGRQPGxYQGhUPFhALCgkGJQsKKA0WW1RphHp3mY2C5tnS59vWs6afxbavyb25uaynoZeRt66okYiBHRYRABcSDhkUDxwWERYQCwcEAScAAGdTWeXN0+epouOrleDOzMfHnb6thti4nOnVqMixlI6AfKGZlIqCfEM6OgAWEAwXEg0fGhRMRUCCd3OSf3q2rqfNen/iXWvjf4XXuLSvr3bHt5PTsorcv2u5o3VpZGiYjoiAd3GJgITlrzVZe0CcQQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Nico y Eli en el McDonnals&quot;
        title=&quot;Nico y Eli en el McDonnals&quot;
        src=&quot;/static/e8fc152ad971f938234894d71d9be346/f058b/mc-donnals.png&quot;
        srcset=&quot;/static/e8fc152ad971f938234894d71d9be346/c26ae/mc-donnals.png 158w,
/static/e8fc152ad971f938234894d71d9be346/6bdcf/mc-donnals.png 315w,
/static/e8fc152ad971f938234894d71d9be346/f058b/mc-donnals.png 630w,
/static/e8fc152ad971f938234894d71d9be346/40601/mc-donnals.png 945w,
/static/e8fc152ad971f938234894d71d9be346/78612/mc-donnals.png 1260w,
/static/e8fc152ad971f938234894d71d9be346/701e9/mc-donnals.png 1780w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;La excusa es que era lo único abierto 🙄&lt;/p&gt;
&lt;p&gt;Un aprendizaje aquí es que si necesitas trabajar hasta después de las 18:00, es mejor contar con un hospedaje que tenga disponible una mesa o escritorio cómodo para trabajar 😅&lt;/p&gt;
&lt;h2&gt;4) Muchas ubicaciones donde trabajar&lt;/h2&gt;
&lt;p&gt;Además de Starbucks, hay otras cadenas muy parecidas donde puedes ir a trabajar. Algunas de ellas son &lt;a href=&quot;https://www.pret.co.uk/en-GB&quot;&gt;Pret&lt;/a&gt; y &lt;a href=&quot;https://www.costa.co.uk/&quot;&gt;Costa&lt;/a&gt;. Las instalaciones son muy buenas, el internet sin ningún problema para tener videollamadas. Por ejemplo, en este “Costa”, tienes una vista directa al castillo de Edimburgo:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/5f5b625401b032b7f0369b85af3deaea/c483d/costa-coffee.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 133.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAIAAADzvTiPAAAACXBIWXMAAAsSAAALEgHS3X78AAAGeklEQVQ4ywFvBpD5AKGakJeRi42Ef7Gro9HQydna0c/NwcnFt9HNvujq3fj89P39/MPAuu7v7/////z9/Pz+/Pz9/P///+Xl4gC/ua3CwLXLysHT08vIyL/Jx77Hw7ra2ND///7ZytPbzdb9/vy/vrjz8vL9///z/f39/vz//vzW//+93N0AvbirvrywysrDycrF3efk+v//5eTh5Ofj2MjSlWqFoXyS6+TmwsC88fT0y/3/r/f9wff8wfT6nvT/rtbYAL65rr+8scXNztjd3f////3//9rf3Nvc2bWYqpx4jZlxjOfg5MG+ucjw8bH+/6n4/qP4/5/4/aL9/7bX1gC+u7G+vbPGz9PZ3t///v7////a3Nrg49+zl66BTnTAqLz9/vy8u7nG9fbD/v+48vSv4OKszcysv7q0tKwAv720v72zyNHV3eLj////////4ODd6evo+vj84Njg+Pn36+nktLCqtry2t7aurKSarqWas6yit7OqtrKpAMC+tcC9ssnS1Nnd3PX18+jn5cnGwsXCvNHPycnHv7y6tLm2sLaxqr3Ev8HU0c3j4dXu7cb09bj9/7fKxgDCxb/Cv7PO0s+8vLe/wLvBxMC6urPIxsLf4N3n5+f1+fno7+3LzMbt/f7r///0///u///K/v6z//+5zMcAxMnEwb6y0NTQ1N3b9P//////2NrY4+fn////////7u7uk5CdbWyDur/L9v//5/39zvz9u//+ufP6vMG+AMbGv8K+s9Ta2cbX3sHg99zy/83T0+rr6f///////36CmSctWh0mWGp1lfL//+D9/eL9/dn//8vq8b2+ugDFw7rAvrPa4eGzxdCvydqexuasucHG1N3K4fTf7/h6dItWRWJcUmt4Y3jLytP////9/fz////l7/O9wLsAxcS7wL612uTlvsrLtMbLlLXQsrq9vMvHmr3XnMfrlZisbElZkW9vxrSv+/z/6/n77/b54ezxt8rYv8C6AMXDu8HAt9rj5cTMycDIwsPQxcvOws7QvdLZybzU4rLD0oBfan1iZqubkp2fq6W0v8nT0Lu/urfEzM3OyADN0MPFxbvb5efCysewurfFzrrOz8C0urTJzrjIzb9NWX5GQmBeT11TRFcVGkMiJUphZXq0wMO5ydLPz8gArpmcvbax3unpusfMr7/FuMXK0tfTy9bR1ebfgoucDxdEKDFWIytRCRhILTRXIylOHCJJnKq6s8POzc3GAIhUab2trN/s69Th5djk59Lg5NLT0sW1u9rGzldZdmZlbpaTlHx+i1ZXZ1VVYRojSQwUOnuClMXP0dHRygCAW3CXipCWlpa7urjU1dHM29ulj5eMRlyvcIZBPlx3eoGJh4iblpS2q5lUU18KFDwPFjlaW3Tl6unNzscAiWhuWk1YKCU7SDxMaV1nl5WcjHV/mF1tjmaAHipMamh2cnF+aWhzbmx4PEFeDBY9ERk5MTBH7erb7OvfAG9bUGtcVjgzSDkySD80R0Q2SEw/UFxLWXdlbwQOMzhAX4yGi21ocU1PZDxBXgsVNg8XMyc6UWx9hoqRjACDdGl5ZFZOREg5M0ZHPE1DO01EOk1DOkxkVlZcUE5zZGVWVG0+QVtUSlNtVEmKYkdVQkQIKkwIOVkLJEEApZB2oY95h3xzPDRBNjFGLSxEMzFIMi5HUUZRqHtiwIlkqXlcVkNCblNFiWNJdFVIUEBDMjdJTFBcMjVIAJJ5XqGPeLWxpkdHVhYbNRshPCImQicpRTk5Tnxye4BpaZNzZaOGa490VV5ORSIoPggPKV5maqKrnpSclACbiXWsqaGJkZk8NkA2MUA2N0oiJj4ZIDsaHTZia35fYnJwZ2W/rJLPsoq/qYgnLD8AAiBhZ2qWnZKRmI8Av7alj4N3QTg8R0FKUElUTUNSSUJQPTlJHyE4SkdPi3dmmoRvfXp4enJuoJ+ZraSTSEFEYGVnk5mNi5KIALGlkq+agIRpVGpeXFdPVU9IUUtDTE1FTV1PToNqVpyDapeGc4eDe4aJhqq1ud7cy310blxgYY2TiIeOhACyqZqmmoqXdlmUdFaHdmh5c3F4c3CCdm2Tc1i5sKDEwLShjXaKak2Ic2BtZV5hVlIfHy5lamiFi4CCiH8AhoF5jntplXNVopKAl5SNe2xjcWJbh4OAno9+u7etztDIyMW4qJB0pIltmYl2Qzo+GR0yaWtmgYZ8g4mA9Qftcnc5Z8sAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Nico en el Costa Coffee, con el castillo de Edimburgo de fondo&quot;
        title=&quot;Nico en el Costa Coffee, con el castillo de Edimburgo de fondo&quot;
        src=&quot;/static/5f5b625401b032b7f0369b85af3deaea/f058b/costa-coffee.png&quot;
        srcset=&quot;/static/5f5b625401b032b7f0369b85af3deaea/c26ae/costa-coffee.png 158w,
/static/5f5b625401b032b7f0369b85af3deaea/6bdcf/costa-coffee.png 315w,
/static/5f5b625401b032b7f0369b85af3deaea/f058b/costa-coffee.png 630w,
/static/5f5b625401b032b7f0369b85af3deaea/c483d/costa-coffee.png 751w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En los parques abundan las sillas, así que es posible también trabajar con hermosas vistas.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/458732f30a9954c18a3f8dac4537e15e/68875/hyde-park-vista.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 44.93670886075949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsSAAALEgHS3X78AAACMElEQVQozwElAtr9ALXJ47DF4K/F367D377Q56uxuY2Qln+FjHt+goCBhZWZnsbP3dLf8b/N4aq81aS20Juvy5Wrx42kwoefvgDP2+3F1OjA0OXJ1+vJ0d6JjJGCho2PlJtxc3SBg4aDhYmJjZK1vsm4yN23x9usvdSgs82csMqTqcSMpMAAw9Hl0Nvr1eHv2OLyqK62e31+hIaKi5CYbG9ydXh8j5SZlZmfoKewv8nXoKWrpay1xNDfscHXmKzGj6XAAKq/2bTG3MDO4czZ7J2krYqRm5aep4KGhl9hYHl7fpWaop2jrKiut6CkqoGEiJCTm5CXpY+drpSqxImgvACfudugutyswN+qvNWfrL2Pl6RydmNjZkJYWE1kZWBydG+Rlp2IjJN4e35oa2Fna2BudGlobG+ElKmVrcwAmaOoobC6ipWMZWRSaGlgYGFIUFEqTU0wR0U0VVM+ZGNLdnd0amtpWFhCVVU/REYuTFIwU1VKaW92hY6UAD1GIVBYLGBmKE9OLFhYO2FmPEhMKT1AKktNMk5OOGBjTGhnVFpdRVJWRUtOQU5SRFpcSEZIPFZXSGFdPgB1gn58iX13f2x1fHJpcWN6hW56g3BcZFFcY1NbYU9/jHJ+i22DkWt8i21yfl1wfFx0gVtkcUhlc0RwfEMAdYVUfY5If45Cg5FGe4o7eYo5f5BAgpI9dIM2bXwwbn8xaXsxcoQ5coU5dIY6cIM2bYAybYEyboEzdIg1rlsccEG+5akAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Una laguna y muchos árboles en Hyde Park&quot;
        title=&quot;Una laguna y muchos árboles en Hyde Park&quot;
        src=&quot;/static/458732f30a9954c18a3f8dac4537e15e/f058b/hyde-park-vista.png&quot;
        srcset=&quot;/static/458732f30a9954c18a3f8dac4537e15e/c26ae/hyde-park-vista.png 158w,
/static/458732f30a9954c18a3f8dac4537e15e/6bdcf/hyde-park-vista.png 315w,
/static/458732f30a9954c18a3f8dac4537e15e/f058b/hyde-park-vista.png 630w,
/static/458732f30a9954c18a3f8dac4537e15e/40601/hyde-park-vista.png 945w,
/static/458732f30a9954c18a3f8dac4537e15e/78612/hyde-park-vista.png 1260w,
/static/458732f30a9954c18a3f8dac4537e15e/68875/hyde-park-vista.png 2223w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;5) Si vas a trabajar a un café, anda a verlo antes&lt;/h2&gt;
&lt;p&gt;Nos pasó una vez que necesitábamos estar a las 14:00 en un lugar con internet y cómodos.&lt;/p&gt;
&lt;p&gt;Estábamos en &lt;a href=&quot;https://www.royalparks.org.uk/parks/hyde-park&quot;&gt;Hyde Park&lt;/a&gt; (algo así como el “Central Park” de Londres), y vimos en el mapa que había muchos Starbucks cerca.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“Cómo no vamos a encontrar uno donde se pueda trabajar” —&lt;/em&gt; pensé&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Sin mentir, pasamos por 4 cafés antes de encontrar uno que sí tuviera un sitio habilitado para trabajar. Muchos locales eran pequeños, con pocos asientos y sin enchufes.&lt;/p&gt;
&lt;p&gt;Terminamos en un Starbucks un poco apretado, pero fue suficiente:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 451px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/31510a147f4af1c7d54dbb6b1c93001b/38070/starbucks.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 222.1518987341772%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAsCAIAAADqwg+aAAAACXBIWXMAAAsSAAALEgHS3X78AAAKfklEQVRIxyWUdzzb+R/Hv73fXatXURozgiKRQSSCBEGM1AgJUSW1VyiqRVVPtVfUGR2I2mK3dGi16DlOted6p4i9Y7T23qs49fve7/d5vP99Pl7j/X58gGlB89KXjvWp3r2l/sN1wdGG4NuGYH+5/5/lvv35zr2Fns2pto3J1o2ptu3Z7t257p35/t3Fod2lkb2VMWAGhMc7V6d6vi4J9laG9lcFB2tD3zZHD1YH9hd7dud7N6a7tqY7tqY7t2c6d2a7tmf7dheGthcEu4vDwHjfxzlB6/p0796y4Oti38Fy/+Hq4MHa8N5S79f5bhBYm+CD8PoEf30SNNi1Mz+wuyjYWRjamh8ExrobZ4dbVye7txcG91eGDjdH/lkf/Rde7AF1dmY6NiZaN8Zb1sb5q+Og/86Nqc71qe71mb61qV5gkF8/PdQyN8LfmOnbXRraXx8Bw+8t9x+sDIDKW9Nt6xOta5+bF0c/LX9uXvnCX/7CXxnvWPz87wD9Lb9PDjStTHRtzw9uzXTvLw98Wxs8XBvcX+rbnevanmnfnOSvj7esjvNXvrQsjrXMjzQvjDbPDbeCA/Q11U72Ny2Pd23O9u/O9ewtD3xdGgRl95b6dubAqto3wbQTrStjnxaG/1oa/bQ0Bk7L/GjrrKAF6Gn6DYy9+LlzdRIkBUc7E982x/ZXBAerYH89YHLQ+cZEy9rnJrCz1S+g89bFsbbFz+3zo21Ax59VgvaG6aHmteneyd7GhrK092/LdpYHDlaH/lnuPVjq+brQvTvbsT3F35nt2Jpq+3/tqxOdC2PtQGdj1VDbu+nBT2Bn/iyTYGNCEE0/Mzbl64oAdP51oQesbXe2EzyVnfmubTDFVBtoBwwILgxoa6wCnc+N8usqihCnvo+zM8z1ZIazwgb5rUd7I4drA99We4+2Rr5tDh+tDx2uDuzOgaviz43xp0bbwcJqBj7VzPY33osKQwodq7ru0pwZHUgLSI7h1bzOf/Ekp7Qoq6QoJzcnLSMjJS0tKTU1KTUjIyu/OKfkOeDBZro7WF/2dGRY0cwQUpU3PN9GByYEx5gZ+mak3s3PTHycl/K8kPumNL22POvdq+zGqoKm2ietDa86Gt8CYd62sSEe2Q+ulyWGU8RPZ7rTe7OiqlLvPAyNaivP7f+Q1/euYOB94cD7gr53vN56Xk89r6Muu7k292NtMZAe4VaYEFTNvfnJhOkBHLeECjtoYz/cu/KhqLjW9VrLr6mNFclN1Wn1Fcnvq9LqK9N/r8p5W5VfXV30urIEiAuyexTvV8ey7/6RUAFFhR0XlToGIOWkKCSDPw2d+38trKvjVVVwX1QWv3yV9+ptUfnLlJKye8WlCZm8O0Cgq+nTlLBmNLVBTPWpiMLvp1HBUJjQcUD8LLyaal+XdT+rLCmn4G7Bs+y8woToO77cFP/Cooj0jKBHqYGAuTH2Fwud9jN4njSW+cNJ7nGZZilyiBwaf0a8SYFaE/3z/ezIhHgONyMhuyg7+pf45LzniQ9vX/Iic9jGgAVJmauM/guKu07EIKH/MT4OhIucfIzW8IFJVuK0Ht8Kj02NSsl+lJz/JKnwJfdZ3e3kPJqxAcuC7GtnAlgipMshipXyWjhpO4psoKlSAFz6mqxMiLxs8FlUGEYtUk31FlbtupZ2gJaWF5HorYqxUMYSw0ICb/naAZZKkqnfnak9gTKAuzMpl89RgslGUVomMaq2qSiHPAK7kOjwQsGsVN2hXIddh2O81WU0yCPOeXi5eNvQAI4RnqqmGIxRIchrnzMiKWERcDT6rBoOaXUR4RUpZ+eP1GNp27hhGN44W38VhoOC3k1pBV2GvTnTDA9E2Rmqq8CdbPQVFXTZFz2pJoZwDFFKEadGd1f1jZez8tem2JkwnMlUOsnQSl1LT0KSiVU19OY4xCf6ARx9NcgpISUZqLICQUEBIYPCiKnqnZDXhBk5yNtflaJdZHOCPYMiWE7e9AsextYO8grMmtdVE8P8Dw01gAdR+fvvvpMSF9PRJKPRGHUcAU6iAwhjEUNHCYYPzNTJhn3JN/imi18o2zvExilQQ5013PnH0dHG4e40kGilBYOcuMgwCnVnmmqqmOmpMxwdCSy2uKYJhGAMJepLKCNwOqZEfWscxUJR/Rwabsh/fn+x/93sxDDgS0a5mhIC7I38mDouZppGeCUzXZzzBSu6ta2kHElJ/hxa2sCNEP+A3ejnUWpnn66qZBxiq5OecL3+/R+AK53CcbQ01MSgZERRMFFVeaiiJMRUF+/j7c5k+ZKx/gzcLWd8mrcJDylz7YyIs7Q40sUEF+TjwONlAUwjLZa5viOTpkPAaOOQ6mglqMgppNQpG2vzxKjwnNjL3OhL936+dOeazxV3Z2dbB2MSwc+Gkp4cd+NmBGBAQFBJWDN9Ap2qzaDpWhjp6JGJZqZUz8CrTm5u5gYkJwYt1PN8YpDr7UCX3pr88owYPQ2kn7drcOhVQBsDJ6JkCSqyJnoaDFNdBxtzJ2dHN9+Aa1GJ59nOGjgsDovCopC6BJwqWqUg+W51abaTramvl3PQlQCAgJDGKEjSz1HBj8jVzszpPB2E/UJ/IhmaysFlsSgVDFJZE48jk7SIeFx6YlRd5XOOq52/j4uvjxtAVJE1NzMxNdLHKsEJqLNaKFl9Et7WlmGqT6aSiQxzE0saFdRHKp1Fo5BZSfEtHz94u553Zdt4ul4AyCSiKlFT+KSQBESIrK7MNCW7nbf46bJHenwkLzmOlxKfmxyXcS/mflREaCAn6ub12uo3oKwlTc/X/QKgTSLq6FMMNJCuLFqYv+uNQPfbwZyY8IDEyBBubGROUlzhowdPspNfl+TUviwtL8mvfPU8gONxkWnMjQ4FdMiaTAtjDsvoGudiRJDnzSCvqLBLCZHBKXcjMu5F5ybH5yTFF2cmvSzOffO0+N3bN61NH9MexsWG+ZSmRQF6emRvB8tof/uEn/zjIwLiI4Ie3AlPjY1MT7yT9SCWx00E4TJeWuWzkury0prXL/5ufP+0IDPCz/5xSiSga2hwzsqaRSN72lveuuKVevdGzv2YwkeJBamJPG5CXuo9EH7KS3tTVlxdXlZT8aLpj4aC/Nyrvk75v1wFNE3MCObnNS3sMGTD0yIicjAYVV/noj3zdtjl7KTYkszksty02oqntW9e1lQ8/+11+Z/1vxWXFFm5eKdz7wNka0dNK0fKBU8kUfcYAHwvLCYCUzwlISspr6SMwVC08T5sZlT4lRzuwzfPntRXv+b/3fiursbSyePSjRiAzHCgsjkk+oUfIaeFRaEQqLQMAieLwkPhilB5hARUVFNFioCUNqeo62mpaRMJfj4ekbcizRydHP1DAU0qTY/lZmjvBlNEQGFyMCWVU2KS8lgNCTlFCXklWZgUiNnSSPZ0/TOiEOAYICz8ozxSiUK3ZnGCAGs6VYNmTWWx4cpICRgcSdASgohBJOGismfFpGHCEAjk5AmcioI2Hn3i+A+nRU9Ly0ghVdEUuhXLOxCwNFBH4fEYooasoqKkDExYRBQqLgGXhhGIWooIBEQEAvzvHQOOnTwpBIEIS0iKowjqehaWFk4e/wX0+gP8QCfYdwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli junto a una mesa chica con dos computadores&quot;
        title=&quot;Eli junto a una mesa chica con dos computadores&quot;
        src=&quot;/static/31510a147f4af1c7d54dbb6b1c93001b/38070/starbucks.png&quot;
        srcset=&quot;/static/31510a147f4af1c7d54dbb6b1c93001b/c26ae/starbucks.png 158w,
/static/31510a147f4af1c7d54dbb6b1c93001b/6bdcf/starbucks.png 315w,
/static/31510a147f4af1c7d54dbb6b1c93001b/38070/starbucks.png 451w&quot;
        sizes=&quot;(max-width: 451px) 100vw, 451px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ahí aprendimos que si bien hay muchos cafés donde trabajar, es mejor siempre ir a darse una vuelta antes para ver que realmente se pueda.&lt;/p&gt;
&lt;h2&gt;6) Contratar internet móvil es una buena idea&lt;/h2&gt;
&lt;p&gt;Si bien no es difícil encontrar sitios con wifi público, es buena idea tener internet móvil de respaldo.&lt;/p&gt;
&lt;p&gt;Imagina que tienes una reunión urgente y todavía no encuentras dónde sentarte a trabajar. Para esos momentos, es buena idea tener internet móvil.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 451px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/51db9fd537887cf653c098f2c35e17cc/38070/hyde-park-walking.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 222.1518987341772%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAsCAIAAADqwg+aAAAACXBIWXMAAAsSAAALEgHS3X78AAAKN0lEQVRIxyWUd1BT+RbH77xxV0UE6Z1ADE0MSJMOCaGFhF4EpIiIdGRD7xC6gPROkBp6SSiB9IRAAoEEpTcB13XdZ3n7dt+8fX++iztz5sy587uf7/mee+78gAnuMYHzMYPyOXzui/fMV8LKb6zdL1vv/yM8/4O7/5m2/ZH+9tPi5oeZtXMS/5wu/pn55ufN08/C0y8TnAOgdfnMf/qL8fBVOI1+Hhf/zt77QhJczgnOV/Y+MXc+za2/n1w5neSezK9fLAovZ1ZPaKJz8fk34dlXoI7+KZv+rZz379bNP2d2/8s7/Ytz+Puy+JdF4QVd/IEsuJjinREZByOswwnOEZG593ppm8jYXRAc8w8/AjNbXzdP/nX08a/zz/8T7B2ytvdpW8dU0S/c3d/o2x/G2Ud91L1B+t4QbWeIvjvE2Bln701w9ucEx6ztCwBH+dbJ+ZUivKSLL2vaq9r6Gus7Sus6q+YFZyT+xSj7ZJixP8rYmVo5neGdzPAOl4Sn1K2zBcERmX8K5DD+qGd/7SHzqtte5VfmlNQWVdRn5JUGdI+PENlnbZPUl+311S34+p6aXjJrmLFHpIkm2btzgkuK+Ddg/5c/2bv/rOkdTclKSMqKyi7LyixJS8nyLn4ZRVrdberrxNdm5lUkZxVFdEzMDXF+HiIt9I52zNAorK09QHDybZH/tqGnPbc8LSE9JD4jKrciJxYXnIBD9gw3tQ10lTdW5VUVF9WkVzYlvOrMLKmO+inHKa/Eobk7ExinslsHByqbmypbmoprK/IrynD5iT/lPyooD8wt8avvqqtuqckoSnrVUZBdZJOZ/yAm5X5EnGFiml4u3hYoKLXJwifVdLaUNZT1TZFLX9UkZ8fGpWGSMh5mFli397/snxpLL/TLLLTAV7umFzgnZ3o/f2EX88IkLe8+kFGgV1SJSEx3jogzSM1zT821iUkx8A3XDY42eP7C8HGMfnSK9fNU1E+Z1uVlofGJJR6e6cHB2SmpKc+TXYCoBO2iSuOENFOfUNVnSZCkNN3MwnsJaToh0eoh0Vr+ERqPojS9wjRjn2ECPV+aWeRoQ5+7uFbX1nZWVVcDUYl3C8vhQU8gKG/V8FgI+HZAJOx5qnZ4rEZkPCwgEhIaAwl8ComNQsMhtloQDyvrPCSqOim5rbWjHzC0kQiPM3+a4GzvpuPz2BjpCbFy0bZ1V/YIVLV20rBx0XT0ULdxV2sqi473dYKqwrGejWg0Hpc+UVg8BsRn22RUoLIq3bJKPQprfFMLkLhCRBreMbMCkZLvmJBrnVpmGZttPdWeP9+UnhGCtbUtsLMvfhTcmJhIAKY2AmaEj6c3QmeEIZOCgFlhCGkzfHYzbE70dOlN/NKbZxTxE5o4VjiLX2xODXe2gqghw8K6wsOaIsLqAQIN3Umx76EiB1neo7yIsdXwYe6jfqZ3L931Nd1lgIkmcvxH1wN4lGRCmrePK1ZNRfsB3C8mpj8utgeYF8VNrHr1MR42zys1kmUIdKOxNU/SZtj0euT4WtgAy3V4xW5wxbqy3h5pahAVFRvgH6QDvf/0SZufdwlA2sAubIUvbUfMCT2IK2Yt84q10zcaSHe6qZp9TAuyMDwpG6F/T/H69R8lJWRdUO44XLbRfSMXROiTkHKglQx/TUcTuSGT/BiSMGFWGDfIxtbPKFf0mXVM42a50+iAJwAA3JaQgqprGxk8cEF5YDE+SDu3mDA8UD9hNMz2nuRHj69FD7EfD7IDpwQJUxuPu2YSG3qo3dOMvNLqa9d+gCiqG2rp62vATI3MTYzMLU3tI3xxQDvp4WuqwxQvdH4jfm49jiyII/GjKPw4Ei+0jug4QMGmR9upS6voqGvpq0JvS0opSskjrBGm98xjAhOBIQZigGY/QHUapDvNrHnNr4fOCkJW+BnvNnuZwmeCzRetbvaoa1JqcioINUOYMkRKUhoKgWFcPL1Q3sAA1ZmwYNs5b9qzZDHEtCcy0eDMY6SA3zfnNyaaRxvS6jGumOu3YNJKj+5aRVq4a6hpqatoYlBYrAMaGGGi+xnoES5mnOsxzvUC4RGOWzcJGRPiYGdioaIIi4v3a+/BmGloequaFDqFBdlj9PXgFobmjyzdgQmuB5GNHeH69DOQYysoIhvZT7ebFbrh8CY//OOmgZ4hxt03Me2xBQwaJHcPZ+Wb6xmNRXjYGj7EGNoCI3N+IxS/UYr/GMV/nBIyQQ8epXpPMr0J455KCgpK8hrOSFe0i48v1t9KVt1GVTcDG+VhgXR+iAgwRgBLC+mMuSzmcs7yIo62nMVm5i0vpS7Mxy8yIhuaAmTvyOrrGlmYWqJdPU0MTWSu3XQxsXOG2xjB4Gg9S2CNXMaZyGeN5bCm83nkwtX5gtWFIh6pkEPK3WDkNVVEohzsvNCuzgh3X5+gUEu0E8zUHeFua2aLdUQDbGImfTCdPZLFJmZzxvJ4k0W88ULeROHqVDFvsuTtcmV3baoJ3AhuYPLAzPKpFTbcCGVp4+Bk72x8zxgQLdWKl2qE8+XCuVLBbPEGGb9BLmESs6h9aWuTueuzRazRgtHm5IdG+jJ35J0hcP8HjjBdA20NbagmFDhaIxyu9hytdp0ICGfrr8/We98J+95t9B2vdX8QD4gZbZyZl5/eEJ4Euty8IaWnpAGH6sPu6t+6IWloAAfeiwYvtwbON3rPBISj1e5DXucBt/OA13W81nPCJ4BxvEb4sD0YHYKRlJCRvaMgL6uoKK9sYWLp5x0EXAh7L7f63ov634sGwLan64RTAcj07HM7DlY69zjt+5y291t96XFBUpJyCiApq6SlAUUh3NycMcDBSvsRrwO0Dfo85nef8LvBAoQPeN9JbjuYf307VJgWISMlpyyvrCSvAtXSQTq6oN28gL3vx3vcjl0wc9rAAJ2DWn93PuCBg1zpOliZKsqpguT3zndB2MPdC9hhtb5ltf2d3zBbd9itV1qc9rcssG7fYbVdCF+T+4uV5JU0VDQV5JTkZBR07+rb2yBdnNCAmNa0zWjdpreI6S3bjJY3YDBbtulN2/RmsABPzzd60uODpW7JqCqqKsmpgM1h2nq21o6uKA9ATG8FMREYtGYRtXmL1iK+kmgFAxQFx2FOVRnA7spKyynJK6soqOnB7j2Am9lYOTg7uQOgVbAP2FBEvbIAPopBnt4qol3JgQsjvMJJ3rylKCd357a0srwKCFuYWTvYOaHdPIEre4zmK+bKNli0gUJiWvPWcoOI2njC7xppz5G7fUf+trSduZGONhSiBrUwtQZnvtoz+BuAn3SP23l4lTu+w1eGRbSmzaWGU35PRc5TiRu3JX6UKMmIMoMbKsmrmptYgjP7egYCE4RCYkc+sT2PPIDnztaAPBhXML1li9oIbguDspK8fktVXp42VmGoqwPe3uDt6eToetW5Dp/8siihKj+upiSxFp/YXYejEEtB55vLDbvsFkLdCw1lFWkJyXBf1Nk6IfWZP1RD08jQGITBS+L/lz0aCI91UCAAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eli en una reunión mientras camina por Hyde Park&quot;
        title=&quot;Eli en una reunión mientras camina por Hyde Park&quot;
        src=&quot;/static/51db9fd537887cf653c098f2c35e17cc/38070/hyde-park-walking.png&quot;
        srcset=&quot;/static/51db9fd537887cf653c098f2c35e17cc/c26ae/hyde-park-walking.png 158w,
/static/51db9fd537887cf653c098f2c35e17cc/6bdcf/hyde-park-walking.png 315w,
/static/51db9fd537887cf653c098f2c35e17cc/38070/hyde-park-walking.png 451w&quot;
        sizes=&quot;(max-width: 451px) 100vw, 451px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Al menos en UK, nosotros contratamos un plan prepago de &lt;a href=&quot;https://ee.co.uk/&quot;&gt;EE&lt;/a&gt;. El chip lo compramos en una tienda de abarrotes por 1 libra, y el plan lo contratamos por internet a 15 libras por un mes (5 GB de Internet).&lt;/p&gt;
&lt;h2&gt;7) La mejor parte son los fines de semana, ya que puedes aprovechar de conocer todo lo que no viste durante la semana&lt;/h2&gt;
&lt;p&gt;Lo mejor del tiempo que estuvimos trabajando fueron los fines de semana. Son básicamente dos días de mini vacaciones que puedes aprovechar para conocer a full. Aquí te olvidas del cansancio acumulado y te pones el sombrero de turista.&lt;/p&gt;
&lt;p&gt;Nosotros fuimos a un Trekking a &lt;a href=&quot;https://www.nationaltrust.org.uk/box-hill&quot;&gt;Box Hill&lt;/a&gt; (a unos 40 minutos de Londres) con nuestro amigo que nos hospedó y amigos de él. No sé como, pero caminamos unos 18 km 🤪&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d7961ada3cffc7eb687888461f7ec095/68875/box-hill-trekking.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 44.93670886075949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsSAAALEgHS3X78AAACMElEQVQozwElAtr9AMnV48fW5sHS5bTM5LPL5LDK5K3I5LjN48fU48XS4LnJ267D25equIiYlFRkKzA+FCs3FRwmEzE4IzlCJAC5yNm/zt6+zd7K1uPF0+LD0eG+0OO8z+PH0uHEz921yNynvtimvdWcsMJfbUUvPRQcJhEbIxg1PykxPCMAr8HVqL3Uqb3StcTWuMbXv8vaxdDextDdwc3ausfXtsTVtsTVssHToK2xanlMNUIWNEAgNUEnQEwqO0cnALa/ybvF0cXO2b3I1sDJ18XN2MTN17rG1LTC07jE1MPK1MrO1sXM1Z+mn2FuO0ZWID9OIztHJzVAJDZAIQBjbmuEjZCrsbepr7S0ucC4vsa/xMzCx9DAxc6utsCVoq6Bkp9yhZNnd4RZZzxPYB06SB00PCQjLBoRGAkAPU07MkNAP05MQVFOT11bXWpiZXJwbnt9aHV2WmpnTWBgTl9TR1lTTV1cUF1DVVovSk0rS1EiLjccChMJAGh+GmV8IG2EJW6FLnCHMXKKM3OMN3KJOHSLPnmPQXqQQ3qPRneKRnaJRW6APF5oMlhhI0lcE0BRFDxMFABgdwVmewhnewtqfwtleA5kdA9oeRJndxZhbiNmdCReaypcaCpaZihaaSNugyFgdB1NWRdGUho9ThY+ThcAUVwbUVwZSVIYT1gbUFsbO0QURE4VOEAbO0EkSk8pTlMrOj0lMTQeMDcdP0waTlwaOD4eLS8kLjgWPEkYWrL3l2ltoW0AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Una vista muy verde en Box Hill&quot;
        title=&quot;Una vista muy verde en Box Hill&quot;
        src=&quot;/static/d7961ada3cffc7eb687888461f7ec095/f058b/box-hill-trekking.png&quot;
        srcset=&quot;/static/d7961ada3cffc7eb687888461f7ec095/c26ae/box-hill-trekking.png 158w,
/static/d7961ada3cffc7eb687888461f7ec095/6bdcf/box-hill-trekking.png 315w,
/static/d7961ada3cffc7eb687888461f7ec095/f058b/box-hill-trekking.png 630w,
/static/d7961ada3cffc7eb687888461f7ec095/40601/box-hill-trekking.png 945w,
/static/d7961ada3cffc7eb687888461f7ec095/78612/box-hill-trekking.png 1260w,
/static/d7961ada3cffc7eb687888461f7ec095/68875/box-hill-trekking.png 2223w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;En Conclusión: lo volveríamos a hacer&lt;/h2&gt;
&lt;p&gt;La experiencia fue genial. Definitivamente, lo volveríamos a hacer 😊&lt;/p&gt;
&lt;p&gt;Así que si te gusta viajar, conocer nuevos lugares y tu trabajo te lo permite, te lo recomiendo.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/8981ff64bdd0c12ddc3d17436e6d65f7/f3583/preview.png"></media:content></item><item><title><![CDATA[Recursos para aprender sobre HL7 FHIR]]></title><description><![CDATA[En este artículo encontrarás recursos para estudiar y comprender “HL7 FHIR”. Introducción: ¿Qué es HL7 FHIR? Antes de continuar: voy a…]]></description><link>https://blog.codeness.io/recursos-para-aprender-fhir/</link><guid isPermaLink="false">https://blog.codeness.io/recursos-para-aprender-fhir/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 30 Dec 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En este artículo encontrarás recursos para estudiar y comprender “HL7 FHIR”.&lt;/p&gt;
&lt;h2&gt;Introducción: ¿Qué es HL7 FHIR?&lt;/h2&gt;
&lt;p&gt;Antes de continuar: voy a responder esta pregunta desde un punto de vista no técnico y un poco más intuitivo. Espero que los expertos en “HL7 FHIR” no se ofendan 🙏&lt;/p&gt;
&lt;p&gt;Si pensamos en idiomas, sabemos que el inglés es un lenguaje “Universal”. Por ejemplo, si quisieras comunicarte con una persona que solo habla Chino, lo más seguro es te comuniques con ella en Inglés.&lt;/p&gt;
&lt;p&gt;Es por eso que saber inglés es importante, ya que te abre puertas para poder comunicarte con el resto del mundo.&lt;/p&gt;
&lt;p&gt;En sistemas informáticos pasa algo parecido… Distintos sistemas se pueden comunicar entre ellos, y para hacerlo, se ponen de acuerdo en el “lenguaje” en el cuál van a intercambiar información.&lt;/p&gt;
&lt;p&gt;En el ámbito de salud, es muy importante que apuntemos como sociedad a que todos los sistemas de salud hablen entre ellos. Y para eso, es necesario que se haga en un lenguaje “común”, algo así como sería el Inglés.&lt;/p&gt;
&lt;p&gt;Es aquí donde entra “HL7 FHIR” (o simplemente “FHIR”). El cual es un “lenguaje” único que permite que distintos sistemas informáticos en salud se comuniquen entre ellos. Es decir, “FHIR” es como el “inglés” pero para sistemas informáticos en salud.&lt;/p&gt;
&lt;p&gt;Finalmente, &lt;strong&gt;cuando dos sistemas informáticos son capaces de intercambiar información entre ellos, decimos que “interoperan” o que son “interoperables”&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Qué cosas hay que saber previamente para aprender FHIR&lt;/h2&gt;
&lt;p&gt;En la introducción mencioné que FHIR es como el “Inglés” pero para sistemas informáticos. Es por eso que cuando haces un curso de FHIR, te bombardean de términos informáticos como “APIs” y “RESTFul”, muchas veces muy abstractos de entender para alguien clínico que está lejos de ese ámbito más computín. Además, en los cursos que he hecho yo (del CENS), no hay una “nivelación” ni nada por el estilo.&lt;/p&gt;
&lt;p&gt;¿Qué cosas son necesarias saber para no perderse tanto?&lt;/p&gt;
&lt;p&gt;Lo primero, hay dos cosas que veo relevantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;¿Cómo funciona Internet?&lt;/strong&gt;: Puedes ver este video explicativo en español &lt;a href=&quot;https://www.youtube.com/watch?v=rw41W8crZ_Y&quot;&gt;https://www.youtube.com/watch?v=rw41W8crZ_Y&lt;/a&gt; (10 minutos).&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;¿Qué es una API?&lt;/strong&gt;: para que dos sistemas hablen entre sí, tienen que hacerlo mediante algo que se llama “API”. ¿Qué rayos es eso? Bueno, aquí hay dos posts en español que buscan explicarlo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://plata.news/blog/que-es-una-api/&quot;&gt;https://plata.news/blog/que-es-una-api/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.fintoc.com/que-son-las-famosas-apis/&quot;&gt;https://blog.fintoc.com/que-son-las-famosas-apis/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Saber más o menos como funciona internet te hará aterrizar ideas sobre cómo los sistemas se comunican. El concepto de “API” es muy utilizado por informáticos y en FHIR, así que esas nociones te ayudarán a poder seguir el hilo en una conversación con un informático y a no perderte cuando lo nombren en el contexto de FHIR.&lt;/p&gt;
&lt;p&gt;Lo segundo, la parte menos técnica de FHIR tiene que ver con un concepto llamado “Interoperabilidad”. &lt;a href=&quot;https://enfermeraprogramadora.cl&quot;&gt;Eliana&lt;/a&gt;, que es Enfermera y Desarrolladora, tiene una serie de artículos que habla sobre esto para el ámbito de la Salud, te recomiendo leerlos como introducción:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;¿Qué es la interoperabilidad en salud?&lt;/strong&gt; El primer post del blog se titula &lt;a href=&quot;https://blog.codeness.io/interoperabilidad/&quot;&gt;“Interoperabilidad en Salud”&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;¿Qué son los estándares de interoperabilidad?&lt;/strong&gt; Eliana continúa con la serie, esta vez hablando sobre &lt;a href=&quot;https://blog.codeness.io/estandares-interoperabilidad/&quot;&gt;“Estándares de Interoperabilidad”&lt;/a&gt;, concepto que verás si o sí en cursos de HL7 FHIR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;¿Cómo se aplica la interoperabilidad y los estándares en la vida real?&lt;/strong&gt; Eliana da un &lt;a href=&quot;https://blog.codeness.io/ejemplo-interoperabilidad/&quot;&gt;ejemplo de interoparabilidad en salud&lt;/a&gt;, para así bajar los conceptos a un caso clínico.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nota: no es necesario entender al revés y al derecho estos conceptos ni menos ser un experto. Pero sí es muy útil tener una noción de las cosas para no perderse tanto mientras estudias sobre FHIR.&lt;/p&gt;
&lt;h2&gt;Aprendiendo sobre FHIR&lt;/h2&gt;
&lt;h3&gt;Documentación oficial&lt;/h3&gt;
&lt;p&gt;La página oficial del estándar es &lt;a href=&quot;https://www.hl7.org/fhir/&quot;&gt;https://www.hl7.org/fhir/&lt;/a&gt;, donde puedes encontrar toda la información en inglés.&lt;/p&gt;
&lt;p&gt;El 15 de octubre del 2021 fue el lanzamiento oficial de la guía CORE de HL7 Chile, la cual puedes ver &lt;a href=&quot;http://core.hl7chile.cl/&quot;&gt;aquí&lt;/a&gt;. La gracia de la guía es que está pensada para el contexto de Chile, de manera de que los que quieran implementar el estándar tengan una base sólida para partir.&lt;/p&gt;
&lt;h3&gt;Cursos y Capacitaciones&lt;/h3&gt;
&lt;p&gt;Creo que una de las formas más efectivas de aprender sobre estos temas es gracias a cursos y capacitaciones. Lamentablemente la mayoría de estos son síncronos, es decir, hay que esperar a que la institución que los imparte haga una nueva versión de los cursos.&lt;/p&gt;
&lt;p&gt;En Chile, el &lt;a href=&quot;https://cens.cl&quot;&gt;CENS&lt;/a&gt; ha hecho varios cursos y capacitaciones, las cuales puedes ver en &lt;a href=&quot;https://cens.cl/soluciones/capacitaciones/&quot;&gt;https://cens.cl/soluciones/capacitaciones/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nota: Publiqué mis apuntes del curso “HL7 FHIR: Principios y Fundamentos” en &lt;a href=&quot;https://blog.codeness.io/hl7-principios-y-fundamentos/&quot;&gt;https://blog.codeness.io/hl7-principios-y-fundamentos/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Contenido existente en español&lt;/h3&gt;
&lt;p&gt;En YouTube hay algunas clases y eventos en Español. Te recomiendo estas porque las vi y encontré muy buenas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Interoperabilidad en Sistemas de Información en Salud”: &lt;a href=&quot;https://www.youtube.com/watch?v=twl2Y9hlsuM&quot;&gt;https://www.youtube.com/watch?v=twl2Y9hlsuM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;“Startups on FHIR”: &lt;a href=&quot;https://www.youtube.com/watch?v=Oey55UrRDYA&quot;&gt;https://www.youtube.com/watch?v=Oey55UrRDYA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;“Tech Connect 2020”: &lt;a href=&quot;https://youtu.be/B8S5prbmHIQ&quot;&gt;https://youtu.be/B8S5prbmHIQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Libros&lt;/h3&gt;
&lt;p&gt;Parte de la bibliografía de los cursos que da el CENS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El libro blanco de Interoperabilidad en Salud (&lt;a href=&quot;https://www.minsait.com/es/actualidad/insights/libro-blanco-de-interoperabilidad-en-salud&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Revisión de estándares de interoperabilidad para la eSalud en Latinoamerica y el Caribe (&lt;a href=&quot;https://iris.paho.org/handle/10665.2/28188&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Principles of Health Interoperability: SNOMED CT, HL7 and FHIR (&lt;a href=&quot;https://www.amazon.com/Principles-Health-Interoperability-Information-Technology/dp/3319303686&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/a05cf7ef3e5adb4393c577ccf568962d/f3583/preview.png"></media:content></item><item><title><![CDATA[Firebase en Salud 🔥]]></title><description><![CDATA[Imagina que se te ocurre crear un producto para el área de salud. Que gastas horas y horas y luego te das cuenta que la tecnología con la…]]></description><link>https://blog.codeness.io/firebase-en-salud/</link><guid isPermaLink="false">https://blog.codeness.io/firebase-en-salud/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 13 Dec 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Imagina que se te ocurre crear un producto para el área de salud. Que gastas horas y horas y luego te das cuenta que la tecnología con la que construiste el producto no cumple con leyes o regulación…&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 474px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e86b999919108b66de2fac86c99faba7/5595f/this-is-fine.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.632911392405056%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsSAAALEgHS3X78AAAC4ElEQVQozw2RfUzMARjHf+Mff3qZzaY1zIyNyFtaFHJuyEs6jcLGhrzMS8q7ImGxpIau66Sa5s7OdYpodM5Lda6765euziW6uq7U1RQd09TH74/Pnn++z2ffZ48w/G0NzZppGN9fQfTex/w5h9ziRLKUR7mYFs+F1G04fEVYO1TYOwsliqjvyEdsv09T7yPuFl/m5oM7qDTXafSUIPxxraS/dCx14mVq6tJ5bkol84ZCIpb0pI1cPCTD0p5PgzcfmzsPu6cAmyS3SWJL/Q2yVRfIyDovidMQuzUIvdYV9FVMxqyPxKGdQ1XlMWpLFmJWT6XsynyqLi3Goo/D3FqAq0+NxZ1LrSsHc7sSoy4GQ8YMTHmB3C25RkPDJYShNhl+Vxi+J+NwayZhen0Kn3MLg9YglKfnUn4nGuODfWRdjabgSSLVjdd5pd9FjTOTuqLZdD2bSv/b6Zie7sbzYgoCPeGM9qzF7wjBVbYMg1rBX7ecmqeRbF4wAfujTbTpZZSlzCQlWU7ty1ie3QrHoD1M59tF/HbvYKgpAo9+DD67HGG0ewkjXavgh5yWlyFY8gIYFJdgL1jHm/RghiqD6HocxEfxGu/Kd1KtXEyrKYcqVRL1uv243yRLeydxVpyh+fkBSfg9hJFuGfStw/dxGW3lc6RQOPXqGKw3V+AsDqVZHcx74zmsVbuozY7EdHs/NuURHBJNhedo0R3Gmh9PhyEQ4V+XTDp5PfRukGYsf1xrMGaFobt6EMP5aNIUQagSFqBMjsBSJsf/JQp9WgSidjW61DBs9wIZqA6g74WA/1Mowq/WKKmdgmHPVoY7d/Kzcb0UmszrzDgqMxJI2b2apKh55B6P4YNqL3WafbQ8DMCpDZSaTeSvaynD3j0MOuSM+I4h+Bq3QU88/q/b8Vpj6BEV9FuW06ydhSk7gdJbiRSejePVvbMYVRmIJSv59SkYb8V4fooLGRk4DQMnGB1Ikv5wnP/oqTmC/dnLKwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;This is fine...&quot;
        title=&quot;This is fine...&quot;
        src=&quot;/static/e86b999919108b66de2fac86c99faba7/5595f/this-is-fine.png&quot;
        srcset=&quot;/static/e86b999919108b66de2fac86c99faba7/c26ae/this-is-fine.png 158w,
/static/e86b999919108b66de2fac86c99faba7/6bdcf/this-is-fine.png 315w,
/static/e86b999919108b66de2fac86c99faba7/5595f/this-is-fine.png 474w&quot;
        sizes=&quot;(max-width: 474px) 100vw, 474px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Por qué salud es distinto a otras industrias&lt;/h2&gt;
&lt;p&gt;A veces fantaseo con crear es un software parecido a &lt;a href=&quot;https://mailchimp.com/&quot;&gt;Mailchimp&lt;/a&gt; (email Marketing), pero centrado en la privacidad de los suscriptores. Si quisiera hacerlo, desde el punto de vista tecnológico, podría comenzar a programar un &lt;a href=&quot;https://es.wikipedia.org/wiki/Producto_viable_m%C3%ADnimo&quot;&gt;Producto Mínimo Viable (MVP)&lt;/a&gt; solo pensando en lo que quiero construir.&lt;/p&gt;
&lt;p&gt;Pero para productos en salud, es otro el cuento. Cuando creas software en salud, la dignidad humana va primero (&lt;em&gt;qué mal tener que ser explícito en esto…&lt;/em&gt;), y esto te hará cuestionar muchas cosas a la hora de construirlo. Sí, lo siento, aquí no tiene entrada el &lt;a href=&quot;https://mobile.twitter.com/mijustin/status/1465037675925180416&quot;&gt;“move fast and break things”&lt;/a&gt; clásico del mundo start-up 🤭&lt;/p&gt;
&lt;p&gt;En consecuencia, en esta área hay muchas aristas de las que hay que preocuparse y tenemos que ser muy conscientes del stack tecnológico que elegimos. O al menos más si lo comparamos con otros rubros como educación, empleabilidad o productividad (lo digo porque tengo experiencia en ellos).&lt;/p&gt;
&lt;p&gt;Dicho esto, ¿cómo saber si mi elección de tecnología está bien para salud? Y en particular, ¿Es razonable usar Firebase para crear este tipo de productos?&lt;/p&gt;
&lt;p&gt;A modo resumen: Firebase es una muy buena opción, pero hay que tener ojo 👀 por eso partiré con un breve resumen el Marco regulatorio en que nos movemos, y luego hablaré sobre Firebase en sí.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Nota: Firebase es un conjunto de herramientas que te simplifica la creación de aplicaciones web o móviles. Está destinada a programadores que quieren iterar sus productos más rápido.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;El marco regulatorio ⚖️&lt;/h2&gt;
&lt;p&gt;Aviso: No soy experto en temas regulatorios. De profesión soy Ingeniero Civil en Computación y algo manejo por formación (Diplomado de Emprendimiento e Innovación en Salud Digital) y por investigación propia. Así que puede ser que lo que te diga aquí no sea 100% preciso, y ante dudas es mejor consultar con una abogada.&lt;/p&gt;
&lt;p&gt;Las leyes más bakanes que buscan proteger a los usuarios o pacientes y su información son el GDPR (Europa) e HIPAA (Estados Unidos):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/General_Data_Protection_Regulation&quot;&gt;GDPR&lt;/a&gt; es una regulación de la UE implementada para proteger la información de identificación personal (PII) del usuario y hacer que las empresas cumplan con un estándar más alto en lo que respecta a cómo recopilan, almacenan y usan estos datos.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cdc.gov/phlp/publications/topic/hipaa.html&quot;&gt;HIPAA&lt;/a&gt; es una ley creada para proteger la información confidencial de la salud del paciente (PHI) para que no se divulgue sin el consentimiento o conocimiento del paciente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lamentablemente en Chile no llegamos a esos niveles. Sin embargo, sí hay una regulación que cumplir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ley de protección a la vida privada (&lt;a href=&quot;https://www.bcn.cl/leychile/navegar?idNorma=141599&quot;&gt;19.628&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ley de derechos y deberes del paciente (&lt;a href=&quot;https://www.bcn.cl/leychile/navegar?idNorma=1039348&quot;&gt;20.584&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;¿Cuándo hay que cumplir con GDPR o HIPAA?&lt;/h3&gt;
&lt;p&gt;Tengo entendido que si tu software va a funcionar para pacientes de USA (ejemplo, colocas que tu APP esté disponible para descarga en ese país), entonces tienes que cumplir HIPAA. Mientras que si tu software tiene usuarios residentes en Europa, tendrás que cumplir con GDPR.&lt;/p&gt;
&lt;p&gt;Así que una regla general es que tienes que preocuparte de la regulación del país donde quieres implementar tu solución. Por ejemplo, si es solo en Chile 🇨🇱, no tienes que cumplir GDPR ni HIPAA. Solo estás obligado a cumplir con la regulación local, donde está la ley 19.628 y la 20.584&lt;/p&gt;
&lt;p&gt;Sin embargo, es una buena práctica crear software pensando en cumplir regulaciones más estrictas, ya que estas fueron creadas para proteger a los pacientes (HIPAA) y es una forma de ser proactivo, sobre todo cuando nuestra regulación no lo hace.&lt;/p&gt;
&lt;h3&gt;Algunos aspectos importantes de la regulación Chilena 🇨🇱&lt;/h3&gt;
&lt;p&gt;En mi emprendimiento previo, &lt;a href=&quot;https://www.youtube.com/watch?v=XhlELBN2zZQ&quot;&gt;“TeeshMe”&lt;/a&gt;, un estudiante podía subir una foto de un ejercicio de logaritmos y un profesor le iba a decir paso a paso cómo resolverlo. Con el tiempo, podríamos haber creado algoritmos (con inteligencia artificial) que entregaran la solución automáticamente.&lt;/p&gt;
&lt;p&gt;Esto está perfectamente bien. Pero, ¿qué pasa si quiero &lt;a href=&quot;https://blog.codeness.io/tuskas/&quot;&gt;automatizar el diagnóstico de cáncer uterino con un algoritmo&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;Antes de darte la respuesta, algunos datos que son de vital interés al momento de crear software en salud en Chile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ficha clínica:&lt;/strong&gt; es un documento donde se registran antecedentes relacionados con la salud de las personas (sí, puede ser digital).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tratamiento de datos:&lt;/strong&gt; básicamente cualquier operación (automatizada o no) sobre datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sobre la ficha clínica:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Toda información que surja de la Ficha clínica se considera como &lt;strong&gt;información sensible.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Los únicos que tienen acceso a la ficha clínica son prestadores relacionados directamente con la atención (además del titular o su representante legal). Es decir, &lt;strong&gt;un administrador de sistema o un programador no debería poder acceder a dicha información&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sobre tratamiento de datos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solo puedes hacer tratamiento de datos sensibles (ej.: Ficha clínica) cuando la ley lo autorice, exista consentimiento del titular o sean datos para determinar beneficios de salud a sus titulares.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En consecuencia:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿Quieres utilizar datos para una investigación científica? &lt;em&gt;I’m sorry&lt;/em&gt;, pero tienes que informar a las personas involucradas y estas tienen derecho a elegir su incorporación.&lt;/li&gt;
&lt;li&gt;¿Quieres mostrar una imagen de una radiografía de un paciente en tu página web? Tienes que tener su autorización escrita.&lt;/li&gt;
&lt;li&gt;¿Quieres crear un algoritmo predictivo en base la información de los pacientes en tu sistema? De seguro esa información es parte de la ficha clínica, por ende pasa a ser un dato sensible y en consecuencia estás haciendo “tratamiento de datos”, lo cual requiere que el titular lo consienta expresamente (da igual si lo tienes anónimo o no 😉).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como puedes ver, automatizar la respuesta a una pregunta matemática (TeeshMe) es posible, ya que una imagen de ese estilo no es información sensible ni tampoco dato personal. Pero en el caso de automatizar un diagnóstico, este utiliza información sensible y personal, por tanto, es obligación contar con el consentimiento escrito del paciente.&lt;/p&gt;
&lt;p&gt;Ahí radica la diferencia con otro tipo de aplicaciones. En salud, es muy fácil que información que recolectas sea considerado un dato sensible, y por ende, para hacer “tratamiento” (básicamente cualquier algoritmo que los use) necesitarás tener consentimiento escrito 😱&lt;/p&gt;
&lt;h3&gt;Sí, si puedes alojar la información en servidores extranjeros 🙊&lt;/h3&gt;
&lt;p&gt;Hay un mito persistente que dice que no puedes alojar información de pacientes en servidores externos. La verdad es que &lt;strong&gt;sí puedes&lt;/strong&gt;, así que no hay problemas con que uses algún &lt;a href=&quot;https://es.wikipedia.org/wiki/Computaci%C3%B3n_en_la_nube&quot;&gt;proveedor Cloud&lt;/a&gt; como Firebase, Heroku, AWS o Digital Ocean. Ale Mauro &lt;a href=&quot;https://discourse.forosaluddigital.cl/t/mito-o-realidad-la-informacion-clinica-de-pacientes-no-puede-alojarse-en-un-datacenter-cloud-fuera-del-territorio-nacional/1122&quot;&gt;escribió sobre esto&lt;/a&gt; en ForoSaludDigital.&lt;/p&gt;
&lt;p&gt;Puse una sección con esta información porque de verdad es un concepto erróneo que incluso informáticos que trabajan en salud lo han hecho perdurar (lo he escuchado en distintos cursos que he ido como estudiante).&lt;/p&gt;
&lt;h2&gt;Ahora sí… El caso de Firebase 🔥&lt;/h2&gt;
&lt;p&gt;Para crear &lt;a href=&quot;https://apposito.codeness.io/&quot;&gt;Apposito&lt;/a&gt;, elegimos un &lt;em&gt;stack tecnológico&lt;/em&gt; (conjunto de tecnologías) que se ajustara a mi experiencia y a la de &lt;a href=&quot;https://enfermeraprogramadora.cl&quot;&gt;Eliana&lt;/a&gt;. Esto nos llevó a elegir &lt;a href=&quot;https://es.wikipedia.org/wiki/Firebase&quot;&gt;Firebase&lt;/a&gt;, ya que ambos teníamos conocimientos y experiencia en esta tecnología (&lt;a href=&quot;https://blog.codeness.io/creando-apposito/&quot;&gt;en este post&lt;/a&gt; hay más información de la decisión).&lt;/p&gt;
&lt;p&gt;Ya sabíamos las funcionalidades que íbamos a programar y que eran posible de implementar con Firebase. La pregunta que quedaba era: ¿es razonable usar esta tecnología en salud? ¿Existe alguna razón para no usarla?&lt;/p&gt;
&lt;h3&gt;Firebase y regulación ⚖️&lt;/h3&gt;
&lt;p&gt;La respuesta corta es: la mayoría de servicios de Firebase cumplen con HIPAA (puedes ver el listado completo &lt;a href=&quot;https://cloud.google.com/security/compliance/hipaa&quot;&gt;aquí&lt;/a&gt;). Y al cumplir con HIPAA, &lt;em&gt;creo&lt;/em&gt; ya cumples con todo lo que te exige la ley en Chile 🎉 y a la vez de GDPR (o al menos, gran parte).&lt;/p&gt;
&lt;p&gt;En nuestro caso, usamos Firestore (base de datos), Firebase Cloud Functions (operaciones en la nube), Cloud Storage (para guardar imágenes) y Cloud Identity (para inicio de sesión), todos cubiertos por HIPAA.&lt;/p&gt;
&lt;p&gt;Algunos servicios relevantes que no cumplen la regulación son &lt;strong&gt;Crashlytics&lt;/strong&gt; (para reporte de errores en aplicaciones móviles) y &lt;strong&gt;Firebase Authentication&lt;/strong&gt; (para manejar inicios de sesión). Ambos pueden ser muy importantes a la hora de crear APPs en salud, ¿qué hacer entonces?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En el caso de Crashlytics, puedes usar una alternativa que cumpla HIPAA, aunque la mayoría son de pago. O simplementar utilizar el diagnóstico por defecto de Android e iPhone. Quizás hay información extra que no tendrás, pero al menos no estarás ciego.&lt;/li&gt;
&lt;li&gt;En el caso de Firebase Authentication, puedes usar &lt;a href=&quot;https://cloud.google.com/identity-platform/&quot;&gt;Cloud Identity&lt;/a&gt; (que fue lo que usamos nosotros).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Nota importante:&lt;/strong&gt; si haces aplicaciones para profesionales de salud (ejemplo, para enfermeras), quizás no es tan importante con que todo lo que uses cumpla HIPAA. Mi razonamiento es que la &lt;strong&gt;información de la persona&lt;/strong&gt; que usará la APP no es PHI (información protegida de salud). Sin embargo, la &lt;strong&gt;información que ingresen de terceros&lt;/strong&gt; si es PHI, y es ahí donde hay que tener cuidado.&lt;/p&gt;
&lt;h3&gt;Firebase y casos de uso que querrías implementar en salud 💉&lt;/h3&gt;
&lt;p&gt;A grandes rasgos, hay muchos casos de uso que son posibles de realizar con Firebase. A continuación van 4 ejemplos de casos de uso y qué tecnología de Firebase usar para implementarlo (será un poco más técnica esta parte 👨‍💻👩‍💻)&lt;/p&gt;
&lt;h4&gt;Ficha clínica, Información de pacientes, Información de profesionales, etc.&lt;/h4&gt;
&lt;p&gt;Puedes utilizar &lt;a href=&quot;https://firebase.google.com/docs/firestore/&quot;&gt;Firestore&lt;/a&gt;, ya que es una base de datos.&lt;/p&gt;
&lt;p&gt;Para cumplir con regulación (por ejemplo, hacer que una enfermera pueda ver información solo de sus pacientes), tendrás que implementar cierto manejo de permisos, para lo cual tienes que usar &lt;a href=&quot;https://firebase.google.com/docs/firestore/security/get-started&quot;&gt;Firestore Security Rules&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Imágenes de pacientes (lunares, heridas, etc.), archivos con información de exámenes, etc.&lt;/h4&gt;
&lt;p&gt;Puedes usar &lt;a href=&quot;https://firebase.google.com/docs/storage/&quot;&gt;Cloud Storage&lt;/a&gt;, ya que te permite almacenar distintos tipos de archivos (PDF, imágenes, etc.).&lt;/p&gt;
&lt;p&gt;Si quieres manejar permisos de lectura sobre estos archivos, tendrás que utilizar &lt;a href=&quot;https://firebase.google.com/docs/storage/security/&quot;&gt;Cloud Storage Security Rules&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sin embargo, para permisos más elaborados, tendrás que dejar todos los archivos privados y permitir que usuarios accedan a ellos a través de &lt;a href=&quot;https://cloud.google.com/functions/&quot;&gt;Cloud Function&lt;/a&gt; (donde puedes manejar la lógica de acceso de forma muy personalizada).&lt;/p&gt;
&lt;h4&gt;Historial de cambios y de acceso&lt;/h4&gt;
&lt;p&gt;Es una muy buena práctica saber quién hizo qué respecto a la información de los pacientes, de manera de tener un historial de cambios.&lt;/p&gt;
&lt;p&gt;Firestore tiene utilidades que te ayudan. Por ejemplo, con &lt;a href=&quot;https://firebase.google.com/docs/functions/firestore-events&quot;&gt;Cloud Firestore Triggers&lt;/a&gt; puedes crear fácilmente historiales de la ficha de un paciente. Sin embargo, la gran dificultad es que &lt;strong&gt;no puedes saber quién hizo los cambios,&lt;/strong&gt; lo cual es muy relevante en salud.&lt;/p&gt;
&lt;p&gt;Tampoco hay una manera fácil de saber qué usuario está leyendo cierta información (ej.: ¿quién leyó los datos personales de un paciente particular?).&lt;/p&gt;
&lt;h4&gt;Interoperabilidad&lt;/h4&gt;
&lt;p&gt;Puedes hacer que tu solución sea &lt;a href=&quot;https://blog.codeness.io/interoperabilidad/&quot;&gt;interoperable&lt;/a&gt; (que se pueda comunicar con otros sistemas) implementando una capa de &lt;a href=&quot;https://www.hl7.org/fhir/summary.html&quot;&gt;HL7 FHIR&lt;/a&gt; con Cloud Functions. No es una tarea fácil, pero es posible.&lt;/p&gt;
&lt;h2&gt;⚠️ No por usar un servicio que cumple con la regulación estás cumpliendo con la regulación&lt;/h2&gt;
&lt;p&gt;Para construir una aplicación, de seguro que vas a usar servicios en la nube o código de terceros.&lt;/p&gt;
&lt;p&gt;Podríamos decir que todos estos servicios externos que uso son legos con los cuales construyo mi aplicación.&lt;/p&gt;
&lt;p&gt;Si mis piezas cumplen con cierto estándar, al armar mi figurita también tengo que preocuparme de seguir cumpliendo el estándar. Así que no es suficiente con que las partes pequeñas cumplan, la figura final también debe hacerlo.&lt;/p&gt;
&lt;p&gt;Ejemplo un poco más técnico: usar Firestore para guardar datos de ficha clínica donde toda la información está pública. Firestore cumple HIPAA, pero como no me preocupé de dejar la información privada, cualquier persona puede ver la información y por tanto, rompo HIPAA.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Cuando creamos software en salud, debemos ser muy cuidadosos con los servicios que usamos y con las librerías que instalamos. Por un lado está la parte regulatoria, y por otro el aspecto ético: tenemos la obligación ética de crear aplicaciones que respeten la dignidad humana.&lt;/p&gt;
&lt;p&gt;En este sentido, Firebase es una excelente herramienta que te permite prototipar rápido y cumple con regulaciones como HIPAA y GDPR ❤️ además tiene distintas funcionalidades que te permitirán lograr que la aplicación que crees también cumpla con la ley.&lt;/p&gt;
&lt;p&gt;Sin embargo, mientras desarrollábamos &lt;a href=&quot;http://apposito.codeness.io/&quot;&gt;Apposito&lt;/a&gt;, nos encontramos con que algunos casos de uso como historial de cambios o historial de acceso no son tan fáciles de implementar debido a limitaciones en Firestore.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/4665bbfd3b9680165b2b58623b21b57e/f3583/preview.png"></media:content></item><item><title><![CDATA[3 aspectos relevantes en salud digital]]></title><description><![CDATA[La pandemia nos hizo darnos cuenta de muchas falencias digitales en Chile. Si bien contamos con una de las conectividades más alta de la…]]></description><link>https://blog.codeness.io/aspectos-relevantes-en-innovacion-en-salud-digital/</link><guid isPermaLink="false">https://blog.codeness.io/aspectos-relevantes-en-innovacion-en-salud-digital/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 12 Jul 2021 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;La pandemia nos hizo darnos cuenta de muchas falencias digitales en Chile. Si bien contamos con una de las conectividades más alta de la región (&lt;a href=&quot;https://repositorio.cepal.org/bitstream/handle/11362/43670/1/S1800532_en.pdf&quot;&gt;fuente&lt;/a&gt;), es pan de día a día ver como los bancos, AFP, isapres y otras instituciones se llenan con personas haciendo trámites que podrían hacer sin contacto (en línea), pero no lo hacen por carecer de conocimientos.&lt;/p&gt;
&lt;p&gt;Esto no es extraño, ya que el 42% de los Chilenos carecen de las herramientas básicas para la economía digital (&lt;a href=&quot;https://www.diarioconcepcion.cl/economia-y-negocios/2019/06/09/ocde-el-42-de-los-chilenos-carece-de-herramientas-basicas-de-digitalizacion.html&quot;&gt;fuente&lt;/a&gt;). Muy probablemente nos encontramos como sociedad en el nivel 1 de alfabetización digital (Lankshear, C., &amp;#x26; Knobel, M.), muy lejos del tercer y último nivel que habilita la transformación digital. Si bien estos niveles no plantean un proceso lineal, debemos tener competencias básicas para habilitar usos digitales que permitan nuevos tipos de innovación y creatividad.&lt;/p&gt;
&lt;p&gt;Debido a este contexto, no es raro ver fracasar planes de transformación digital e innovación en Salud Digital en Chile. A continuación me gustaría centrarme en 3 aspectos que considero relevantes al hablar de Transformación Digital e innovación en el ámbito de salud, y por qué debemos trabajarlos para poder mejorar la salud de las personas.&lt;/p&gt;
&lt;p&gt;El primero es &lt;strong&gt;no olvidar que los individuos y las interacciones van sobre los procesos y las herramientas&lt;/strong&gt;. Este es &lt;a href=&quot;https://agilemanifesto.org/iso/es/manifesto.html&quot;&gt;un principio&lt;/a&gt; fundamental de las metodologías ágiles, un potenciador de la transformación digital de muchas compañías en el mundo. Debe existir una inversión en las personas si queremos que un plan de digitalización funcione, sobre todo considerando que el nivel de alfabetización que tenemos en Chile es bajo.&lt;/p&gt;
&lt;p&gt;El segundo aspecto es &lt;strong&gt;tener especialmente cuidado en los casos de éxito y filosofía que utilizamos en el ámbito de la salud&lt;/strong&gt;. Sé que es impactante ver como empresas de la nada se convirtieron en imperios digitales. Facebook, Amazon, Apple, Netflix y Google, las famosas “FAANG”, fuentes de inspiración, creadoras de innovación, facilitadoras de la transformación digital y cometedoras de acciones poco éticas. Estas empresas con crecimiento exponencial tienen la filosofía de “crecer a todo costo”, &lt;a href=&quot;https://m.signalvnoise.com/exponential-growth-devours-and-corrupts/&quot;&gt;mientras más extractivos, más adictivos y más virales mejor&lt;/a&gt;. La dignidad humana debe estar al centro de la salud digital, es por eso que debemos elegir con cuidado nuestras fuentes de inspiración y mentores.&lt;/p&gt;
&lt;p&gt;Esto me lleva al tercer y último aspecto: &lt;strong&gt;los incentivos&lt;/strong&gt;. La digitalización nos permite medir cosas que antes no. Podemos ver que tan eficiente somos y podemos optimizar OKR (Objectives and Key Results) de negocio que nos importan. Pero, ¿cuáles son esos objetivos? ¿Cuáles son esas métricas? El fin último será función de los ingresos que una institución tenga, pero los incentivos económicos no están alineados con la salud de las personas. El sistema está hecho para enriquecerse de las personas enfermas. No le interesa tener y mantener personas sanas. &lt;a href=&quot;https://www.eldesconcierto.cl/reportajes/2021/03/16/carol-hullin-de-la-legua-al-banco-mundial-cuando-se-hace-negocio-con-la-pobreza-no-quieres-que-ese-negocio-termine.html&quot;&gt;&lt;em&gt;Es más caro mantener una persona diabética que prevenir con actividad física&lt;/em&gt;&lt;/a&gt;. Bajo este contexto, optimizar esta máquina siempre irá en contra de lo que realmente importa, mantener a las personas sanas.&lt;/p&gt;
&lt;p&gt;Sé que la salud pública es un sistema dinámico y complejo, que tiene muchas más aristas de las que planteadas en este ensayo. Sin embargo, estoy convencido de que mejorando los puntos aquí expuestos (las personas primero, dignidad humana al centro e incentivos en favor de la salud) nos permitirá colocar a la tecnología a nuestro favor para mejorar la salud de todos los Chilenos.&lt;/p&gt;
&lt;h2&gt;Referencias&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Diario Concepción. (2019, 9 junio). Ocde: el 42% de los chilenos carece de herramientas básicas de digitalización. &lt;a href=&quot;https://www.diarioconcepcion.cl/economia-y-negocios/2019/06/09/ocde-el-42-de-los-chilenos-carece-de-herramientas-basicas-de-digitalizacion.html&quot;&gt;https://www.diarioconcepcion.cl/economia-y-negocios/2019/06/09/ocde-el-42-de-los-chilenos-carece-de-herramientas-basicas-de-digitalizacion.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ECLAC. (2017). State of broadband inLatin America and the Caribbean. &lt;a href=&quot;https://repositorio.cepal.org/bitstream/handle/11362/43670/1/S1800532_en.pdf&quot;&gt;https://repositorio.cepal.org/bitstream/handle/11362/43670/1/S1800532_en.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lankshear, C., &amp;#x26; Knobel, M. (2008). Digital Literacies; Concepts, Policies and Practices: 30 (2nd ed.). Peter Lang Us.&lt;/li&gt;
&lt;li&gt;Manifiesto por el Desarrollo Ágil de Software. (2001). Agile Manifesto. &lt;a href=&quot;https://agilemanifesto.org/iso/es/manifesto.html&quot;&gt;https://agilemanifesto.org/iso/es/manifesto.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Heinemeier, D. (2017, 27 febrero). Exponential growth devours and corrupts. Signal v. Noise. &lt;a href=&quot;https://m.signalvnoise.com/exponential-growth-devours-and-corrupts/&quot;&gt;https://m.signalvnoise.com/exponential-growth-devours-and-corrupts/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;El Desconcierto, Freixas, M., &amp;#x26; Hullin, C. (2021, 18 marzo). Carol Hullin, de La Legua al Banco Mundial: «Cuando se hace negocio con la pobreza, no quieres que ese negocio termine». El Desconcierto - Prensa digital libre. &lt;a href=&quot;https://www.eldesconcierto.cl/reportajes/2021/03/16/carol-hullin-de-la-legua-al-banco-mundial-cuando-se-hace-negocio-con-la-pobreza-no-quieres-que-ese-negocio-termine.html&quot;&gt;https://www.eldesconcierto.cl/reportajes/2021/03/16/carol-hullin-de-la-legua-al-banco-mundial-cuando-se-hace-negocio-con-la-pobreza-no-quieres-que-ese-negocio-termine.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/dfc05987117e31dbd5af248cc70332c9/f3583/preview.png"></media:content></item><item><title><![CDATA[Un enfoque práctico con HL7® FHIR®]]></title><description><![CDATA[Clase 1: Modelado En esta clase nos enseñaron a modelar una solución utilizando HL7® FHIR®. Para esto, hay que considerar los “puntos de…]]></description><link>https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-4/</link><guid isPermaLink="false">https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-4/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 14 Jun 2021 16:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Clase 1: Modelado&lt;/h2&gt;
&lt;p&gt;En esta clase nos enseñaron a modelar una solución utilizando HL7® FHIR®.&lt;/p&gt;
&lt;p&gt;Para esto, hay que considerar los “puntos de interoperabilidad”:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Identificar punto de intercambio de información&lt;/strong&gt;: Usando el Diagrama BPMN establecer los puntos en los cuales se requiere intercambiar información.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identificar los grupos de información&lt;/strong&gt;: Establecer los conjuntos de información que tendrán relación en cada punto de intercambio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identificar la información por grupo&lt;/strong&gt;: Para cada grupo de información, se debe establecer y detallar cada dato, realizando una correcta definición para evitar cualquier tipo de ambigüedad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Establecer mecanismos de intercambio de datos&lt;/strong&gt;: Definir estándar, seguridad y otras características no funcionales, requeridas por el proceso.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En otras palabras, hay que “modelar” el intercambio de información y definir qué es lo importante, qué datos son los que estamos intercambiando y cuándo se genera el dato.&lt;/p&gt;
&lt;h3&gt;Conjunto mínimo de datos (CMD)&lt;/h3&gt;
&lt;p&gt;El conjunto mínimo de datos (CMD) nos permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Satisfacer todas las operaciones e intercambios de datos en un determinado proceso.&lt;/li&gt;
&lt;li&gt;Establecer datos, propiedades, tipos de datos y descripciones de cada dato.&lt;/li&gt;
&lt;li&gt;Permite tener un mirada global de la información durante un proceso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/6a7d190f3c7ec805cc3b39cf9fe385c2/b6e34/cmd.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 15.18987341772152%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsSAAALEgHS3X78AAAA0UlEQVQI1w2MwUrDMABA++2CB9GLogc/QxAVCltBmIfhwFF1ZlttmjZtremSbK3bQZ89PN7l8YKu32Nygbg5Ins4IQ/PSG6PqaIL0vAc83iJe7rGDujwlCy6okxGNOmYz7d7MhFhywny/W74TAhaYyh0xXT+gZAV6ssxi1csEk2SN2jT4fdg+z8af0Bqg1QVmapZJ4qfwy9uCOLXJVXdEni/pa5rZs9TlmJBqXPi+QvrlcBuDP3Os9s6vG2x7TeFyiiKHD10enDfdzhnkTLF2Q3/1yvXe0cYdQkAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Ejemplo CMD de pacientes&quot;
        title=&quot;Ejemplo CMD de pacientes&quot;
        src=&quot;/static/6a7d190f3c7ec805cc3b39cf9fe385c2/f058b/cmd.png&quot;
        srcset=&quot;/static/6a7d190f3c7ec805cc3b39cf9fe385c2/c26ae/cmd.png 158w,
/static/6a7d190f3c7ec805cc3b39cf9fe385c2/6bdcf/cmd.png 315w,
/static/6a7d190f3c7ec805cc3b39cf9fe385c2/f058b/cmd.png 630w,
/static/6a7d190f3c7ec805cc3b39cf9fe385c2/40601/cmd.png 945w,
/static/6a7d190f3c7ec805cc3b39cf9fe385c2/b6e34/cmd.png 1103w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Modelado&lt;/h3&gt;
&lt;p&gt;El proceso de modelación es cuando ya tenemos claro los puntos de interoperabilidad y los CMD, y se trata de definir la solución al problema utilizando los estándares de interoperabilidad.&lt;/p&gt;
&lt;p&gt;Con HL7 FHIR, esto significa pensar, analizar e investigar para saber qué recursos tenemos que usar, y qué atributos son los importantes para nuestro CMD.&lt;/p&gt;
&lt;p&gt;La recomendación aquí es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilizar la documentación oficial.&lt;/li&gt;
&lt;li&gt;Identificar los Recursos utilizando “Scope and Usage”.&lt;/li&gt;
&lt;li&gt;Identificar Recursos en base al CMD y sus Grupos de Datos.&lt;/li&gt;
&lt;li&gt;Identificar las estructuras de los recursos HL7 FHIR para asociar el CMD.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Identificar elementos especiales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conjuntos de valores asociados a un elemento o campo.&lt;/li&gt;
&lt;li&gt;Datos que no hacen match con el recurso HL7 FHIR seleccionado.&lt;/li&gt;
&lt;li&gt;Elementos o campos que serán requeridos para búsquedas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es posible hacer una modelación visual de los recursos involucrados utilizando una herramienta gratuita llamada “ClinFHIR” (&lt;a href=&quot;http://clinfhir.com/&quot;&gt;link&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 598px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/151dbe95196b3737a749bed7594fbdf6/0c69d/clinfhir.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 81.0126582278481%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAABY0lEQVQ4y52UyU7DMBCG825c4H14G84cQOLQK4vEkd5BKuqSuhSF0jY4a3Ecz4/TrG1cqnSkkTfpyz9LxoLBiKjeF64vQThu1iEYqRSUxEDmStZQoq5AtV2F64A932J0f43YGVdvJwAzFdlOwfM3GM2j7T67OwYzAxthC0ngUZ7FKhWnKMwsjmMwNsVgyMBmH9tzHQF1ByrKlfFQQaaqULlbGBPYMrdNQ2kCbGSdkFJhXiDVglu7xSjUqXxlToDHPsPDi43+6wIiNYfZVGr99xgJYOwkWP5ssPQk2OcKk4kNx03hihm4HOjUyLbCXdmEMPDhrlca4MLzgvpjutmlTLD2gafvS/S+LiCIHw65tCD6xZCt4CyW4JwfrWwr5PIiFT5UaGOq24V7/l53olGQwg39WQDzbEd2D+O7c7zfnMF7uyoKJFuwQ+c65HKSZAlO9a+mQu1JNRC6mIW98USmkdUB+ge/++nzdXIUBgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Modelado de vacunación con ClinFHIR&quot;
        title=&quot;Modelado de vacunación con ClinFHIR&quot;
        src=&quot;/static/151dbe95196b3737a749bed7594fbdf6/0c69d/clinfhir.png&quot;
        srcset=&quot;/static/151dbe95196b3737a749bed7594fbdf6/c26ae/clinfhir.png 158w,
/static/151dbe95196b3737a749bed7594fbdf6/6bdcf/clinfhir.png 315w,
/static/151dbe95196b3737a749bed7594fbdf6/0c69d/clinfhir.png 598w&quot;
        sizes=&quot;(max-width: 598px) 100vw, 598px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Clase 2: Metodología&lt;/h2&gt;
&lt;p&gt;Esta clase me gustó mucho, ya que te arma el rompecabeza (utilizando las piezas de las clases anteriores) para enseñarte una metodología para aplicar todo lo que aprendimos en el curso.&lt;/p&gt;
&lt;p&gt;¿Qué es una metodología? Son pasos replicables para enfrentar un proyecto. El objetivo es ordenar (“paso a paso”) y que el método sea reproducible.&lt;/p&gt;
&lt;p&gt;La metodología que nos presentaron tiene 2 niveles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Diseño&lt;/strong&gt;: ¿Cuál es el problema que queremos resolver? Hay que acotar el problema y el alcance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrollo de software&lt;/strong&gt;: es construir el software, adaptable a cualquier metodología.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Fase 1: Conjunto mínimo de datos&lt;/h3&gt;
&lt;p&gt;Aquí hay que discutir con los &lt;em&gt;stakeholders&lt;/em&gt; y llegar al consenso sobre qué datos son importantes.&lt;/p&gt;
&lt;p&gt;El resultado es el conjunto mínimo de datos (CMD). Hay casos en los cuales puede que no tengamos un dato (por ejemplo, fecha de nacimiento).&lt;/p&gt;
&lt;h3&gt;Fase 2: Modelado&lt;/h3&gt;
&lt;p&gt;El CMD no es suficiente. Hay que conocer el modelo de negocio de los datos: ¿cómo se genera? ¿cómo se comparte?&lt;/p&gt;
&lt;p&gt;En esta fase, modelamos la interoperabilidad entre los sistemas. Todo lo que es &lt;strong&gt;importante&lt;/strong&gt; para el &lt;strong&gt;proceso&lt;/strong&gt; de interoperabilidad. Es decir, no modelamos el negocio propiamente tal, sino que solo todo lo que tenga que ver con la interoperabilidad.&lt;/p&gt;
&lt;h3&gt;Fase 3: Estándares&lt;/h3&gt;
&lt;p&gt;Aquí hacemos match de lo que tenemos de las fases anteriores con un estándar (v2, FHIR, etc). Así que definimos el mapping, extensiones, perfiles, operaciones, coding, etc.&lt;/p&gt;
&lt;p&gt;También modelamos la solución con clinFHIR.&lt;/p&gt;
&lt;h3&gt;Fase 4: Desarrollo de software&lt;/h3&gt;
&lt;p&gt;Creamos el prototipo (un software funcional). La metodología para crear el software es a libre elección, lo importante es que esté de acuerdo con el alcance del proyecto.&lt;/p&gt;
&lt;p&gt;Hay que tener en cuenta tanto requisitos funcionales (las cosas que debe hacer) como los no funcionales (los aspectos que harán que el software sea útil).&lt;/p&gt;
&lt;h3&gt;Fase 5: QA&lt;/h3&gt;
&lt;p&gt;Una vez ya tenemos el prototipo, tenemos que comenzar a probarlo para asegurarnos que funcione bien (sin errores, que se entienda, etc).&lt;/p&gt;
&lt;h3&gt;Fase 6: Despliegue&lt;/h3&gt;
&lt;p&gt;A esta altura ya tenemos un prototipo que funciona. Lo siguiente es ponerlo en marcha para que los usuarios puedan comenzar a utilizarlo.&lt;/p&gt;
&lt;p&gt;En esta fase dejamos nuestra implementación en simplifier (si corresponde) y también hacemos tests de carga para ver si nuestro sistema funciona sin problemas en un escenario realista.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/5b56b5a6462f15f40088d403bf7eece7/f3583/modulo-4.png"></media:content></item><item><title><![CDATA[Operaciones con HL7® FHIR®]]></title><description><![CDATA[Clase 1: Arquitectura FHIR y REST Esta clase fue dictada por Alejandro Medina donde vimos: Arquitectura FHIR Fundamentos REST Operaciones…]]></description><link>https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-3/</link><guid isPermaLink="false">https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-3/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Wed, 12 May 2021 16:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Clase 1: Arquitectura FHIR y REST&lt;/h2&gt;
&lt;p&gt;Esta clase fue dictada por Alejandro Medina donde vimos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arquitectura FHIR&lt;/li&gt;
&lt;li&gt;Fundamentos REST&lt;/li&gt;
&lt;li&gt;Operaciones básicas REST&lt;/li&gt;
&lt;li&gt;Demo&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Arquitectura FHIR&lt;/h3&gt;
&lt;h4&gt;Principios arquitectónicos&lt;/h4&gt;
&lt;p&gt;Antes de continuar con los apuntes, me gustaría hacer un paréntesis sobre &lt;a href=&quot;https://es.wikipedia.org/wiki/Arquitectura_de_software&quot;&gt;“arquitectura”&lt;/a&gt;. En software, cuando hablamos de arquitectura, nos referimos a los “planos” de un sistema informático. Es parecido a los planos de las casas o edificios, pero aquí los planos me indican cómo se organiza un software.&lt;/p&gt;
&lt;p&gt;El profesor nos comentó sobre los “principios arquitectónicos”, es decir, la mentalidad con la cual se pensó la arquitectura de FHIR, que son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Reutilización y composición:&lt;/strong&gt; Los Recursos FHIR® están diseñados para coincidir con los requisitos comunes de muchos casos. Los perfiles o extensiones nos permiten adaptar para nuestros casos particulares. Por ejemplo, en Chile, podemos usar extensiones para agregar campos de Nombre y apellido, previsión y dirección.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Escalabilidad:&lt;/strong&gt; (&lt;em&gt;cuando hablamos de escalabilidad, nos referimos a que el sistema va a soportar &lt;strong&gt;muchas&lt;/strong&gt; peticiones o conexiones de usuarios&lt;/em&gt;). En FHIR se logra gracias a que las transacciones (&lt;em&gt;las operaciones sobre recursos&lt;/em&gt;) no tengan estado (&lt;em&gt;cada operación funciona de manera independiente&lt;/em&gt;), lo cual facilita que dentro de un grupo de servidores se puedan distribuir las transacciones (&lt;em&gt;se puede paralelizar carga para evitar cuellos de botella&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rendimiento:&lt;/strong&gt; los recursos FHIR® son livianos y adecuados para el intercambio (&lt;em&gt;para un computador es fácil y rápido generar o leer un recurso XML o JSON&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usabilidad:&lt;/strong&gt; los recursos FHIR® pueden ser entendidos por perfiles técnicos y no técnicos, incluso en el caso de no conocer la sintaxis de JSON o XML es posible leer e interpretar la información de un recurso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fidelidad de datos:&lt;/strong&gt; mecanismos incorporados para la asociación y validación de terminología clínica (&lt;em&gt;es decir, un programa puede validar que los datos respeten las reglas y normas definidas&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Descomposición FHIR&lt;/h4&gt;
&lt;p&gt;FHIR puede “descomponerse” (&lt;a href=&quot;https://www.hl7.org/fhir/overview-arch.html#decomposition&quot;&gt;documentación&lt;/a&gt;) en los siguientes módulos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modelo de información (Information Model):&lt;/strong&gt; los componentes de FHIR relacionados con la creación de recursos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modelo de conformidad (Constraints):&lt;/strong&gt; los componentes de FHIR que abordan las limitaciones y la validez.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminología (Terminology):&lt;/strong&gt; los componentes de FHIR relacionados con terminologías clínicas y ontologías&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uso (Usage):&lt;/strong&gt; el componente de FHIR que aborda el uso de FHIR para su uso en tiempo de ejecución (es decir, la API REST de FHIR).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.9493670886076%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACJUlEQVQoz31SbW/SUBjtf/bDEmOMDqMjStTNfTR+UeOyOSc6mGNz0TmEMmVmE1npbUsZjPLSUlr6cnvvxacUkL3Ek9P25knPPafnlhvOgLHwbjr+s9TJwvqve2tH+6WmF1DCGC9ot14frn6XHUwsL7DcwMOEG15EpN8rde5siA82pYVNaW5VeP61NnDx8q4aS6Lb7yrAG2/Kxap5WQygjFkO1i2v0we6QMP2HA/3bB+GrZ7T7rtt0wmdKWVTTp15yVjcUZ9m1MWMmvhUXT/U4N2V/PnSjvokU13aVR+mlXLDvsYZUG3bebE7op4Tu6UzE2IXFSMrdHmkF5CeFTqa6XLbxVqyoGzk5b3jOmMMMgeEAiEEoWGg0YINoLco1QSEMK5Q0fhKK3eqHcmdgFJMCGgm5Y0/BEPhlAUT+uPdhxyb2S9a/lDMeEp5vF2Np5W7SenFt3rkyWYaHYs9HMAKUvWdoB+eHj1tWF/+tH8qRkHSP5daeaQ7PnExdfzQPxTTidjHBB4HFT32Ac0nxfn34tya8CrXiExW+PN4SoZhLCnefCvwUg+GwTS264fODX1QrptIs8WmhZqW2hn4AYGTVNrhRG7ZQKRZuuVDT55PcCSGq3xmLKdP9n/XpyVFwSDkxYLDr4XhaM7GYjgRpA0OKgYvmXnUyyHzuNZnk5IucRZctDe0kkhLiS350ZZ8/6P0MlsfXnn1KriogPDfZP8MCBkX+3/8BfU2P2AoDK56AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Descomposición de módulos FHIR&quot;
        title=&quot;Descomposición de módulos FHIR&quot;
        src=&quot;/static/37ecccd054029687bfb87583aeff4202/f058b/decomposition.png&quot;
        srcset=&quot;/static/37ecccd054029687bfb87583aeff4202/c26ae/decomposition.png 158w,
/static/37ecccd054029687bfb87583aeff4202/6bdcf/decomposition.png 315w,
/static/37ecccd054029687bfb87583aeff4202/f058b/decomposition.png 630w,
/static/37ecccd054029687bfb87583aeff4202/b3ad9/decomposition.png 909w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Imagen extraida de &lt;a href=&quot;https://www.hl7.org/fhir/overview-arch.html#decomposition&quot;&gt;documentación oficial FHIR&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Implementación de servidores FHIR&lt;/h4&gt;
&lt;p&gt;Un servidor REST FHIR es cualquier software que implementa las API FHIR y utiliza recursos FHIR para intercambiar datos. El diagrama siguiente describe las definiciones de la interfaz FHIR. Los métodos se clasifican en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iServeInstance:&lt;/strong&gt; métodos que realizan operaciones Get, Put o Delete en un recurso&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iServeType:&lt;/strong&gt; métodos que obtienen información de tipo o metadatos sobre recursos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iServeSystem:&lt;/strong&gt; métodos que exponen o habilitan comportamientos del sistema.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 55.69620253164557%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB9klEQVQoz1WSy3LTMBSG/Qzs2fByLOGdYMGCF2CmHbogtLRO0+Dc6sR3+Vo51iWOZMmWOTHDdPil0ehcvpHOkawsy8MwDIIwSRLY+EEQTwLTD/wwjOIkRgiFFwVRHAdBgDHWWrdtaxFO0zJ3vX1WZkyceNfmVQFmTRsmedudwdy6O1SkDacNJ+M4GmNglVJaRVUsl6vFYmXGiwvCnufd3NxGEdJGxyheOZvZzF4ut67rN/QCT4kTXL4U2507+/mYZRXGDSa15/s/ZvODFxFG0wzZ9tK2Hc5bANTwF/wH50UO5dn278Mh6odeKHlqW9FJYwbIPNImzYsS10Lwjq0UW5l2P/QSYCGERRktqwplher73gwwx8EopTag7S5JEKENpJ7q/ebLW/fru/XnN8f9pwluLa20VJ3u9eUoYI1ppdR9H0UBtBdajPGL6s0Rx5urD9vrj7ur9zy9nuCzpZTk56eTsMdxNQyOMU5Fbj3vG0LfKf01jpvROK2Ys/PjOPpKPw9Gv9YsO3k6pYxGDQmbJmQs4TQ+nwspK0LipgmEKDhPjrVPSCRECbd7haE899m7v3+cz58WC2e93mFMtB4g7B38h4dFHKfgv7uzHWebpuV/7wwfhXNOKaGUMsYIIWBCJ7uuq+sa/lYCA6GyLPM8r2sMfjkJwD/MAFq6r32+WAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Arquitectura de un servidor FHIR&quot;
        title=&quot;Arquitectura de un servidor FHIR&quot;
        src=&quot;/static/21375b7c10310d50d113354316dcff81/f058b/arch-rest.png&quot;
        srcset=&quot;/static/21375b7c10310d50d113354316dcff81/c26ae/arch-rest.png 158w,
/static/21375b7c10310d50d113354316dcff81/6bdcf/arch-rest.png 315w,
/static/21375b7c10310d50d113354316dcff81/f058b/arch-rest.png 630w,
/static/21375b7c10310d50d113354316dcff81/40601/arch-rest.png 945w,
/static/21375b7c10310d50d113354316dcff81/78612/arch-rest.png 1260w,
/static/21375b7c10310d50d113354316dcff81/e5ca1/arch-rest.png 1332w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Imagen extraida de &lt;a href=&quot;https://www.hl7.org/fhir/overview-arch.html#APIs&quot;&gt;documentación oficial FHIR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Nota: esto fue traducido de la &lt;a href=&quot;https://www.hl7.org/fhir/overview-arch.html#APIs&quot;&gt;documentación&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Introducción a REST&lt;/h3&gt;
&lt;p&gt;En la clase no explicaron mucho sobre qué es REST, así que aquí va un resumen.&lt;/p&gt;
&lt;p&gt;REST se refiere a un conjunto de principios de arquitectura que es muy adoptado por las aplicaciones web. Cuando hablamos de &lt;em&gt;principios de arquitectura&lt;/em&gt;, nos referimos a ideas y reglas que se deben cumplir.&lt;/p&gt;
&lt;p&gt;REST nos va a decir que la aplicación web debe hacer “esto” y “esto otro” (lo veremos más adelante). Cuando una aplicación web cumpla con todo lo que dice REST, diremos que es una “aplicación web RESTFul”.&lt;/p&gt;
&lt;p&gt;Ok, entonces REST nos “obliga” a hacer las cosas de cierta manera. ¿Y qué nos pide hacer?&lt;/p&gt;
&lt;p&gt;REST nos pide que nuestra aplicación web organice su información en recursos. Por eso FHIR está organizado en recursos y puedes ver que hay un recurso para Paciente, otro para Observación, entre otros.&lt;/p&gt;
&lt;p&gt;Las siglas REST se refieren a &lt;strong&gt;RE&lt;/strong&gt;presentational &lt;strong&gt;S&lt;/strong&gt;tate &lt;strong&gt;T&lt;/strong&gt;ransfer. Esto quiere decir que cuando solicitamos información a una aplicación web RESTFul (que cumple con REST), esta nos &lt;em&gt;transferirá&lt;/em&gt; una &lt;em&gt;representación&lt;/em&gt; del &lt;em&gt;estado&lt;/em&gt; del recurso solicitado.&lt;/p&gt;
&lt;p&gt;Por ejemplo, cuando solicitamos la información de un Paciente particular, una API FHIR nos entregará el estado de ese paciente, incluyendo información como el nombre, dirección, entre otras cosas. El recurso estará representado comúnmente en formato JSON o XML.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fin del paréntesis&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;REST&lt;/h3&gt;
&lt;p&gt;Los principios fundamentales de REST son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cliente-Servidor&lt;/strong&gt;: el cliente es un componente independiente del servidor (&lt;em&gt;cuando hablamos de cliente, nos referimos a la persona o al software que utiliza una aplicación web&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sin estado&lt;/strong&gt;: Cada petición contiene toda la información para ejecutar una acción.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cacheable&lt;/strong&gt;: posibilidad de utilizar caché para peticiones recurrentes (&lt;em&gt;es decir, la aplicación web recuerda que fue lo último que dijo y en vez de hacer todos los cálculos te da la respuesta anterior, permitiendo responder más rápido y utilizando menos recursos&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interfaz Uniforme&lt;/strong&gt;: simplifica y desacopla la arquitectura (&lt;em&gt;interactuar con un recurso A lo mismo que interactuar con un recurso B&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sistema de Capas&lt;/strong&gt;: los componentes no pueden ver más allá de su capa (&lt;em&gt;es decir, cuando hablo con una API REST no me interesa como guardan la información, solo me interesa que me la entregue&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las aplicaciones web funcionan con el protocolo HTTP, que en resumen significa que habrá un “cliente” que le hará una solicitud a un “servidor” quien responderá con lo que le solicitaron. Por ejemplo, un cliente puede ser tu explorador Chrome, el servidor puede ser el servidor CENS, y la solicitud es ver el curso que estamos haciendo. El servidor CENS responderá con la información en formato HTML (página web) y Chrome nos mostrará de manera bonita y ordenada la información.&lt;/p&gt;
&lt;h4&gt;Request / Petición&lt;/h4&gt;
&lt;p&gt;Una solicitud se compone de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versión del protocolo&lt;/strong&gt;: qué versión de HTTP se está usando.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Método:&lt;/strong&gt; la acción que deseamos realizar, las cuales son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;POST&lt;/code&gt;: para crear un recurso, los datos se especifican en el body (“Cuerpo del mensaje”)&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;GET&lt;/code&gt;: para obtener uno o varios recursos&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PUT&lt;/code&gt;: para actualizar un recurso, lo cual significa reemplazar un elemento completo.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;DELETE&lt;/code&gt;: para eliminar un recurso (sin &lt;em&gt;body&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URI&lt;/strong&gt; identifica la entidad o recurso, permitiendo obtener un elemento en específico o todos. También puede incluir parámetros de búsqueda.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cabeceras:&lt;/strong&gt; características acerca de lo que se transmite. Aquí por ejemplo indicamos que queremos obtener la información en &lt;code class=&quot;language-text&quot;&gt;JSON&lt;/code&gt; o &lt;code class=&quot;language-text&quot;&gt;XML&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuerpo del mensaje:&lt;/strong&gt; información del recurso (no todas las operaciones lo tienen). Aquí indicamos los datos del curso que queremos guardar (&lt;code class=&quot;language-text&quot;&gt;POST&lt;/code&gt;) o actualizar (&lt;code class=&quot;language-text&quot;&gt;PUT&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Responde / Respuesta&lt;/h4&gt;
&lt;p&gt;Una respuesta se compone de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versión del protocolo:&lt;/strong&gt; qué versión de HTTP se está usando.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Código de estado:&lt;/strong&gt; es un número que indica el estado de la respuesta.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Respuestas informativas (100–199)&lt;/li&gt;
&lt;li&gt;Respuestas satisfactorias (200–299)&lt;/li&gt;
&lt;li&gt;Redirecciones (300–399)&lt;/li&gt;
&lt;li&gt;Errores de los clientes (400–499). Cuando entras a una página que no existe, aparece un &lt;code class=&quot;language-text&quot;&gt;404&lt;/code&gt; de “not found” (&lt;a href=&quot;https://blog.codeness.io/404&quot;&gt;ejemplo&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Errores de los servidores (500–599). Por ejemplo, WePlay se cayó porque mucha gente entró a comprar un PS5 a $499.990, si entrabas a la página aparecía un &lt;a href=&quot;https://developer.mozilla.org/es/docs/Web/HTTP/Status/502&quot;&gt;error “502”&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cabeceras&lt;/strong&gt;: características acerca de lo que se transmite. Por ejemplo, nos dirá que la información fue entregada en formato JSON.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuerpo del mensaje:&lt;/strong&gt; aquí nos entrega la información que solicitamos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Demo y Ejemplos&lt;/h3&gt;
&lt;p&gt;En la clase dieron un ejemplo de API REST de autos.&lt;/p&gt;
&lt;p&gt;En una plataforma de venta de autos, nuestro recurso principal serán los &lt;code class=&quot;language-text&quot;&gt;autos&lt;/code&gt;. Por ejemplo, podemos tener un servidor web en &lt;code class=&quot;language-text&quot;&gt;autos.venta.cl&lt;/code&gt; que ofrece una URI &lt;code class=&quot;language-text&quot;&gt;autos&lt;/code&gt; para obtener los recursos de autos.&lt;/p&gt;
&lt;p&gt;Como sabemos que la URI es &lt;code class=&quot;language-text&quot;&gt;autos&lt;/code&gt;, y que el servidor es REST, entonces sabemos que podemos crear, actualizar, leer y eliminar autos.&lt;/p&gt;
&lt;h4&gt;Leer (&lt;code class=&quot;language-text&quot;&gt;GET&lt;/code&gt;)&lt;/h4&gt;
&lt;p&gt;Obtener todos los autos (notar que el &lt;code class=&quot;language-text&quot;&gt;URI&lt;/code&gt; es &lt;code class=&quot;language-text&quot;&gt;/autos&lt;/code&gt;)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;http&quot;&gt;&lt;pre class=&quot;language-http&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token request-line&quot;&gt;&lt;span class=&quot;token property&quot;&gt;GET&lt;/span&gt; /autos HTTP/1.1&lt;/span&gt;
&lt;span class=&quot;token header-name keyword&quot;&gt;Host:&lt;/span&gt; autos.venta.cl
&lt;span class=&quot;token header-name keyword&quot;&gt;Accept:&lt;/span&gt; application/json&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Obtener un auto que tenga &lt;code class=&quot;language-text&quot;&gt;id = 1&lt;/code&gt; (notar que el &lt;code class=&quot;language-text&quot;&gt;URI&lt;/code&gt; es &lt;code class=&quot;language-text&quot;&gt;/autos/1&lt;/code&gt;)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;http&quot;&gt;&lt;pre class=&quot;language-http&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token request-line&quot;&gt;&lt;span class=&quot;token property&quot;&gt;GET&lt;/span&gt; /autos/1 HTTP/1.1&lt;/span&gt;
&lt;span class=&quot;token header-name keyword&quot;&gt;Host:&lt;/span&gt; autos.venta.cl
&lt;span class=&quot;token header-name keyword&quot;&gt;Accept:&lt;/span&gt; application/json&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Obtener todos los autos de color azul (notar que el &lt;code class=&quot;language-text&quot;&gt;URI&lt;/code&gt; es &lt;code class=&quot;language-text&quot;&gt;/autos?color=azul&lt;/code&gt;). Aquí el &lt;code class=&quot;language-text&quot;&gt;color=azul&lt;/code&gt; es un parámetro de búsqueda&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;http&quot;&gt;&lt;pre class=&quot;language-http&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token request-line&quot;&gt;&lt;span class=&quot;token property&quot;&gt;GET&lt;/span&gt; /autos?color=azul HTTP/1.1&lt;/span&gt;
&lt;span class=&quot;token header-name keyword&quot;&gt;Host:&lt;/span&gt; autos.venta.cl
&lt;span class=&quot;token header-name keyword&quot;&gt;Accept:&lt;/span&gt; application/json&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;En REST, si decimos que los recursos de auto están en el URI &lt;code class=&quot;language-text&quot;&gt;/autos&lt;/code&gt;, asumimos que un auto particular se encuentra en &lt;code class=&quot;language-text&quot;&gt;/autos/:id&lt;/code&gt; (con &lt;code class=&quot;language-text&quot;&gt;:id&lt;/code&gt; el identificador del auto)&lt;/p&gt;
&lt;h4&gt;Crear (&lt;code class=&quot;language-text&quot;&gt;POST&lt;/code&gt;)&lt;/h4&gt;
&lt;p&gt;Para crear un auto, tendremos que crear una solicitud &lt;code class=&quot;language-text&quot;&gt;POST&lt;/code&gt; a &lt;code class=&quot;language-text&quot;&gt;/autos&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;http&quot;&gt;&lt;pre class=&quot;language-http&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token request-line&quot;&gt;&lt;span class=&quot;token property&quot;&gt;POST&lt;/span&gt; /autos/ HTTP/1.1&lt;/span&gt;
&lt;span class=&quot;token header-name keyword&quot;&gt;Host:&lt;/span&gt; autos.venta.cl
&lt;span class=&quot;token header-name keyword&quot;&gt;Content-Type:&lt;/span&gt; application/json
&lt;span class=&quot;token header-name keyword&quot;&gt;Accept:&lt;/span&gt; application/json
{ &quot;marca&quot;: &quot;peugeot&quot;,  &quot;color&quot;: &quot;azul&quot; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Aquí podemos ver todos los elementos mencionados anteriormente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versión del protocolo&lt;/strong&gt;: HTTP/1.1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Método:&lt;/strong&gt; &lt;code class=&quot;language-text&quot;&gt;POST&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;URI&lt;/strong&gt; &lt;code class=&quot;language-text&quot;&gt;/autos&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cabeceras:&lt;/strong&gt; Las líneas que dice &lt;code class=&quot;language-text&quot;&gt;Content-Type&lt;/code&gt; y &lt;code class=&quot;language-text&quot;&gt;Accept&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuerpo del mensaje:&lt;/strong&gt; &lt;code class=&quot;language-text&quot;&gt;{ &amp;quot;marca&amp;quot;: &amp;quot;peugeot&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;azul&amp;quot; }&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Actualizar (&lt;code class=&quot;language-text&quot;&gt;PUT&lt;/code&gt;)&lt;/h4&gt;
&lt;p&gt;Para actualizar el auto de &lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt; igual a &lt;code class=&quot;language-text&quot;&gt;1&lt;/code&gt;, tenemos que hacer una solicitud &lt;code class=&quot;language-text&quot;&gt;PUT&lt;/code&gt; a &lt;code class=&quot;language-text&quot;&gt;/autos/1&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;http&quot;&gt;&lt;pre class=&quot;language-http&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token request-line&quot;&gt;&lt;span class=&quot;token property&quot;&gt;POST&lt;/span&gt; /autos/ HTTP/1.1&lt;/span&gt;
&lt;span class=&quot;token header-name keyword&quot;&gt;Host:&lt;/span&gt; autos.venta.cl
&lt;span class=&quot;token header-name keyword&quot;&gt;Content-Type:&lt;/span&gt; application/json
&lt;span class=&quot;token header-name keyword&quot;&gt;Accept:&lt;/span&gt; application/json
{ &quot;marca&quot;: &quot;toyota&quot;, &quot;color&quot;: &quot;rojo&quot; }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;En el &lt;code class=&quot;language-text&quot;&gt;body&lt;/code&gt; estamos actualizando la &lt;code class=&quot;language-text&quot;&gt;marca&lt;/code&gt; a &lt;code class=&quot;language-text&quot;&gt;toyota&lt;/code&gt; y la &lt;code class=&quot;language-text&quot;&gt;marca&lt;/code&gt; a &lt;code class=&quot;language-text&quot;&gt;rojo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A diferencia de la operación para crear, aquí estamos editando un auto particular, por eso la URI es &lt;code class=&quot;language-text&quot;&gt;/autos/1&lt;/code&gt;.&lt;/p&gt;
&lt;h4&gt;Eliminar (&lt;code class=&quot;language-text&quot;&gt;DELETE&lt;/code&gt;)&lt;/h4&gt;
&lt;p&gt;Para eliminar el auto de &lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt; igual a &lt;code class=&quot;language-text&quot;&gt;1&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;http&quot;&gt;&lt;pre class=&quot;language-http&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token request-line&quot;&gt;&lt;span class=&quot;token property&quot;&gt;DELETE&lt;/span&gt; /autos/1 HTTP/1.1&lt;/span&gt;
&lt;span class=&quot;token header-name keyword&quot;&gt;Host:&lt;/span&gt; autos.venta.cl
&lt;span class=&quot;token header-name keyword&quot;&gt;Accept:&lt;/span&gt; application/json&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Preguntas en clases&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;¿Se pueden obtener todos los recursos sin paginar?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sí, pero el servidor o el cliente pueden colapsar debido a la cantidad de información.&lt;/p&gt;
&lt;p&gt;Nota: paginar es cuando obtienes la información de a poco, dividida en páginas en vez de toda la información.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Existe Graphql en FHIR?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sí, hay discusiones e implementaciones pero no es normativo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Las URI son RESTFul en FHIR?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sí pero se ven un poco limitadas. Generalmente es &lt;code class=&quot;language-text&quot;&gt;/RECURSO&lt;/code&gt; y &lt;code class=&quot;language-text&quot;&gt;/RECURSO/:id&lt;/code&gt; (listado y uno en particular). Si queremos obtener asociaciones (por ejemplo, las observaciones de un paciente), se hace mediante búsqueda.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Podemos usar &lt;code class=&quot;language-text&quot;&gt;no-content&lt;/code&gt; en vez de 404?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No me acuerdo que dijo el profe 😂, pero si un recurso no existe, lo correcto es responder 404. “Lo correcto” es definido por estándar de HTTP. Si respondes &lt;code class=&quot;language-text&quot;&gt;no-content&lt;/code&gt; cuando debería ser 404, harás que los desarrolladores tengan que hacer chequeos adicionales en las aplicaciones, lo cual no es idóneo.&lt;/p&gt;
&lt;p&gt;Nota: &lt;code class=&quot;language-text&quot;&gt;no content&lt;/code&gt; es una cabecera para indicar que mi respuesta no tiene contenido (sin body). Generalmente se usa cuando eliminamos un recurso.&lt;/p&gt;
&lt;h2&gt;Clase 2: Operaciones&lt;/h2&gt;
&lt;p&gt;Esta clase (por José María Andrade) fue sobre operaciones en FHIR. Parecido a los conceptos vistos sobre operaciones en REST, pero aplicadas en el estándar.&lt;/p&gt;
&lt;h3&gt;¿Qué es un Recurso?&lt;/h3&gt;
&lt;p&gt;Un Recurso es una entidad definida por el estándar con el propósito de facilitar el intercambio de datos de salud.&lt;/p&gt;
&lt;p&gt;Se caracteriza por:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URL definida para acceder.&lt;/li&gt;
&lt;li&gt;En su estructura se define el tipo de recurso&lt;/li&gt;
&lt;li&gt;Posee un conjunto de elementos estructurados&lt;/li&gt;
&lt;li&gt;Versionado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La mayoría derivan de &lt;code class=&quot;language-text&quot;&gt;DomainResource&lt;/code&gt;, heredando extensiones, texto, recursos contenidos, etc. Esto quiere decir que recursos distintos tendrán algunas propiedades en común provenientes de la definición de &lt;code class=&quot;language-text&quot;&gt;DomainResource&lt;/code&gt; (en programación esto se conoce como “herencia”).&lt;/p&gt;
&lt;p&gt;Existe un recurso especial llamado &lt;code class=&quot;language-text&quot;&gt;Bundle&lt;/code&gt; el cual sirve para agrupar recursos. Un ejemplo del uso de &lt;code class=&quot;language-text&quot;&gt;Bundle&lt;/code&gt; es para resultados de búsqueda.&lt;/p&gt;
&lt;h3&gt;Operaciones básicas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;GET [base]/Patient&lt;/code&gt;: obtiene listado de pacientes. Cuando aplicamos esta operación REST el servidor FHIR contesta con código de HTTP &lt;code class=&quot;language-text&quot;&gt;200&lt;/code&gt; (que significa &lt;em&gt;ok&lt;/em&gt;, que todo salió bien) un JSON de tipo &lt;code class=&quot;language-text&quot;&gt;Bundle&lt;/code&gt; que contiene todos los recursos de ese tipo.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;GET [base]/Patient/example&lt;/code&gt;: obtiene un paciente particular (el que tiene &lt;code class=&quot;language-text&quot;&gt;ID&lt;/code&gt; = &lt;code class=&quot;language-text&quot;&gt;example&lt;/code&gt;). Cuando aplicamos esta operación, el servidor FHIR contesta con un JSON (con código HTTP 200) que contiene el recurso solicitado.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;POST [base]/Patient&lt;/code&gt;: crea un paciente nuevo. Cuando aplicamos esta operación junto a un body JSON que contiene la estructura de ese recurso, el servidor crea el recurso y responde con el recurso creado y un código HTTP &lt;code class=&quot;language-text&quot;&gt;201&lt;/code&gt; (que significa &lt;em&gt;created&lt;/em&gt;, recurso creado exitosamente).&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PUT [base]/Patient/example&lt;/code&gt;: actualiza un paciente particular (el que tiene &lt;code class=&quot;language-text&quot;&gt;ID&lt;/code&gt; = &lt;code class=&quot;language-text&quot;&gt;example&lt;/code&gt;). Cuando aplicamos esta operación junto a un body JSON que contiene la estructura de ese recurso, el servidor actualiza el recurso y responde con el recurso actualizado y un código &lt;code class=&quot;language-text&quot;&gt;200&lt;/code&gt;,el &lt;code class=&quot;language-text&quot;&gt;history&lt;/code&gt; del recurso aumenta en 1.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;DELETE [base]/Patient/example&lt;/code&gt;: elimina a un paciente particular (el que tiene &lt;code class=&quot;language-text&quot;&gt;ID&lt;/code&gt; = &lt;code class=&quot;language-text&quot;&gt;example&lt;/code&gt;). Cuando aplicamos esta operación rest el servidor FHIR contesta con un JSON (con código HTTP 204, &lt;em&gt;no content&lt;/em&gt;, sin contenido) y elimina el recurso (más bien lo desactiva).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como puedes ver, hay operaciones que tienen que ver con un recurso particular (todas las que tienen el ID en la URL) y otras que tienen que ver con el conjunto de pacientes (sin el ID).&lt;/p&gt;
&lt;p&gt;La parte que dice &lt;code class=&quot;language-text&quot;&gt;[base]&lt;/code&gt; se refiere a la URL base donde se encuentra el servidor FHIR. Puede ser algo como &lt;code class=&quot;language-text&quot;&gt;https://www.example.org&lt;/code&gt;, y va a depender del servicio al cual nos queramos comunicar.&lt;/p&gt;
&lt;p&gt;Además vimos dos operaciones más:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;HISTORY&lt;/code&gt;: &lt;code class=&quot;language-text&quot;&gt;GET [base]/[resource]/[id]/_history/[x]&lt;/code&gt;, donde &lt;code class=&quot;language-text&quot;&gt;[x]&lt;/code&gt; corresponde al número de la versión que queremos obtener. Nos sirve para obtener un recurso en una versión particular.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PATCH [base]/[resource]/[id]&lt;/code&gt;, esta es una operación que nos permite actualizar un recurso (tal y como hace PUT) con la diferencia que aquí solo debemos indicar lo que queremos hacer. Cuando aplicamos esta operación junto a un body JSON que contiene la operación a ejecutar de ese recurso, el servidor actualiza el recurso y responde con el recurso actualizado y un código 200, el history del recurso aumenta en 1.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los pasos para hacer un &lt;code class=&quot;language-text&quot;&gt;PATCH&lt;/code&gt; son:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Obtener el recurso que se va a modificar&lt;/li&gt;
&lt;li&gt;Llevar el &lt;code class=&quot;language-text&quot;&gt;json/xml&lt;/code&gt; a un editor.&lt;/li&gt;
&lt;li&gt;Agregar a los headers: &lt;code class=&quot;language-text&quot;&gt;“Content-type: application/json-patch+json”&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Agregar el body relacionado a la operación: &lt;code class=&quot;language-text&quot;&gt;add&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;replace&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;remove&lt;/code&gt;. Ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agregar: &lt;code class=&quot;language-text&quot;&gt;[{ &amp;quot;op&amp;quot;: &amp;quot;add&amp;quot;, &amp;quot;path&amp;quot;: &amp;quot;/name/1&amp;quot;, &amp;quot;value&amp;quot;: {&amp;quot;given&amp;quot;: &amp;quot;dos&amp;quot;} }]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Actualizar: &lt;code class=&quot;language-text&quot;&gt;[{ &amp;quot;op&amp;quot;: &amp;quot;replace&amp;quot;, &amp;quot;path&amp;quot;: &amp;quot;/name/1&amp;quot;, &amp;quot;value&amp;quot;: {&amp;quot;given&amp;quot;: &amp;quot;uno&amp;quot;} }]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Eliminar: &lt;code class=&quot;language-text&quot;&gt;[{ &amp;quot;op&amp;quot;: &amp;quot;remove&amp;quot;, &amp;quot;path&amp;quot;: &amp;quot;/name/1&amp;quot; }]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Aplicar el &lt;code class=&quot;language-text&quot;&gt;PATCH&lt;/code&gt; sobre &lt;code class=&quot;language-text&quot;&gt;[base]/[resource]/[id]&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Búsquedas en FHIR&lt;/h3&gt;
&lt;p&gt;Podemos realizar búsquedas de dos formas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;GET [base]/[recurso]/?[parametros]&amp;amp;_format=[mime-type]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;GET [base]/[recurso]/_search?[parametros]&amp;amp;_format=[mime-type]&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Donde:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;base&lt;/code&gt;: Es la URL base del servidor FHIR.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;recurso&lt;/code&gt;: Es el recurso con cual deseo interactuar, ej: &lt;code class=&quot;language-text&quot;&gt;Patient&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;Observation&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;parámetros&lt;/code&gt;: Son los parámetros de búsquedas que desea utilizar para obtener el resultado&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;_format&lt;/code&gt;: Es el formato en cual desea obtener el resultado de la búsqueda &lt;code class=&quot;language-text&quot;&gt;JSON&lt;/code&gt; o &lt;code class=&quot;language-text&quot;&gt;XML&lt;/code&gt;, una manera más elegante de realizar esta tarea es a través de &lt;code class=&quot;language-text&quot;&gt;HTTP&lt;/code&gt; headers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo, para buscar a los pacientes que se llaman &lt;em&gt;Nicolás&lt;/em&gt;: &lt;code class=&quot;language-text&quot;&gt;GET [base]/Patient?given=Nicolás&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Clase 3: Perfiles y extensiones&lt;/h2&gt;
&lt;h3&gt;¿Qué se puede hacer con un perfil?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Reglas de elementos que se usan y cuales no (podemos agregar restricciones).&lt;/li&gt;
&lt;li&gt;Elementos nuevos que no están en la definición base (a través de extensiones, utilizar para requisitos específicos)&lt;/li&gt;
&lt;li&gt;Reglas de terminología&lt;/li&gt;
&lt;li&gt;Descripciones de elementos que permiten establecer un nexo con los requerimientos locales.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;¿Para qué se usan?&lt;/h3&gt;
&lt;p&gt;Son parte de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Guías de implementación, que a su vez son la formalización de los cambios realizados.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Paquetes o Releases.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Esto es más o menos nuevo, crearon un repositorio de manera que los perfiles puedan ser descargables. Es decir, puedo instalar un perfil.&lt;/li&gt;
&lt;li&gt;Simplifier está incluido, así que podemos instalar cualquier perfil que esté en dicha página.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Capability Statement: qué se puede hacer y qué no.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;¿Cuáles son los cambios aplicables?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cardinalidad: &lt;code class=&quot;language-text&quot;&gt;0..1&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;0..n&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;1..1&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;1..n&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Restringir valores por defecto.&lt;/li&gt;
&lt;li&gt;Restringir datos mediante fhir path.&lt;/li&gt;
&lt;li&gt;Restringir relaciones. Por ejemplo, una relación yo puedo decir que si o sí debe ser de cierto recurso.&lt;/li&gt;
&lt;li&gt;Especificar cierta terminología.&lt;/li&gt;
&lt;li&gt;Restringir relaciones a perfiles específicos.&lt;/li&gt;
&lt;li&gt;Marcar atributos como &lt;code class=&quot;language-text&quot;&gt;is-modifier&lt;/code&gt; (cambia el contexto de lo que es), &lt;code class=&quot;language-text&quot;&gt;must support&lt;/code&gt; (son elementos con contexto nuevo que tiene que ser utilizado), &lt;code class=&quot;language-text&quot;&gt;maxLenght&lt;/code&gt; (máximo largo de texto), &lt;code class=&quot;language-text&quot;&gt;isSummary&lt;/code&gt; (para que sea parte del resumen).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt; ¿Qué son las extensiones?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Son un tipo de dato especial.&lt;/li&gt;
&lt;li&gt;Permiten extender un recurso base.&lt;/li&gt;
&lt;li&gt;Permite extender elementos nuevos.&lt;/li&gt;
&lt;li&gt;Se puede usar casi cualquier tipo de dato de los disponibles en la especificación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las extensiones se componente de una &lt;code class=&quot;language-text&quot;&gt;URL&lt;/code&gt; (generalmente ficticias, pero que le da sentido a la extensión) y de un &lt;code class=&quot;language-text&quot;&gt;valor&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;El &lt;code class=&quot;language-text&quot;&gt;valor&lt;/code&gt; se guarda en una variable particular dependiendo del tipo de dato. Por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;valueBoolean&lt;/code&gt; para valores de si y no&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;valueDateTime&lt;/code&gt; para hora y fecha&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;valueInteger&lt;/code&gt; para números&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;valueAddress&lt;/code&gt; para direcciones&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;valuePeriod&lt;/code&gt; para periodos de tiempo&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;valueString&lt;/code&gt; para textos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como la extensión hereda de recurso base, podemos hacer una extensión de una extensión 🤯&lt;/p&gt;
&lt;p&gt;Hay un registro general donde está el índice de madurez de las extensiones.&lt;/p&gt;
&lt;p&gt;Finalmente, podemos buscar por extensiones, para lo cual debemos crear un &lt;code class=&quot;language-text&quot;&gt;SearchParameter&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;¿Qué pasa si queremos extender con extensiones?&lt;/h3&gt;
&lt;p&gt;Lo primero que hay que hacer es ver si hay una que existe y que cubre nuestro caso de uso.&lt;/p&gt;
&lt;h3&gt;Preguntas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;¿Qué pasa si tengo un sistema FHIR andando y luego lo perfilo?&lt;/strong&gt; puedes listar pacientes de acuerdo a un perfil. Si quieres que todos lo cumplan, entonces tienes que actualizar tus datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;¿Qué tan factible es tener aplicaciones SMART, si al final todos tienen que perfilar?&lt;/strong&gt; Puedes hacer una APP de acuerdo a un perfil. Por eso son importantes las guías de implementación.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/6f84b517443d209fb0087c936333f372/f3583/modulo-3.png"></media:content></item><item><title><![CDATA[Introducción al Estándar HL7 FHIR]]></title><description><![CDATA[En el módulo 2 hubo tres clases: “Introducción al estándar HL7 FHIR” por César Galindo, “HL7 FHIR Principios y Fundamentos” por Alejandro…]]></description><link>https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-2/</link><guid isPermaLink="false">https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-2/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Sat, 01 May 2021 16:00:00 GMT</pubDate><content:encoded>&lt;p&gt;En el módulo 2 hubo tres clases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Introducción al estándar HL7 FHIR” por César Galindo,&lt;/li&gt;
&lt;li&gt;“HL7 FHIR Principios y Fundamentos” por Alejandro Medina.&lt;/li&gt;
&lt;li&gt;“Recursos” por José María Andrade.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aquí dejo los apuntes que tomé de ambas clases.&lt;/p&gt;
&lt;h2&gt;Clase 1: Introducción al estándar HL7 FHIR&lt;/h2&gt;
&lt;p&gt;Hay mucho entusiasmo con respecto a HL7 lo que ha llevado a que sea muy utilizado en el último tiempo.&lt;/p&gt;
&lt;h3&gt;¿Qué es FHIR?&lt;/h3&gt;
&lt;p&gt;FHIR es un estándar para el intercambio de datos de salud. Fue creado por HL7, una organización sin fines de lucro que desarrolla estándares sintácticos desde 1987.&lt;/p&gt;
&lt;p&gt;Aunque si le preguntas a uno de sus creadores, te responderá algo como &lt;em&gt;“(FHIR) no es un estándar, es una &lt;strong&gt;comunidad&lt;/strong&gt; que convive para facilitar el intercambio de datos en salud, usando tecnologías web”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Esto de “comunidad” no se lo toman a la ligera. Hay muchos espacios digitales donde las personas pueden ser parte de FHIR, entre ellos: &lt;a href=&quot;https://www.hl7.org/fhir/&quot;&gt;la documentación&lt;/a&gt;, &lt;a href=&quot;https://chat.fhir.org&quot;&gt;chat&lt;/a&gt;, &lt;a href=&quot;https://confluence.hl7.org/display/FHIR/Blogs&quot;&gt;blogs&lt;/a&gt; y &lt;a href=&quot;http://community.fhir.org/&quot;&gt;foro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ok, volviendo a las definiciones… FHIR es el acrónimo de &lt;strong&gt;F&lt;/strong&gt;ast, &lt;strong&gt;H&lt;/strong&gt;ealthcare, &lt;strong&gt;I&lt;/strong&gt;nteroperability, &lt;strong&gt;R&lt;/strong&gt;esources, lo que significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast&lt;/strong&gt;: implementación es más rápida. Poner en marcha un sistema interoperable con FHIR es más rápido comparado con otros estándares como HL7 v2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Healthcare&lt;/strong&gt;: es un estándar hecho para salud. Puede ser usado para otras cosas pero no tiene mucho sentido hacerlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;: creado para intercambiar información entre 2 o más sistemas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resources&lt;/strong&gt;: utiliza una arquitectura de alta conectividad de la WEB llamada &lt;a href=&quot;https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional&quot;&gt;“REST”&lt;/a&gt;, la cual se basa en “recursos”.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;¿Por qué es importante FHIR?&lt;/h3&gt;
&lt;p&gt;FHIR es el “caballo de batalla” de HL7, lo que significa que hoy en día es el estándar por defecto a utilizar para proyectos de interoperabilidad en salud.&lt;/p&gt;
&lt;p&gt;Hay algunas acciones de la organización HL7 que dan cuenta de esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El objetivo de FHIR es que sea un estándar de uso global.&lt;/li&gt;
&lt;li&gt;Hay un “FHIR Accelerator” que te ayuda a implementar proyectos de interoperabilidad con FHIR asesorados por HL7 internacional.&lt;/li&gt;
&lt;li&gt;El logo de HL7 cambió a uno muy parecido a FHIR 😉.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;La historia de FHIR&lt;/h3&gt;
&lt;p&gt;El mundo de la tecnología avanzó mucho durante la primera década del 2000. Para el año 2011, había una alta conectividad en el mundo de la tecnología, mucha información a procesar (big data), avances en &lt;a href=&quot;https://es.wikipedia.org/wiki/Gen%C3%B3mica&quot;&gt;genómica&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Esto hizo que los estándares de esos tiempos (como HL7 v2) fueran quedándose cortos, dejaron de ser coherentes con este nuevo mundo tecnológico.&lt;/p&gt;
&lt;p&gt;Así que un grupo de personas expertas en disponibilidad web se juntaron y crearon el primer borrador (“first draft”) de lo que sería FHIR (esto en el año 2011). Fue bien aceptado por la comunidad.&lt;/p&gt;
&lt;p&gt;Un timeline de lo que fue ocurriendo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2011: primer borrador de FHIR&lt;/li&gt;
&lt;li&gt;2014: DSTU&lt;/li&gt;
&lt;li&gt;2015: DSTU2 (muy usado)&lt;/li&gt;
&lt;li&gt;2017: STU3 (usado en USA)&lt;/li&gt;
&lt;li&gt;2018: R4 primera normativa&lt;/li&gt;
&lt;li&gt;2019: R4 segunda normativa&lt;/li&gt;
&lt;li&gt;2022: R5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Algunas definiciones útiles para entender esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DSTU&lt;/strong&gt;: draft standards for trial use. Significa que la especificación no está considerada como completa o no está suficientemente revisada para que sea segura de implementar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;STU&lt;/strong&gt;: standard for trial use. Significa que ha sido revisado y es considerado seguro para usarlo. Ha sido sometido a votación y es considerado como estándar oficial. Sin embargo, aún no ha tenido un uso generalizado en producción en todo el espectro de entornos en los que está destinado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Normativa&lt;/strong&gt;: quiere decir que en el tiempo una estructura de intercambio de datos definida va a cambiar muy poco, podemos usarla con confianza.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Nota: hay más información sobre el nivel de madurez &lt;a href=&quot;https://www.hl7.org/fhir/versions.html&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hay que considerar que cuando hablamos de que FHIR es normativa, realmente nos referimos a que &lt;strong&gt;solo parte de FHIR es normativa&lt;/strong&gt;: FHIR trabaja con recursos. Solo algunos recursos son normativos. Hay algunos que no lo son y están lejos de serlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Qué pasa si trabajo con recursos fuera de la normativa?&lt;/strong&gt; Es arriesgado, ya que con el tiempo la estructura de intercambio de datos puede cambiar, lo que significa que la implementación construida sobre esto quedará obsoleta y tendrá que ser actualizado.&lt;/p&gt;
&lt;p&gt;Así que la normativa es relativa dependiendo de los recursos que nos estemos refiriendo. En R4 los recursos normativos son los más básicos.&lt;/p&gt;
&lt;h3&gt;Describiendo FHIR&lt;/h3&gt;
&lt;p&gt;Para describir FHIR, es útil saber un poco de los estándares que lo preceden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HL7 versión 2&lt;/strong&gt;: es muy usado, pero tiene 2 desventajas. La primera, es que es estructurado pero con mucho rango de libertad (fácil de romper). La segunda, que es poco amigable con la lógica semántica para casos de uso en salud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HL7 versión 3&lt;/strong&gt;: la idea era mejorar la narrativa semántica para que fuera altamente computable. Es muy bueno para documentos clínicos, pero fue un fracaso porque era muy difícil de utilizar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDA&lt;/strong&gt;: nació con la versión 3, es bueno para contar historias de un evento particular de un paciente, lo cual lo hace ideal para documentos clínicos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CCOW&lt;/strong&gt;: para documento clínicos de uso particular.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Luego FHIR viene a usar lo mejor de cada uno de estos estándares, para así ser &lt;strong&gt;EL&lt;/strong&gt; estándar de intercambio de datos en salud en contextos diversos. Lo que se busca con FHIR es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Combinar lo mejor de los estándares en uso.&lt;/li&gt;
&lt;li&gt;Aplicar aprendizajes de mensajería V2, V3 y CDA.&lt;/li&gt;
&lt;li&gt;Aplicar tecnología web moderna.&lt;/li&gt;
&lt;li&gt;Busca mejorar la capacidad de implementación.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Fundamentos de FHIR&lt;/h3&gt;
&lt;p&gt;FHIR está diseñado específicamente para la WEB, basado en una arquitectura (conjunto de reglas) que reina sobre la web, la cual se llama “REST”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;REST, o REpresentational State Transfer, es un estilo arquitectónico para proporcionar estándares entre sistemas informáticos en la web, lo que facilita la comunicación entre los sistemas — &lt;a href=&quot;https://www.codecademy.com/articles/what-is-rest&quot;&gt;Fuente&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En REST, la unidad básica de información (mínima información que se puede intercambiar) se llama “recurso”. Estos recursos en FHIR están preconfigurados para salud. Es por eso que podrás ver un recurso para paciente, otro para profesional de la salud, etc.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Piensa en los recursos como “formularios” de papel que reflejan diferentes tipos de información clínica y administrativa que se pueden capturar y compartir. La especificación FHIR define una “plantilla de formulario” genérica para cada tipo de información clínica, es decir, una para alergias, una para recetas, una para referencias, etc. — (&lt;a href=&quot;https://www.hl7.org/fhir/overview-clinical.html&quot;&gt;Fuente&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Una “API FHIR” es un servicio web que me ofrece información usando el estándar FHIR. Puedes usar esta “API” para crear aplicaciones sobre la misma (reutilización).&lt;/p&gt;
&lt;p&gt;Por ejemplo, Google Maps ofrece una API que me permite crear distintos tipos de aplicaciones, tales como Uber, Rappi, entre otros.&lt;/p&gt;
&lt;p&gt;Así que un servicio que ofrece una API FHIR me servirá para crear aplicaciones en el área de salud.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Un API es una interfaz que define cómo hacer la interacción entre distintos sistemas. Un API REST es una arquitectura particular que utiliza las reglas “REST”. La mayoría de los sistemas web utilizan esta arquitectura, lo cual facilita el trabajo para los implementadores que ya están acostumbrado a su utilización.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para los estándares antiguos, existía un problema de contextualización de la información. Esto ya no ocurre en FHIR porque los recursos están vinculados: puedes crear documentos clínicos gracias a los vínculos.&lt;/p&gt;
&lt;p&gt;FHIR te proveé una base que está diseñado para cubrir el 80% de los casos de uso. El 20% depende de cada caso (de las reglas de negocio particulares) y estas se pueden implementar gracias a “extensiones”. Es decir, podemos construir sobre FHIR en vez de hacer todo de 0.&lt;/p&gt;
&lt;h3&gt;¿Por qué FHIR?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;FHIR fue hecho para implementadores.&lt;/li&gt;
&lt;li&gt;Cuando haces desarrollos, la dificultad siempre existe. La pregunta es, ¿dónde movemos la dificultad? (teorema de Graham Grieve),&lt;/li&gt;
&lt;li&gt;Es fácil de implementar. En promedio, implementar con HL7v2 y CDA tomaba 1 año y medio, mientras que con FHIR son solo 6 meses.&lt;/li&gt;
&lt;li&gt;Tiene posibilidad de “mapeo” a otros formatos. Es decir, es fácil transformar de FHIR a V2 o CDA.&lt;/li&gt;
&lt;li&gt;Mejor capacidad de comunicar información.&lt;/li&gt;
&lt;li&gt;Costo de implementación bajos (500USD). Esto es considerando solo costo de diseño y costo del sistema base.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;El mundo FHIR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;En la &lt;a href=&quot;https://www.hl7.org/fhir/&quot;&gt;página web&lt;/a&gt; puedes encontrar todos los recursos.&lt;/li&gt;
&lt;li&gt;Cada día hay más herramientas. Ejemplo: &lt;a href=&quot;https://docs.smarthealthit.org/&quot;&gt;SMART on FHIR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Todo se publica. Hay guías de implementación ya publicadas para distintos casos de uso.&lt;/li&gt;
&lt;li&gt;Muchas librerías (gratuitas) que implementadores pueden utilizar.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Preguntas de la clase&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;¿Qué es una guía de implementación?&lt;/strong&gt; (esta la hice en clases): “si quiere hacer esto, siga estas reglas”. Son guías que definen reglas basadas en ciertos casos de uso de la vida real. Una parte es “diseño” (cómo se van a comunicar) y otra es “desarrollo” (implementar apps que se van a conectar).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;¿Quién crea las extensiones?&lt;/strong&gt; Una extensión es para guardar información adicional importante para nuestro caso de uso que queda dentro del 20% que no cubre FHIR. Un ejemplo en Chile es guardar si un paciente es GES o no. No hay regulación sobre esto, pero está el capítulo de HL7, y además hay un listado de extensiones disponibles en el sitio de FHIR.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Una pregunta extra que me surgió mientras hacía estos apuntes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;¿Qué es SMART?&lt;/strong&gt; Entiendo que es un estándar para hacer aplicaciones que se puedan conectar a distintas fuentes de información. Es decir, podría crear una APP de ficha electrónica para el Hospital Salvador y usar exactamente la misma APP (sin rescribir código) para que la clínica Alemana la utilice. &lt;a href=&quot;https://fhirblog.com/2016/07/08/what-is-smart-and-why-should-you-care&quot;&gt;Aquí&lt;/a&gt; hay más información.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Clase 2: HL7 FHIR — Principios y fundamentos&lt;/h2&gt;
&lt;p&gt;Esta clase es más teórica que la anterior, y dieron detalles específicos del estándar.&lt;/p&gt;
&lt;p&gt;Alejandro nos enseñó a navegar por la página de FHIR, la cual es &lt;a href=&quot;https://www.hl7.org/fhir/&quot;&gt;https://www.hl7.org/fhir/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La organización de la documentación está distribuida en 5 puntos:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/38709d256f9b5260a992d7d89461265e/98314/fhir-levels.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 80.37974683544303%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAADBElEQVQ4y1VT2ZLbNhDU/3+U/yCVWLZXsVYHRYIk7pukpLWr3aS2KpWHriFAADPT3bPzwUPpG5zvYd0LZoUVRLetp9nh8Yx4PP6P5b4ifEZPTNhp53ASHUYf4XPEr48Jz2eB8QajfcEEBxs94aC9fYF788yHlvgZPeqUsFNG4tYfWUkH74kgEGMP527Q9rZVaWwLqS5IeWCygPvD4X43/LaEw8cGg3nhg1Jb/P12xXn0GFyA1/+iETe8j7w4ZxzNF7TuyiorlkfBTf6EMCNMnhGyQQoXqJARambLFTvHxf5s+GBhhomtapz6AJdmTFNGx8vHPuK9L0glo5UDDq2DTwtqDRDaoVUFo8vIhQ+GXPGjTdxYyN8dynv8c82I5Y6PR8VVRuybgtNQyF3EYDz+OiUMdtq42zcO35rM7wWl8sGYPVKiklUSA3JuEeKAUiRKFoyClUgmI08fhuoqwlEEhye/Y1lhyKF9cWjYUte8UTXax2mW7fiIpXUkRj1gUAOUlbwU2HJg9Bty/S+u+7k62iuz5WTpwzNbleh1jzIZZqdVnICmB6UdGAWU6cjrWo2Gi4ocSsIgJretY5aopGCnlUZ7vsAGyj5pyOGEUbTkaz0sofsDNCs1wbJV+i8a1KWwfYr2bNHkPU2/4PfvQiuRQ0+VTzePRs20xQNKSRwvHmc5s5qCQUq8dwmt4Zp8H4XDocvsaOYgSHwTVzqA7ogTjc1J8blQZYdjR6fX9aClcoF+S6w4MpHD16tHbxJt5HnZYc/1pbdY6frZFRwahR/vDRNSFJ8KNyMOom4ZDMV54yEX2VJNsGmtboELhQ6wrLp+enCiGwzH1jN5QSMzJ6lQZXLVqSvHrOfICYRwo7oCUlME1yCnjhhRaY/nU2/2+PX0tFHA4y5xX9YRjLSQpcprhSMJ//4VMmiMnOt1Uu6z5WyvdhkgpNgSKCb0mRPCcVvhkt7WgXGazObN7cEaE7IY4evCAxNinflzobcKW8u8WHiJkedMIAXxEyG+1oyZ3FWOaZ0q/gDG1rgFjTDfuQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Los 5 niveles de FHIR&quot;
        title=&quot;Los 5 niveles de FHIR&quot;
        src=&quot;/static/38709d256f9b5260a992d7d89461265e/f058b/fhir-levels.png&quot;
        srcset=&quot;/static/38709d256f9b5260a992d7d89461265e/c26ae/fhir-levels.png 158w,
/static/38709d256f9b5260a992d7d89461265e/6bdcf/fhir-levels.png 315w,
/static/38709d256f9b5260a992d7d89461265e/f058b/fhir-levels.png 630w,
/static/38709d256f9b5260a992d7d89461265e/98314/fhir-levels.png 817w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nivel 1: Framework base.&lt;/li&gt;
&lt;li&gt;Nivel 2: Apoyo a la implementación.&lt;/li&gt;
&lt;li&gt;Nivel 3: relación de recursos FHIR y conceptos del ecosistema real.&lt;/li&gt;
&lt;li&gt;Nivel 4: registro e intercambio de datos de procesos clínicos.&lt;/li&gt;
&lt;li&gt;Nivel 5: generación de conocimientos con datos clínicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Nivel 1&lt;/h3&gt;
&lt;p&gt;Cada parte de la documentación tiene un “banner” como este:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/e2286db82b1e92e90d33fcc09a2cde49/4ad3a/banner-fhir.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 13.29113924050633%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsSAAALEgHS3X78AAAApklEQVQI122J246CMABE+f/PM3HRrVJAsXTXthSVXjQeqw/7tJNMzlyq/nig3tTItqHeblit17y3pm0RO0FIgfy4E3Mm3YtzJD0yIafPF9LyxyUuVF9qQChBowX7345vLZGmZ28GdqPg4Do6PyLdSGt7OiM5+oHTxaLnH8bphPaqUKFKrhrtmaPDheLFMAVb6JjipeT3ZjFhxgaPvZ4/3d0MPJ/8pxeY9OK6XoMmOwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Banner de documentación&quot;
        title=&quot;Banner de documentación&quot;
        src=&quot;/static/e2286db82b1e92e90d33fcc09a2cde49/f058b/banner-fhir.png&quot;
        srcset=&quot;/static/e2286db82b1e92e90d33fcc09a2cde49/c26ae/banner-fhir.png 158w,
/static/e2286db82b1e92e90d33fcc09a2cde49/6bdcf/banner-fhir.png 315w,
/static/e2286db82b1e92e90d33fcc09a2cde49/f058b/banner-fhir.png 630w,
/static/e2286db82b1e92e90d33fcc09a2cde49/40601/banner-fhir.png 945w,
/static/e2286db82b1e92e90d33fcc09a2cde49/4ad3a/banner-fhir.png 1152w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Que indica quién trabaja, el estado y la seguridad. También indica si es normativo o no.&lt;/p&gt;
&lt;p&gt;Por ejemplo, el de la imagen, dice que es información “Normativa”, lo que quiere decir que ha sido probado y que no presentará grandes cambios a futuro.&lt;/p&gt;
&lt;p&gt;Cada recurso tiene un nivel de madurez. Los distintos niveles puedes verlos &lt;a href=&quot;https://www.hl7.org/fhir/versions.html#maturity&quot;&gt;aquí&lt;/a&gt; (esto es un nivel de madurez a nivel de recurso solamente).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tipos de datos&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/datatypes.html&quot;&gt;documentación&lt;/a&gt;), hay unos tipos de datos “primitivos”, y hay datos de propósito general que son datos compuestos de elementos primitivos.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elemento base&lt;/strong&gt;: (&lt;a href=&quot;http://www.hl7.org/fhir/element.html&quot;&gt;documentación&lt;/a&gt;) de aquí se derivan todos los tipos de datos. Es decir, todos los tipos de datos tendrán un identificador (&lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt;) y se le podrán asignar extensiones (&lt;code class=&quot;language-text&quot;&gt;extension&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recurso base&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/resource.html&quot;&gt;documentación&lt;/a&gt;) todo recurso definido en FHIR se compone del recurso base. El recurso base tiene un identificador (&lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt;), metadata (&lt;code class=&quot;language-text&quot;&gt;meta&lt;/code&gt;), un conjunto de reglas (&lt;code class=&quot;language-text&quot;&gt;implicitRules&lt;/code&gt;) y un lenguaje (&lt;code class=&quot;language-text&quot;&gt;language&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extensiones&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/extensibility.html&quot;&gt;documentación&lt;/a&gt;) es un tipo de dato que nos permite implementar aquellas cosas que están dentro del 20% que no nos entrega FHIR. Recordar la regla 80/20 que dice que el 80% lo entrega FHIR, y el 20% depende de cada implementación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perfiles&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/profiling.html&quot;&gt;documentación&lt;/a&gt;) es el producto de la formalización de una implementación. Pasa que FHIR crea una plataforma común que permite diferentes implementaciones, en consecuencia, usualmente se requiere modificaciones para adaptar a distintos contextos de uso. Estas adaptaciones o modificaciones se especifican en un perfil. Son la base de las guías de implementación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formatos&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/formats.html&quot;&gt;documentación&lt;/a&gt;) para transmitir la información (entre servidores) se utilizan los formatos JSON y XML (ambos normativos). Hay otros formatos pero que todavía no son normativos (como RDF y ND-JSON).&lt;/p&gt;
&lt;h3&gt;Nivel 2&lt;/h3&gt;
&lt;p&gt;Elementos que tienen que ver con el apoyo a la implementación.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Soporte&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/implsupport-module.html&quot;&gt;documentación&lt;/a&gt;) descargas para herramientas, versiones, casos de uso (para orientar), librerías de desarrollo, servidores públicos, herramientas de testing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seguridad y privacidad&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/secpriv-module.html&quot;&gt;documentación&lt;/a&gt;) recursos para dejar huellas, recursos de auditoría, se puede hacer trazabilidad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conformidad&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/conformance-module.html&quot;&gt;documentación&lt;/a&gt;) todo lo que puede hacer y las operaciones que soporta.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terminología&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/terminology-module.html&quot;&gt;documentación&lt;/a&gt;) cómo implementar un servidor terminológico.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mecanismo de intercambio&lt;/strong&gt;: (&lt;a href=&quot;https://www.hl7.org/fhir/exchange-module.html&quot;&gt;documentación&lt;/a&gt;) API Rest, mensajes, documentos, SOA, base de datos.&lt;/p&gt;
&lt;h3&gt;Nivel 3&lt;/h3&gt;
&lt;p&gt;Elementos relacionados con conceptos reales (&lt;a href=&quot;https://www.hl7.org/fhir/administration-module.html&quot;&gt;documentación&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Casos de uso&lt;/strong&gt;: algunos ejemplos como registro de paciente y actividades clínicas.&lt;/p&gt;
&lt;h3&gt;Nivel 4&lt;/h3&gt;
&lt;p&gt;Tiene que ver con procesos (&lt;a href=&quot;https://www.hl7.org/fhir/clinicalsummary-module.html&quot;&gt;clínicos&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/diagnostics-module.html&quot;&gt;diagnóstico&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/medications-module.html&quot;&gt;medicamentos&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/workflow-module.html&quot;&gt;flujo de trabajo&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/financial-module.html&quot;&gt;financieros&lt;/a&gt;, etc).&lt;/p&gt;
&lt;h3&gt;Nivel 5&lt;/h3&gt;
&lt;p&gt;Tiene poca evidencia del uso que se está dando. Son recursos que cambian súper rápido (&lt;a href=&quot;https://www.hl7.org/fhir/clinicalreasoning-module.html&quot;&gt;documentación&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Todos estos recursos tienen que ver con la generación de conocimiento. Compartir, evaluar, indicadores, etc.&lt;/p&gt;
&lt;h3&gt;Preguntas de la clase&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Especificación es distinto a implementación&lt;/strong&gt;. Todo lo que vimos en la clase es sobre la especificación, es una guía y un conjunto de reglas. Si queremos tener nuestro servidor que cumpla con la especificación FHIR, hay que programarlo o utilizar algo ya existente. Hay código open source (libre y gratis) que podemos usar para crear nuestro servidor, no hay que reinventar la rueda. Un ejemplo es &lt;a href=&quot;https://hapifhir.io/&quot;&gt;HAPI FHIR&lt;/a&gt; (Java).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;¿Cómo asegurarnos que se utilicen bien los recursos?&lt;/strong&gt; la documentación tiene un contexto de uso para cada recurso. Pero siempre va a depender de la interpretación y del caso de uso que estemos implementando.&lt;/li&gt;
&lt;li&gt;El perfil es un derivado de la especificación. Uno agrega cosas, no elimina.&lt;/li&gt;
&lt;li&gt;Es posible basarse en otras guías para implementar las nuestras. En &lt;a href=&quot;https://simplifier.net/&quot;&gt;https://simplifier.net/&lt;/a&gt; hay muchas guías de implementación publicadas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Clase 3: Recursos&lt;/h2&gt;
&lt;h3&gt;¿Qué es un recurso?&lt;/h3&gt;
&lt;p&gt;Es una entidad para facilitar el intercambio de datos en salud, tanto en ámbito clínico como administrativo.&lt;/p&gt;
&lt;p&gt;Características:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tienen URL definida.&lt;/li&gt;
&lt;li&gt;Tiene una versión.&lt;/li&gt;
&lt;li&gt;Derivan de &lt;a href=&quot;https://www.hl7.org/fhir/domainresource.html&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;DomainResource&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;No es posible definir nuestros recursos. Si queremos hacer modificaciones, debemos &lt;em&gt;perfilar&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Podemos agrupar recursos con &lt;a href=&quot;https://www.hl7.org/fhir/bundle.html&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Bundle&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;En su estructura se define el tipo de Recurso.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Estructura de un recurso&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tiene estructura de árbol.&lt;/li&gt;
&lt;li&gt;Los datos importantes se encuentran en la raíz.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cada dato tiene:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cardinalidad: &lt;code class=&quot;language-text&quot;&gt;1..1&lt;/code&gt; (el campo siempre tiene que estar presente y debe ser solo 1), &lt;code class=&quot;language-text&quot;&gt;0..1&lt;/code&gt; (el campo puede estar ausente, y de existir, debe ser solo 1), &lt;code class=&quot;language-text&quot;&gt;0..*&lt;/code&gt; (el campo puede estar ausente, y de existir, puede ser varios datos)&lt;/li&gt;
&lt;li&gt;Tipo de campo&lt;/li&gt;
&lt;li&gt;Descripción y restricciones&lt;/li&gt;
&lt;li&gt;Banderas:&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;?!&lt;/code&gt; no puede ser modificado&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;S&lt;/code&gt; debe ser soportado&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;Σ&lt;/code&gt; parte del resumen y operaciones especiales&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;I&lt;/code&gt; restricciones&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;NE&lt;/code&gt; sin restricciones&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;TU&lt;/code&gt; está en pruebas&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;N&lt;/code&gt; es normativo&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;D&lt;/code&gt; está en borrador (draft)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Representación de un recurso&lt;/h3&gt;
&lt;p&gt;Existen dos representaciones normativas: &lt;code class=&quot;language-text&quot;&gt;JSON&lt;/code&gt; y &lt;code class=&quot;language-text&quot;&gt;XML&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSON &lt;code class=&quot;language-text&quot;&gt;application/json+fhir&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;XML &lt;code class=&quot;language-text&quot;&gt;application/xml+fhir&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos formatos son muy usados en plataformas web. Son de fácil lectura e interpretación tanto para humanos como para sistemas informáticos.&lt;/p&gt;
&lt;p&gt;Puedes ver un ejemplo de un recurso de paciente en JSON &lt;a href=&quot;https://www.hl7.org/fhir/patient-example.json.html&quot;&gt;aquí&lt;/a&gt;, y en XML &lt;a href=&quot;https://www.hl7.org/fhir/patient-example.xml.html&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Los atributos importantes son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt;, es el ID del recurso (generalmente es autogenerado por los sistemas informáticos).&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;metadata&lt;/code&gt;, tiene información de la versión, actualización y un tag/perfil.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;narrative&lt;/code&gt;, es un HTML con el resumen del recurso. Es importante, ya que si por alguna razón un sistema que utiliza este recurso está limitado a las consultas que realiza, puede mostrar lo guardado en este dato para desplegar la información importante.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Organización de los recursos&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.hl7.org/fhir/resourcelist.html&quot;&gt;Los recursos&lt;/a&gt; están organizados por categoría y módulo.&lt;/p&gt;
&lt;p&gt;Cada recurso tiene una estructura parecida:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Descripción&lt;/li&gt;
&lt;li&gt;Alcance y usos&lt;/li&gt;
&lt;li&gt;Límites y relaciones&lt;/li&gt;
&lt;li&gt;Cuerpo del recurso&lt;/li&gt;
&lt;li&gt;Enlaces terminológicos&lt;/li&gt;
&lt;li&gt;Restricciones&lt;/li&gt;
&lt;li&gt;Parámetros de búsqueda&lt;/li&gt;
&lt;li&gt;Operaciones&lt;/li&gt;
&lt;li&gt;Conversiones&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por ejemplo, revisa el recurso &lt;a href=&quot;https://www.hl7.org/fhir/patient.html&quot;&gt;Paciente&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;¿Qué es un perfil?&lt;/h3&gt;
&lt;p&gt;Un perfil es cuando usamos un recurso en un contexto particular.&lt;/p&gt;
&lt;p&gt;Por ejemplo, en Chile, el perfil Chileno de pacientes nos podría hacer agregar un campo (extensión) o un identificador de RUT.&lt;/p&gt;
&lt;h3&gt;Preguntas en clases&lt;/h3&gt;
&lt;p&gt;Nota: quizás no apunté todas las preguntas&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Podemos hacer cambios en los recursos?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Podemos definir reglas nuevas. Para hacer estos cambios, haces un perfil (formalización de los cambios) y documentas su uso mediante una guía de implementación.&lt;/p&gt;
&lt;p&gt;Se pueden hacer muchos cambios, hay que tener en cuenta los &lt;code class=&quot;language-text&quot;&gt;flags&lt;/code&gt; (banderas) cuando hacemos cambios, ya que si rompemos la regla, rompemos el estándar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;¿Con &lt;code class=&quot;language-text&quot;&gt;GET&lt;/code&gt; obtengo toda la data del paciente?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Obtienes la información definida en el recurso de &lt;a href=&quot;https://www.hl7.org/fhir/patient.html&quot;&gt;Paciente&lt;/a&gt;. Las relaciones con otros recursos (por ejemplo, encuentros) no vienen aquí.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/002b7463c70bc4044e9f44d76d1b4ee4/f3583/modulo-2.png"></media:content></item><item><title><![CDATA[Interoperabilidad, el contexto de aplicación de HL7 FHIR]]></title><description><![CDATA[¿Qué es la interoperabilidad? La interoperabilidad es la capacidad de 2 o más sistemas de intercambiar y utilizar información entre ellos…]]></description><link>https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-1/</link><guid isPermaLink="false">https://blog.codeness.io/hl7-principios-y-fundamentos/modulo-1/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 26 Apr 2021 16:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;¿Qué es la interoperabilidad?&lt;/h2&gt;
&lt;p&gt;La interoperabilidad es la capacidad de 2 o más sistemas de intercambiar y utilizar información entre ellos.&lt;/p&gt;
&lt;p&gt;Una definición más formal:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Interoperabilidad es la comunicación entre diferentes tecnologías y diferentes aplicaciones de software, que permite el intercambio de datos en forma precisa, efectiva y consistente, y que permite el uso de la información intercambiada.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Notas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desde el punto de vista más técnico, un desarrollador web es experto en interoperabilidad, ya que día a día usa o crea estos “puentes” de comunicación entre aplicaciones. Esto no significa que sea experto de &lt;em&gt;interoperabilidad en salud&lt;/em&gt;, donde hay estándares y protocolos específicos que hay que aprender.&lt;/li&gt;
&lt;li&gt;Tenemos un &lt;a href=&quot;/interoperabilidad/&quot;&gt;post&lt;/a&gt; que habla sobre interoperabilidad específicamente en salud.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Cuáles son los requerimientos para que un sistema sea interoperable?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Poder intercambiar información (interoperabilidad sintáctica)&lt;/li&gt;
&lt;li&gt;Utilizar la información intercambiada (interoperabilidad semántica)&lt;/li&gt;
&lt;li&gt;Definir reglas de negocio que permitan comprender qué información y qué gatillará dicho intercambio (interoperabilidad de negocio). Es importante saber los procesos que generan los datos que estamos utilizando.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;¿Qué es la “Interoperabilidad Absoluta”?&lt;/h2&gt;
&lt;p&gt;La interoperabilidad es o no es, no hay grados de interoperabilidad.&lt;/p&gt;
&lt;h2&gt;¿Por qué son importantes los estándares en la interoperabilidad?&lt;/h2&gt;
&lt;p&gt;Los equipos de informática tienen que crear las “interfaces” de comunicación entre los distintos sistemas. Pueden ponerse de acuerdo y crear “interfaces” adhoc, pero con el tiempo es difícil y costoso de mantener.&lt;/p&gt;
&lt;p&gt;La cantidad de interfaces requeridas aumenta en forma cuadrática dependiendo del número de sistemas: &lt;code class=&quot;language-text&quot;&gt;nº interfaces = n(n-1)/2&lt;/code&gt;, donde (&lt;code class=&quot;language-text&quot;&gt;n = cantidad de sistemas&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Como en salud tenemos muchas instituciones y organizaciones que deben interoperar, es importante hacer que la forma en que se comunican sea estándar.&lt;/p&gt;
&lt;p&gt;El beneficio de esto es que evitamos crear interfaces adhoc que hay que mantener con el tiempo. Tener una interfaz única hace que la cantidad de interfaces requeridas sea lineal con respecto a la cantidad de sistemas involucrados.&lt;/p&gt;
&lt;p&gt;Notas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Todo parte de la base de que en salud es MUY importante que los sistemas interoperen. Por eso nace todo este movimiento de interoperabilidad y de estándares que van más allá de simplemente “construir un API” bien documentada y fácil de usar.&lt;/li&gt;
&lt;li&gt;Tenemos un &lt;a href=&quot;/estandares-interoperabilidad/&quot;&gt;post&lt;/a&gt; sobre estándares de interoperabilidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Cómo le damos significado a la información que intercambiamos?&lt;/h2&gt;
&lt;p&gt;La interoperabilidad sintáctica nos permite intercambiar información. Pero para poder utilizar esta información, los datos intercambiados deben tener un significado.&lt;/p&gt;
&lt;p&gt;Por ejemplo, la idea es que los datos intercambiados signifiquen lo mismo para China que para USA.&lt;/p&gt;
&lt;p&gt;En el área de salud, esto no es tan sencillo ya que un mismo concepto médico puede describirse de distintas formas, más allá del idioma.&lt;/p&gt;
&lt;p&gt;Así que para lograr darle significado a un dato, le damos una codificación (para lo cual hay estándares de codificación 😉).&lt;/p&gt;
&lt;h2&gt;¿Cómo nacen los estándares?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adhoc:&lt;/strong&gt; un grupo de personas u organizaciones interesadas se ponen de acuerdo. Ejemplo: &lt;a href=&quot;https://es.wikipedia.org/wiki/DICOM&quot;&gt;DICOM&lt;/a&gt;, que es un estándar de transmisión de imágenes médicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;De facto:&lt;/strong&gt; cuando una empresa domina el mercado y lo crea. Ejemplo: Microsoft.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;De juri o mandato:&lt;/strong&gt; una agencia de gobierno crea un estándar y legisla su uso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consenso&lt;/strong&gt;: un grupo de voluntarios representantes de las partes interesadas en el estándar desarrollan el mismo en forma abierta. Ejemplo: HL7.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Qué es HL7?&lt;/h2&gt;
&lt;p&gt;HL7 es una organización sin fines de lucro que crea estándares para facilitar el intercambio electrónico de información clínica.&lt;/p&gt;
&lt;p&gt;Han creado distintos estándares, como por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HL7 v2: estándar de mensajería para el intercambio electrónico de datos de salud.&lt;/li&gt;
&lt;li&gt;HL7 v3: estándar de mensajería para el intercambio electrónico de datos de salud basada en el RIM.&lt;/li&gt;
&lt;li&gt;HL7 CDA: estándar de arquitectura de documentos clínicos electrónicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;¿Cómo nace FHIR?&lt;/h2&gt;
&lt;p&gt;Un poco de contexto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El estándar más utilizado en el mundo es &lt;em&gt;HL7 v2&lt;/em&gt;, el problema es que no es fácil de leer para un clínico.&lt;/li&gt;
&lt;li&gt;CDA es muy robusto pero solo es para intercambiar documentación clínica.&lt;/li&gt;
&lt;li&gt;Luego surgió HL7 v3, el cual no fue muy popular debido a la complejidad de adoptar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El problema es que las tecnologías evolucionaron más rápido que los estándares. Nos movimos del mundo offline al mundo online, de desktop a mobile, de software a aplicaciones, de servidores al mundo cloud, de sistemas cerrados a APIs abiertas…&lt;/p&gt;
&lt;p&gt;Mientras tanto, en el mundo de la tecnología nació &lt;a href=&quot;https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional&quot;&gt;REST&lt;/a&gt;, que es un patrón arquitectónico donde todo puede ser modelado como un recurso y donde todo puede hacerse en base a 4 simples operaciones: crear, leer, actualizar y destruir (operaciones &lt;a href=&quot;https://es.wikipedia.org/wiki/CRUD&quot;&gt;CRUD&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;REST marca los cimientos de FHIR (Fast Healthcare Interoperability Resources), permitiendo definir el mundo de la salud en recursos que puedan ser entendidos por clínicos y por informáticos.&lt;/p&gt;
&lt;p&gt;Algunos beneficios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Más fácil de hacer aplicaciones.&lt;/li&gt;
&lt;li&gt;Curva de aprendizaje menor.&lt;/li&gt;
&lt;li&gt;Facilita la implementación.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Además soporta distintos tipos de arquitecturas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RESTful API&lt;/li&gt;
&lt;li&gt;Mensajes&lt;/li&gt;
&lt;li&gt;Documentos&lt;/li&gt;
&lt;li&gt;Servicios / SOA&lt;/li&gt;
&lt;li&gt;Bases de datos / Persistencia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y está siendo muy adoptado en la industria.&lt;/p&gt;
&lt;h2&gt;¿Dónde podemos encontrar ejemplos y proyectos que usan HL7 FHIR?&lt;/h2&gt;
&lt;p&gt;En la página &lt;a href=&quot;https://simplifier.net/&quot;&gt;simplifier&lt;/a&gt; podemos encontrar la documentación de proyectos a nivel global.&lt;/p&gt;
&lt;p&gt;En la página existen 80 proyectos en Chile.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/b3cc033e2b7954115228788f721371e7/78274/simplifier-chile.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 45.56962025316456%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAAB5klEQVQoz02QW28SURSF5y/5YHzxXzUaoo1YTYqltJrYKlfFtAajr+qDLTBAaVVsafGSiAkMEKWVgbkhlZufZw7QdpKVvU72Xt/ZZ5SwahPO2IRUh7BqcX7uEsu2SRZTvC6U2dzRieX6rKcHRDIOD5Nd9stVBvZ3HOMzRlvDMiooLiAkBiREVCnVObtkLTXgaa5D5Yef340QbwofCYpMUPQSey1SpQbfKkeYAmjoBygS5kLdzWaabZxxvUU0a3NS98HxVWheovR1kcfqX5m5v9Xj5QdDbNigo2vnwLNNJXAGmwAfpU/Fsw/pNm8L4GWyxU3W0mNxkSm3ffHexul8ovmrKIBpk1Damuqin5zDqiGAfRLZPUY/r1D4Ehe/oT+5TJ3N9KhWoqSL2yjR3SGR/EAqujsimh9O/XCi/CnrO5A5iFEtzxHMDKYvsIjkeszy0XxP1BHK0pN3rG6kpFwfeLYt/XJ8S54fPE+xGFN5m4xTajbR9H+cmAM6Pcge1rgXm+RXNlT8IqPc8Fwj4PdJea7PcXfhFquBJe5453F7rvfOe0gkXqEbJm39mD+OhfsdFfdZ8N6U2ZVln8wotXodTatJ1WrC14QX1fWzXrWq0Wq1cBwb07SwbYfReIxl2VQ1Tc67OXf+P8MiUSnPaVopAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;80 proyectos en chile&quot;
        title=&quot;80 proyectos en chile&quot;
        src=&quot;/static/b3cc033e2b7954115228788f721371e7/f058b/simplifier-chile.png&quot;
        srcset=&quot;/static/b3cc033e2b7954115228788f721371e7/c26ae/simplifier-chile.png 158w,
/static/b3cc033e2b7954115228788f721371e7/6bdcf/simplifier-chile.png 315w,
/static/b3cc033e2b7954115228788f721371e7/f058b/simplifier-chile.png 630w,
/static/b3cc033e2b7954115228788f721371e7/78274/simplifier-chile.png 644w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Preguntas y respuestas&lt;/h2&gt;
&lt;p&gt;En la sesión presencial surgieron las siguientes preguntas:&lt;/p&gt;
&lt;h3&gt;¿CDA o FHIR?&lt;/h3&gt;
&lt;p&gt;CDA es solo para intercambiar documentación clínica, y con FHIR también es posible hacerlo.&lt;/p&gt;
&lt;p&gt;No hay una respuesta correcta, pero Sergio (profesor) recomienda FHIR porque va de la mano con el avance tecnológico.&lt;/p&gt;
&lt;h3&gt;¿Vale la pena aprender HL7 v2?&lt;/h3&gt;
&lt;p&gt;Grandes compañías como Google, Microsoft, Apple y Oracle comenzaron a apostar con FHIR. Esto marca las pautas a futuro, y hará que el mercado se mueva a FHIR.&lt;/p&gt;
&lt;p&gt;HL7 v2 hoy en día es más legado. V2 está probado, es rápido y es liviano. Incluso hay algunas tecnologías (como en laboratorios) donde todo lo exportan a HL7v2. Así que al final del día siempre va a depender del contexto.&lt;/p&gt;
&lt;p&gt;Sin embargo, Sergio (profesor) recomienda FHIR por las razones antes mencionadas (los grandes están invirtiendo en esto, y además está en sintonía con los avances en tecnología).&lt;/p&gt;
&lt;h3&gt;¿Existe alguna normativa de parte del MINSAL?&lt;/h3&gt;
&lt;p&gt;Todavía no hay políticas de país ni de estado que fomenten la interoperabilidad.&lt;/p&gt;
&lt;h3&gt;¿Por qué usar un estándar baja la cantidad de conexiones?&lt;/h3&gt;
&lt;p&gt;No baja la cantidad de conexiones. Baja la cantidad de interfaces diferentes. Siempre existirán conexiones, un estándar tú conectas el cómo leen tu data y tu cómo la compartes (cómo escribir y cómo leer).&lt;/p&gt;
&lt;h3&gt;¿Es obligatorio usar un server FHIR o solo el estándar?&lt;/h3&gt;
&lt;p&gt;FHIR es un estándar con múltiples implementaciones. Existe un servidor llamado HAPI FHIR, el cual puedes utilizar e instalar.&lt;/p&gt;
&lt;p&gt;Así que existen muchas implementaciones en distintos lenguajes (en C, Java, etc). El estándar da la estructura, lo importante es cumplir con el estándar.&lt;/p&gt;
&lt;p&gt;Es posible hacerlo de cero, pero existen herramientas creadas que podemos usar (y que son de software libre).&lt;/p&gt;
&lt;h3&gt;¿Quién está usando FHIR?&lt;/h3&gt;
&lt;p&gt;Algunas menciones: Araucanía sur, Iquique, El ministerio de salud, UC Christus, el metropolitano sur oriente y La clínica Alemana.&lt;/p&gt;
&lt;h3&gt;¿Existen casos de éxito de instituciones países que usen FHIR?&lt;/h3&gt;
&lt;p&gt;Algunos ejemplos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En Perú, Roche está migrando mucho a guías de implementación de FHIR.&lt;/li&gt;
&lt;li&gt;USA y Canada muy de la mano con la tecnología.&lt;/li&gt;
&lt;li&gt;Colombia tiene algunos ejemplos con FHIR (algunas clínicas).&lt;/li&gt;
&lt;li&gt;Argentina.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/23e1614dc452446d65185c8a84ac8cd2/f3583/modulo-1.png"></media:content></item><item><title><![CDATA[Apuntes del curso HL7 FHIR Principios y Fundamentos]]></title><description><![CDATA[Aquí encontrarás mis apuntes del curso HL7® FHIR®: Principios y Fundamentos Módulo 1: Interoperabilidad: el contexto de aplicación de HL…]]></description><link>https://blog.codeness.io/hl7-principios-y-fundamentos/</link><guid isPermaLink="false">https://blog.codeness.io/hl7-principios-y-fundamentos/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 26 Apr 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Aquí encontrarás mis apuntes del curso &lt;a href=&quot;https://cens.cl/soluciones/capacitaciones/hl7-fhir-principios-y-fundamentos/&quot;&gt;HL7® FHIR®: Principios y Fundamentos&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;./modulo-1&quot;&gt;Módulo 1: Interoperabilidad: el contexto de aplicación de HL7® FHIR®&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./modulo-2&quot;&gt;Módulo 2: Introducción al Estándar HL7® FHIR®&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./modulo-3&quot;&gt;Módulo 3: Operaciones con HL7® FHIR®&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./modulo-4&quot;&gt;Módulo 4: Un enfoque práctico con HL7® FHIR®&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/a9690de90fddb77d148174867a599bf3/f3583/preview.png"></media:content></item><item><title><![CDATA[Creando Apposito]]></title><description><![CDATA[Apposito una aplicación que profesionales de la salud pueden utilizar para hacer seguimiento de heridas de sus pacientes. Con Eliana…]]></description><link>https://blog.codeness.io/creando-apposito/</link><guid isPermaLink="false">https://blog.codeness.io/creando-apposito/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 22 Apr 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://apposito.codeness.io&quot;&gt;Apposito&lt;/a&gt; una aplicación que profesionales de la salud pueden utilizar para hacer seguimiento de heridas de sus pacientes.&lt;/p&gt;
&lt;p&gt;Con &lt;a href=&quot;https://www.linkedin.com/in/eli-quijada/&quot;&gt;Eliana&lt;/a&gt; decidimos crear este servicio en octubre del 2020. Maduramos la idea hasta que en diciembre del mismo año comenzamos a construirla.&lt;/p&gt;
&lt;p&gt;En este post hablaré sobre el proceso de construcción de Apposito. Intentaré ser lo más sincero posible, sin embellecer cosas.&lt;/p&gt;
&lt;h2&gt;Prólogo: La ética digital&lt;/h2&gt;
&lt;p&gt;Lo que nos motivó a crear Apposito fueron las ganas de traer al mundo un producto que fuera útil y que nos sintiéramos orgulloso de crearlo. El camino también importaba, pues tenía que ser dentro del ámbito de la salud y que nos sirviera para aprender lo más posible.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;Útil + orgullosos + ámbito salud&lt;/code&gt; desechó completamente la famosa frase &lt;em&gt;“Si no te avergüenza la primera versión de tu producto, lo lanzaste muy tarde”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Sentiríamos vergüenza del producto si este fuera en contra de la dignidad humana. Y no estábamos dispuestos a tranzar en eso.&lt;/p&gt;
&lt;p&gt;La premisa de construir tecnología con ética digital y respetando la dignidad de los usuarios y pacientes fue nuestra máxima.&lt;/p&gt;
&lt;p&gt;¿En qué influye este como programador? En &lt;strong&gt;asegurarte&lt;/strong&gt; de que todos los servicios y tecnologías que usas cumplen con un estándar mínimo de ética digital. Si dices que tu producto o empresa “respeta la privacidad” de tus usuarios, ser consecuente. Un ejemplo de estas inconsistencias que veo día a día:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Utilizar herramienta de seguimiento y cookies como Google Analytics&lt;/strong&gt;. Es gratis y fácil de usar, pero no es ético. Google lo utiliza para obtener la mayor cantidad de información de una persona, así hacerle seguimiento y mostrarle publicidad (más &lt;a href=&quot;https://plausible.io/blog/remove-google-analytics&quot;&gt;aquí&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Facilitar inicios de sesión con Facebook&lt;/strong&gt;. Agregar esto a tu aplicación hacen que incluso las personas que no lo utilizan &lt;a href=&quot;https://www.consumerreports.org/privacy/how-facebook-tracks-you-even-when-youre-not-on-facebook/&quot;&gt;sean trackeadas por Facebook&lt;/a&gt; 🤮.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Espiar las bandejas de entrada de tus usuarios&lt;/strong&gt; con herramientas tipo “Mailchimp” que te dice que usuarios abren tus correos y qué links presionan (este seguimiento se puede deshabilitar).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Está &lt;em&gt;ok&lt;/em&gt; si usas estas herramientas. No quiero iniciar una caza de brujas. El problema es cuando las usas y dices “que respetas la privacidad”, pues no es tan cierto.&lt;/p&gt;
&lt;p&gt;Con Apposito quisimos hacer las cosas diferentes y nos preocupamos de que todo lo que usáramos estuviera a la par con la ética digital, que en la práctica significa utilizar productos y servicios que cumplan con &lt;a href=&quot;https://en.wikipedia.org/wiki/General_Data_Protection_Regulation&quot;&gt;GDPR&lt;/a&gt; e &lt;a href=&quot;https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act&quot;&gt;HIPAA&lt;/a&gt;. No tenemos la obligación legal de hacerlo, ya que la APP no está en EEUU ni en Europa (todavía).&lt;/p&gt;
&lt;p&gt;¿Por qué menciono todo esto? Muchas decisiones que tomamos fue basados en esta filosofía. Por ejemplo, preferimos postergar un lanzamiento inicial para hacer la aplicación más segura introduciendo bloqueo de pantalla por inactividad. Desde el punto de vista más &lt;em&gt;lean&lt;/em&gt; ese &lt;em&gt;feature&lt;/em&gt; seguramente es desechable, pero desde el &lt;em&gt;cuidado de datos&lt;/em&gt; es muy importante.&lt;/p&gt;
&lt;h2&gt;Construyendo Apposito: diseño y planificación&lt;/h2&gt;
&lt;p&gt;Con Eli comenzamos a construir Apposito en diciembre 2020.&lt;/p&gt;
&lt;p&gt;Primero definimos el contexto, una posible solución e ideas que ayudarían a lograr solucionar la problemática. Todo esto lo documentamos en un archivo en Google Docs, para uso interno. Nada &lt;em&gt;fancy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 617px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/be1054bf6d97f59696da55aa0756b793/bc962/contexto.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 62.0253164556962%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAABUklEQVQoz6WT64rCQAyF+/7vJlKr2Mtqab3Xe1Wsgh75Aikui3/cgWMyTnpykswEVVUpz3P1+31Np1Oxns/n1wjKslQcxxqNRtrv9/rvCs7nsynMskyz2Uzj8Vjr9VooXy6X5m+3W83nc/vPsVqtDPjELBYL7XY7BbBeLhf1ej11u10Nh8NfQXwEIeROAvlms2kTO+73u4LT6WQb2K/Xq9jXdS2Uu4+lHe4Tyzn7w+HQwkrGoY9kI/B4PFp2wBkWhRDiY4lBBAL+9JByCaIkgpqmMRUOPsaiiATuo45YJvt4PAw2ZbIziDAMlaapDYYkX0+ZH8odDAaKosiQJImKomh7QwXvPkDI+xn72+2mAJmUBRGTxjLtTqdjbZhMJkbOpWe69NuviJN7f1tCXwQmSWpXh/Ih8gFBAFBCHz+WTDNRWBSlvZafLLaXg1rUfVqfnt4LanuTLreyEr0AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Google Doc con descripción del contexto del proyecto&quot;
        title=&quot;Google Doc con descripción del contexto del proyecto&quot;
        src=&quot;/static/be1054bf6d97f59696da55aa0756b793/bc962/contexto.png&quot;
        srcset=&quot;/static/be1054bf6d97f59696da55aa0756b793/c26ae/contexto.png 158w,
/static/be1054bf6d97f59696da55aa0756b793/6bdcf/contexto.png 315w,
/static/be1054bf6d97f59696da55aa0756b793/bc962/contexto.png 617w&quot;
        sizes=&quot;(max-width: 617px) 100vw, 617px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Luego hicimos un brainstorming de las funcionalidades que podría tener el software. Para nuestra suerte, Eliana es enfermera y un posible usuario, así que ella supo reducir un listado de ideas &lt;em&gt;choras&lt;/em&gt; a lo &lt;em&gt;mínimo&lt;/em&gt; desde el punto de vista funcional:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/6faf984562c4e8132d5cae846e816c31/ca12d/funcionalidades.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 29.746835443037973%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAAAxUlEQVQY052RSQqFQAxEvf/BBF0IKoqKtjOKOM/gUJLA3/2FGHjp7hAqFVrq+x6GYcD3fcRxjF/c9/0Jad93RFEEz/MghEBd17iuC19DorRtG4sFQQDXdZEkCdI0ZWgYvbMsQxiGmKaJ+//BDinN8wxN06CqKkzThCzLUBQFuq5zPc9zhoSrqkJRFCjLkqE7QXXajB3SVMuyYNs2HMdhIXI2jiPatkXXdTiO493K5PA8TyzLwpA4CdFJDMOApmmwruurz3oAzuvLBGy7E7QAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Funcionalidades básicas del proyecto&quot;
        title=&quot;Funcionalidades básicas del proyecto&quot;
        src=&quot;/static/6faf984562c4e8132d5cae846e816c31/f058b/funcionalidades.png&quot;
        srcset=&quot;/static/6faf984562c4e8132d5cae846e816c31/c26ae/funcionalidades.png 158w,
/static/6faf984562c4e8132d5cae846e816c31/6bdcf/funcionalidades.png 315w,
/static/6faf984562c4e8132d5cae846e816c31/f058b/funcionalidades.png 630w,
/static/6faf984562c4e8132d5cae846e816c31/ca12d/funcionalidades.png 647w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El listado es simple, no tiene ningún formato particular.&lt;/p&gt;
&lt;p&gt;Luego Eliana trabajó en un prototipo inicial, pensando en cómo debería ser el flujo de uso de la aplicación:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ce07562732479f99db27d35900f0bb5a/6edca/prototipo.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 59.49367088607595%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAABlklEQVQoz42T20rDQBCG+/4PId55U7wuCgWll0oVRMGeoE3Spo2xzWE3e8rvzrabplbFCcPC7O6XmX9mO3meQynlXGuNuq4PbmCMBlmapgiCAHEcIwxDRFEEpZXdN+4OreR0r1MwjoLLBkRgzioUGUO2LSAqu2dqtM3oGhUXYCWHlNJB6R5BO8IGpFR7oP04E4gXWzDGwDlvIEKIQxYGnx87LGYrLIONA5EppR24c/JnSr3WiGaf6F+9YXA9xqA7RRLktNucY1UJUZeodG6jyklDEjigL7UNzBKB4W2I536Ih94c6YpBG4nlcoX1ZoV4vsPN5St6Fy8YDWOkcYF8y/YlE8gDaaXS8iKDMJRBeVJyknxgPBmj2HFMnxJMrG/XVsdKW03lseQ2kEQuyxJ5VtoyJJ7vFrjvvruSvOlD90/l0j8DvcjeotEOo8d1M1K+o9R5Y45yUfxXYDOLrXFRUp39tK3/n8C2UcxocwL5fubfGfrpp/U70Mf9Gf/SzoAUpMZQV2m4afWvoQ2kGA0+nZHucexf2xdMIKhZRFPemQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Prototipo inicial de Apposito con la herramienta Wireframe Pro&quot;
        title=&quot;Prototipo inicial de Apposito con la herramienta Wireframe Pro&quot;
        src=&quot;/static/ce07562732479f99db27d35900f0bb5a/f058b/prototipo.png&quot;
        srcset=&quot;/static/ce07562732479f99db27d35900f0bb5a/c26ae/prototipo.png 158w,
/static/ce07562732479f99db27d35900f0bb5a/6bdcf/prototipo.png 315w,
/static/ce07562732479f99db27d35900f0bb5a/f058b/prototipo.png 630w,
/static/ce07562732479f99db27d35900f0bb5a/40601/prototipo.png 945w,
/static/ce07562732479f99db27d35900f0bb5a/78612/prototipo.png 1260w,
/static/ce07562732479f99db27d35900f0bb5a/6edca/prototipo.png 1351w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;Si un UX está leyendo… ¡Lo siento! Improvisamos en esto 🙈&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;Y finalmente decidimos una paleta de colores para utilizarlo al momento de construir la aplicación y en elementos de marketing:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/a0f40f23eb9a5e3578d62e2a6032e20e/82c1e/paleta.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 54.43037974683544%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABI0lEQVQoz6XRP0vDQBjH8cPJFyDoG3FxFXHzbTg4VerkHxBE7aIOboo4VMFRWmwUdXHpII5NkzqYZGlroCa5S9Ne7n4+0c2pnMPnuASe7x0c+xp8IgxDRHECkaaIohhxkiBXyggbSMAfA8FIwyfBWP/svUxNzCcfQ4XuKAfrZhItkcNJ/1ITc4lNvCEF+1R1qP5OH51/cKkRZBTs0WKL31McQ8Vsmxp+cUO3r9Boazx1NB5dM8XsvaPx6tOjtHsKtRboB2AZKmbrNtD0NNibLXFxK3FtSVTvzFw1JC5rEg9NCfb8kmFnP0HlhOPgyMzhMcduhaN6k4JZ5xlK8xzbywKbi2a2lgTKCxxnJQrW9zKsTnFszAmsz5gpzwqsTXOcrqT4BgrH96c70yIVAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Paleta de colores de Apposito&quot;
        title=&quot;Paleta de colores de Apposito&quot;
        src=&quot;/static/a0f40f23eb9a5e3578d62e2a6032e20e/f058b/paleta.png&quot;
        srcset=&quot;/static/a0f40f23eb9a5e3578d62e2a6032e20e/c26ae/paleta.png 158w,
/static/a0f40f23eb9a5e3578d62e2a6032e20e/6bdcf/paleta.png 315w,
/static/a0f40f23eb9a5e3578d62e2a6032e20e/f058b/paleta.png 630w,
/static/a0f40f23eb9a5e3578d62e2a6032e20e/40601/paleta.png 945w,
/static/a0f40f23eb9a5e3578d62e2a6032e20e/78612/paleta.png 1260w,
/static/a0f40f23eb9a5e3578d62e2a6032e20e/82c1e/paleta.png 1398w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Metodología de trabajo&lt;/h2&gt;
&lt;p&gt;Ya con una idea clara de lo que queríamos lograr y los flujos que queríamos implementar, lo que sigue es implementar la solución.&lt;/p&gt;
&lt;p&gt;Mantuvimos una mentalidad &lt;em&gt;lean&lt;/em&gt; a lo largo del proyecto. La idea era crear algo útil, basado en las funcionalidades que definimos como importantes, que nos tomara la menor cantidad de tiempo y estuviera dentro de marcos éticos en salud.&lt;/p&gt;
&lt;p&gt;Esto significó priorizar funcionalidades que al principio no nos parecía tan importantes (ej: bloqueo de la APP por inactividad) pero a la vez desechamos otras (ej: edición y eliminación de datos). La pregunta &lt;em&gt;“¿cómo hacemos esto más simple?”&lt;/em&gt; nos fue de mucha ayuda.&lt;/p&gt;
&lt;p&gt;Organizamos el trabajo con la metodología &lt;a href=&quot;https://www.atlassian.com/es/agile/kanban&quot;&gt;Kanban&lt;/a&gt;, principalmente porque teníamos un conjunto de tareas bien definido y porque íbamos a trabajar a tiempo parcial en el proyecto.&lt;/p&gt;
&lt;p&gt;Utilizamos &lt;a href=&quot;https://trello.com/&quot;&gt;Trello&lt;/a&gt;, ya que ambos teníamos experiencia de trabajo con esta herramienta.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/a7eb265c64ce3461ecd56613faf2cf92/52576/trello.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 70.25316455696203%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsSAAALEgHS3X78AAAD3klEQVQ4yyWTWUwcZBSF58UnHyTxwRijSVM1thqNmGir1LjGhQIFgWGEKTDDTCnDPmxCpWBR2iqkxdKytMUhjQbZBBFa6IIYUitLtAwyLIVSoC0MA8PsG/P5g39y89+Xe+6599wjUUj3k384jmP5qShkYSTHR6OQhpCbpiJXoyBNGYMs/BPKSku4pNNxsbYO3YULnK+tpb6mhrpzZ6k9uxXnqKk+g+RM1fd0tLbS39vDr23N6BoauNHXy+jwECNDf3H9ej8DA4MMD41yd26BkeF/0I8ZmJq8w7h+gtE/RzH8O8mkYZJpwxQS/fgkZpsHu8uHze5ifn6BTcDrg6XF+/ysq+enxgaaf9TR09nK4O/9zE1MsDA5wfr8DA9mjFitHpxuDy63F8nYbT0Opxu7w4l53Sy6j3P/4SpG0wazMzN8/MZzvP/aDuTBe0mMCebbb45SVXmcooJsak+fYGNjXdS6sNudrKwYkYyO3sa0bmVNhNlsYXbuHlaHF6+gOT0zywtPB/DyjgAig54lJGgXQXteIiIyhMqKchp/qN8m4fV58Hjc+Hy+LYZj26PaHW7mZu+SJA0jXhSoZOEkRQXz/BOP8lTAI7wTuBN15AccDN7Dp++9zr6gQJISZRhXVzAtC0JGiwAWI+v1elZWzSwbzSwuLvJW4DO8uPMxXt31OHtfeZJ39+1m75u7iQh9G21yFFmJ+0mQH0AaE0qOVoNx2Qh+8Imle71bgBMG1sxWLFaH6GZCqoziQFwI0crPkKmjiVJGI1XLSM6MRZUsRa6ORZObwanq01zQXWR+ahnLhmNbA4cIybiQe10AOpyubUBFlgp5WgIJmSqRq9EUpJOSl0pqQRppX2g5WXWK6roavv7uJI0CcMNsFiv7H3CrXmKYnmPFZBMsnYKlneScFOSpieI/TO6XWorLisgrzqOoWCvOp46OtibujQwwfa2N9Vs9eBw2lu6asFud+DaFKOcb6mhpaaKzs43W9mYxmorUbBWFxdmcKD9C6Vd5ZGWrqThezN+3Brk5cJ2b/X0M3bjM2MAVnHabCC8ecYNutxtJWNRHfnn8ATQpsX5NqpxsrQArTKP0qJaSIxkU5h4iR6yhQzT748Y14ahuujtaudRQzy+tTdgsNrae37+J1yNEUQgRVGqZPys9AW1mIhlif9mCoTZTSZbIVYoo4dFK+q720t7eQtdvXdRUlJEfH0qRMoJFwxIWi0uwE25xClGqStL95XlJpCSG++Wf70eriaMs/xBqoa4yPpwTxwrou9LN1ctddAqvny0voiz9IAXJcpQRHzI9fYcHy2usCmctLD7kP+Z6McI3iMXpAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Tablero de trello con 5 columnas&quot;
        title=&quot;Tablero de trello con 5 columnas&quot;
        src=&quot;/static/a7eb265c64ce3461ecd56613faf2cf92/f058b/trello.png&quot;
        srcset=&quot;/static/a7eb265c64ce3461ecd56613faf2cf92/c26ae/trello.png 158w,
/static/a7eb265c64ce3461ecd56613faf2cf92/6bdcf/trello.png 315w,
/static/a7eb265c64ce3461ecd56613faf2cf92/f058b/trello.png 630w,
/static/a7eb265c64ce3461ecd56613faf2cf92/40601/trello.png 945w,
/static/a7eb265c64ce3461ecd56613faf2cf92/78612/trello.png 1260w,
/static/a7eb265c64ce3461ecd56613faf2cf92/52576/trello.png 1412w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nuestro flujo de trabajo fue muy estándar y consistió en las siguientes etapas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;TODO&lt;/strong&gt;: lo que queda por hacer, de mayor prioridad a menor prioridad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In-progress&lt;/strong&gt;: en lo que estamos trabajando. Sirve para comunicar al equipo (y a ti mismo) en qué se está trabajando.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In-review&lt;/strong&gt;: lo que está listo pero no revisado por otra persona.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Done&lt;/strong&gt;: lo que está listo y revisado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Adicionalmente agregamos una columna de &lt;em&gt;“Nice to have”&lt;/em&gt; que son ideas o tareas que sería bueno hacer pero que no son prioritarias por ahora.&lt;/p&gt;
&lt;p&gt;Si bien solo somos 2 personas que más encima trabajamos en el mismo home office, mantener este orden y estructura ayuda muchísimo. Por un lado te sirve para visualizar cómo va el proyecto y en qué va avanzando cada uno, sin tener que “molestar” al otro. Además, como tenemos otros proyectos, es más fácil volver a trabajar en Apposito con este orden. Simplemente continúas con lo que está en “In Progress” o tomas la primera tarea de “TODO”.&lt;/p&gt;
&lt;p&gt;Con respecto a las tareas de producto que consistían en implementar funcionalidades (es decir, programar) las trabajamos con &lt;a href=&quot;https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow&quot;&gt;Gitflow&lt;/a&gt;. Es una forma de hacer cambios en el código muy flexible y muy utilizada en la industria del software.&lt;/p&gt;
&lt;p&gt;El código lo alojamos en &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; pues ambos estamos muy familiarizados con este servicio.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8540a08adb72e1a391c8716204fa8e64/98432/primeros-commits.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 34.810126582278485%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsSAAALEgHS3X78AAAA0ElEQVQoz6WRjW6DMAyEef+n3AYrMDpAkF/b4WaHTqqmqpu0SJdIsfPlLmlyzvA+4DiOqv+OhlnwOa+qBdvuQcxgKZA/6OwVZGUYp5SCxqZhnNBdeozXBS6k2mBKxMhP5FJA1IR7YIREFdqImMMZ87KqQwfnPZzzWuQa4fspHknUTJWcq+1Vhy+vb2i7d/TDiI/pipQy7KJnMFMkTaMOl53gI6HIzWHbdrj0g8ImhaVfnd1/IBFhdSfQWNXhtu0IMVaYRf150HrKLdKjGt9F/gL8ZyXPa5ZBYQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Primeros commits&quot;
        title=&quot;Primeros commits&quot;
        src=&quot;/static/8540a08adb72e1a391c8716204fa8e64/f058b/primeros-commits.png&quot;
        srcset=&quot;/static/8540a08adb72e1a391c8716204fa8e64/c26ae/primeros-commits.png 158w,
/static/8540a08adb72e1a391c8716204fa8e64/6bdcf/primeros-commits.png 315w,
/static/8540a08adb72e1a391c8716204fa8e64/f058b/primeros-commits.png 630w,
/static/8540a08adb72e1a391c8716204fa8e64/40601/primeros-commits.png 945w,
/static/8540a08adb72e1a391c8716204fa8e64/78612/primeros-commits.png 1260w,
/static/8540a08adb72e1a391c8716204fa8e64/98432/primeros-commits.png 1383w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Finalmente, trabajamos con &lt;a href=&quot;https://en.wikipedia.org/wiki/Code_review&quot;&gt;revisión de a pares&lt;/a&gt;. Eliana no tenía experiencia en esto, así que también cumplía con el propósito de que entrenara esta habilidad.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/3335295761d6334ceabd4d8f00c39608/cf8e5/peer-review.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 41.77215189873418%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAABMklEQVQoz1WS2W6DQAxF8/8fVvWpr5X6UGUrARQgYfb1xnY1IbFk2YDvGY/Nbv8z4OvjF/0w4q+7oOt6nM4djuSH00XipR9gnQdbrfXp7dl7D2MsSinYjXuP788ZWhs452CshXEBykbcTcZqvLwnKf6txc0YmnJCqQQ8nI8Ylytuyoh41Q4+FWiC+pihbaA8IuaKkKpEFzIi1cQYpSsGaadIF7C7jgPuqxbQXVkRUK048V7y+uYhZQzjiJzLs3G5MucpJYKuCCHIqeyJBFwls5J5tQiCZKnlMXmKDOK6zEBOtDG4ThOsdeIMV0qLcFvEe+RvPO8GY986DAnLckOQzpJ8YMHrJhuIrZQst/A+vG1egNOy4DAfMd8WWb2lUx39Bm02r9AWlU1UE7GuajtEui54APVQcSqjDsPdAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Eliana aprobando un pull request&quot;
        title=&quot;Eliana aprobando un pull request&quot;
        src=&quot;/static/3335295761d6334ceabd4d8f00c39608/f058b/peer-review.png&quot;
        srcset=&quot;/static/3335295761d6334ceabd4d8f00c39608/c26ae/peer-review.png 158w,
/static/3335295761d6334ceabd4d8f00c39608/6bdcf/peer-review.png 315w,
/static/3335295761d6334ceabd4d8f00c39608/f058b/peer-review.png 630w,
/static/3335295761d6334ceabd4d8f00c39608/40601/peer-review.png 945w,
/static/3335295761d6334ceabd4d8f00c39608/78612/peer-review.png 1260w,
/static/3335295761d6334ceabd4d8f00c39608/cf8e5/peer-review.png 1402w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Tecnologías Utilizadas&lt;/h2&gt;
&lt;p&gt;Antes de pasar a las tecnologías, quiero explicar decisiones más a alto nivel:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;¿Por qué tiene que ser una APP?&lt;/li&gt;
&lt;li&gt;¿Por qué tenemos que guardar los datos en la nube y no en el dispositivo?&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;¿Por qué una APP?&lt;/h3&gt;
&lt;p&gt;Parece obvio que esto debería ser una APP. ¿Pero por qué?&lt;/p&gt;
&lt;p&gt;Para documentar la evolución de una herida con imágenes necesitas una cámara. Los celulares tienen cámara, y asumimos que un profesional de la salud que cuida heridas tiene celular.&lt;/p&gt;
&lt;p&gt;Así que el software tiene que ser accesible mediante un celular. Esto se puede lograr de dos formas: con una aplicación móvil o con una página web.&lt;/p&gt;
&lt;p&gt;Decidimos que fuera una aplicación para tener full soporte de hardware, ya que en web el acceso a funciones del hardware es limitado. Con hardware me refiero a cosas como la cámara, lector biométrico y almacenamiento seguro.&lt;/p&gt;
&lt;h3&gt;¿Por qué guardar datos en la nube?&lt;/h3&gt;
&lt;p&gt;¿Dónde guardamos la información?&lt;/p&gt;
&lt;p&gt;Puede ser en el dispositivo, puede ser en la nube.&lt;/p&gt;
&lt;p&gt;Descartamos guardar en el dispositivo porque:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El cuidado de una herida puede pasar por varios profesionales. Es decir, tiene que haber una forma de compartir heridas con tu equipo. Guardar la información en la nube habilita esta opción.&lt;/li&gt;
&lt;li&gt;La información debe sobrevivir en caso de hurto, extravío o cambio de dispositivo. Además, debe poder ser accesible solo a través de la aplicación (para evitar que alguien con acceso indebido vea los datos).&lt;/li&gt;
&lt;li&gt;A futuro nos gustaría que nuestra solución fuese &lt;a href=&quot;/interoperabilidad&quot;&gt;interoperable&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para lograr estos objetivos, creemos que guardar la información en la “nube” es la forma correcta.&lt;/p&gt;
&lt;h3&gt;Nuestro stack tecnológico&lt;/h3&gt;
&lt;p&gt;Uno de nuestros objetivos era “aprender lo más posible” mientras desarrollábamos la aplicación. Sin embargo, desde el punto de vista tecnológico, nos fuimos por un camino conocido.&lt;/p&gt;
&lt;p&gt;Elegimos herramientas que nos fueran familiares: &lt;a href=&quot;https://reactnative.dev/&quot;&gt;&lt;strong&gt;React Native&lt;/strong&gt;&lt;/a&gt; y &lt;a href=&quot;https://firebase.google.com/&quot;&gt;&lt;strong&gt;Firebase&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;¿Por qué React Native?&lt;/h4&gt;
&lt;p&gt;React Native (RN) es una tecnología que te permite escribir aplicaciones multiplataforma para iPhone y Android, utilizando una herramienta llamada &lt;a href=&quot;https://reactjs.org/&quot;&gt;“React”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Esta fue una decisión fácil porque yo llevo 3 años trabajando con RN y Eli maneja React súper bien. Si sabes React, con un poco de ayuda RN no es tan difícil. De hecho, &lt;a href=&quot;https://www.linkedin.com/in/2020hsalas/&quot;&gt;Héctor Salas&lt;/a&gt;, estudiante de full-stack en &lt;a href=&quot;https://www.linkedin.com/school/4geeksacademy/&quot;&gt;4Geeks Academy&lt;/a&gt;, nos aporto con un granito de arena:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/f0e5b663ffa3b31c44755deffd240799/aa878/hector-pr.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 25.949367088607595%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsSAAALEgHS3X78AAAA4ElEQVQY021QQXLDIAz0/3/TR/TaU++5xEAcbMcGEcDgjYTjTA/dGY0WhFasurt54PfnAq1v6JXCtVdQhrk2uKobtHClobTGMNzhPEGw73sLQc4ZRIHzhs5cAr6/eox24ccey7pi8QHzGmCXhMURnHNIKaGU8hH5C7nLW0YuGR3RDIoP+HBM8PTk4oZnjNg4x5hAgXmpKHVn0cr1wudDvNZjQNoiQiZ00zjB2gmDHWGnmQVDa5BmEWlCLZe3UEXiwcINr0Psnqi1ojtJSrn96Ayx9zYknvAfZD2e6LOKUgterrKEqGn+b/IAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;El pull request de Héctor&quot;
        title=&quot;El pull request de Héctor&quot;
        src=&quot;/static/f0e5b663ffa3b31c44755deffd240799/f058b/hector-pr.png&quot;
        srcset=&quot;/static/f0e5b663ffa3b31c44755deffd240799/c26ae/hector-pr.png 158w,
/static/f0e5b663ffa3b31c44755deffd240799/6bdcf/hector-pr.png 315w,
/static/f0e5b663ffa3b31c44755deffd240799/f058b/hector-pr.png 630w,
/static/f0e5b663ffa3b31c44755deffd240799/40601/hector-pr.png 945w,
/static/f0e5b663ffa3b31c44755deffd240799/78612/hector-pr.png 1260w,
/static/f0e5b663ffa3b31c44755deffd240799/aa878/hector-pr.png 1385w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Comenzamos desarrollando la APP con &lt;a href=&quot;https://docs.expo.io/&quot;&gt;Expo&lt;/a&gt;, un &lt;em&gt;framework&lt;/em&gt; que te permite crear aplicaciones en RN de manera más fácil y rápida.&lt;/p&gt;
&lt;p&gt;Debido a que Expo no tiene soporte de Firebase, tuvimos que &lt;a href=&quot;https://docs.expo.io/workflow/customizing/&quot;&gt;“eyectar”&lt;/a&gt; Expo (mayor complejidad a cambio de más libertad). Sin embargo, partir con Expo nos permitió iterar rápido en un comienzo (implementamos todas las vistas con Expo).&lt;/p&gt;
&lt;h4&gt;¿Por qué Firebase?&lt;/h4&gt;
&lt;p&gt;Firebase es una tecnología de Google que permite guardar datos en la nube de manera simple y segura. Lo utilizamos como base de datos (&lt;a href=&quot;https://firebase.google.com/docs/firestore/&quot;&gt;Firestore&lt;/a&gt;) y para guardar las fotos de las heridas (&lt;a href=&quot;https://cloud.google.com/storage/&quot;&gt;Cloud Storage&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Si bien ambos teníamos experiencias previas con el servicio (en nuestros trabajos anteriores), la decisión no fue tan simple.&lt;/p&gt;
&lt;p&gt;Lo que nos hacía dudar era el marco regulatorio. De mi trabajo anterior, recordaba que se descartó Firebase porque no cumplía con &lt;a href=&quot;https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act&quot;&gt;HIPAA&lt;/a&gt;. HIPAA es una &lt;a href=&quot;https://www.hhs.gov/hipaa/for-professionals/privacy/laws-regulations/index.html&quot;&gt;ley&lt;/a&gt; de USA creada para modernizar el flujo de información de salud de forma segura, si queremos expandirnos es importante usar servicios que cumplan la norma.&lt;/p&gt;
&lt;p&gt;Por otro lado, durante la mayor parte de mi carrera he utilizado un framework llamado &lt;a href=&quot;https://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt; (RoR). Más encima trabajé en un desarrollo que lo utilizaba y que cumplía con HIPAA. ¿Qué mejor?&lt;/p&gt;
&lt;p&gt;Entonces estaba en la disyuntiva: ¿lo hacemos con Ruby on Rails (RoR)? (más lento, soy experto pero Eli no) ¿lo hacemos con Firebase? (más rápido y ambos tenemos conocimientos).&lt;/p&gt;
&lt;p&gt;Uno de los factores clave fue el tiempo. Durante enero avanzamos muy poco en el proyecto debido a vacaciones y otros proyectos.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c5a8d41581e182b106e2a72008e877a2/229ad/commits-dic-ene.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.82278481012659%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAABYElEQVQ4y5VT7W6DMBDj/R9wmqZtP7pVLbQQ0oR8XBLcu8AqbdJaimTRimDss68hIrTdCee+h9YX+EAoZcY8P0YqGZlBqSDlwu8VNCklHA5HKDVi1BrOx01kgkCByQguZP6dF0JR2A8DhkHBGAPvHEJMWK4Z964yL6oyq8t8l480MRJeXt+w+9pj973H4djh1Cto40F8kFL+F9oZTN5BmQhtI0TcqlDhYiZY5+vBSKmqvEcm8FEsJz7P7/D/lPNCeGw7tAwJxlpbbTy2vDwrTOJC+j3DQSnYycGxwswHtoYiEBJJ+JYysb2OayNJi7r67Y1kjnxNeQpiXxSult8/Ptl2yzjz7PJmUhelEQHGSXWoumsiE6pxZHUTlzo8Zfdme0WtjbDKptRtOfcYRym4qe2XwT+yHCnC+sSW06KwhsK1UaOuwcjaPTPHsgZTfootLRd1Xd1n3pbJbw+FZ/hX4RU6OPwp4wsSnwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Commits entre diciembre y enero&quot;
        title=&quot;Commits entre diciembre y enero&quot;
        src=&quot;/static/c5a8d41581e182b106e2a72008e877a2/f058b/commits-dic-ene.png&quot;
        srcset=&quot;/static/c5a8d41581e182b106e2a72008e877a2/c26ae/commits-dic-ene.png 158w,
/static/c5a8d41581e182b106e2a72008e877a2/6bdcf/commits-dic-ene.png 315w,
/static/c5a8d41581e182b106e2a72008e877a2/f058b/commits-dic-ene.png 630w,
/static/c5a8d41581e182b106e2a72008e877a2/40601/commits-dic-ene.png 945w,
/static/c5a8d41581e182b106e2a72008e877a2/78612/commits-dic-ene.png 1260w,
/static/c5a8d41581e182b106e2a72008e877a2/229ad/commits-dic-ene.png 1356w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Así que entre el factor tiempo y factor conocimientos, la opción obvia era Firebase. Pues nos permitía avanzar más rápido y es una tecnología que ambos manejamos.&lt;/p&gt;
&lt;p&gt;Luego descubrí que Firebase sí &lt;a href=&quot;https://cloud.google.com/security/compliance/hipaa/&quot;&gt;cumple HIPAAA&lt;/a&gt; 🎉 . Si bien &lt;strong&gt;no son todos los servicios&lt;/strong&gt;, nos preocupamos de usar solo servicios que sí estuviesen cubiertos.&lt;/p&gt;
&lt;p&gt;Si sabes sobre salud digital, quizás te estés preguntando por qué no hicimos que nuestro servicio fuese interoperable, utilizando por ejemplo &lt;a href=&quot;http://hl7.org/fhir/&quot;&gt;FHIR&lt;/a&gt;. La verdad es que lo consideramos, &lt;a href=&quot;/techconnect-2020&quot;&gt;porque algo de experiencia tenemos&lt;/a&gt;. Descartamos la opción, &lt;a href=&quot;https://www.youtube.com/watch?v=Oey55UrRDYA&quot;&gt;a pesar de las recomendaciones&lt;/a&gt;, porque sabíamos que no hubiésemos demorado mucho más.&lt;/p&gt;
&lt;p&gt;Si bien no usamos HL7, sí nos dimos el trabajo de modelar la solución utilizando recursos de FHIR. Esto nos ayudó a nombrar nuestras colecciones y atributos en Firestore de una forma similar a como lo hacen en FHIR. Esperamos que esta decisión nos ayude a futuro cuando tengamos que hacer una migración o integración.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d83f6f17ace55c6b024384fa489ef5b9/7ae9c/fhir-resources.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.82278481012659%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAABvElEQVQ4y5VT2ZLaQAz09ySAsTH4Bt9jDgc2W0m2kvz/b3RaGg+QZCtVeRDSyDOtVkt4q12LqLxgb75gmH4ga26ICsOcQZgNWG3b/zJPfjaZwfH6E2V7wzYfsY5rbPIO66TFIjxgsXmy8PDIzf7j/U4Fbx33WEY1yuEV7fU7kvaKsDwSdIC/6wk6IEgN5J7GibFnl6ffFGfe7YjTwJNAkP20R2I+I+6uSIYXXjqx5SMfjfogzI9kfaKd1cs3d5ZY77LYDFgjriZEB34sRrUgHbSqYybe/zOmiWRCyJkCioZp84lMWHV/4qNe25VHCiogDohnl/Nj251I5uw+lP78hoo6bhl/CPa/iS+iO3P5+/mJnWXIqouwwu5wQTW9Ie046XqiJpz2PACnj+gpeaetxOJl7YSxro0Egiyt5uevSPobspFM9w/x5YEbQFROOiQ5R/RRcZmLjgrq2XHXyjDIjZoVvbvr5ccPPR85622rTp7KahhxmYv+hVUImMl0n7e/0YfyjxJb8ix5zTF+V8OQU61O35CbV7ZkJx0Q3K2NWxfxoqVj/ZyzWyAtk3qYDvP4G626mhlaNn/b8h/xL3O2tLSfyVpmAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Código con un recurso de FHIR&quot;
        title=&quot;Código con un recurso de FHIR&quot;
        src=&quot;/static/d83f6f17ace55c6b024384fa489ef5b9/f058b/fhir-resources.png&quot;
        srcset=&quot;/static/d83f6f17ace55c6b024384fa489ef5b9/c26ae/fhir-resources.png 158w,
/static/d83f6f17ace55c6b024384fa489ef5b9/6bdcf/fhir-resources.png 315w,
/static/d83f6f17ace55c6b024384fa489ef5b9/f058b/fhir-resources.png 630w,
/static/d83f6f17ace55c6b024384fa489ef5b9/40601/fhir-resources.png 945w,
/static/d83f6f17ace55c6b024384fa489ef5b9/7ae9c/fhir-resources.png 972w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Lo bueno es que quizás la integración no sea difícil, considerando que &lt;a href=&quot;https://cloud.google.com/healthcare/docs/concepts/fhir&quot;&gt;FHIR es parte de Cloud Healthcare API&lt;/a&gt; de Google Cloud (proveedor que estamos usando).&lt;/p&gt;
&lt;h2&gt;Desafíos de producto&lt;/h2&gt;
&lt;p&gt;El tema regulatorio es todo un desafío. Preguntas tales como quién es el dueño de los datos y quién tiene acceso a ellos son importantes de responder.&lt;/p&gt;
&lt;p&gt;Si bien nuestra filosofía de crear productos es siempre actuar de buena fe y considerar la ética digital, es importante tener nociones del marco regulatorio.&lt;/p&gt;
&lt;p&gt;Respondimos esas preguntas en paralelo a la construcción de la aplicación. Fue una apuesta más o menos segura, ya que conocemos la existencia de aplicaciones similares, incluso creadas en Chile. Solo teníamos que estar seguros.&lt;/p&gt;
&lt;p&gt;Todavía tenemos dudas relacionadas, sobre todo como aplican estas preguntas en diferentes países y cómo se relacionan con otras leyes como GDPR e HIPAA.&lt;/p&gt;
&lt;p&gt;Todo esto fue considerado en el desarrollo de la aplicación. Por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Antes de solicitar datos, le recordamos al profesional que debe tener el consentimiento informado del paciente o del tutor.&lt;/li&gt;
&lt;li&gt;Bloquear la pantalla luego de inactividad para agregar medidas de prevención contra que alguien sin consentimiento vea información sensible.&lt;/li&gt;
&lt;li&gt;Encriptación de la información guardada (datos, imágenes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Todas estas cosas agregan fricción y tiempo de desarrollo. Pero es un precio justo que debíamos pagar.&lt;/p&gt;
&lt;h2&gt;Desafíos técnicos&lt;/h2&gt;
&lt;p&gt;Dicen que programar en &lt;em&gt;React Native (Expo)&lt;/em&gt; es fabuloso, que puedes programar rápido y todo eso. Lo mismo con Firebase. ¿Es realmente así?&lt;/p&gt;
&lt;p&gt;Mi respuesta corta es: sí, en general sí. Pero en el día a día te encuentras con problemas.&lt;/p&gt;
&lt;p&gt;En React Native tienes que estar dispuesto a pelear con &lt;em&gt;bugs&lt;/em&gt; que encontrarás con versiones viejas de Android o con librerías open source.&lt;/p&gt;
&lt;p&gt;En Firebase, tienes que pelear con la documentación. Si la miras por encima se ve genial, pero en el día a día, cuando tienes que usarla, resolver problemas y buscar cómo hacer cosas, es un infierno.&lt;/p&gt;
&lt;p&gt;En otro post te diré los problemas que tuvimos con ambas tecnologías y cómo los solucionamos.&lt;/p&gt;
&lt;h2&gt;Desafíos de diseño&lt;/h2&gt;
&lt;p&gt;No tenemos formación en diseño y no nos asesoramos 😅. Desde los colores al logo todo lo hicimos nosotros.&lt;/p&gt;
&lt;p&gt;Eso sí, nos apalancamos con herramientas para crear elementos visuales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La paleta de colores fue inspirada en una paleta de &lt;a href=&quot;https://colorhunt.co/&quot;&gt;ColorHunt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Muchos recursos visuales (tales como el logo, imágenes dentro de la APP o lo que hay en la &lt;a href=&quot;https://apposito.codeness.io&quot;&gt;landing page&lt;/a&gt;) las hicimos con &lt;a href=&quot;https://www.canva.com/&quot;&gt;Canva&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;La landing page la construímos con &lt;a href=&quot;https://webflow.com/&quot;&gt;Webflow&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Para la interfaz de usuario utilizamos &lt;a href=&quot;https://akveo.github.io/react-native-ui-kitten/&quot;&gt;UIKitten&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Para el arte de PlayStore y AppStore utilizamos &lt;a href=&quot;https://app-mockup.com/&quot;&gt;AppMockUp&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Me gustó el resultado. Al menos nuestros testers iniciales así lo consideraron. De todas formas, estoy seguro que es bastante competitiva con respecto a las otras aplicaciones del mercado 😂, pues hice mi investigación.&lt;/p&gt;
&lt;h2&gt;El resultado&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/b2d1cf3cae38ac364df75ed293094391/5bf79/commits.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 4.430379746835443%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAYAAADeko4lAAAACXBIWXMAAAsSAAALEgHS3X78AAAAQ0lEQVQI1z3LSwqAMBAEUe9/zKjMGMxHR4KCWIkBXRSvNz04TUxLwknozj73ZN3Zys1xgZ3P77d9LmgwpPU6amwfowIADkwf/8HdTwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;144 commits para la versión inicial&quot;
        title=&quot;144 commits para la versión inicial&quot;
        src=&quot;/static/b2d1cf3cae38ac364df75ed293094391/f058b/commits.png&quot;
        srcset=&quot;/static/b2d1cf3cae38ac364df75ed293094391/c26ae/commits.png 158w,
/static/b2d1cf3cae38ac364df75ed293094391/6bdcf/commits.png 315w,
/static/b2d1cf3cae38ac364df75ed293094391/f058b/commits.png 630w,
/static/b2d1cf3cae38ac364df75ed293094391/40601/commits.png 945w,
/static/b2d1cf3cae38ac364df75ed293094391/5bf79/commits.png 966w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Luego de 144 commits, publicamos la aplicación en &lt;a href=&quot;https://apps.apple.com/us/app/apposito/id1559789088&quot;&gt;App Store&lt;/a&gt; y &lt;a href=&quot;https://play.google.com/store/apps/details?id=io.codeness.apposito&quot;&gt;Play Store&lt;/a&gt; el 15 de abril.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/0324e33e76eb02300dd0bdd1e16f3046/d6331/playstore.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 82.91139240506328%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAAsSAAALEgHS3X78AAAEAUlEQVQ4y3WTWUxUVxjHb9I+2dc+NOlDE9OH1qaNL019aOxmUwlpQltTbAxp1bSU4sKD0rJIUaIsAyIKiAZ02NQW0amtKKhRFERFRCikYddhGZZhZu7M3Jm7zq9nBiVNqif5n++7J+f73/+3HAmx5hYs/HIk6hK2ntiwit/vJxAIogQVnrUikcj/ziSn02RvdpDGhjBOxaJ/0SBoQcDv4/HkI6ZdU7jmZtAMFcPU0XQVVQ8L31gm/S+kiXGTw4dCNF/XuTliMRo2CYuLC4sunLPjLMpzuP2zLMizBEI+3MLO+2ZQwoFnqpSi26jP5MqARVu3xV9/ang9oKoKwYCCoRs8bz0lMywdRZMJ60Ek2YzwUKT5jyBttKvs2Oyn+56JEZGFugX8ihdZwIpYMQLrCWK+ZcYIex9fouBiPNXtKUsK57UI0bKPDJtcu6Fjxu5FA81lPEdjbFeNIO6gE2/IJQijsnXxR1V0whLAjFlTnIkeLEFkbYpMDCOC/gSG+Lai0IVyYyksyi9pItW+fCcDRUMMFvYxlHeT4RPDOHJkfk9f5FSmlzN7Zc6dUsgt85NTLpN+xEt6ncztWpneXVP0543Rn9HHVNMYUmhB50HaJE6bi5mSR0xld9Kb95CGbR6as9yczvJQvdNDVWmAzIMaNrtBbo1OcrVCS/4iXd9O0F8sCHMFoWMcyfTC+c3tZH2SQ/anv1C5fg8DxQPUbw3R+KMf+3aFY8lhTlQoJO0cZENqD/Epd9mwf4i2Ui93k5yM/+pmcs9jfI5ZUcMg7PwoG0mSYnh1xcv0FPWQ+V09PyXYSP6yhNQNFRwvm+BwRS1VVXaqKqvJOVJHW7GHCwl32bI6lY2vbeLorkpB6IPCxDLeW/MWcR+uIfGdd7md38Hg6Ag+RYxN2M3Y2DDHynvx+kLL/X044aS1wE1NvIO161bzwdq3OXggC8mYgws5F2k5V077oUwK49fTkX+LySnvcrB7NiQIezhTf4yrDjv3amwU/7ydy4WLnP6iFcdvR+muL2Ww6aSooSB05LZwvb5ANCKRfV9/xZ3CToZHZ9HUpUmam/ZSXtpFzfEybpwswp4Ux9aNn3PF5qEh4RJN9hLO7/iGsyX7kCJusO9oxJaxhQO7f6AwOYU7BZ2MTsw8nVsWXD7KSjqpqSiivWAXtk2fkZb2PddsPuoSWjhbtY8/8tK43FwraiieyLb3M3jhpRd5/c03WLniFe4VdTE04kLTxMyLoZ2Z9FFZdp+zjdXcOV/L1eaT1DSc4Fqxj+o4B6tWrWTdx2s5sF8ojE748IMxbt5qp/t+N13tHfidMiFVEwKX3q2mGcxMBQir+lPR+EMqHqfOdN88l1pbaW1to7//b/4FRNNztTGgD20AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Apposito en PlayStore&quot;
        title=&quot;Apposito en PlayStore&quot;
        src=&quot;/static/0324e33e76eb02300dd0bdd1e16f3046/f058b/playstore.png&quot;
        srcset=&quot;/static/0324e33e76eb02300dd0bdd1e16f3046/c26ae/playstore.png 158w,
/static/0324e33e76eb02300dd0bdd1e16f3046/6bdcf/playstore.png 315w,
/static/0324e33e76eb02300dd0bdd1e16f3046/f058b/playstore.png 630w,
/static/0324e33e76eb02300dd0bdd1e16f3046/d6331/playstore.png 702w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Publicamos un mes después de lo que originalmente habíamos pensado 😓 pero nos ayudó a refinar más el producto y a probar con más personas.&lt;/p&gt;
&lt;h2&gt;El futuro&lt;/h2&gt;
&lt;p&gt;Ya tenemos una versión inicial sólida que usuarios pueden comenzar a usar. Así que próximamente moveremos recursos de desarrollo a distribución.&lt;/p&gt;
&lt;p&gt;Sabemos que hay empresas que viven de solucionar la misma problemática. Para algunos emprendedores esto es un problema. Para nosotros no, pues eso significa que existe mercado.&lt;/p&gt;
&lt;p&gt;La pregunta a responder es cómo llegamos a ese mercado. Ese es el siguiente desafío.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/b8b9de8a5be3b60b09c24de1b2ec8cc7/f3583/preview.png"></media:content></item><item><title><![CDATA[¿Cómo nace la idea de Apposito?]]></title><description><![CDATA[Apposito es una aplicación que busca ayudar al seguimiento de heridas complejas, creada por nosotros: Codeness. En este post intentaré…]]></description><link>https://blog.codeness.io/ideando-apposito/</link><guid isPermaLink="false">https://blog.codeness.io/ideando-apposito/</guid><dc:creator><![CDATA[Eliana Quijada]]></dc:creator><pubDate>Wed, 21 Apr 2021 22:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://apposito.codeness.io/&quot;&gt;Apposito&lt;/a&gt; es una aplicación que busca ayudar al seguimiento de heridas complejas, creada por nosotros: &lt;a href=&quot;https://codeness.io/&quot;&gt;Codeness&lt;/a&gt;. En este post intentaré contar del proceso que seguimos para darle forma a la idea inicial de nuestra aplicación.&lt;/p&gt;
&lt;h2&gt;El comienzo&lt;/h2&gt;
&lt;p&gt;En octubre del 2020, comenzamos con las ideas iniciales que finalmente nos llevarían a crear Apposito.&lt;/p&gt;
&lt;p&gt;La primera decisión que tomamos fue que queríamos crear una aplicación o servicio en el área de la salud, para así aprovechar mis conocimientos como enfermera.&lt;/p&gt;
&lt;p&gt;La segunda decisión fue acerca de los usuarios finales: ¿Queríamos crear algo para pacientes o algo para profesionales?&lt;/p&gt;
&lt;p&gt;Optamos por la segunda opción, en primer lugar porque sentíamos que una gran manera de sacarle provecho a mi experiencia como enfermera, era justamente buscando algún “dolor” que yo misma hubiese tenido mientras ejercía la atención clínica. Y al mismo tiempo podía recurrir a mis “contactos” cuando necesitáramos gente que probara nuestra aplicación.&lt;/p&gt;
&lt;p&gt;Como nuestra intención era partir con un producto pequeñito, la idea era utilizar todas las herramientas que tuviéramos a mano de forma eficiente y rápida.&lt;/p&gt;
&lt;p&gt;Luego venía la siguiente gran pregunta…&lt;/p&gt;
&lt;h2&gt;¿De qué manera podemos ayudar a los profesionales?&lt;/h2&gt;
&lt;p&gt;Volviendo a la idea anterior, de querer sacarle el máximo provecho a mi experiencia, y porque no decirlo, una deuda personal, de querer hacer algo que nos ayudara a las enfermeras y enfermeros en particular, comenzó una lluvia de ideas, que terminó siendo una gran lista con un resumen de algunas de las funciones realizadas por las enfermeras y enfermeros tanto en el ámbito clínico, docencia y gestión (visto desde mi experiencia).&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 625px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d0dca0255e09df0f055022c2e4b6bf16/dfe3c/analizando_ideas_01.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 133.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAbABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIDBAH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB1NxhRhJtiouogH//xAAYEAADAQEAAAAAAAAAAAAAAAAAAREQIP/aAAgBAQABBQLJ2mylP//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CT//EABkQAAMBAQEAAAAAAAAAAAAAAAABEVEQQf/aAAgBAQABPyH0Q6YivlK+ahNpWn//2gAMAwEAAgADAAAAEMMdDP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EAB0QAQACAgMBAQAAAAAAAAAAAAEAESExQVGhcZH/2gAIAQEAAT8QpyOWWrT7DubltlfGHSS3kP2CFpXOqh0MFd4jxvwS3AZRH//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Uno de los muchos esquemas que hicimos para profundizar un poco la lluvia de ideas&quot;
        title=&quot;Uno de los muchos esquemas que hicimos para profundizar un poco la lluvia de ideas&quot;
        src=&quot;/static/d0dca0255e09df0f055022c2e4b6bf16/dfe3c/analizando_ideas_01.jpg&quot;
        srcset=&quot;/static/d0dca0255e09df0f055022c2e4b6bf16/ff44c/analizando_ideas_01.jpg 158w,
/static/d0dca0255e09df0f055022c2e4b6bf16/a6688/analizando_ideas_01.jpg 315w,
/static/d0dca0255e09df0f055022c2e4b6bf16/dfe3c/analizando_ideas_01.jpg 625w&quot;
        sizes=&quot;(max-width: 625px) 100vw, 625px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot; aria-hidden=&quot;true&quot;&gt;Uno de los muchos esquemas que hicimos para profundizar un poco la lluvia de ideas&lt;/p&gt;
&lt;p&gt;Luego, tratamos de enfocar de qué manera podíamos impactar realmente a cualquier enfermero o enfermera que quisiera usar nuestra aplicación, sin importar si trabaja con fichas electrónicas o de papel.&lt;/p&gt;
&lt;p&gt;Siempre trabajé en el servicio público y me consta que hay hospitales que con suerte tienen un computador “viejito” para todo el personal de la sala, así que para mí era súper relevante que lo que eligiéramos hacer, funcionara independiente del nivel de tecnología utilizado en cada servicio. Que pudiese trabajar de forma “aislada” si no hay otra opción, pero que al mismo tiempo pudiese interoperar si es que el desarrollo tecnológico de la institución lo permite.&lt;/p&gt;
&lt;p&gt;Eso redujo bastante las ideas del momento, pero aún teníamos unas 3 o 4 alternativas que sonaban bien, y lo mejor de todo, que yo sentía que si las hubiese tenido cuando trabajaba en el hospital me habrían ayudado mucho.&lt;/p&gt;
&lt;p&gt;Ahí también comente las ideas con algunas otras enfermeras, para saber si percibían las mismas necesidades que yo.&lt;/p&gt;
&lt;h2&gt;Heridas y curaciones&lt;/h2&gt;
&lt;p&gt;Una de estas opciones, era el tema de las heridas y curaciones, un área súper transversal, porque tiene su espacio tanto a nivel primario (CESFAM/consultorios) como a nivel terciario (hospitales), pasando por centros especializados específicamente en el tratamiento de las heridas.&lt;/p&gt;
&lt;p&gt;Para las enfermeras en general las curaciones son un tema muy importante, ya sea si estamos hablando de curaciones avanzadas de heridas crónicas (como las heridas de pacientes diabéticos, las lesiones por presión, las úlceras varicosas, etc.) o de curaciones asociadas a dispositivos médicos, como por ejemplo las &lt;a href=&quot;https://fascrs.org/patients/diseases-and-conditions/a-z/ostomia&quot;&gt;ostomías&lt;/a&gt;, o las curaciones de &lt;a href=&quot;https://www.cancer.gov/espanol/publicaciones/diccionarios/diccionario-cancer/def/cateter-central-de-acceso-venoso&quot;&gt;catéteres venosos centrales&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Desde que era estudiante de enfermería y tuve mi primera pasada práctica en un servicio de cirugía, que tengo grabado en la mente todo lo que tenía que evaluar de una herida al realizar una curación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Estado de los apósitos retirados&lt;/li&gt;
&lt;li&gt;Calidad/cantidad del exudado&lt;/li&gt;
&lt;li&gt;Estado del lecho de la herida&lt;/li&gt;
&lt;li&gt;Tipo y proporción de tejido&lt;/li&gt;
&lt;li&gt;Tamaño&lt;/li&gt;
&lt;li&gt;Profundidad&lt;/li&gt;
&lt;li&gt;Y un largo etcétera…&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero posteriormente cuando ejercía como profesional, pude ver como los registros muchas veces no reflejaban todo lo que se debía observar (esto se debe a muchos factores, entre ellos el tiempo y/o el espacio para realizar el registro de la curación).&lt;/p&gt;
&lt;h2&gt;¿Cómo podíamos solucionar el problema?&lt;/h2&gt;
&lt;p&gt;La respuesta inmediata que uno podría pensar es hacer un sistema de registro detallado, que solicite todos los puntos esenciales mencionados. Sé que hay fichas clínicas que se preocupan de estos detalles, “recordando” al profesional todo lo que debe evaluar.&lt;/p&gt;
&lt;p&gt;Pero si volvemos al punto de los centros que aún manejan ficha de papel, pedir un registro detallado aparte del “oficial” que se realiza en la ficha clínica, solo aumentaría la carga del profesional (y debo contarles queridos lectores, que actualmente es muchísimo más común de lo pensado, que en la práctica clínica se tenga que repetir varias veces el mismo proceso de registro).&lt;/p&gt;
&lt;p&gt;Y así, surgió la idea de hacer una aplicación que ayudara a realizar el seguimiento de heridas, pero centrada en imágenes, y de alguna manera fortalecer el “registro oficial” de la herida.&lt;/p&gt;
&lt;h2&gt;Evaluando las aplicaciones existentes&lt;/h2&gt;
&lt;p&gt;Una vez que la idea tenía más forma, comenzamos a ver las aplicaciones que intentaban solucionar el mismo problema.&lt;/p&gt;
&lt;p&gt;Me encontré con distintas aplicaciones, algunas de pago y otras gratuitas. Un par apuntaban al seguimiento de heridas con imágenes, aunque las acompañaban con un registro más complejo con formularios gigantes. Eran pocas las aplicaciones centradas netamente en registro de fotografías.&lt;/p&gt;
&lt;p&gt;También pregunté a enfermeras que tuvieran algo de experiencia con el tema de heridas, y al menos ellas no conocían algo que funcionara como lo que yo imaginaba.&lt;/p&gt;
&lt;p&gt;Por todo esto, pensé que sería una buena idea continuar con la idea. El hecho de que existieran aplicaciones intentando solucionar el mismo problema, con cantidad decente de descargas y algunas ya cobrando, pese a detalles de usabilidad y comunicación, fue alentador.&lt;/p&gt;
&lt;div aria-hidden=&quot;true&quot;&gt;
  &lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link&quot; href=&quot;/static/a1d98eb6693bba927c47f3903fababcb/de755/google-play.png&quot; style=&quot;display: block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom: 27.21518987341772%; position: relative; bottom: 0; left: 0; background-image: url(&amp;apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABYlAAAWJQFJUiTwAAABTElEQVQY0y2QT2sTURTF59u48Yv4ddy6EFy7bxFciEKoUgIFERe1FizUQBLrmNKxTcNkMknz3uS9mfdvppL681m6+HEvl8s5h5Psj99xMHjNVZlR1R5tPS7c3mNchw8d67rj+1Ubbx7jPf4BF7EuTucwxvIr/UFynO3zedIjX1+y1Y62blBKUWtNG0zE4mvNNu5/o0B0wEcBay1/guMumoQuRCNDbRqSNqbYhjuUbtiZpRzKBV1MZVzg+HTGyXDOsNKMhKK/KHiTz7gREm8M366X9LM50/Oc9OgnaqNIRCVRkVWteHT5hafLFCU1+Ury8tWIF7tnvB8u6B2e8WRc8Hg059PJKb2Dj7ydVjw/X/G1P+DDsz3WS0FSliVSiJhQcyQKJmZz7/6/l0l2w+9rSZZbpovAWFgGm5ZN/BWyYqotaaxpXUqKi4KmafgHTOxqx8A8yj8AAAAASUVORK5CYII=&amp;apos;); background-size: cover; display: block;&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image&quot; alt=&quot;google play&quot; title=&quot;google play&quot; src=&quot;/static/a1d98eb6693bba927c47f3903fababcb/f058b/google-play.png&quot; srcset=&quot;/static/a1d98eb6693bba927c47f3903fababcb/c26ae/google-play.png 158w,
/static/a1d98eb6693bba927c47f3903fababcb/6bdcf/google-play.png 315w,
/static/a1d98eb6693bba927c47f3903fababcb/f058b/google-play.png 630w,
/static/a1d98eb6693bba927c47f3903fababcb/40601/google-play.png 945w,
/static/a1d98eb6693bba927c47f3903fababcb/78612/google-play.png 1260w,
/static/a1d98eb6693bba927c47f3903fababcb/de755/google-play.png 3302w&quot; sizes=&quot;(max-width: 630px) 100vw, 630px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot; loading=&quot;lazy&quot;&gt;
  &lt;/a&gt;
    &lt;/span&gt;
&lt;/div&gt;
&lt;p class=&quot;figure-caption&quot; aria-hidden=&quot;true&quot;&gt;Una búsqueda rápida en Google Play&lt;/p&gt;
&lt;h2&gt;Usos prácticos&lt;/h2&gt;
&lt;p&gt;Mi premisa central para darle valor al uso de fotos está basada en que el recuerdo del estado de la herida es algo subjetivo.&lt;/p&gt;
&lt;p&gt;Es muy probable que al momento de ir a registrar la curación realizada, el recuerdo de lo observado ya no sea tan detallado, y mientras más demoramos en realizar ese registro, menos objetiva es nuestra imagen mental.&lt;/p&gt;
&lt;p&gt;De manera personal yo pensé principalmente en algunas situaciones en las que una aplicación de seguimiento de heridas me hubiese servido:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Heridas crónicas:&lt;/strong&gt; Fui interna de un servicio de cirugía de adultos, por lo que gran parte de mi día consistía en realizar curaciones a pacientes con heridas crónicas complicadas que se hospitalizaban para aseos quirúrgicos.&lt;/p&gt;
&lt;p&gt;En este caso, si bien uno intentaba realizar un registro lo más completo posible, el evaluar si una herida iba mejorando o empeorando, muchas veces quedaba a criterio de la memoria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Curación de catéter venoso central:&lt;/strong&gt; Trabajé un par de años en una sala de Trasplante de Médula, por las características del tratamiento y evolución de los pacientes, desde el momento en que ingresaban se les instalaba un catéter venoso central, que habitualmente permanecía por toda su hospitalización, la que podía durar en promedio unos 30 días.&lt;/p&gt;
&lt;p&gt;Además de la importancia que ya tiene el manejo de dispositivos invasivos, en el caso de estos pacientes había riesgos agregados: pasaban por períodos de &lt;em&gt;neutropenía severa&lt;/em&gt; (baja de defensas) que los hacía más susceptibles a infecciones. Adicionalmente, a causa de algunos medicamentos su piel se volvía muy sensible, por lo que el retiro constante de los parches que cubren el catéter también generaba lesiones. Todo esto hacía que la curación realizada y la evolución de todo el sitio que rodeaba al catéter fuese de importante seguimiento.&lt;/p&gt;
&lt;p&gt;Me hubiese sido muy útil para el seguimiento diario del que tenía que generar reportes, haber tenido un respaldo de imágenes que hiciera objetiva la evolución.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alta rotación de profesionales:&lt;/strong&gt; Un punto que a veces dificulta el seguimiento de la evolución de una herida es la rotación de diferentes enfermeras y enfermeros curando al mismo paciente, esto sucede por diferentes factores como los turnos rotativos y la alta tasa de reemplazos. Situación en la que también me parece hubiese sido buena idea tener un registro visual compartido entre todos los profesionales a cargo del paciente.&lt;/p&gt;
&lt;p&gt;A estos ejemplos intrahospitalarios también puedo agregar contextos como: los policlínicos de curaciones, los programas de atención domiciliaria, instituciones dedicadas a la investigación o a la formación.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/af71486ca8ddfc049d21c4f119175a16/8ec0a/lugar_de_trabajo.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAIBAwT/xAAVAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABz3qBA4V//8QAHBAAAgICAwAAAAAAAAAAAAAAAQMAAgQSERMz/9oACAEBAAEFAuCTjg9r/Rh3lbiMXfb/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwGI/8QAGhAAAgIDAAAAAAAAAAAAAAAAACEBEBEiMf/aAAgBAQAGPwJDitUYnoz/xAAaEAACAwEBAAAAAAAAAAAAAAABEQAhYUEx/9oACAEBAAE/IWDPIObqERiFdwC8sjIOeRsIoDFez//aAAwDAQACAAMAAAAQgO//xAAWEQEBAQAAAAAAAAAAAAAAAAABABH/2gAIAQMBAT8QYTL/xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAgEBPxCh/8QAHBABAQEBAAIDAAAAAAAAAAAAAREhADFhQVHB/9oACAEBAAE/EMJGpopzjE40y51GyEhZPj84oNDxAX799dr5kxOBnQbiEw333//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Fotografía de la sala de un hospital en la que trabajé&quot;
        title=&quot;Fotografía de la sala de un hospital en la que trabajé&quot;
        src=&quot;/static/af71486ca8ddfc049d21c4f119175a16/828fb/lugar_de_trabajo.jpg&quot;
        srcset=&quot;/static/af71486ca8ddfc049d21c4f119175a16/ff44c/lugar_de_trabajo.jpg 158w,
/static/af71486ca8ddfc049d21c4f119175a16/a6688/lugar_de_trabajo.jpg 315w,
/static/af71486ca8ddfc049d21c4f119175a16/828fb/lugar_de_trabajo.jpg 630w,
/static/af71486ca8ddfc049d21c4f119175a16/0ede0/lugar_de_trabajo.jpg 945w,
/static/af71486ca8ddfc049d21c4f119175a16/3ac88/lugar_de_trabajo.jpg 1260w,
/static/af71486ca8ddfc049d21c4f119175a16/8ec0a/lugar_de_trabajo.jpg 2560w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot; aria-hidden=&quot;true&quot;&gt;Fotografía de la sala de un hospital en la que trabajé&lt;/p&gt;
&lt;h2&gt;Siguientes pasos&lt;/h2&gt;
&lt;p&gt;Ya con la decisión tomada y los primeros lineamientos en mente, se venía la parte más técnica: decidir qué tecnologías utilizar y cuáles serían las características que tendría nuestra primera versión.&lt;/p&gt;
&lt;p&gt;Nicolás escribió sobre esto en el post &lt;a href=&quot;/creando-apposito&quot;&gt;“Creando Apposito”&lt;/a&gt;.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/b6b0b16e67337a4d1507296e1b3bdce6/f3583/preview.png"></media:content></item><item><title><![CDATA[Tuskas]]></title><description><![CDATA[¿Es posible automatizar el diagnóstico de cáncer uterino con inteligencia artificial? Esta pregunta dio origen a TUSKAS (Transfer useful…]]></description><link>https://blog.codeness.io/tuskas/</link><guid isPermaLink="false">https://blog.codeness.io/tuskas/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 18 Feb 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;¿Es posible automatizar el diagnóstico de cáncer uterino con inteligencia artificial?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Esta pregunta dio origen a TUSKAS (Transfer useful secure knowledge at your services… 😂), un servicio para apoyar y automatizar el diagnóstico de cáncer uterino.&lt;/p&gt;
&lt;p&gt;TUSKAS fue el proyecto final de la carrera de &lt;a href=&quot;https://desafiolatam.com/data-science/&quot;&gt;“Data Science” en Desafio Latam&lt;/a&gt; que realicé junto a mis compañeros &lt;a href=&quot;https://www.linkedin.com/in/fransafu/&quot;&gt;Pancho&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/in/rafaelmascayano/&quot;&gt;Rafa&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/in/javlopez/&quot;&gt;Javier&lt;/a&gt; y &lt;a href=&quot;https://www.linkedin.com/in/cristobal-haye-54b4ba4a/&quot;&gt;Cris&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En este &lt;em&gt;post&lt;/em&gt; te contaré cómo abordamos el proyecto, y los desafíos con los con los que nos encontramos.&lt;/p&gt;
&lt;h2&gt;Contexto&lt;/h2&gt;
&lt;p&gt;Me encantaría decirte que la idea se le ocurrió a uno de nosotros mágicamente mientras dormía, como varias historias de emprendimiento.&lt;/p&gt;
&lt;p&gt;La verdad es más simple: teníamos que aplicar lo aprendido durante la carrera en un proyecto. Ya sabíamos que teníamos que usar inteligencia artificial para resolver una problemática. Así definimos muestro martillo.&lt;/p&gt;
&lt;p&gt;Llegar al clavo fue parecido: queríamos trabajar con reconocimiento de imágenes. Si bien no es algo que se ve en el curso, nos interesó ir más allá.&lt;/p&gt;
&lt;p&gt;Rafa nos había comentado sobre su frustración de nunca haber hecho algo con anatomía patológica… Así que nos pusimos a investigar sobre aplicaciones de IA en el ámbito de salud, y llegamos a algunos papers donde utilizan algoritmos para la detección de cáncer cervicouterino (CCU). Así encontramos el clavo.&lt;/p&gt;
&lt;p&gt;Fue un match perfecto. Rafa y Javier llevan años trabajando en salud, Pancho y yo estábamos motivados por los algoritmos y Cris con la optimización de procesos que una solución con IA podía lograr.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/82d7e27ad972d9e29bd2ecbf568ed875/f79fa/todos.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 81.64556962025317%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAAEf0lEQVQ4yx2TaVDTZxCH//3i2HoMWh1ERKgKAoJFAQ+kHB4IcsoRCQRCgHAngYQESCAB5D4VRQHBo8JolaJDqUqtU+t4onhgp47QUrWeo1ZbO2399PQ/ftjZ2Xdmn939vbvCxNgwLya+59n4OR7/PMyju6d4cGeIh2OnuD8ywMToIH/8PsKrh6I9usrzyYtifI3X4tubpzf588UdXj8eYWigm/CoCISJny4xeeM4D24PMjl6gsmbJ5m43s8vot27coSJG/389+oW756P8u7ZKH89FyGif/v0Oo/Hz3P5bC9dzRbaynTUqpIQ3jy7zeTIUX4TEydFyOSNAcavHufepSPcOd/L3Qt9vH85yr8i8M2jK7x9cpV/xPjJ/bNcPtNDeUYS5vhoxnqr4eVphNFrZ9jZVEFDrYWaaguVlWbKzEaKTUWodTqMJgMjw/u59UMfo+cOc/FUD/t3lmFWJ1FVIKdBHsUJQxJ/n67n/a/HENT5KnI1+WSr1WSqNeTkF5Cj1ZFTqBe9Fl2xgWPdNVwXoRcGO+loNhHosQzF5gDSQwPQbPGhTrqB3bJALlaJI2fnZrM1Ioy0DCUqsSOlSoNKqSA/JxN1cQma3Ex265PpMudSrUqlsjgHY9wW6uTb6DaqiFrpzFeFCdxtLaAzV4agSNxGdvB6dKlJaAwGLFVlWFKklCbGo6+oIDNRwkFNEqXxkTSly2kv07O3KIdaWQymLFE/yWa2R2+gODII2YY1CMvdvTFt3cTJ1lJ6OpqoKzGS4uOPYu1qkkMkSKIi8XJ0wNnWhnRfL7bnZbNnRzeRnstxsrFllYsrG10/I97TnaBVHggeKzwpy0shOTaSFL+NtIRvoisylLgVXiT5BOC+aBFTPpmOu6MTqaHB7NJryNgmx1oQWLbIBU2BGUmMFP8VbtjMmYWwyX81vuvW4DxvAZI13ozt8uO7yizajQZK9HLCAtcSLlbek5fGIUMhNfoiChOk+CxYiFKWRklRJQVFNYRFJhD1xUqEWVaf8tGUGfgu/5zxgSaGegxiVSkWYwwFhTEYFfG0adJQh/iijQhBFbqJr4vSOFKYhSIilrCweIKC47Cxc0Obq0SYN9eGBF83+rXBDFYp0daaketkSAxZqIrz2KNJxBQfhDo8kOh1Xmz09qYtS0pZYjSubn44OXmzwN6NxU5eOC5xQfDzWkV9Thw/WmLZmSclNToaY5r4q2lSGtQKesvF9Qn24EBJLgfy5ZSlp+Dg4Mg8a1us5tgz08oW6/kuLHb0YL6dM0JdsD/mpZ6YJEF0GNI52lJP/8EO+qq1fNNm4dvORrrbOzncLMrRaGagsRylQsnH06yYMXM2U6fOZM7chdg7LMPOwR1hWC+jNWQztWnR7LaY6PpyiP37mumtLqCw3SiKnoEuNpQ2bQaHSlW0axT07WjAf30o06bPZvqMWcy1tv8w9nw7V4QWlYxGcfsrMhKo0GrYW72do2IXHSWZBMj9SJEFsy9HSmteMp16JfWZCbSIF1NusuDs5s1ChyXY2bt+gFnbLuV/tZvyNasSaZcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Todo el grupo de TUSKAS&quot;
        title=&quot;Todo el grupo de TUSKAS&quot;
        src=&quot;/static/82d7e27ad972d9e29bd2ecbf568ed875/f058b/todos.png&quot;
        srcset=&quot;/static/82d7e27ad972d9e29bd2ecbf568ed875/c26ae/todos.png 158w,
/static/82d7e27ad972d9e29bd2ecbf568ed875/6bdcf/todos.png 315w,
/static/82d7e27ad972d9e29bd2ecbf568ed875/f058b/todos.png 630w,
/static/82d7e27ad972d9e29bd2ecbf568ed875/f79fa/todos.png 940w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Foto del 2019, pre pandemia&lt;/p&gt;
&lt;h2&gt;El problema&lt;/h2&gt;
&lt;p&gt;Ya en conocimiento de un problema que podemos atacar con lo aprendido en el curso, nos pusimos de cabeza a investigar más sobre este tipo de cáncer. Javier, el hombre de los contactos, dio con Francisca Correa, doctora del instituto del Cáncer, quién nos orientó en la elaboración del proyecto.&lt;/p&gt;
&lt;p&gt;Así llegamos a algunas estadísticas alarmantes (Minsal, 2005), en Chile el cáncer cervicouterino:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;es la segunda causa de muerte en la mujer entre 20 y 44 años.&lt;/li&gt;
&lt;li&gt;es la principal causa de muerte por cáncer en la mujer entre 20 y 44 años.&lt;/li&gt;
&lt;li&gt;es la quinta causa en el grupo entre 45 y 64 años de edad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La estrategia central para disminuir la mortalidad de este cáncer es la detección temprana mediante la toma de &lt;a href=&quot;https://www.clinicalascondes.cl/BLOG/Listado/Ginecologia/Que-es-el-Papanicolau&quot;&gt;Papanicolau (PAP)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El PAP no es un examen que te haces una vez y te olvidas. Es un examen que las mujeres tienen que hacerse cada 3 años en el rango etario de 25 y 64 años.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9ffb0311abe85a9293dc7d217ecdafea/f4fb1/screening.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 84.17721518987341%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAAB7ElEQVQ4y5WU666aUBCFff9HOukLeNLEHx5T2iKCoiigXAW8Tvmm2RY52KY7mezNXNbMWhsYRWkh1jIQdxuLs4l0n29CNa892+tQzpersO73+2MfOldVJSP5z2WKu89PgMaBj71qGimrWi0vj5IV5eOZ2D8n7Dqu16t8i3P5yE4y9iP5Mvspb9Mf8r6OZZo2bSwDQu4v6H8CvN1u4ie5eGkpH+5Kvn63Zdrulh+oz0+yJ5CuDVD+bU1dySGOZeHMxXUccWxbLUsSjfUBu7p+upTL5aLO4/Eop9NJE5HB+OpWQ3L+einQzLJMXNdV40wRQGVZKhCJnON28t1uJ/P5XKIo0tgg5fP5rAV5nisYTUgGtLuadkJyNpuNHA4HKYriKQ4rnTBp9aF7EASahI9u7AAwDSDb7Vb2+73mseOHFbVmep3Q930NQIWi7oQ0WywWakwVhqHm8ow8gFO3XC5lvV7/uRRoY0aPuq6f6PTp9/V9UCYRbQgAgpPF+GmaqgRMgDEtuTRlutlspsbk4FA/QiPLsmQ8HstkMlEtoAx1pAAE/ez2XSSXJjRfrVbajLjneVqjgNwqAbQhCG2CaIPo/Z+BuW3yqYURZyPT6NUfhUSj29BnZgCYFIYwQtPRq++y/7sa+tQMILcOIFL8AvLRIgEDZXFEAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Tamizaje de Cáncer Cervicouterino con PAP&quot;
        title=&quot;Tamizaje de Cáncer Cervicouterino con PAP&quot;
        src=&quot;/static/9ffb0311abe85a9293dc7d217ecdafea/f058b/screening.png&quot;
        srcset=&quot;/static/9ffb0311abe85a9293dc7d217ecdafea/c26ae/screening.png 158w,
/static/9ffb0311abe85a9293dc7d217ecdafea/6bdcf/screening.png 315w,
/static/9ffb0311abe85a9293dc7d217ecdafea/f058b/screening.png 630w,
/static/9ffb0311abe85a9293dc7d217ecdafea/40601/screening.png 945w,
/static/9ffb0311abe85a9293dc7d217ecdafea/78612/screening.png 1260w,
/static/9ffb0311abe85a9293dc7d217ecdafea/f4fb1/screening.png 1766w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Pese a los esfuerzos para aumentar la cobertura del tamizaje, la mortalidad sigue siendo alta. Nosotros creemos que esto se debe a dos factores: la escasez de especialistas y errores de diagnósticos.&lt;/p&gt;
&lt;p&gt;Estoy convencido de que un asistente que ayude al especialista a analizar una muestra de PAP disminuirá la mortalidad del CCU, ya que lo ayudará a hacer su trabajo de forma más eficiente y además podría brindarle una segunda opinión, disminuyendo posible errores de diagnósticos.&lt;/p&gt;
&lt;p&gt;Y no solo eso, es económicamente viable. En salud pública, los servicios clínicos de anatomía patológica no logran cubrir la demanda de estudios, y recurren a la compra al extrasistema, debido a la falta de recurso humano, insumos o equipamiento.&lt;/p&gt;
&lt;h2&gt;La solución: TUSKITA&lt;/h2&gt;
&lt;p&gt;Debido a todo lo anterior, creamos a &lt;strong&gt;TUSKITA&lt;/strong&gt;, un algoritmo que permite detectar anormalidades en células de un examen PAP, el cual fue construido con &lt;em&gt;Machine Learning&lt;/em&gt;, específicamente usando &lt;em&gt;Deep Learning&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si estos conceptos son chino para ti, puedes ver este &lt;a href=&quot;/glosario-tecnologias&quot;&gt;post&lt;/a&gt; que tiene definiciones de IA, Machine Learning, entre otros.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;¿Cómo creamos TUSKITA?&lt;/h3&gt;
&lt;h4&gt;1) Definición del problema&lt;/h4&gt;
&lt;p&gt;Lo primero fue definir bien el problema: &lt;em&gt;dada una imagen de una célula de un examen PAP, clasificarla como &lt;strong&gt;NORMAL&lt;/strong&gt; o &lt;strong&gt;ANORMAL&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;O en otras palabras, responder a la pregunta &lt;em&gt;“¿esta célula es anormal?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/687f9f13bb433ddb7c8fcaf6f8e207f9/a13c9/vector-objetivo.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 27.848101265822784%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAABBElEQVQY042QvUrEQBSF57F8BtEn0MYHsBW7LdTOwibb2argsoiVyjY2yy6LFnYmICYxPyYxiZNkJ0MyOToXVrZYcA8cDlxmvpl7WMsBJYDqS+E7ldDquu5fa1VVBc452rZF0zQQQoBFzxJ3Zy842rvB09jHuiqKAlEUIUmSP3BZlmCDg0f0Nvro7Vzg3SwgpcB8LuhClmXwfZ/seR6CIIBt2zTXkFVixvYVTjbPMb5+w4fJEX6GiOOYAJZlUWo7jkPpui7SNP19WK4Gnm5dor9/j8PdIR5uzbVX1lD92zAMqcO6rml9Nh28YmhMYByPMJs4dFgpRcUvctl6tlCe5wRe7vAHUubA1hWHlZEAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Vector Objetivo&quot;
        title=&quot;Vector Objetivo&quot;
        src=&quot;/static/687f9f13bb433ddb7c8fcaf6f8e207f9/f058b/vector-objetivo.png&quot;
        srcset=&quot;/static/687f9f13bb433ddb7c8fcaf6f8e207f9/c26ae/vector-objetivo.png 158w,
/static/687f9f13bb433ddb7c8fcaf6f8e207f9/6bdcf/vector-objetivo.png 315w,
/static/687f9f13bb433ddb7c8fcaf6f8e207f9/f058b/vector-objetivo.png 630w,
/static/687f9f13bb433ddb7c8fcaf6f8e207f9/40601/vector-objetivo.png 945w,
/static/687f9f13bb433ddb7c8fcaf6f8e207f9/a13c9/vector-objetivo.png 1178w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;2) Obtención de datos y preprocesamiento&lt;/h4&gt;
&lt;p&gt;Machine Learning es decirle al computador &lt;em&gt;“toma estas imágenes, estas son anormales, estas otras son normales. Por favor, aprende a identificarlas”&lt;/em&gt;. Así que sin los datos (imágenes de células clasificadas) estábamos fritos.&lt;/p&gt;
&lt;p&gt;Lo bueno es que ya sabíamos de la existencia de datos, pues hay papers que abordan el mismo problema (ejemplo: &lt;a href=&quot;https://pubmed.ncbi.nlm.nih.gov/28541229/&quot;&gt;DeepPap&lt;/a&gt;, &lt;a href=&quot;https://www.semanticscholar.org/paper/Cervical-Cytology-Intelligent-Diagnosis-Based-On-Mei-quan-Weixiu/d7a457006ae1c342d99c01fc85c44c0f4348dce4#references&quot;&gt;Cervical cytology intelligent diagnosis&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Usamos el &lt;em&gt;dataset&lt;/em&gt; que utilizan en la literatura: Smear2005 del Herlev University Hospital.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d4319a775b96eaf76c8fb14b36dcecf8/bb072/dataset.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 81.64556962025317%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAABYlAAAWJQFJUiTwAAADvUlEQVQ4y02U209cVRTGz5/iqw/Glz6Y+GBiGk18MzxI1ChPxlakljYqeKmBcmsjaaFNpYBQbmE6BBkuw8wAwzA3LsPczplznxnAaiIvjf/Bz7UPrenDN2fvc/Zae61vfd9oVsXgKJEnt5FBL1YpH5Z5+miNtOxty2ZlOs7KfALPc9kcW2cnvI1r2CzdDVPaL5JPHTHYPUVyM0u94aOV0wWmfphk7MYYpfQRW3+k+LFliO2pGEa1RscHt+n9YpRm3edJ/wKR6Q1MKWL05jiVgxLTj1d547XPWZhY5fSsiWaUdLLRNOm1VHCwmC+SW05i5cuYpkk0FOdwK48vFc4MLLC5EEeXmLHuSUpyNhHL0NU5wt5WDr/uoTmugy+lKqi1K4GefLBl7TgOjZP6xV7Wx9kC+nEFs2ZRkG5q0oHnezSbdVzXxbZtSWg7AVeWQL0I8Mrasqz/9yo4uNS1pQBXnk7w3jQtLEGQUP04jiWk2wEcxw6CFFRVqsqXl6jkruOi6x6G7kulXvBNddFUnUh32p+nZzTdc9KpBtn0CaZRFxhYhomnKpObVTsNoaRedykUTIbu5Ljdl+PpbJGaUWPqwTKjvXPsilo0t/KM3NZzBof2uTd8TOnIJzkfY6Y/RM/VR+yupknt5Bi8NUE6maFwZHH9SoTPWheJhPWg7a62+3zz0RA7iSyaWfyL/cRz7vRnGOjLYFWbREQK19vucVOQieWIR3bobh9mN75Luexyo32Vto8XiUUcGYjPzx2/0fvVQ1HIMdqzk7850f/FLP6DXT7H1hvoVV1QQxcZqYnaIh/VumWZ1IS/x6PH9Py0R/XgXDh1CM9GiS0mMMQYmue7IkghtenREChyfZmm3/ACsusv5BQQf6rIb2LXzige+tQqdWo1k5PTRiBqlUsriNWi62mOCxUKItSw2CwnpZcOymS298mItZQktqJZNsVFe/Ec1UqVZDzLL93jLAsdm2KMnp5pVpZ30EJzm7z/5lU2VpIsja3x4esdhEMJYvNbfPvJML9+P4VZNhjo+p3Wy7f4smWQrPA6ORHhnUvXiEiSmZl13n27k/H7YUk4H+XT975jb3efJyNhWt7qJLQYp5A6ZG44zMKDFUpS/eS9MF1XRpm5G0LPlxgZXuTypa+lizxzsxu0t/YRk0I0RXpVBqCEW9VrHByWpCUjELQn+jNEj8pFpnDl2he6VByvRXYZf7gkXJYoih0LewUqcrGmApVwL55OcPilpRTcF54OHPOKc+ry76OGoQamHOIFcS7/ATTZDis49n9TAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Imagen de células del dataset Smear2005&quot;
        title=&quot;Imagen de células del dataset Smear2005&quot;
        src=&quot;/static/d4319a775b96eaf76c8fb14b36dcecf8/f058b/dataset.png&quot;
        srcset=&quot;/static/d4319a775b96eaf76c8fb14b36dcecf8/c26ae/dataset.png 158w,
/static/d4319a775b96eaf76c8fb14b36dcecf8/6bdcf/dataset.png 315w,
/static/d4319a775b96eaf76c8fb14b36dcecf8/f058b/dataset.png 630w,
/static/d4319a775b96eaf76c8fb14b36dcecf8/40601/dataset.png 945w,
/static/d4319a775b96eaf76c8fb14b36dcecf8/78612/dataset.png 1260w,
/static/d4319a775b96eaf76c8fb14b36dcecf8/bb072/dataset.png 1318w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El dataset consiste en 917 imágenes, donde 242 son células normales (~26%) y 675 son anormales (~74%). Esto implica que las categorías están “desbalanceadas”, pues la “anormal” es casi 3 veces la “normal”.&lt;/p&gt;
&lt;p&gt;Aquí hay dos problemas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hay pocas células normales, por lo que el clasificador podría estar más sesgado hacia las anormales (problema de &lt;a href=&quot;https://towardsdatascience.com/class-imbalance-a-classification-headache-1939297ff4a4&quot;&gt;desbalanceo de clases&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Muy pocos ejemplos para que el clasificador aprenda a distinguir entre normales y anormales.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El primer problema lo abordamos mediante distintas técnicas (ej. &lt;a href=&quot;https://thecleverprogrammer.com/2020/07/20/data-augmentation-in-deep-learning/&quot;&gt;“Data augmentation”&lt;/a&gt;, &lt;a href=&quot;https://medium.com/@dhivyarao94/stratified-sampling-machine-learning-b622189ae77&quot;&gt;“Data Stratification”&lt;/a&gt;). Finalmente nos quedamos con la sugerencia que nos dio nuestra profesora &lt;a href=&quot;https://www.linkedin.com/in/ACoAACcr3X0BDugSwGKPilv2ujnACMM9wCsAkOQ&quot;&gt;Andrea Villaroel&lt;/a&gt;, que fue balancear los datos de entrenamiento. Así que alimentamos a Tuskita con 50% anormales y 50% normales, elegidas de forma aleatoria.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c7b6d37d27a5b962c652fb9bed4bafb1/7970d/training-set.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.835443037974684%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAABq0lEQVQoz32Sy2oUQRSGS8hCXIpCcCmCb+Ab+FzuREI2giD6CIISEg0iCjFOQtBZuIh9mZ6LiZlkZrodJnPprq5Lf9b0OMG0kAOHgjp//f85/ynB3yiKojytLfg91iQuB+eamTQX9SXmqhBVwlxb9kNJLVDseIqjQT6vXiK8iljMi9ZorNYU1pAry0GUs9/Q7PqaX4nmX9FqVrsXVQXt7g8ackEYaFpnWSmotHGP7NwTJ7w4S4sqAmLS7xFuvibcekP0boPzOOFr27ixFV8cYacvkTJjOkvJjEWVBiw7tv+P3Hy/xZNrgrUVwfp1QXuvRv0Ear7ks/PwOFYX4Dj0aWxv4r3dIPz0gXg4odUdcZqkDCcG4xYqOjsfeX73Ji/u3ebl/VWO63W+d93YYebGVpwkjtAsSGuPH/H01grP7tzg1cMHdLpj57NkL5B8a0qy3CBkmjHq9VyeMU0ScilJpS6LkzQnk2rhjyOcjkaMB32mceysid0CDdItcY6dZQptHOHSj6EDH/7waLZa+L5H4PsolV/+Ukpx6PmEUUS787PERVGDIPBJ07TE/AHV05zogsb4YAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Datos de entrenamiento&quot;
        title=&quot;Datos de entrenamiento&quot;
        src=&quot;/static/c7b6d37d27a5b962c652fb9bed4bafb1/f058b/training-set.png&quot;
        srcset=&quot;/static/c7b6d37d27a5b962c652fb9bed4bafb1/c26ae/training-set.png 158w,
/static/c7b6d37d27a5b962c652fb9bed4bafb1/6bdcf/training-set.png 315w,
/static/c7b6d37d27a5b962c652fb9bed4bafb1/f058b/training-set.png 630w,
/static/c7b6d37d27a5b962c652fb9bed4bafb1/40601/training-set.png 945w,
/static/c7b6d37d27a5b962c652fb9bed4bafb1/78612/training-set.png 1260w,
/static/c7b6d37d27a5b962c652fb9bed4bafb1/7970d/training-set.png 1908w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El segundo problema lo abordamos de igual forma que lo hicieron en DeepPap, con una técnica llamada &lt;a href=&quot;https://towardsdatascience.com/what-is-transfer-learning-8b1a0fa42b4&quot;&gt;“Transfer Learning”&lt;/a&gt;. En palabras simples, le enseñamos a nuestro clasificador a identificar distintos objetos de conocimiento general en una imagen (utilizando un dataset GIGANTE llamado &lt;a href=&quot;https://en.wikipedia.org/wiki/ImageNet&quot;&gt;ImageNet&lt;/a&gt;), y sobre el conocimiento adquirido, le enseñamos a clasificar las células.&lt;/p&gt;
&lt;h4&gt;3) El algoritmo&lt;/h4&gt;
&lt;p&gt;Al igual que en DeepPap, utilizamos el modelo &lt;a href=&quot;https://neurohive.io/en/popular-networks/vgg16/&quot;&gt;VGG16&lt;/a&gt; para desarrollar nuestro clasificador. Probamos otros pero este fue el que mejor nos funcionó.&lt;/p&gt;
&lt;p&gt;Aquí nos dimos cuenta que sabiendo las bases, es posible comenzar a aplicar otros algoritmos que ya están hechos y adaptarlos a tus necesidades.&lt;/p&gt;
&lt;p&gt;A modo de ejemplo, &lt;a href=&quot;https://avincartemard.github.io/blog/2017/09/08/dogs-vs-cats-classification-with-vgg16/&quot;&gt;aquí&lt;/a&gt; utilizan el mismo modelo para clasificar perros 🐶 y gatos 🐱. La verdad que adaptar eso a clasificación de células no es muy distinto 🙊.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Para aprender las bases de Deep Learning, vi los primeros videos de la especialización de &lt;a href=&quot;https://www.coursera.org/specializations/deep-learning&quot;&gt;Deep Learning&lt;/a&gt; en coursera (usé los 7 días gratuitos).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Resultados de TUSKITA&lt;/h3&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/087f3853794b1498c90105ee721d221f/5ebd7/resultado.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 22.78481012658228%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/klEQVQY0z2Qya6CQBRE+f+vwRVhIwgGIioBVBwRE+ZJBj+gXuou3qKTrjrd1dVX0TQN+/0eq9UKuq5DVVWs12tYloXtdgvHcRAEAVzXhW3biONYmOd5og+HA3a7HUzTxGazgfL5fHA+nwWkaYrX64X7/Y7T6YTj8Ygsy1AUhZyh7vse7/dbtO/7wniGpS6XC5R5ngVydV2H3++HqqrweDwkYBxHlGWJ6/WKKIowDINwNuUdPkDvdrtJ+H8gGxEuy4K6rgWyyTRNaNsWeZ5LMHXTNEiSREK+3694z+dTfIWAM+PidxnMr3BPxlbU3NOjZnPOyzAMhGEoHufPmf4BEf5fRnAKBZsAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Resultados&quot;
        title=&quot;Resultados&quot;
        src=&quot;/static/087f3853794b1498c90105ee721d221f/f058b/resultado.png&quot;
        srcset=&quot;/static/087f3853794b1498c90105ee721d221f/c26ae/resultado.png 158w,
/static/087f3853794b1498c90105ee721d221f/6bdcf/resultado.png 315w,
/static/087f3853794b1498c90105ee721d221f/f058b/resultado.png 630w,
/static/087f3853794b1498c90105ee721d221f/5ebd7/resultado.png 704w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El peor error que podemos cometer es indicar que una célula anormal es normal. Por ende, la métrica más relevante es el &lt;code class=&quot;language-text&quot;&gt;recall&lt;/code&gt; sobre las anormales (en la imagen aparece como &lt;code class=&quot;language-text&quot;&gt;cancer&lt;/code&gt;), el cual es 89%. Esto quiere decir que somos capaces de detectar el 89% de todas las células anormales. &lt;em&gt;Not bad&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Si bien estamos lejos del estado del arte (98%), los resultados son esperanzadores y creo que son lo suficientemente buenos para construir un asistente virtual.&lt;/p&gt;
&lt;h2&gt;Usos y Aplicaciones de TUSKITA&lt;/h2&gt;
&lt;p&gt;Una parte del problema es desarrollar el algoritmo, pero ¿cómo lo utilizamos en la práctica?&lt;/p&gt;
&lt;p&gt;Por eso creamos TUSKAS, un servicio accesible mediante Internet al cual le envías una foto de una célula y te dice si es normal o anormal:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/2f0b3132efc3cdf79e9f8189908d265b/c211c/api.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 54.43037974683544%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAABpElEQVQoz31SO5LUMBTUNbkHp+EGRGRExIQQUQQURW3CeMv2yLL1eZIsN/00nlmSXVV1SXpuPbW6bVJKWNcV27Z16Fqh9X3fUWt9FftecSha7VyFcc7heXjGPM8YhgHD5YILoetxHHt9WZYHrLW4EmG1+Pa04t1Hj/efA8ZpoqAVJsWIhQsfAhyVOU+VVOpYm+fxodx7j0BOJF8hKWJaE77+cvj+xyGQL6wblZ5zQSJZRPpTo4KNk506KbGuzymloLWG4zjQFHwujgygorGP7o1bLObxbyd2MlF50NoFdW/9oDbQy1SpNr4PVRpiIgdoJRMCE4KH3xyJbHQaq6pVVS0vZqu6exiZa0UkRy8qrEnO5FBhdBYbVapH6pteoOaKxJ7iA2eqOQs8v0Xh3yGhz4nK7HXuPczGlC+asvWYZgZhN1wdVV8XZCkQ2iSFT64vyKzlc9Z9oQuLp+/kG5UukrGNK+zIRH3u/siHHwiffqNxvdeGnUa9he4jvTZ3b9DNb33WUb48ofy83tw/a2+PW3hGDdd0H+Wjf/pvf9sdZ9qv4uT8A0dGV03AcVBsAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Foto de utilización de la API&quot;
        title=&quot;Foto de utilización de la API&quot;
        src=&quot;/static/2f0b3132efc3cdf79e9f8189908d265b/f058b/api.png&quot;
        srcset=&quot;/static/2f0b3132efc3cdf79e9f8189908d265b/c26ae/api.png 158w,
/static/2f0b3132efc3cdf79e9f8189908d265b/6bdcf/api.png 315w,
/static/2f0b3132efc3cdf79e9f8189908d265b/f058b/api.png 630w,
/static/2f0b3132efc3cdf79e9f8189908d265b/40601/api.png 945w,
/static/2f0b3132efc3cdf79e9f8189908d265b/78612/api.png 1260w,
/static/2f0b3132efc3cdf79e9f8189908d265b/c211c/api.png 1502w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;De esta forma, cualquier dispositivo conectado a Internet, podría enviar una imagen para ser analizada por TUSKITA.&lt;/p&gt;
&lt;p&gt;Para los más computines 🤓, esto significa que creamos una API. Cuando tu modelo está en python, puedes crear una API utilizando Flask e importarlo fácilmente.&lt;/p&gt;
&lt;p&gt;Con TUSKAS, creé una mini aplicación llamada &lt;em&gt;Tu segunda opinión&lt;/em&gt; donde subes una imagen y te dice si la célula es normal o anormal. Puedes ver una demostración en el siguiente video:&lt;/p&gt;
&lt;p&gt;&lt;video style=&quot;max-width: 100%&quot; preload=&quot;metadata&quot; src=&quot;/6ea8e6742b90f8411cfac10d0daf681f/demo.mp4&quot; controls&gt;&lt;/video&gt;&lt;/p&gt;
&lt;h2&gt;Estado actual del proyecto y desafíos a futuro&lt;/h2&gt;
&lt;p&gt;La verdad es que ninguno de los 5 siguió impulsando el proyecto 😅, por lo que el estado actual es de prototipo. Eso sí, todavía tenemos el código fuente, listo para continuar 🚀&lt;/p&gt;
&lt;p&gt;El desafío a continuación es mejorar TUSKAS para que sea capaz de recibir un PAP completo en vez de una imagen de célula. Para esto, tenemos que crear un nuevo clasificador (¿TUSKOTA?) que analice un PAP y localice cada células. Luego, usando Tuskita sobre cada célula localizada, podremos saber el estado general del PAP.&lt;/p&gt;
&lt;p&gt;Otro desafío no menor es seguir mejorando los resultados del algoritmo, ya que sabemos que hay espacio para hacerlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Y la pregunta más importante: ¿tendrá cabida una solución así en el estado actual de tecnología en Chile?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Espero que sí.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/95f541e05201a20ad9ae25480a52e2a2/f3583/preview.png"></media:content></item><item><title><![CDATA[Informática para no informáticos #3]]></title><description><![CDATA[¿Te suenan los conceptos de “Inteligencia artificial”, “Blockchain” e “IoT”? Seguramente los has escuchado, ya que son conceptos de…]]></description><link>https://blog.codeness.io/glosario-tecnologias/</link><guid isPermaLink="false">https://blog.codeness.io/glosario-tecnologias/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 28 Jan 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;¿Te suenan los conceptos de “Inteligencia artificial”, “Blockchain” e “IoT”?&lt;/p&gt;
&lt;p&gt;Seguramente los has escuchado, ya que son conceptos de tecnología muy de moda y que generalmente van acompañado de mucho marketing.&lt;/p&gt;
&lt;p&gt;En este post, voy a explicar estos conceptos y otros más desde el punto de vista del ámbito de salud.&lt;/p&gt;
&lt;p&gt;Para reírse un poquito… en &lt;a href=&quot;https://www.linkedin.com/pulse/la-cocina-de-salud-digital-alejandro-mauro/&quot;&gt;“La cocina de la Salud digital”&lt;/a&gt; tenemos la receta perfecta para venderle proyectos al ecosistema de innovación en salud (👀 léase con ironía):&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 58.22784810126582%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAABYlAAAWJQFJUiTwAAABIklEQVQoz62T6W6DQAyEef9HBCFx32c4kh+Ao8+REU3UqlKLNDLMesfj9eK4riue50nTNPIfj5OmqRRFoYJd1ynGcZSqqqSua7ndbjJNk8zz/AHjieRt2yYOH8MwKBBalkWuHO9w4CpkYvCInYJ930ue5+qSGASBRhzGcawugXVAPmCdSFHW1nV9tYyQ7/u6GSRJosiyTKMdCd8UgqMo4mYCcdypIG2WZSn3+/3PAzmO4yVo1q9nSAHOhW/agWMdjlx4IufI/tMhtsMw1DaiKFK3tGHtwRGvw0CUIhSAR/gUxIm5ul4JOFtj877v2pLhx5ZxiTNgw4Br21YniAN7Z+K4tzN/L+LYFSCZVh6Px0fid7C8L38K7eHSLrIJ/naq788Tp6adVEE1K0EAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Receta para venderle proyectos al ecosistema de innovación en salud&quot;
        title=&quot;Receta para venderle proyectos al ecosistema de innovación en salud&quot;
        src=&quot;/static/e183d18fa75556a82cb90a8f28ef51c9/f058b/receta.png&quot;
        srcset=&quot;/static/e183d18fa75556a82cb90a8f28ef51c9/c26ae/receta.png 158w,
/static/e183d18fa75556a82cb90a8f28ef51c9/6bdcf/receta.png 315w,
/static/e183d18fa75556a82cb90a8f28ef51c9/f058b/receta.png 630w,
/static/e183d18fa75556a82cb90a8f28ef51c9/40601/receta.png 945w,
/static/e183d18fa75556a82cb90a8f28ef51c9/78612/receta.png 1260w,
/static/e183d18fa75556a82cb90a8f28ef51c9/c211c/receta.png 1502w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;¿Qué son los “Algoritmos”?&lt;/h2&gt;
&lt;p&gt;Partimos con la definición de “Algoritmo”, ya que es un concepto que nos ayudará a entender mejor la Inteligencia Artificial:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Los algoritmos son reglas que muestran el paso a paso necesario para la realización de un problema. A través de una secuencia lógica, definida y finita de instrucciones, ellos determinan el camino a seguir para ejecutar una tarea. (&lt;a href=&quot;https://www.salesforce.com/mx/blog/2018/7/Machine-Learning-y-Deep-Learning-aprende-las-diferencias.html&quot;&gt;Fuente&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cuando un programador escribe un programa, lo que está haciendo es construir un algoritmo.&lt;/p&gt;
&lt;p&gt;Te daré dos ejemplos por si no te ha quedado muy clara la definición.&lt;/p&gt;
&lt;p&gt;El primer ejemplo, una receta para hacer huevo frito lo podríamos ver como un algoritmo:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 58.22784810126582%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/webp;base64,UklGRmQAAABXRUJQVlA4IFgAAACwAwCdASoUAAwAPtFWo0uoJKMhsAgBABoJaQATgAC6FnKW382wAAD+8Ir5V8pkXccAsjLTDajo3AuuUrsP0JEbgvYN7SoQq96w3gotXOJZBxXbGUewAAAA&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Receta para hacer huevo frito&quot;
        title=&quot;Receta para hacer huevo frito&quot;
        src=&quot;/static/aeadd248e1fb37d0f768b8c849ed4f77/8aab1/huevo-frito.webp&quot;
        srcset=&quot;/static/aeadd248e1fb37d0f768b8c849ed4f77/81b7c/huevo-frito.webp 158w,
/static/aeadd248e1fb37d0f768b8c849ed4f77/6ea66/huevo-frito.webp 315w,
/static/aeadd248e1fb37d0f768b8c849ed4f77/8aab1/huevo-frito.webp 630w,
/static/aeadd248e1fb37d0f768b8c849ed4f77/b2a51/huevo-frito.webp 830w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Imagen extraida de &lt;a href=&quot;https://architecnologia.es/programacion-etapas-programacion&quot;&gt;&quot;Programación: etapas de la programación&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El segundo ejemplo, en el ámbito de salud, tenemos algunos algoritmos de diagnóstico:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 74.68354430379746%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAACwklEQVQ4y31TOW4VQRSc63ACJCTOQMIhSE0CJ4BLkEKAQLIEIjFYRARkWCBh/Lf585fZ96W3maK6B2OZgNav/7rfdFe/pdp7/jXDs3snwN0HaKRBIwxaodEM2tlOzusZxq1nn/n7zdqa+4Ue4T35HOLkziPg/kP4hcDPqMMq6XAZdlhnA3aFxDodcEX/Imrdt2U8z629sj7aH/sGSSPhxb1B7MeAvwOmEYDFxJ+GkQOauoISHdRQ34IWDeRQQfbz/Hp4M4mB1gpGawc9DOiKAv56je1269D3PcZxJAmJ+gpmNFzbcwJKNg527SkeTo8HxMEWsuFNSiEPQyT0ibbFrTFK5MkRdR65IOzouxJpskORHRyp5/YZw0ANlNHoh54JTxgZqR3TNLkS2NS6MsIoKvRVjHi/QlulMKpDGvvI04A8PbxpHN1B42/QnL5B+fY1hvMzV8/pH8Kqrl2FhTLI8owZ5BBCIk4SZFnuyubNB0jIDeriG9T3C6hfl47ohpC2i2EW7zCt3mNcnMIsPwCyhiy+oN6+QhO8hK4v5pT/P2ZCiALYfiLOiY+Y/DMYwYaEL6DWTyGXj6HTU3hjT0lEEVRMhEfoIqdc2HEpWR+FkZjMyPooKKYth45oMbQ1ymiNIomQlz2yooOQFLamHLLjEcnhgDAIkJK0zDKHKs9dFDCzrMJDgO1mQTldIfCXOOy2qMocVVWibRvXXM+w0C0b0u926Ki3jpKxctEdI7fgfGLHbdebNMXxSEnRllXlYMx4oyo22LMppUw5IFlEstxGx40NiVoSDszARmgJyygk4RER98csUcLu7vd7ZwUzcYT8x0BxB4zQkliyoixR8KXYeWvFrknIbuf0LRYLrFarP5Zps1SbzQa7XcA3QdnYl2FfSMU0bKo9S2AxWNBv03YRklCIgRfl7rJrVLw0Z60zZibZyN9P2nVOQ3YCHwAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ALGORITMO DIAGNÓSTICO DEL DOLOR TORÁCICO AGUDO DE POSIBLE ORIGEN CORONARIO&quot;
        title=&quot;ALGORITMO DIAGNÓSTICO DEL DOLOR TORÁCICO AGUDO DE POSIBLE ORIGEN CORONARIO&quot;
        src=&quot;/static/4fd9a1a83589f706c3105509c94964e4/f058b/algoritmo-salud.png&quot;
        srcset=&quot;/static/4fd9a1a83589f706c3105509c94964e4/c26ae/algoritmo-salud.png 158w,
/static/4fd9a1a83589f706c3105509c94964e4/6bdcf/algoritmo-salud.png 315w,
/static/4fd9a1a83589f706c3105509c94964e4/f058b/algoritmo-salud.png 630w,
/static/4fd9a1a83589f706c3105509c94964e4/40601/algoritmo-salud.png 945w,
/static/4fd9a1a83589f706c3105509c94964e4/78612/algoritmo-salud.png 1260w,
/static/4fd9a1a83589f706c3105509c94964e4/74d4a/algoritmo-salud.png 2422w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;figure-caption&quot;&gt;Imagen extraida de guía &lt;a href=&quot;https://diprece.minsal.cl/garantias-explicitas-en-salud-auge-o-ges/guias-de-practica-clinica/infarto-agudo-del-miocardio/documentos-relacionados/&quot;&gt;&quot;Algoritmo dolor torácico&quot;&lt;/a&gt; del MINSAL&lt;/p&gt;
&lt;h2&gt;¿Qué es la “Inteligencia Artificial”?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Los principales libros de texto de IA definen el campo como el estudio de los “agentes inteligentes”: cualquier sistema que perciba su entorno y tome acciones que maximicen sus posibilidades de lograr sus objetivos &lt;a href=&quot;https://en.wikipedia.org/wiki/Artificial_intelligence&quot;&gt;Fuente&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Esta es una definición amplia, pero mucho más aterrizada de lo que suele ver en las noticias.&lt;/p&gt;
&lt;p&gt;Un ejemplo es una “aspiradora robot”, que son capaces de limpiar el suelo de tu casa, sin saber de antemano (al momento de comprar) cómo están distribuidos los cuartos o tus muebles.&lt;/p&gt;
&lt;p&gt;Existen distintas técnicas en el área de Inteligencia Artificial. A continuación veremos 2: “Machine Learning” y “Deep Learning”.&lt;/p&gt;
&lt;h3&gt;¿Qué es “Machine Learning”?&lt;/h3&gt;
&lt;p&gt;Machine Learning (Aprendizaje automático) son algoritmos que mejoran su rendimiento en una tarea a través de la experiencia.&lt;/p&gt;
&lt;p&gt;es una técnica de inteligencia artificial que te permite decirle a la computadora &lt;em&gt;“en base a estos ejemplos, encuentra la forma de resolver el problema”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Esa es una diferencia clave con algoritmos normales, donde el programador es el encargado de encontrar la forma de resolver el problema.&lt;/p&gt;
&lt;p&gt;Veamos un ejemplo. Digamos que queremos saber si un examen de PAP (Papanicolao) tiene células anormales, ¿cómo se hace esto con Machine Learning?&lt;/p&gt;
&lt;p&gt;Haces un programa al cual le pasas imágenes de los exámenes ya clasificados como “normal” y “anormal”. Luego, el programa “estudia” los exámenes y “aprende” a descifrar el problema.&lt;/p&gt;
&lt;p&gt;La parte de “estudiar” y “aprender” es automática.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/9cb6bb98c78e7ee4d933441ee54fef98/head-explosion.gif&quot; alt=&quot;Meme de &amp;#x22;cabeza explotando&amp;#x22;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Es mágico.&lt;/p&gt;
&lt;h3&gt;¿Qué es “Deep Learning”?&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Es un tipo de algoritmo de Machine Learning, construido a partir del principio de redes neuronales (&lt;a href=&quot;https://www.salesforce.com/mx/blog/2018/7/Machine-Learning-y-Deep-Learning-aprende-las-diferencias.html&quot;&gt;fuente&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Es decir, es un tipo particular de algoritmo de Machine Learning. Es una herramienta más para resolver problemas.&lt;/p&gt;
&lt;p&gt;Esta técnica es popular por su uso en clasificación de imágenes y de texto. Son algoritmos muy buenos para detectar patrones de forma automática.&lt;/p&gt;
&lt;p&gt;Por ejemplo, &lt;a href=&quot;https://www.linkedin.com/feed/update/urn:li:activity:6634224688342069248/&quot;&gt;en mi proyecto final de DATA SCIENCE en Desafio Latam&lt;/a&gt;, utilizamos &lt;em&gt;Deep Learning&lt;/em&gt; para buscar anormalidades en muestras del examen Papanicolao (PAP).&lt;/p&gt;
&lt;h2&gt;¿Qué es la “Automatización”?&lt;/h2&gt;
&lt;p&gt;Muchos confunden automatización con inteligencia artificial.&lt;/p&gt;
&lt;p&gt;La automatización es simplemente automatizar alguna tarea repetitiva.&lt;/p&gt;
&lt;p&gt;La inteligencia artificial podemos verla como &lt;strong&gt;&lt;em&gt;un medio&lt;/em&gt; para lograr automatización&lt;/strong&gt;. De hecho, puedes automatizar muchas cosas con algoritmos corrientes.&lt;/p&gt;
&lt;p&gt;Una aplicación sencilla que te ayuda a calcular el IMC de un paciente es un tipo de automatización, pues te ahorra hacer los cálculos mentalmente.&lt;/p&gt;
&lt;p&gt;Algo más elaborado son extensiones de Chrome que te permiten ejecutar acciones repetitivas en el explorador. Por ejemplo, si pasas datos de un excel a una plataforma web habitualmente, una herramienta de ese estilo podría hacerlo por ti.&lt;/p&gt;
&lt;p&gt;Así que cuando hablamos de automatización, no hablamos necesariamente de inteligencia artificial.&lt;/p&gt;
&lt;h2&gt;¿Qué es el “Blockchain”?&lt;/h2&gt;
&lt;p&gt;Blockchain es una tecnología que permite que distintos participantes que no confían entre sí, puedan ponerse de acuerdo sin la necesidad de un árbitro.&lt;/p&gt;
&lt;p&gt;En finanzas, podemos crear una moneda virtual que nos permita transferir a otras personas sin necesidad de un banco.&lt;/p&gt;
&lt;p&gt;En salud, su uso está en estudio y evaluación. Uno de los usos que más me gusta es en la cadena de suministro farmacéutica, donde por ejemplo, puedes llevar un registro de los cambios de propiedad de los medicamentos recetados a nivel nacional, sin intervención de un tercero.&lt;/p&gt;
&lt;p&gt;Puedes ver el post &lt;a href=&quot;/blockchain-en-salud/&quot;&gt;“Blockchain en salud”&lt;/a&gt; para más detalle y ejemplos de esta tecnología.&lt;/p&gt;
&lt;h2&gt;¿Qué es “Big Data”?&lt;/h2&gt;
&lt;p&gt;Big Data son técnicas y tecnologías que te permite “trabajar” con “grandes cantidades de datos”.&lt;/p&gt;
&lt;p&gt;Con &lt;em&gt;trabajar&lt;/em&gt; me refiero a procesar los datos para obtener alguna información de utilidad. Puede ser algo tan simple como obtener un promedio o algo más complicado como estimar un valor futuro.&lt;/p&gt;
&lt;p&gt;Con &lt;em&gt;grandes cantidades de datos&lt;/em&gt; me refiero a una cantidad tal que un computador normal no pueda procesarlos.&lt;/p&gt;
&lt;p&gt;Es clave que estos dos conceptos estén presente. Puede que tengas que guardar mucha información, pero si no tienes que trabajarla, no necesitas Big Data. Simplemente necesitas un disco duro extra.&lt;/p&gt;
&lt;h2&gt;¿Qué es “IoT”?&lt;/h2&gt;
&lt;p&gt;“IoT” (de “Internet of things”, “Internet de las cosas”) es un concepto que se refiere a la conexión digital de dispositivos cotidianos con internet.&lt;/p&gt;
&lt;p&gt;Un ejemplo en medicina puede ser un termómetro que se utilice a la hora de transportar fármacos que requieran estar bajo una cierta temperatura. El termómetro podría estar conectado a Internet para que los operadores vean en tiempo real las variaciones de temperatura.&lt;/p&gt;
&lt;h2&gt;Conclusiones&lt;/h2&gt;
&lt;p&gt;Una de las razones por las que los conceptos se mezclan es porque hay sinergias entre estas tecnologías:&lt;/p&gt;
&lt;p&gt;IoT te permite conectar dispositivos a internet, y por ende, recolectar gran cantidad de datos. Si quieres demostrar inmutabilidad de estos, Blockchain es una opción. Y si necesitas trabajar sobre esos datos, seguramente necesitarás Big Data. Y si quieres extraer patrones o aprender de la información recolectada, tendrás que utilizar algún algoritmo de inteligencia artificial.&lt;/p&gt;
&lt;p&gt;A continuación una tabla resumen con las tecnologías y conceptos definidos en este post.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tecnología&lt;/th&gt;
&lt;th&gt;Descripción&lt;/th&gt;
&lt;th&gt;Ejemplo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Automatización&lt;/td&gt;
&lt;td&gt;Lograr ejecutar una tarea de forma automática&lt;/td&gt;
&lt;td&gt;Generación de alertas cuando hay bajo stock de insumos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Algoritmo&lt;/td&gt;
&lt;td&gt;Reglas que muestran el paso a paso necesario para la realización de un problema&lt;/td&gt;
&lt;td&gt;Una aplicación que al responder un cuestionario te diga el riesgo de tener COVID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inteligencia Artificial&lt;/td&gt;
&lt;td&gt;Cualquier sistema que perciba su entorno y tome acciones que maximicen sus posibilidades de lograr sus objetivos&lt;/td&gt;
&lt;td&gt;Predecir la probabilidad de rehospitalización de un paciente&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine Learning&lt;/td&gt;
&lt;td&gt;Son algoritmos que mejoran su rendimiento en una tarea a través de la experiencia.&lt;/td&gt;
&lt;td&gt;Detectar el núcleo en una imagen de una célula&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deep Learning&lt;/td&gt;
&lt;td&gt;Un tipo de Machine Learning que imita la red neuronal del cerebro humano para resolver un problema&lt;/td&gt;
&lt;td&gt;Detectar el riesgo de cáncer en un examen PAP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blockchain&lt;/td&gt;
&lt;td&gt;Tecnología que permite que distintos participantes que no confían entre sí, puedan ponerse de acuerdo sin la necesidad de un árbitro.&lt;/td&gt;
&lt;td&gt;Llevar un registro de los cambios de propiedad de los medicamentos recetados a nivel nacional, sin intervención de un tercero (descentralizado)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Big Data&lt;/td&gt;
&lt;td&gt;Son técnicas y tecnologías que te permiten “trabajar” con “grandes cantidades de datos”.&lt;/td&gt;
&lt;td&gt;Datos recolectados por los Glucómetros a nivel nacional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IoT&lt;/td&gt;
&lt;td&gt;Es un concepto que se refiere a la conexión digital de dispositivos cotidianos con internet&lt;/td&gt;
&lt;td&gt;Glucómetros conectados a internet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En futuras publicaciones continuaremos explicando términos utilizados en el ambiente de la informática.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/ef8c52ba257cf5f830e94a4fe84f526a/f3583/preview.png"></media:content></item><item><title><![CDATA[Informática para no informáticos #2]]></title><description><![CDATA[Continuemos con el ejemplo del post anterior: te hacen jefe de una unidad de informática en un centro de medicina, y tu primera medida es…]]></description><link>https://blog.codeness.io/etapas-en-desarrollo-de-software/</link><guid isPermaLink="false">https://blog.codeness.io/etapas-en-desarrollo-de-software/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Fri, 22 Jan 2021 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Continuemos con el ejemplo del &lt;a href=&quot;/glosario-para-outsourcing/&quot;&gt;post anterior&lt;/a&gt;: &lt;em&gt;te hacen jefe de una unidad de informática en un centro de medicina, y tu primera medida es implementar un software de gestión para el centro&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Finalmente &lt;strong&gt;decidiste contratar una empresa de desarrollo de software&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;¿Ahora qué?&lt;/em&gt; te preguntas…&lt;/p&gt;
&lt;p&gt;En este &lt;em&gt;post&lt;/em&gt;, veremos las etapas típicas de un proyecto de creación de software, de manera de que te enteres en qué consiste y qué responsabilidades tendrías tú como “cliente”.&lt;/p&gt;
&lt;h2&gt;Etapas en un proyecto de desarrollo de software&lt;/h2&gt;
&lt;p&gt;Un &lt;strong&gt;proyecto de desarrollo de software&lt;/strong&gt; es parecido a otros tipos de proyectos. La diferencia central es que el resultado del proyecto es un software o programa.&lt;/p&gt;
&lt;p&gt;Este tipo de proyectos se realizan bajo un &lt;strong&gt;proceso&lt;/strong&gt;, el cual define la forma en la cual se llevará a cabo el proyecto.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es importante que el proceso que utilice la empresa que contrates te involucre a ti y a los usuarios finales&lt;/strong&gt;. Si no es así, ¡tu proyecto está destinado a fallar!&lt;/p&gt;
&lt;h3&gt;¿Cómo saber sí la empresa de software me involucrará a mí y a los usuarios finales?&lt;/h3&gt;
&lt;p&gt;La forma fácil es preguntar &lt;em&gt;“¿Cuándo podremos tener una versión inicial?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si te dicen que en 1 año más, lo más probable es que utilicen un proceso en &lt;a href=&quot;https://es.wikipedia.org/wiki/Desarrollo_en_cascada&quot;&gt;&lt;em&gt;cascada&lt;/em&gt;&lt;/a&gt;, donde se intenta definir TODO el proyecto en un principio, parecido a la construcción de un edificio.&lt;/p&gt;
&lt;p&gt;El problema es que al comienzo uno no tiene muy claro lo que quiere ni las características que debe tener el software para que sea fácil de usar por los usuarios. A lo más puedes tener ideas (hipótesis) de una posible solución. Incluso cuando todos los involucrados (proveedor, cliente y usuarios) consideren que una solución “en papel” es perfecta, la única manera de saberlo con seguridad es utilizando el software. Así que mientras antes lo probemos, mejor.&lt;/p&gt;
&lt;p&gt;Idealmente, la empresa que contrates utilizará una “metodología ágil”. Recordando &lt;a href=&quot;/glosario-para-outsourcing&quot;&gt;el post anterior&lt;/a&gt;, este tipo de metodología busca entregar software que te ayude lo más rápido posible de manera que en un par de semanas ya veas y uses la primera versión. Las siguientes versiones se hacen paso a pasito (cada 2 ó 6 semanas). El plus de estas metodologías es que buscan involucrar al cliente y los usuarios finales a lo largo de todo el proyecto.&lt;/p&gt;
&lt;p&gt;Aquí hay una imagen que revela el “paso a pasito” que es ideal en proyectos de software:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.45569620253164%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsSAAALEgHS3X78AAABxUlEQVQoz41SW0/qQBDmDxtj/APGaHz0RdQXk5NjNCZG490HEw4YhACCWMK1rQ3UAgdtKYVuu93u6rRb8PKik15mJvPNzPdlYm9TY4z9xmeMzsIYvJRSz/M+1fzWArDv+4ahq3KVeBhCNLH6zxIf6BNvoMkEO7z6tafofYUvwcHBD7uOLCTtiQX+2Bw81dIc7LlOs5JCzoSDS8mLQup6xiXGs4SQ1G2ahPYvmSqVyoX7IuSr+7uF7XhmbeVVbPUy6avFhcv5ufrBHhcgAgNtwzBgfwCrqmqaJoSMUk2Wu6KoSSJGSO92JeFR77T77fYXzo7jwCYgG/F93itYx6d0qqIHRTTSmTLmh2UBGDBDw7DHw5C8jUIHQp5BtmUNXzhsPNKHL9qH2pw6yFjJHIPz3Co+CQlwelK+rwS0O1JZamR5tSILrUbuu2AQIIRAeNd1tJBSMZvN53LYdTuieLf7Vyk/kJE5qAj1sxNLEiPBeI//qvqYSFijkVR+aOTz9WZzZyP+Z3urVq2tr66ebsZvL85b15c3y0t3ayuVo0M+L5rsYewiBG1cZL8xijEGCaN7nN0mSBt+2ecL+8GCc6ZBE/6A5tOG7xl521C+goPFAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Paso a pasito&quot;
        title=&quot;Paso a pasito&quot;
        src=&quot;/static/4de8eb80a452f230780de77eb3df0783/f058b/mvp.png&quot;
        srcset=&quot;/static/4de8eb80a452f230780de77eb3df0783/c26ae/mvp.png 158w,
/static/4de8eb80a452f230780de77eb3df0783/6bdcf/mvp.png 315w,
/static/4de8eb80a452f230780de77eb3df0783/f058b/mvp.png 630w,
/static/4de8eb80a452f230780de77eb3df0783/40601/mvp.png 945w,
/static/4de8eb80a452f230780de77eb3df0783/78612/mvp.png 1260w,
/static/4de8eb80a452f230780de77eb3df0783/eb645/mvp.png 2500w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;center&gt;Imagen extraida de &lt;a href=&quot;https://medium.com/idealo-tech-blog/what-is-minimum-viable-data-product-49269e338d85&quot;&gt;&quot;What is Minimum Viable (Data) Product?&quot;&lt;/a&gt;&lt;/center&gt;
&lt;h2&gt;¿Cuáles son las etapas en un proyecto de software?&lt;/h2&gt;
&lt;p&gt;Independiente del proceso que la empresa utilice, existen actividades claves que son transversales y comunes. Las voy a definir como etapas secuenciales porque así es más fácil entender. Sin embargo, en la práctica son actividades que se realizan a lo largo de todo el proyecto.&lt;/p&gt;
&lt;p&gt;Las actividades base son las siguientes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Etapa de concepción&lt;/strong&gt;: descubrir el objetivo principal del proyecto y riesgos asociados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa de elaboración&lt;/strong&gt;: definir un software mínimo que cumpla con el objetivo del proyecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa de construcción&lt;/strong&gt;: construir el software mínimo rápido y manteniendo la calidad. El objetivo es tener un software usable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa de estabilización&lt;/strong&gt;: el software está instalado y los usuarios ya lo están usando. Existen algunas observaciones que requieren ser atendidas (por ejemplo: errores o problemas de uso). Puede haber una fase de transición, donde el proveedor capacita a los usuarios, y una fase de garantía, donde el proveedor se asegura que el sistema no tenga problemas ni bugs.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Etapa 1: Concepción&lt;/h3&gt;
&lt;p&gt;Tú como cliente tienes un problema que requiere solución. Así que tu labor es tener más o menos una idea de cuáles son los problemas que quieres que el software te ayude a solucionar.&lt;/p&gt;
&lt;p&gt;Es normal que no tengas conocimientos para definir una solución ni que tengas total claridad del problema de fondo.&lt;/p&gt;
&lt;p&gt;Un buen proveedor te ayudará a descubrirlo en un proceso que los informáticos llaman “levantamiento de requisitos”.&lt;/p&gt;
&lt;p&gt;En el levantamiento de requisitos las empresas &lt;strong&gt;evalúan la situación actual&lt;/strong&gt;, &lt;strong&gt;te ayudan a descubrir una situación deseada (meta)&lt;/strong&gt; y comienzan a pensar sobre &lt;strong&gt;posibles caminos que te permiten llegar a la meta&lt;/strong&gt;. Puede darse el caso de que el camino NO SEA construir un software a la medida (lo que quieres), sino que sea utilizar uno ya existente (lo que realmente necesitas).&lt;/p&gt;
&lt;p&gt;Algunas empresas cobran por esto, parecido a una consulta médica. Hay otras que lo hacen gratis como parte de su estrategia de ventas.&lt;/p&gt;
&lt;p&gt;Al final de esta etapa, &lt;strong&gt;tú y el proveedor tendrán una idea si el proyecto es factible, considerando costos, plazos y el objetivo del proyecto&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;¿Cómo se ve esto en la práctica? Tienes una o varias reuniones con el equipo del proveedor, donde con un &lt;em&gt;screening&lt;/em&gt; te van haciendo preguntas para descubrir que es lo que realmente necesitas (la meta). Luego, es posible que te llegue una &lt;em&gt;propuesta&lt;/em&gt; de trabajo que indique el paso a paso, plazos y cuánto va a costar. Esta propuesta puede involucrar crear el software o ser un ante proyecto para definir mejor el software a construir. Luego tu opción es aceptar la propuesta o rechazarla.&lt;/p&gt;
&lt;h3&gt;Etapa 2: Elaboración&lt;/h3&gt;
&lt;p&gt;La etapa de concepción es el &lt;em&gt;por qué&lt;/em&gt;, mientras que la de elaboración es el &lt;em&gt;cómo&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;En esta etapa, tú y tu equipo junto a el proveedor trabajan en &lt;em&gt;definir&lt;/em&gt; un producto mínimo viable (MVP): un producto bien chiquito que cumpla con el objetivo más importante del proyecto.&lt;/p&gt;
&lt;p&gt;Es importante que en esta etapa se involucren todos los interesados: tú, los usuarios finales y el equipo proveedor. Muchas veces el proveedor no sabe nada sobre tu contexto, y si ellos diseñan el sistema sin tu ayuda, es probable que el resultado sea un software para informáticos y no para clínicos (¿suena familiar?).&lt;/p&gt;
&lt;p&gt;El resultado de esta etapa puede ser bocetos, diseños o mockups del sistema. &lt;strong&gt;El nivel de involucramiento de los participantes de tu lado debe ser al menos de dar feedback&lt;/strong&gt; sobre los bocetos.&lt;/p&gt;
&lt;p&gt;Es posible que esta etapa considere solo una parte de todo el sistema, dejando para “más adelante” la definición del resto. Recuerda que estas etapas pueden irse repitiendo a lo largo del proyecto, es normal y deseable hacerlo “paso a paso” en vez de definir todo de un golpe.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Nota: Muchas veces esta etapa de “Elaboración” es lo que algunas empresas venden como “ante proyecto”.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Una vez ya están validados los bocetos, pasamos a…&lt;/p&gt;
&lt;h3&gt;Etapa 3: Construcción&lt;/h3&gt;
&lt;p&gt;En construcción el proveedor hará su “magia” y luego de un tiempo razonable (2 a 6 semanas) te entregarán un software funcional.&lt;/p&gt;
&lt;p&gt;El software que construyan va en línea con el &lt;em&gt;por qué&lt;/em&gt; (concepción) y con el &lt;em&gt;cómo&lt;/em&gt; (elaboración). Pueden haber diferencias, y es posible que algo que visualizaron en un inicio no funcione muy bien en la práctica.&lt;/p&gt;
&lt;p&gt;Durante la construcción, el equipo podrá preguntarte cosas o darte alternativas para ciertos escenarios.&lt;/p&gt;
&lt;h3&gt;Etapa 4: Estabilización&lt;/h3&gt;
&lt;p&gt;La estabilización es la etapa en la cual el software ya está instalado y los usuarios finales lo están usando.&lt;/p&gt;
&lt;p&gt;Es posible que existan errores o fallas. Lo importante es que la empresa que construyó el software te ofrezca un periodo de garantía donde se comprometa a solucionar los problemas que surjan con el uso. Existen 2 grandes clases de problemas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bug&lt;/strong&gt;: existe un error o un defecto que hace que el programa no funcione correctamente. Generalmente ocurren por secuencia de pasos que el programador no consideró (casos bordes) pero que el usuario ejecutó.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problema de usabilidad&lt;/strong&gt;: es cuando existe una acción que es difícil de realizar en el sistema.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La gracia de pasar por un proceso de “elaboración” donde involucre a los usuarios finales y además de construir el software en iteraciones, es que estos problemas aparecen antes.&lt;/p&gt;
&lt;h2&gt;Palabras finales&lt;/h2&gt;
&lt;p&gt;Espero que este post te haya sido de ayuda para entender cuáles son las etapas de un proyecto de software y para que te hagas una idea de cuál es tu nivel de involucramiento.&lt;/p&gt;
&lt;p&gt;La verdad es que &lt;strong&gt;los proyectos de software son colaborativos&lt;/strong&gt;. Y como tal, no es algo que mandas a construir y luego te olvidas. Es importante que tú y tu equipo tengan una colaboración activa en el proceso de construcción, así que tienes que considerar esto como parte de la inversión de recursos.&lt;/p&gt;
&lt;p&gt;En futuras publicaciones continuaremos explicando términos utilizados en el ambiente de la informática, para seguir creando puentes entre ambos mundos.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/81c11e5c1158d3632dd1250c8ff0acad/f3583/preview.png"></media:content></item><item><title><![CDATA[Iniciando una carrera Tech desde Enfermería]]></title><description><![CDATA[Cuando digo que soy enfermera y también desarrolladora de software, las personas se sorprenden e intrigan por la extraña combinación…]]></description><link>https://blog.codeness.io/iniciando-una-carrera-tech-desde-enfermeria/</link><guid isPermaLink="false">https://blog.codeness.io/iniciando-una-carrera-tech-desde-enfermeria/</guid><dc:creator><![CDATA[Eliana Quijada]]></dc:creator><pubDate>Fri, 15 Jan 2021 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Cuando digo que soy enfermera y también desarrolladora de software, las personas se sorprenden e intrigan por la extraña combinación.&lt;/p&gt;
&lt;p&gt;Generalmente esa conversación continua con preguntas como: ¿Por qué decidiste cambiar de profesión?, ¿Cómo pudiste hacerlo?, ¿Ha sido muy difícil?.&lt;/p&gt;
&lt;p&gt;Por este motivo, voy a contar parte de mi historia. Quizás esta historia te puede ayudar a visualizar de que informática y salud no son mundos opuestos, o tal vez te puede motivar si tienes ganas de aprender informática.&lt;/p&gt;
&lt;h2&gt;El problema del exceso de información en salud&lt;/h2&gt;
&lt;p&gt;En los últimos años que ejercí la enfermería de forma tradicional, estuve en un cargo mucho más administrativo que clínico. Era la &lt;em&gt;encargada de la continuidad de la atención&lt;/em&gt; de una sala en un hospital público.&lt;/p&gt;
&lt;p&gt;Mi labor consistía en saber todo lo que sucedía en la sala, desde la atención que recibía cada uno de los pacientes hospitalizados (en qué etapa de su tratamiento se encontraban, si había alguna complicación, si se necesitaba gestionar algún examen especial, y un largo etcétera), hasta velar porque hubiese stock de todos los insumos esenciales para la atención (desde jeringas y sueros, hasta cloro para limpiar las superficies).&lt;/p&gt;
&lt;p&gt;Este cargo me ayudó a aprender muchas cosas de cómo funciona en realidad el sistema público en nuestro país, la burocracia que implica, los malabares que se hacen con los escasos recursos y sobre todo, la enorme cantidad de información que se maneja día a día (tanto información clínica, como de insumos, de infraestructura, de personal, etc).&lt;/p&gt;
&lt;p&gt;Este exceso de información me llevó a comenzar a cuestionarme la forma en la que se estaba manejando y aprovechando todo ese mar de datos.&lt;/p&gt;
&lt;h2&gt;¿Por qué desarrollo de software?&lt;/h2&gt;
&lt;p&gt;Paralelamente, en el ámbito más personal sentía que debía encontrar alguna labor en la que pudiese aprovechar mis habilidades personales.&lt;/p&gt;
&lt;p&gt;Llevaba poco más de 5 años trabajando como enfermera, y creo que realmente ponía el corazón y todo mi entusiasmo en lo que hacía. Sin embargo, me era inevitable sentir que algo me faltaba, y es aquí cuando por cosas de la vida, comienzo a conocer un poco de la programación y su lógica, y simplemente fue como un flechazo a primera vista.&lt;/p&gt;
&lt;p&gt;Volviendo al ámbito laboral, el tener una perspectiva más amplia me permitió sentir la frustración de querer realizar muchas cosas en beneficio de la atención del paciente, pero que por temas de tiempo, recursos y apoyo, era habitual que no pudiesen realizarse. Y al mismo tiempo, me sirvió de motivación para buscar la manera de poder aportar a mejorar la atención con estas nuevas habilidades que estaba adquiriendo.&lt;/p&gt;
&lt;p&gt;Así fue como tomé la para algunos “alocada” decisión de renunciar a mi puesto y dedicarme 100% a aprender de esta nueva área, y adquirir poco a poco la experiencia necesaria para generar productos de calidad, que sean realmente un aporte para mejorar la atención de salud.&lt;/p&gt;
&lt;h2&gt;¿Cómo empezar a aprender a programar?&lt;/h2&gt;
&lt;p&gt;Mi primer paso fue realizar cursos cortos online sobre las bases de la programación, los cuales hice mientras aún estaba trabajando. Estos funcionaron como mi &lt;em&gt;prueba de admisión&lt;/em&gt; para saber si realmente me gustaba y si sentía que tenía habilidad para esto.&lt;/p&gt;
&lt;p&gt;Como terminé muy contenta estos cursos, comencé la búsqueda de cómo continuar. La verdad es que me hubiese encantado tener la posibilidad de estudiar ingeniería en informática, pero ni el tiempo ni los recursos me acompañaban para volver a tomar una carrera universitaria completa.&lt;/p&gt;
&lt;p&gt;Entonces llegó a mis oídos la existencia de los &lt;em&gt;Bootcamp&lt;/em&gt;, que son cursos intensivos y prácticos, que en muy poco tiempo (meses en vez de años) intentan entregar conocimientos y herramientas que te permitan entrar al mercado laboral.&lt;/p&gt;
&lt;p&gt;La definición suena un poco disruptiva con respecto a la forma convencional a la que estamos acostumbrados, pero definitivamente con la suficiente dedicación y sacrificio, el método funciona.&lt;/p&gt;
&lt;p&gt;En mi caso opté por entrar a &lt;a href=&quot;https://4geeksacademy.co/es/inicio&quot;&gt;4Geeks&lt;/a&gt;, una de las características que más me atrajo es su soporte profesional, algo muy necesario sobre todo si no tienes un título que respalde tus conocimientos en el área.&lt;/p&gt;
&lt;p&gt;En realidad, hay muchas maneras de poder aprender sobre informática, así como muchos perfiles para aplicarla en salud. En ningún caso es obligación aventurarse a hacer un cambio tan radical como renunciar y volver a estudiar, pero creo que cada uno debe tomar el camino que más le acomode y agrade.&lt;/p&gt;
&lt;h2&gt;¿Cambio de profesión?&lt;/h2&gt;
&lt;p&gt;La verdad es que no siento que realmente sea un “cambio”, más bien siento que es un “ampliar conocimientos”.&lt;/p&gt;
&lt;p&gt;Soy enfermera y nunca dejaré de serlo, no me gusta cuando suelen referirse a “cuando eras enfermera”, como si fuese algo del pasado. Es posible aportar al cuidado de las personas desde una mirada que integre la enfermería con el desarrollo de software.&lt;/p&gt;
&lt;p&gt;Además, ¿quién mejor para saber cuáles son los problemas y dolores que tienen los profesionales de salud, que alguien que estuvo en su lado del cristal?&lt;/p&gt;
&lt;p&gt;Siento que es necesario que dentro del mundo de los &lt;em&gt;“creadores de soluciones”&lt;/em&gt; hayan personas que no sólo puedan hablar el idioma, sino que también hayan tenido las necesidades de los que están &lt;em&gt;“donde las papas queman”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Mientras trabajaba en el hospital, cada día me tocaba sufrir con los sistemas informáticos poco amigables, con su usabilidad de la década de los 90 o muchas funcionalidades inútiles para el quehacer diario. También me tocó lidiar con la infinidad de papeles, formularios, pautas y reportes, que se perdían o requerían escribir muchas veces la misma información.&lt;/p&gt;
&lt;p&gt;Es realmente esperanzador que con el aporte de la informática, todo esto podría reducir su complejidad, disminuyendo el esfuerzo y tiempo necesario, para así destinarlo a lo realmente importante: &lt;strong&gt;la atención del paciente&lt;/strong&gt;.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/46db69e5724bfe7243f6d132291ffb42/f3583/preview.png"></media:content></item><item><title><![CDATA[Informática para no informáticos #1]]></title><description><![CDATA[Imagina que el día de mañana te hacen jefe de una unidad de informática en un centro de medicina, y que tu primera medida es implementar un…]]></description><link>https://blog.codeness.io/glosario-para-outsourcing/</link><guid isPermaLink="false">https://blog.codeness.io/glosario-para-outsourcing/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Thu, 07 Jan 2021 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Imagina que el día de mañana te hacen jefe de una unidad de informática en un centro de medicina, y que tu primera medida es implementar un software de gestión para el centro.&lt;/p&gt;
&lt;p&gt;Digamos que viste todos los sistemas informáticos existentes y que ninguno te convenció. ¿Qué hacer ahora?&lt;/p&gt;
&lt;p&gt;Una de tus opciones es contratar a una empresa para que cree un sistema informático que se ajuste a lo que tu centro requiere.&lt;/p&gt;
&lt;p&gt;Así que comienzas a buscar empresas que se encarguen de esto. Pero luego de una búsqueda en Google y de ver muchas páginas de empresas de informática, quedas en blanco.&lt;/p&gt;
&lt;p&gt;¿Qué pasó?&lt;/p&gt;
&lt;p&gt;Pasa que la mayoría de este tipo de empresas utilizan un lenguaje poco amigable para decirte qué es lo que hacen y cómo te pueden ayudar. Abundan los “entregamos las mejores soluciones a tus necesidades”, “soluciones a medida”, “metodologías ágiles”, y mi favorito: “usamos las últimas tecnologías”.&lt;/p&gt;
&lt;p&gt;Dicho esto, la idea de este post es ayudarte a entender lo que quieren decir los proveedores de software con su jerga.&lt;/p&gt;
&lt;p&gt;Nota: Cada pregunta está basada en lo que dicen páginas reales de proveedores 🙈&lt;/p&gt;
&lt;h3&gt;¿Qué es el “desarrollo de software”?&lt;/h3&gt;
&lt;p&gt;El desarrollo de software es la acción de construir un software. “Estoy desarrollando un sistema” es como decir “estoy construyendo un sistema”.&lt;/p&gt;
&lt;h3&gt;¿Qué es “outsourcing”?&lt;/h3&gt;
&lt;p&gt;Outsourcing es lo que hace una empresa cuando contrata a un tercero para solucionar una problemática interna.&lt;/p&gt;
&lt;p&gt;En el ejemplo, al contratar una empresa externa, estás haciendo “outsourcing”.&lt;/p&gt;
&lt;p&gt;Lo contrario es hacer un “desarrollo propio” que significa contratar tus propios ingenieros y que ellos creen el software.&lt;/p&gt;
&lt;h3&gt;¿Qué es el “desarrollo a la medida”?&lt;/h3&gt;
&lt;p&gt;Piensa que quieres comprarte ropa. Una de tus opciones es ir al Mall y comenzar a probar distintas prendas hasta que encuentras una que te guste y te quede bien.&lt;/p&gt;
&lt;p&gt;Si no hay nada que te quede, otra opción es mandar a hacer ropa. En este caso, vas con un sastre, quien te toma distintas medidas y crea una prenda perfecta para ti.&lt;/p&gt;
&lt;p&gt;Cuando hablamos de “desarrollo a la medida”, nos referimos a este último caso. La empresa proveedora es el “sastre” y la vestimenta es el software.&lt;/p&gt;
&lt;h3&gt;¿Qué significa “levantamiento de requisitos”?&lt;/h3&gt;
&lt;p&gt;Continuando con la analogía, el proceso de “tomar distintas medidas” en el software es conocido como &lt;em&gt;“levantamiento de requisitos”&lt;/em&gt;. Aquí los proveedores se encargan de averiguar cuáles son los problemas que quieres solucionar con el sistema.&lt;/p&gt;
&lt;h3&gt;¿A qué se refieren con “entregar solución a tus necesidades”?&lt;/h3&gt;
&lt;p&gt;Cuando los informáticos hablan de “necesidad”, se refieren a algo que tú necesitas que el software haga. Por ejemplo, podrías necesitar que el sistema te ayude a gestionar los turnos de tu personal.&lt;/p&gt;
&lt;p&gt;Cuando los informáticos hablan de “soluciones”, se refieren al resultado del proyecto: el sistema informático.&lt;/p&gt;
&lt;p&gt;Así que &lt;em&gt;“entregar solución a tus necesidades”&lt;/em&gt; es como decir &lt;em&gt;“construimos sistemas informáticos que hagan lo que tú necesitas que haga”&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;¿Qué son las “metodologías ágiles”?&lt;/h3&gt;
&lt;p&gt;Nada de raro es que aparezca en la página de una empresa “trabajamos con metodologías ágiles”. ¿A qué se refieren con esto? ¿Salen a trotar mientras trabajan?&lt;/p&gt;
&lt;p&gt;Una “metodología ágil” es un proceso particular para la construcción de software que se basa en “principios ágiles”.&lt;/p&gt;
&lt;p&gt;No voy a entrar en el detalle filosófico, ya que para ti como cliente te importa lo práctico. Y lo práctico es que la metodología busca &lt;strong&gt;entregar&lt;/strong&gt; software que te ayude lo más rápido posible: en vez de esperar años o meses para ver tu software, en un par de semanas podrás ver la primera versión.&lt;/p&gt;
&lt;p&gt;Las siguientes versiones te las van a ir entregando a lo Luis Fonsi, paso a pasito. En cada paso (cada 2 ó 6 semanas aprox.) verás a tu sistema incorporar nuevos cambios. Y no solo eso: tanto el cliente (tú) como los usuarios participarán en el proceso, deberán involucrarse probando las funcionalidades y proporcionando retroalimentación.&lt;/p&gt;
&lt;p&gt;La gracia es que cada versión realmente funciona y puedes usarla.&lt;/p&gt;
&lt;p&gt;Así que cuando dicen “metodología ágil”, piensa en que te van a ir entregando el software de a poquito y que tú y los usuarios finales deben tener tiempo para participar del proceso de pruebas y entregar retroalimentación.&lt;/p&gt;
&lt;p&gt;¿Y por qué no mandar a hacer el software y olvidarse? Bueno… En los inicios del desarrollo de software se intentó hacer esto. Definir muy bien los requisitos al comienzo, y luego simplemente programarlos. Esta metodología se llama &lt;a href=&quot;https://es.wikipedia.org/wiki/Desarrollo_en_cascada&quot;&gt;“Cascada”&lt;/a&gt; y no funcionó:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La tasa de éxito es baja (10%)&lt;/li&gt;
&lt;li&gt;Estimaciones de tiempo y costos varían hasta un 400%.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;¿Cuáles son las “últimas tecnologías”?&lt;/h3&gt;
&lt;p&gt;En la práctica no te va a importar mucho las tecnologías que la empresa use. Como cliente, te importa que solucionen la problemática y listo, independiente de las herramientas.&lt;/p&gt;
&lt;p&gt;Cuando una empresa dice que utiliza las “últimas tecnologías”, es como cuando una empresa de construcción dice “usamos el último modelo de taladro”.&lt;/p&gt;
&lt;h3&gt;¿A qué se refieren con “soluciones escalables”?&lt;/h3&gt;
&lt;p&gt;Ya hablamos que “solución” se refieren al sistema que te van a construir.&lt;/p&gt;
&lt;p&gt;Cuando hablamos de “escalable”, nos referimos a un sistema que funcione bien independiente de la cantidad de usuarios que lo estén usando.&lt;/p&gt;
&lt;p&gt;Por ejemplo, cuando una página deja de funcionar en un Cybermonday (por el alto tráfico), decimos que la página no es escalable.&lt;/p&gt;
&lt;p&gt;La verdad es que escalable es una propiedad sobrevalorada. No todos los sistemas deben ser infinítamente escalables. Deben funcionar bien bajo límites razonables, los cuales se identifican en base al uso que le quieres dar.&lt;/p&gt;
&lt;p&gt;Por ejemplo, si tu sistema lo usarán sólo las enfermeras, y tienes 200 enfermeras, no necesitas un sistema que soporte millones de usuarios.&lt;/p&gt;
&lt;h2&gt;Palabras finales&lt;/h2&gt;
&lt;p&gt;Espero que esta mini guía sobre la jerga que utilizan las empresas de desarrollo de software te sea útil como primer acercamiento.&lt;/p&gt;
&lt;p&gt;En futuras publicaciones continuaremos explicando términos utilizados en el ambiente de la informática, para seguir creando puentes entre ambos mundos.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/0c52e1ae658191f67bdcebef3b2e7442/f3583/preview.png"></media:content></item><item><title><![CDATA[Blockchain en salud]]></title><description><![CDATA[“¿Y qué pasa con el blockchain?” es una pregunta que he escuchado en charlas relacionadas con tecnologías en salud. Lo cual no es raro, ya…]]></description><link>https://blog.codeness.io/blockchain-en-salud/</link><guid isPermaLink="false">https://blog.codeness.io/blockchain-en-salud/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Mon, 28 Dec 2020 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;“¿Y qué pasa con el blockchain?”&lt;/em&gt; es una pregunta que he escuchado en charlas relacionadas con tecnologías en salud.&lt;/p&gt;
&lt;p&gt;Lo cual no es raro, ya que algunos la definen como la &lt;a href=&quot;https://www.digitaldoughnut.com/articles/2016/april/blockchain-is-the-most-disruptive-invention-since&quot;&gt;invención más disruptiva desde la creación de internet&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sin embargo, como pasa con toda nueva tecnología, hay mucho hype y humo alrededor del concepto.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/53c779284072c06a10469371d86bcad4/e5166/marketoonist.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 70.88607594936708%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAHsSFmA/8QAFxABAQEBAAAAAAAAAAAAAAAAARAAEv/aAAgBAQABBQISF73/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAZEAACAwEAAAAAAAAAAAAAAAAAARAhMkH/2gAIAQEABj8CcukcMo//xAAcEAACAwADAQAAAAAAAAAAAAABEQAhMUFhkaH/2gAIAQEAAT8hCFPuynhvYqoV3PBksFpICtI4uf/aAAwDAQACAAMAAAAQeM//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAVEQEBAAAAAAAAAAAAAAAAAAAAAf/aAAgBAgEBPxBX/8QAHBABAQEBAAIDAAAAAAAAAAAAAREhAEFhMXGB/9oACAEBAAE/EEaxLDTrx98qkRDWwOWaAch33zIiWBPl98tbCWG3z+dXAryme87/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Blockchain hype&quot;
        title=&quot;Blockchain hype&quot;
        src=&quot;/static/53c779284072c06a10469371d86bcad4/828fb/marketoonist.jpg&quot;
        srcset=&quot;/static/53c779284072c06a10469371d86bcad4/ff44c/marketoonist.jpg 158w,
/static/53c779284072c06a10469371d86bcad4/a6688/marketoonist.jpg 315w,
/static/53c779284072c06a10469371d86bcad4/828fb/marketoonist.jpg 630w,
/static/53c779284072c06a10469371d86bcad4/0ede0/marketoonist.jpg 945w,
/static/53c779284072c06a10469371d86bcad4/e5166/marketoonist.jpg 1200w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A pesar de esto, ¿tendrá algún valor en el ámbito de la salud?&lt;/p&gt;
&lt;h2&gt;Breve introducción a Blockchain&lt;/h2&gt;
&lt;p&gt;Antes de continuar, hay que tener una idea de qué es Blockchain.&lt;/p&gt;
&lt;p&gt;Blockchain es una &lt;strong&gt;forma segura de guardar datos&lt;/strong&gt;. Es &lt;em&gt;parecido&lt;/em&gt; a una &lt;em&gt;base de datos&lt;/em&gt; pero en blockchain los datos guardados son inmutables y casi imposibles de cambiar.&lt;/p&gt;
&lt;p&gt;En su forma más simple, se refiere a una &lt;a href=&quot;https://es.wikipedia.org/wiki/Estructura_de_datos&quot;&gt;estructura de datos&lt;/a&gt; que por diseño nos permite decir &lt;em&gt;“sí, estos son realmente los datos y no los he cambiado”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Así que siempre que hablemos de Blockchain, tenemos que pensar en &lt;a href=&quot;https://es.wikipedia.org/wiki/Integridad_de_datos&quot;&gt;&lt;em&gt;integridad de datos&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Si quieres aprender el lado técnico de una &lt;em&gt;cadena de bloques&lt;/em&gt;, te sugiero ver la charla en español &lt;a href=&quot;https://www.youtube.com/watch?v=CLehkvzDN6s&quot;&gt;Understanding the Bitcoin Protocol and the Blockchain Structure&lt;/a&gt; que tiene detalles técnicos básicos y sin humo, o &lt;a href=&quot;https://www.danielefavi.com/blog/blockchain-works-lets-make-one/&quot;&gt;este post&lt;/a&gt; donde el autor hace un ejemplo sencillo para saber cómo funciona.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dicho esto, cuando la gente habla de Blockchain, por lo general se refieren a las técnicas y tecnologías utilizadas por &lt;a href=&quot;https://es.wikipedia.org/wiki/Bitcoin&quot;&gt;Bitcoin&lt;/a&gt; que involucran muchos conceptos interesantes tales como teoría de juegos, criptografía y sistemas distribuidos.&lt;/p&gt;
&lt;p&gt;Así que muchos ven a Blockchain más allá de la estructura de datos y lo ven más como un &lt;em&gt;libro de registros decentralizado&lt;/em&gt; (&lt;a href=&quot;https://es.wikipedia.org/wiki/Distributed_Ledger_Technology_%28DLT%29&quot;&gt;“Distributed Ledger”&lt;/a&gt;), ya que ese fue el uso que lo hizo popular.&lt;/p&gt;
&lt;p&gt;Es por eso que una de las características que suelen decir de Blockchain es que garantizan que todo el mundo vea la misma información, sin que una parte tenga que confiar en que la otra sea honrada.&lt;/p&gt;
&lt;h2&gt;Blockchain en Salud&lt;/h2&gt;
&lt;p&gt;En &lt;em&gt;Application of Blockchain Technology in Healthcare: A Comprehensive Study&lt;/em&gt; (&lt;a href=&quot;https://link.springer.com/chapter/10.1007/978-3-030-51517-1_23&quot;&gt;fuente&lt;/a&gt;) listan los usos principales de Blockchain en salud, en base a &lt;em&gt;papers&lt;/em&gt; publicados.&lt;/p&gt;
&lt;p&gt;Los autores clasifican los estudios en 4 usos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Historia clínica electrónica (Electronic Health Records)&lt;/li&gt;
&lt;li&gt;Monitoreo remoto de pacientes (Remote Patient Monitoring)&lt;/li&gt;
&lt;li&gt;Cadena de suministro farmacéutica (Pharmaceutical Supply Chain)&lt;/li&gt;
&lt;li&gt;Seguros médicos (Health Insurance Claims)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Uso 1: Historia clínica electrónica&lt;/h3&gt;
&lt;p&gt;La mayoría de usos y prototipos están alrededor de la historia clínica electrónica de los pacientes. En particular, se utiliza Blockchain para ayudar a la gestión de estos registros.&lt;/p&gt;
&lt;p&gt;Por ejemplo, está &lt;a href=&quot;https://medrec.media.mit.edu/&quot;&gt;“MedRec”&lt;/a&gt; (del MIT Media Lab) que propone un enfoque descentralizado para gestionar la autorización, los permisos y el intercambio de datos entre los &lt;em&gt;stakeholders&lt;/em&gt; en salud (instituciones, hospitales, etc). Uno de los objetivos que busca este proyecto es que sean los mismos pacientes los dueños de sus datos, de manera que cada uno decida quién tiene acceso.&lt;/p&gt;
&lt;h3&gt;Uso 2: Monitoreo remoto de pacientes&lt;/h3&gt;
&lt;p&gt;En el mundo del monitoreo remoto de pacientes, Blockchain puede ser usado en conjunto con IoT para almacenar, compartir y obtener datos recolectados.&lt;/p&gt;
&lt;p&gt;En &lt;a href=&quot;https://pubmed.ncbi.nlm.nih.gov/28747296/&quot;&gt;“Tamper-Resistant Mobile Health Using Blockchain Technology”&lt;/a&gt; los autores proponen un sistema resistente a manipulación basado en Blockchain. Hicieron la prueba con una aplicación móvil que enviaba información sobre una terapia para el insomnio.&lt;/p&gt;
&lt;p&gt;El hecho de guardar los datos que envían los dispositivos en Blockchain puede ayudar también a la trazabilidad y auditoria de los datos, lo cual podría ayudar a evitar negligencias o detectar culpables en caso de haber una.&lt;/p&gt;
&lt;h3&gt;Uso 3: Cadena de suministro farmacéutica&lt;/h3&gt;
&lt;p&gt;Algunos usos buscan abordar los problemas de falsificación de medicamentos o usos inadecuados.&lt;/p&gt;
&lt;p&gt;Por ejemplo, &lt;a href=&quot;https://www.modum.io/&quot;&gt;Modum.io&lt;/a&gt; utiliza Blockchain para verificar el cumplimiento de los requisitos de temperatura de control de calidad. ¿Cómo? Publica los registros de temperatura de los productos farmacéuticos durante su transporte. Como los datos en la red son inmutables, se puede asegurar que no se manipuló la información de temperatura.&lt;/p&gt;
&lt;p&gt;Otro uso es llevar registro completo de la medicación de un paciente: desde el registro de un medicamento particular hasta su prescripción y uso. Esto es lo que hicieron en &lt;a href=&quot;https://www.mdpi.com/2079-9292/8/5/505&quot;&gt;“A Novel Medical Blockchain Model for Drug SupplyChain Integrity Management in a Smart Hospital”&lt;/a&gt;, de manera que registran cada transacción en la red Blockchain. Lo que no me quedó claro es porque esto ayuda a evitar medicamentos falsificados (no leí el paper completo 😅…)&lt;/p&gt;
&lt;p&gt;Otro ejemplo es &lt;a href=&quot;https://www.mediledger.com/&quot;&gt;Mediledger&lt;/a&gt;, que gracias a esta tecnología busca que los líderes farmacéuticos registren el cambio de propiedad de los medicamentos recetados.&lt;/p&gt;
&lt;h3&gt;Uso 4: Seguros médicos&lt;/h3&gt;
&lt;p&gt;En &lt;a href=&quot;https://link.springer.com/article/10.1007/s10916-018-0996-4&quot;&gt;MIStore&lt;/a&gt;, los autores proponen un sistema para guardar seguros médicos utilizando Blockchain. Uno de las ventajas es que las aseguradoras pueden obtener la información de gastos del paciente pero no el detalle completo.&lt;/p&gt;
&lt;h2&gt;Desafíos de Blockchain en Salud&lt;/h2&gt;
&lt;p&gt;En el ámbito de salud, muchas cosas viven fuera del mundo digital. Por ejemplo, para Historia clínica electrónica, ¿cómo confiamos que los ingresos de un profesional de la salud son confiables? ¿Cómo extendemos la confianza a dispositivos de monitoreo IoT?&lt;/p&gt;
&lt;p&gt;Esto es importante. Blockchain asegura que la información que almacenas lo hiciste tú, a cierta hora y que toda la información guardada no ha sido modificada por un tercero. Pero no valida si la fuente de datos en sí es confiable, ya que eso se escapa del mundo digital.&lt;/p&gt;
&lt;p&gt;Es por eso que una de las dificultades de Blockchain es el cómo extender la confianza del mundo digital al mundo físico.&lt;/p&gt;
&lt;p&gt;Otro gran desafío es que toda la tecnología y estudios se basan en que ya hay participantes digitalizados. En ambientes no digitalizados (donde hay mucho registro de papel) no creo que la herramienta sea una ayuda.&lt;/p&gt;
&lt;p&gt;Y por si fuera poco, la &lt;a href=&quot;/interoperabilidad&quot;&gt;interoperabilidad&lt;/a&gt; sigue siendo un problema. Por ejemplo, &lt;a href=&quot;https://medrec.media.mit.edu/&quot;&gt;“MedRec”&lt;/a&gt; busca ser una especie de registro de fichas médicas (dónde encontrar la información) pero eso no garantiza interoperabilidad. Una cosa es saber dónde está la información, y otra es asegurarnos que todos los lugares donde se guarda &lt;a href=&quot;/estandares-interoperabilidad&quot;&gt;&lt;em&gt;hablen&lt;/em&gt; el mismo lenguaje&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusiones&lt;/h2&gt;
&lt;p&gt;Blockchain es una de las tecnologías de moda en el mundo, y no es una tecnología tan madura si la comparamos con Internet o IA. Es por eso que hay que tener cuidado en caer en falsas promesas o en el HYPE.&lt;/p&gt;
&lt;p&gt;De hecho, hay &lt;a href=&quot;https://medium.com/@sbmeunier/when-do-you-need-blockchain-decision-models-a5c40e7c9ba1&quot;&gt;modelos de decisión&lt;/a&gt; que te ayudan a saber si aplicar blockchain es buena idea, e incluso un paper llamado &lt;a href=&quot;https://ieeexplore.ieee.org/document/8525392&quot;&gt;“Do you need Blockchain?”&lt;/a&gt; que te ayuda a saber si realmente necesitas la tecnología.&lt;/p&gt;
&lt;p&gt;Su uso en el ámbito de la salud está en estudio y evaluación. Existen meta estudios que nos ayudan a saber en qué está tales como &lt;em&gt;“Application of Blockchain Technology in Healthcare”&lt;/em&gt; (&lt;a href=&quot;https://link.springer.com/chapter/10.1007/978-3-030-51517-1_23&quot;&gt;fuente&lt;/a&gt;) y &lt;em&gt;“Blockchain in Health Care Innovation: Literature Review and Case Study From a Business Ecosystem Perspective”&lt;/em&gt; (&lt;a href=&quot;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7490679/#ref7&quot;&gt;fuente&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;¿Existe valor en la tecnología? Sí, definitivamente. ¿Soluciona todos los problemas? No.&lt;/p&gt;
&lt;h2&gt;Referencias&lt;/h2&gt;
&lt;p&gt;Escribiendo este post, me encontré con las siguientes artículos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://www.danielefavi.com/blog/blockchain-works-lets-make-one/&quot;&gt;How a blockchain works… Let’s make one!&lt;/a&gt; — Daniele Favi.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=CLehkvzDN6s&quot;&gt;Understanding the Bitcoin Protocol and the Blockchain Structure&lt;/a&gt; — Martin Ugarte.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bitcoin.org/bitcoin.pdf&quot;&gt;Bitcoin: A Peer-to-Peer Electronic Cash System&lt;/a&gt; — Satoshi Nakamoto&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://link.springer.com/article/10.1007/BF00196791&quot;&gt;How to time-stamp a digital document&lt;/a&gt; — Stuart Haber &amp;#x26; W. Scott Stornetta&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mckinsey.com/business-functions/mckinsey-digital/our-insights/blockchain-beyond-the-hype-what-is-the-strategic-business-value#&quot;&gt;Blockchain beyond the hype: What is the strategic business value?&lt;/a&gt; — Brant Carson para McKinsey Digital.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bbva.com/es/smart-contracts-los-contratos-basados-blockchain-no-necesitan-abogados/&quot;&gt;Qué son los ‘smart contracts’ o contratos inteligentes&lt;/a&gt; — Luz Fernández para BBVA.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blockchainhealthcaretoday.com/index.php/journal/issue/view/4&quot;&gt;Blockchain In Healthcare Today, Vol 3, 2020&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://link.springer.com/chapter/10.1007/978-3-030-51517-1_23&quot;&gt;Application of Blockchain Technology in Healthcare: A Comprehensive Study&lt;/a&gt; — Rim Ben Fekih &amp;#x26; Mariam Lahami&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ieeexplore.ieee.org/document/8525392&quot;&gt;Do you need a blockchain?&lt;/a&gt; — Karl Wüst &amp;#x26; Arthur Gervais&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hl7.org/documentcenter/public/calendarofevents/himss/2018/Blockchain%20and%20Healthcare%20Standards.pdf&quot;&gt;Blockchain &amp;#x26; Healthcare Standards&lt;/a&gt; — PDF de slides por Ewout Kramer.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blockgeeks.com/guides/blockchain-in-healthcare/&quot;&gt;Blockchain in Healthcare&lt;/a&gt; — Blockgeeks.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.danielefavi.com/blog/what-has-blockchain-disrupted-so-far&quot;&gt;Where is the blockchain Revolution&lt;/a&gt; — Daniele Favi.&lt;/li&gt;
&lt;/ol&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/c1d44fc9da31e5e18c0846d46be6c01b/f3583/preview.png"></media:content></item><item><title><![CDATA[Ejemplo de interoperabilidad en salud]]></title><description><![CDATA[Después de los post anteriores, en donde hablamos de la parte más teórica de la interoperabilidad y sus estándares, ahora compartiré un…]]></description><link>https://blog.codeness.io/ejemplo-interoperabilidad/</link><guid isPermaLink="false">https://blog.codeness.io/ejemplo-interoperabilidad/</guid><dc:creator><![CDATA[Eliana Quijada]]></dc:creator><pubDate>Thu, 17 Dec 2020 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Después de los post anteriores, en donde hablamos de la parte más teórica de la &lt;a href=&quot;/interoperabilidad&quot;&gt;interoperabilidad&lt;/a&gt; y sus &lt;a href=&quot;/estandares-interoperabilidad&quot;&gt;estándares&lt;/a&gt;, ahora compartiré un ejemplo de cómo podrían incluirse los diferentes niveles de interoperabilidad en el flujo de atención de un paciente ficticio.&lt;/p&gt;
&lt;h2&gt;Contexto&lt;/h2&gt;
&lt;p&gt;Nuestro paciente se llamará Eddard Stark 🐺, sus cercanos lo conocen como Ned.&lt;/p&gt;
&lt;p&gt;Para efectos de este caso, vamos a asumir que todos los centros de atención de salud de Poniente (el continente donde vive Ned Stark) tienen sistemas de registro clínico informático para registrar las atenciones de sus pacientes, así como sistemas para gestionar el funcionamiento de los servicios de apoyo (farmacias, laboratorio, rayos, etc).&lt;/p&gt;
&lt;h2&gt;Caso clínico&lt;/h2&gt;
&lt;h3&gt;Antecedentes mórbidos&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Ned tiene antecedentes de hipertensión arterial, por lo que ha sido tratado desde hace años en el CESFAM de Invernalia. A finales de abril es hospitalizado en el servicio básico de medicina del Hospital del Norte con diagnóstico de Neumonía por COVID-19, pero a la entrevista de ingreso, no recuerda el nombre de los medicamentos que toma actualmente.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En este punto de la atención es útil que el sistema de información del CESFAM y el utilizado por el Hospital del Norte puedan interoperar.&lt;/p&gt;
&lt;p&gt;Así, el nuevo equipo tratante obtendrá de forma fácil y precisa la información detallada de los antecedentes y el tratamiento que ha recibido Ned, previniendo posibles errores que podrían originarse de la interacción de medicamentos.&lt;/p&gt;
&lt;p&gt;Si hablamos de interoperabilidad sintáctica, es decir, de la estructura de la información compartida, se podría utilizar el estándar de mensajería &lt;strong&gt;&lt;a href=&quot;http://www.hl7.org/fhir/&quot;&gt;HL7 FHIR&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Hospitalización en servicio de cuidados básicos&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Mientras Ned está hospitalizado se le realizan exámenes de sangre (hemograma, pruebas de coagulación, gases arteriales, pruebas para medir función renal y hepática).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para que el laboratorio reciba la solicitud de los exámenes y posteriormente entregue los resultados, es necesario exista un intercambio de información dentro de la misma institución (entre el sistema de información utilizado por el servicio de medicina y el del laboratorio).&lt;/p&gt;
&lt;p&gt;Para este proceso podría tener relevancia que además de la interoperabilidad sintáctica, se incorpore el estándar de terminología &lt;a href=&quot;https://loinc.org/&quot;&gt;&lt;strong&gt;LOINC&lt;/strong&gt;&lt;/a&gt;, indicando cuáles son las pruebas solicitadas y realizadas.&lt;/p&gt;
&lt;h3&gt;Traslado a servicio de cuidados intensivos&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Después de una semana hospitalizado, Ned presenta un deterioro en su estado clínico por lo que necesita ser trasladado a una Unidad de Cuidados Intensivos, pero el hospital en el que actualmente se encuentra no tiene disponible camas de alta complejidad, por este motivo debe ser trasladado al Hospital de Desembarco del Rey.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En este caso es muy importante que el equipo de la Unidad de Cuidados Intensivos pueda tener acceso a la historia clínica de Ned desde el hospital de origen.&lt;/p&gt;
&lt;h3&gt;Regreso a servicio de cuidados básicos&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;A las tres semanas Ned presenta una notable mejoría en su estado de salud, por lo que ya está en condiciones de volver a un servicio básico y es retornado a su hospital de origen, para completar su recuperación.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ahora es necesario el proceso inverso y que el servicio de medicina pueda obtener la historia clínica de Ned incluyendo los datos de las tres semanas que estuvo en UCI.&lt;/p&gt;
&lt;p&gt;En los dos últimos casos mencionados es muy importante considerar la interoperabilidad sintáctica, de manera de que exista intercambio óptimo de la información entre los sistemas de las dos instituciones involucradas y así mantener actualizados todos los datos clínicos del paciente.&lt;/p&gt;
&lt;h3&gt;Alta&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Luego de una semana de recuperación Ned es dado de alta y se le indica continuar con sus controles en su CESFAM.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Para esta etapa de la atención es necesario que el centro de atención primaria pueda acceder al documento clínico con el resumen de la hospitalización del paciente, así como todas las indicaciones entregadas al momento del alta.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Como conclusión final, en el flujo de atención de un paciente pueden identificarse varios puntos en los que es necesario el uso de interoperabilidad en los sistemas informáticos de salud, para así permitir que exista un adecuado intercambio de la información del paciente, evitando errores y además ayudando a que los diagnósticos y tratamientos sean oportunos.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/ff27f912a4797de6aa21c00aee4d3bdd/f3583/preview.png"></media:content></item><item><title><![CDATA[Mi experiencia en el Tech Connect 2020]]></title><description><![CDATA[Participé por primera vez en el evento de interoperabilidad Tech Connect La edición 2020 por el contexto de pandemia fue 100% remota (en…]]></description><link>https://blog.codeness.io/techconnect-2020/</link><guid isPermaLink="false">https://blog.codeness.io/techconnect-2020/</guid><dc:creator><![CDATA[Nicolás Gómez]]></dc:creator><pubDate>Wed, 09 Dec 2020 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Participé por primera vez en el evento de interoperabilidad &lt;a href=&quot;https://www.techconnect.cl/&quot;&gt;Tech Connect&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;¿Qué es el techconnect? es un encuentro anual con talleres y charlas sobre interoperabilidad en salud.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;¿Interoperabiliwhat? La interoperabilidad en salud es hacer que los distintos sistemas informáticos se comuniquen entre sí. Puedes leer más de esto &lt;a href=&quot;/interoperabilidad&quot;&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En este post haré un mini review sobre el evento y comentaré sobre las charlas que me gustaron más.&lt;/p&gt;
&lt;h2&gt;Cómo fue el Techconnect&lt;/h2&gt;
&lt;p&gt;En una palabra: intenso.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;¿De qué tratan los desafíos?&lt;/h2&gt;
&lt;p&gt;Cada ejercicio debías hacer lo que un sistema informático haría en una situación dada.&lt;/p&gt;
&lt;p&gt;Por ejemplo, un enunciado podría ser algo del estilo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“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”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Luego, cada participante debía “programar” el “envío” del examen. La parte de “programación” se hace gracias a un &lt;a href=&quot;/estandares-interoperabilidad/&quot;&gt;estándar de interoperabilidad&lt;/a&gt; llamado &lt;strong&gt;HL7 FHIR&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Los ejercicios se realizaron a través de una plataforma chilena construida especialmente para aprender, llamada &lt;a href=&quot;https://cens.cl/huemul/&quot;&gt;Huemul&lt;/a&gt;. Además, estaban clasificados en distintos contextos (&lt;em&gt;tracks&lt;/em&gt;) y dificultades (&lt;em&gt;básico&lt;/em&gt;, &lt;em&gt;medio&lt;/em&gt; y &lt;em&gt;avanzado&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Para los más computines como yo, la parte técnica no era tan complicada (&lt;em&gt;vivo de eso!&lt;/em&gt;). 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 &lt;a href=&quot;https://codeness.io&quot;&gt;Codeness&lt;/a&gt; es enfermera, por lo que gracias a ella pude entender mejor algunas cosas 🙏.&lt;/p&gt;
&lt;h2&gt;El Desafío Avanzado&lt;/h2&gt;
&lt;p&gt;Los desafíos de dificultad fácil e intermedia se hacían online en &lt;a href=&quot;https://cens.cl/huemul/&quot;&gt;“Huemul”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;El avanzado era diferente, pues tenías &lt;strong&gt;que construir una aplicación que se comunicara con plataformas&lt;/strong&gt; que el equipo organizador puso a disposición (usando HL7 FHIR).&lt;/p&gt;
&lt;p&gt;Como me tomé la semana para participar del Techconnect, quise participar en TODOS los desafíos, incluso el avanzado.&lt;/p&gt;
&lt;p&gt;Los &lt;em&gt;tracks&lt;/em&gt; básicos e intermedio me ayudaron a conocer mejor HL7, conocimiento que utilicé para poder crear la aplicación del &lt;em&gt;track&lt;/em&gt; avanzado.&lt;/p&gt;
&lt;p&gt;Participé en el caso de uso “Informe Diagnóstico” (&lt;a href=&quot;https://cens.atlassian.net/wiki/spaces/T2/pages/10977281/Caso+de+Uso+Informe+Diagn+stico&quot;&gt;enunciado&lt;/a&gt;), cuyo objetivo era &lt;strong&gt;construir una aplicación que permita crear informes de laboratorio y asociarlos a un paciente&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Puedes ver un video demo de la aplicación que hice &lt;a href=&quot;https://cu-informe.vercel.app/&quot;&gt;aquí&lt;/a&gt;. &lt;strong&gt;Nota: Los datos que muestra son falsos&lt;/strong&gt; ya que el CENS bajó los servidores.&lt;/p&gt;
&lt;h3&gt;Funcionalidades de la aplicación&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/efd72627d2b54b7108470816760a960b/bce1e/slack.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 25.949367088607595%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAuUlEQVQY052P6wrCMAyF+/7PJOgzOH+sIvTGNoqwtd3mBrscm0rVvxpIv6Q5kBx2OJ5wLi54jCOmacK2bVjXNTHXuc9cliXVxFznZLVRUFJAKY26qiCFhDEGQohErTWklHGuEqlvmgZV1FIabV6M2hACmG7uuJQcvCzBOU9D5xy893CdQ/Dh00cOw4B9398Ovp3QPyuuEjdVo2tbWGsxz3OyQaJ/gtFjvUUZLY9xe9/36XS6hIK2/pJP0eZ/3Af1ea4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Dudas en el slack&quot;
        title=&quot;Dudas en el slack&quot;
        src=&quot;/static/efd72627d2b54b7108470816760a960b/f058b/slack.png&quot;
        srcset=&quot;/static/efd72627d2b54b7108470816760a960b/c26ae/slack.png 158w,
/static/efd72627d2b54b7108470816760a960b/6bdcf/slack.png 315w,
/static/efd72627d2b54b7108470816760a960b/f058b/slack.png 630w,
/static/efd72627d2b54b7108470816760a960b/40601/slack.png 945w,
/static/efd72627d2b54b7108470816760a960b/78612/slack.png 1260w,
/static/efd72627d2b54b7108470816760a960b/bce1e/slack.png 1696w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;El &lt;em&gt;mockup&lt;/em&gt; que nos dieron fue este:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/9e1d34640f508fc086771b51648227d3/93ef1/mockup-1.webp&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/webp;base64,UklGRl4AAABXRUJQVlA4IFIAAADQAwCdASoUABEAPtFgqU+oJSOiKAgBABoJaQAALnfcPYg+vGcCAgAA/vAL072+OxE4P++HxWoEo642HigP07Z51ELp9hccw2+zedngY3BXoVAA&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Mockup de la aplicación&quot;
        title=&quot;Mockup de la aplicación&quot;
        src=&quot;/static/9e1d34640f508fc086771b51648227d3/8aab1/mockup-1.webp&quot;
        srcset=&quot;/static/9e1d34640f508fc086771b51648227d3/81b7c/mockup-1.webp 158w,
/static/9e1d34640f508fc086771b51648227d3/6ea66/mockup-1.webp 315w,
/static/9e1d34640f508fc086771b51648227d3/8aab1/mockup-1.webp 630w,
/static/9e1d34640f508fc086771b51648227d3/93ef1/mockup-1.webp 929w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Entonces el flujo de la aplicación debía ser más o menos así:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ingreso de paciente:&lt;/strong&gt; el usuario debe ingresar un RUT de paciente. Una vez ingresado, mostrar sus datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selección de examen y muestra:&lt;/strong&gt; 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).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ingreso de resultados&lt;/strong&gt;: El usuario debe ingresar los resultados del examen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La otra parte de la aplicación es sobre consulta de resultados:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/88df515275f53efedf85e518f0078d00/93ef1/mockup-2.webp&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/webp;base64,UklGRk4AAABXRUJQVlA4IEIAAAAQBACdASoUABEAPtFepE6oJSMiKAqpABoJaQAAKdqvdx4xTPk/eQUfAAD+8AwTtf/P4DZ1F9wkvLONtdKIZl8gAAA=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Mockup de la aplicación&quot;
        title=&quot;Mockup de la aplicación&quot;
        src=&quot;/static/88df515275f53efedf85e518f0078d00/8aab1/mockup-2.webp&quot;
        srcset=&quot;/static/88df515275f53efedf85e518f0078d00/81b7c/mockup-2.webp 158w,
/static/88df515275f53efedf85e518f0078d00/6ea66/mockup-2.webp 315w,
/static/88df515275f53efedf85e518f0078d00/8aab1/mockup-2.webp 630w,
/static/88df515275f53efedf85e518f0078d00/93ef1/mockup-2.webp 929w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Donde el flujo era:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ingreso de paciente:&lt;/strong&gt; usuario debe ingresar un RUT de paciente. Mostrar sus datos y además los exámenes asociados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Selección de resultados:&lt;/strong&gt; usuario podrá seleccionar un examen para ver los resultados.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;¿Y dónde está la interoperabilidad aquí?&lt;/p&gt;
&lt;p&gt;Bueno, lo que ocurre es que la información que se ingresa o que se consulta vive en distintos &lt;em&gt;servicios&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La información de los pacientes vive en un “Maestro de Pacientes” (MPI).&lt;/li&gt;
&lt;li&gt;La información de los prestadores de servicios en un “Maestro de Prestadores de servicios” (HPD).&lt;/li&gt;
&lt;li&gt;La información relacionada con muestras y exámenes vive en un “Repositorio Nacional de Exámenes de Laboratorio (RNEL)“.&lt;/li&gt;
&lt;li&gt;La información terminológica vive en un “Servidor Terminológico” (ST).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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…&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;¿El formulario se arma a mano? o bien ¿hay que traer la información desde algún servicio?&lt;/li&gt;
&lt;li&gt;¿Los rangos de referencia se obtendrán desde algún lado o se manejan a nivel de aplicación?&lt;/li&gt;
&lt;li&gt;Las unidades de medida, ¿de dónde vienen?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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 💪&lt;/p&gt;
&lt;h3&gt;Recursos FHIR Utilizados&lt;/h3&gt;
&lt;p&gt;Utilicé los siguientes recursos: &lt;a href=&quot;https://www.hl7.org/fhir/patient.html&quot;&gt;Patient&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/specimen.html&quot;&gt;Specimen&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/practitioner.html&quot;&gt;Practitioner&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/questionnaire.html&quot;&gt;Questionnaire&lt;/a&gt;, &lt;a href=&quot;https://www.hl7.org/fhir/parameters.html&quot;&gt;Parameters&lt;/a&gt; y &lt;a href=&quot;https://www.hl7.org/fhir/observation.html&quot;&gt;Observation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A continuación detallaré dónde usé cada uno:&lt;/p&gt;
&lt;h4&gt;Obtener información del paciente&lt;/h4&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/11a9aaaa4dcb137d76ef2402db5df0dd/93582/web-1.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 31.645569620253163%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAsklEQVQY05WQWQ7DIAxEc/+TZkUBkRWIy7NCSv5apJE3PPa4WddV2raVrusU+N574V3XJf++JoQg27bJcRyy77v6McaH8Fek2zYxEzprxWac5ynGGAWDIE4pqX0ac1w2LzEcxudlQiZks3mexTknwzAo8bIsKpt4mibN8Yc8JNTIYb+D7g25IU1IRXKZzlbjOCogw0JCHR8Vfd/rqV43RGZNVEsrN6UJcAZq5OmjRq7u+wDvS9VpLBxMZAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Información del paciente&quot;
        title=&quot;Información del paciente&quot;
        src=&quot;/static/11a9aaaa4dcb137d76ef2402db5df0dd/f058b/web-1.png&quot;
        srcset=&quot;/static/11a9aaaa4dcb137d76ef2402db5df0dd/c26ae/web-1.png 158w,
/static/11a9aaaa4dcb137d76ef2402db5df0dd/6bdcf/web-1.png 315w,
/static/11a9aaaa4dcb137d76ef2402db5df0dd/f058b/web-1.png 630w,
/static/11a9aaaa4dcb137d76ef2402db5df0dd/40601/web-1.png 945w,
/static/11a9aaaa4dcb137d76ef2402db5df0dd/78612/web-1.png 1260w,
/static/11a9aaaa4dcb137d76ef2402db5df0dd/93582/web-1.png 1524w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Aquí utilicé el recurso &lt;a href=&quot;https://www.hl7.org/fhir/patient.html&quot;&gt;Patient&lt;/a&gt; del maestro de pacientes (MPI). La búsqueda se realiza mediante la siguiente llamada&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;GET /MPI/Patient?identifier=www.registrocivil.cl/RUN|11111111-1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Reemplazando 11111111-1 por el rut que deseabas buscar&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;Registro de examen&lt;/h4&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/eb1c663d3107a24fc6fa96818bbef4c1/68638/web-2.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 51.89873417721519%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA/ElEQVQoz5WSi46EIAxF+f//9DGaKIgKKtrlkMXRyc7ObpOGR9vL7aXKWitFUUjTNFLXtRhjBDuO4+Z/NbVtm3jvZVmWtIYQTsBsr+C/uQoRcDBa9BzETk76rpN5ntMDXdzj10fe+ckwbBEotu38ktZxHGWaJnHOyTAMSYJ1XT8y2/f9ydBoExl50VrfQAHkDikwij55ArTfhbTa972UZZn2tEoSOuPvQMijI3IUm+bxSFoRhBkss44Z7KfPuup6tgxAVVXStm165WqA4rRMDKeIM3XEALqNDZfMIAzzHFIAK2TgDGP0ZAUAjXPsdQIUP5iLAKeQgv8M8zX3CyXJD+gwGYr5AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Registro de examen&quot;
        title=&quot;Registro de examen&quot;
        src=&quot;/static/eb1c663d3107a24fc6fa96818bbef4c1/f058b/web-2.png&quot;
        srcset=&quot;/static/eb1c663d3107a24fc6fa96818bbef4c1/c26ae/web-2.png 158w,
/static/eb1c663d3107a24fc6fa96818bbef4c1/6bdcf/web-2.png 315w,
/static/eb1c663d3107a24fc6fa96818bbef4c1/f058b/web-2.png 630w,
/static/eb1c663d3107a24fc6fa96818bbef4c1/40601/web-2.png 945w,
/static/eb1c663d3107a24fc6fa96818bbef4c1/78612/web-2.png 1260w,
/static/eb1c663d3107a24fc6fa96818bbef4c1/68638/web-2.png 1510w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Aquí para la muestra utilicé &lt;a href=&quot;https://www.hl7.org/fhir/specimen.html&quot;&gt;Specimen&lt;/a&gt;. La información se obtiene con una consulta al servidor de exámenes:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;GET /HAPI/Specimen/?patient=Patient/:id&amp;amp;type=BLDV&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;El parámetro &lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt; es el ID del recurso paciente encontrado en el paso anterior.&lt;/p&gt;
&lt;p&gt;Notar que &lt;code class=&quot;language-text&quot;&gt;type=BLDV&lt;/code&gt; hace referencia al tipo de muestra de sangre (&lt;em&gt;Blood venous&lt;/em&gt;). Es un código de FHIR para esta muestra (&lt;a href=&quot;https://www.hl7.org/fhir/v2/0487/index.html&quot;&gt;ver todos&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Para el &lt;em&gt;informante&lt;/em&gt; utilicé &lt;a href=&quot;https://www.hl7.org/fhir/practitioner.html&quot;&gt;Practitioner&lt;/a&gt;. La información se obtiene del servidor de prestadores:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;GET /HPD/Practitioner?_profile=http://cens.cl/fhir/StructureDefinition/Practitioner-cl&amp;amp;getPractitionerByIdentificationNumber=11111111-1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;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 &lt;a href=&quot;https://loinc.org/&quot;&gt;LOINC&lt;/a&gt; del examen, el cual será usado posteriormente para obtener el formulario a mostrar.&lt;/p&gt;
&lt;h4&gt;Ingreso de resultados del examen&lt;/h4&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/389d90cb76a7ea67785159b858deaf2b/0faf1/web-3.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.632911392405056%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA7UlEQVQoz3WSiRKDMAhE/f9P1dHx1lzSvrSkNLXMrEmALLCmWbdN+r7PWNdVsOu6RI29orY65kOUxjkny7LIcRzCPqUkMcZ8DiGUs67neeYYq/Wzeh+k4TMMQyaDAJDctq1sz+45e+/zSg6TdF1X7hArcQjDk52LdEkVO3J8x+x4dIc0xKwfC4wM4TiOsu/7VwLkVFVdMXzzPGdM0/SjeSGEjDGtyEqIv+5QQZe3HVKJ0e4IuWh9FCe3nuiHkIQ7QqshPnIBmv8dGT3Qxf4UJVCf1VHxeZuGkGfjnM+APOZ3lV57cy5IFd5+CvBsHjnTEuN81qmhAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Resultados de examen&quot;
        title=&quot;Resultados de examen&quot;
        src=&quot;/static/389d90cb76a7ea67785159b858deaf2b/f058b/web-3.png&quot;
        srcset=&quot;/static/389d90cb76a7ea67785159b858deaf2b/c26ae/web-3.png 158w,
/static/389d90cb76a7ea67785159b858deaf2b/6bdcf/web-3.png 315w,
/static/389d90cb76a7ea67785159b858deaf2b/f058b/web-3.png 630w,
/static/389d90cb76a7ea67785159b858deaf2b/40601/web-3.png 945w,
/static/389d90cb76a7ea67785159b858deaf2b/78612/web-3.png 1260w,
/static/389d90cb76a7ea67785159b858deaf2b/0faf1/web-3.png 1956w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Para mostrar cada fila de la tabla, utilicé el recurso de tipo &lt;a href=&quot;https://www.hl7.org/fhir/questionnaire.html&quot;&gt;Questionnaire&lt;/a&gt;. Este recurso representa el formulario a llenar y se obtiene así del servidor terminológico:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;GET /ST/Questionnaire/:id&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Donde &lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt; corresponde al código LOINC del tipo de examen. Para este desafío los utilizados fueron: &lt;a href=&quot;https://loinc.org/24331-1/&quot;&gt;24331-1&lt;/a&gt; (perfil lipídico) y &lt;a href=&quot;https://loinc.org/24325-3/&quot;&gt;24325-3&lt;/a&gt; (perfil hepático).&lt;/p&gt;
&lt;p&gt;El recurso &lt;code class=&quot;language-text&quot;&gt;Questionnaire&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;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 😓&lt;/p&gt;
&lt;p&gt;Sin embargo, levantaron datos para que pudieramos consultarlo. Lo cual se hacía con la siguiente consulta:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;GET /ST/CodeSystem/$lookup?system=http://cens.cl/lab-ref-ranges&amp;amp;code=:code&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;la cual entregaba un recurso de tipo &lt;a href=&quot;https://www.hl7.org/fhir/parameters.html&quot;&gt;Parameters&lt;/a&gt; con las unidades y los rangos de referencia. El parámetro &lt;code class=&quot;language-text&quot;&gt;code&lt;/code&gt; es el código LOINC del dato del formulario a llenar. Por ejemplo, en el caso del colesterol, el código es &lt;a href=&quot;https://loinc.org/2093-3/&quot;&gt;2093-3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c02b451b97232bfd685d0a0ae097ed16/dba9a/perfil-lipidico-loinc.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.835443037974684%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsSAAALEgHS3X78AAABEklEQVQoz22S626FIBCEff/3a9I/bXqsIHhLk1oFBacMdg0nlWRdWZaPcbBa1xXDMCDEiBgDpmmCcw4cx3H8i5j74u0ao9rnL/w8XhDWb+whQGuNrutgrc1wHjaOY54vywIZJbyM6kgPZ96xDZ9PwKZp0LYtjDE5+E4413hASL23ClPAjwo+AWNqUglImFIqQwTKTBgz1XIzR6nuAlKh7z7SqTGDqJIQZgYhUmOIJfM8P1lwAtPE9w9484bdu6xQPpu5VCpqCWOdue/7XBd//4A1nHrF7pYLyGZuFsWlQoFIX13X+QJPID2cNLxNF5OAWlOJvvwqYdwscx4kNalv23YqdFY8DLebxbc7P0Ut/wB6+AtGOq0SL3IGegAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;LOINC de perfil lipidico&quot;
        title=&quot;LOINC de perfil lipidico&quot;
        src=&quot;/static/c02b451b97232bfd685d0a0ae097ed16/f058b/perfil-lipidico-loinc.png&quot;
        srcset=&quot;/static/c02b451b97232bfd685d0a0ae097ed16/c26ae/perfil-lipidico-loinc.png 158w,
/static/c02b451b97232bfd685d0a0ae097ed16/6bdcf/perfil-lipidico-loinc.png 315w,
/static/c02b451b97232bfd685d0a0ae097ed16/f058b/perfil-lipidico-loinc.png 630w,
/static/c02b451b97232bfd685d0a0ae097ed16/dba9a/perfil-lipidico-loinc.png 652w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Nada que adivinar aquí, ya que el recurso &lt;code class=&quot;language-text&quot;&gt;Questionnaire&lt;/code&gt; trae consigo esta información.&lt;/p&gt;
&lt;h4&gt;Al enviar el examen&lt;/h4&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/adc5038050885f465ae5be00b3f25a67/36909/web-4.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.632911392405056%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAu0lEQVQoz83OTw7BQBQG8DkFEmwtqhtrrDiJ2ziDA9jbWLJi4QgWWkKrHa2ZvqnE5pNp0kT6T2IhFr/kzcs3Xx7rTGboTfdomkM0jAHqb/S7ZvTRNsdodUfJnM1kMYcLuAHhcr3lnF0f3CdsrDV2xy18j5JdUTbFZBRDRgqSHjmCFJ4xsLTnWJ0Wyax3RdkUCwWhzF0qeDyEdXBgWy54IFCV15j+VCYtDSXldmXYx7KCq6tKf1f4rf8vfAFw2s4sqa6uTAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Ingreso exitoso&quot;
        title=&quot;Ingreso exitoso&quot;
        src=&quot;/static/adc5038050885f465ae5be00b3f25a67/f058b/web-4.png&quot;
        srcset=&quot;/static/adc5038050885f465ae5be00b3f25a67/c26ae/web-4.png 158w,
/static/adc5038050885f465ae5be00b3f25a67/6bdcf/web-4.png 315w,
/static/adc5038050885f465ae5be00b3f25a67/f058b/web-4.png 630w,
/static/adc5038050885f465ae5be00b3f25a67/40601/web-4.png 945w,
/static/adc5038050885f465ae5be00b3f25a67/78612/web-4.png 1260w,
/static/adc5038050885f465ae5be00b3f25a67/36909/web-4.png 2772w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;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 &lt;a href=&quot;https://www.hl7.org/fhir/observation.html&quot;&gt;Observation&lt;/a&gt; mediante la llamada:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;POST /HAPI/Observation&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4&gt;Buscar exámenes de un paciente&lt;/h4&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/bdcdedc0f58aa15ec0de625935266edd/c8ad9/web-5.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 86.0759493670886%; position: relative; bottom: 0; left: 0; background-image: url(&apos;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&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Listado de observaciones&quot;
        title=&quot;Listado de observaciones&quot;
        src=&quot;/static/bdcdedc0f58aa15ec0de625935266edd/f058b/web-5.png&quot;
        srcset=&quot;/static/bdcdedc0f58aa15ec0de625935266edd/c26ae/web-5.png 158w,
/static/bdcdedc0f58aa15ec0de625935266edd/6bdcf/web-5.png 315w,
/static/bdcdedc0f58aa15ec0de625935266edd/f058b/web-5.png 630w,
/static/bdcdedc0f58aa15ec0de625935266edd/40601/web-5.png 945w,
/static/bdcdedc0f58aa15ec0de625935266edd/78612/web-5.png 1260w,
/static/bdcdedc0f58aa15ec0de625935266edd/c8ad9/web-5.png 1564w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Aquí se usa el recurso &lt;a href=&quot;https://www.hl7.org/fhir/patient.html&quot;&gt;Patient&lt;/a&gt; y &lt;a href=&quot;https://www.hl7.org/fhir/observation.html&quot;&gt;Observation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;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&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;GET /HAPI/Observation/?subject=Patient/:id&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;donde &lt;code class=&quot;language-text&quot;&gt;id&lt;/code&gt; es el ID del recurso &lt;code class=&quot;language-text&quot;&gt;Patient&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Consideraciones de usabilidad&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/c440964bf3d042f04dc8b2b7b644adae/de766/ingreso-vacio.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 40.50632911392405%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAAAwklEQVQoz63QSwoCMQwG4F5SXbgR3bkQdO+BvIe38AS+5tl00vTxmw6C21EsfIRCm/6NOZ6eWG6PmK12WGwOWKz3P5srI4OF5wH/WsZLALOH94VAdB9CVOErMUaw3jdd16NuWgzatIgp/yTlDNEgpqSqyePROVTEsJI/wkR6tg8AeW3oyIGI9KsyRk8aPaeENIrvOk3pYRwzqp7gJI7KKwXHDJ8A/kZIMOeL4FoTHq3FvbG41f1YK8todBRTlbG1OrIX5l1RtiRXsDcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Ingreso vacío&quot;
        title=&quot;Ingreso vacío&quot;
        src=&quot;/static/c440964bf3d042f04dc8b2b7b644adae/f058b/ingreso-vacio.png&quot;
        srcset=&quot;/static/c440964bf3d042f04dc8b2b7b644adae/c26ae/ingreso-vacio.png 158w,
/static/c440964bf3d042f04dc8b2b7b644adae/6bdcf/ingreso-vacio.png 315w,
/static/c440964bf3d042f04dc8b2b7b644adae/f058b/ingreso-vacio.png 630w,
/static/c440964bf3d042f04dc8b2b7b644adae/40601/ingreso-vacio.png 945w,
/static/c440964bf3d042f04dc8b2b7b644adae/78612/ingreso-vacio.png 1260w,
/static/c440964bf3d042f04dc8b2b7b644adae/de766/ingreso-vacio.png 1838w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Incluí validación de datos requeridos con un feedback visual (asterisco &lt;code class=&quot;language-text&quot;&gt;*&lt;/code&gt;) que indicara los campos requeridos:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/5cfbab751637e0758b5e642b3f8af613/e405b/validation.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 85.44303797468356%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAACJ0lEQVQ4y42TCZLbIBBFfaIcKDfLIXKOXCDLOOMqZ7MWy9aKEALBz28kObZnPBWqngAhNU3/z6bXA/I8R5ZlOB4LpGmGpm0RQsA0eUz+//BktA4beYzjGDHGoO97WGshTYLiBv8qgcGkOTdhYxmw61qUVYWx64BhiAQGhtaXOXcDd32IlaQkQwk4TROsc/DyU1nBk1CWCNwkcJMgJeBa4DeB2Qfr7rDwEkMCDsMIxWw0s1FEcyfH4zm/4uee9XT8ae7vmWK9zWix0YOIkuFUFBTliLZpsBQQl/ailreE5dtYQ8djCJ4vBdlg5FxK0EvGUs9Y9LeDSpN/Yg0bZqU7BX06oz4k0MUJY92gTVI0WR6PxVPTHrRSeAUf4rpdVVZUuVIGXw4a232K3e8C2585njj+VRmk1CrRb5PRCHpcAooHNYVpizP6NMdwKiM958ZYWsLNyPgBhusX23S0RUWLKEUf1vUM5xCBhJYoxTPZh3hn5xpK1Os2WcnEwEVoIVohYl1U8REX28hdTg4HpEnCe5zGe7xeuxdQ7bBctfs1UToaW86umYnhRHYQpcQkoloE/wjX/ar6Slhtw1R3tcc2rfB8bPGcN3hKyjiWdzL+ntWRb4czdnz/9c8J+1Ijp/qpnokqW6r842zxOZ9QtAM6bdD2Bg1p9biMh9jHsRoufcf13tByCzLWvMab9x8d3n3w+LTnDdEKVdOzjj3qdu7vqa/6ulE3VOQvN04rAq3jMdgAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ingreso-vacio&quot;
        title=&quot;ingreso-vacio&quot;
        src=&quot;/static/5cfbab751637e0758b5e642b3f8af613/f058b/validation.png&quot;
        srcset=&quot;/static/5cfbab751637e0758b5e642b3f8af613/c26ae/validation.png 158w,
/static/5cfbab751637e0758b5e642b3f8af613/6bdcf/validation.png 315w,
/static/5cfbab751637e0758b5e642b3f8af613/f058b/validation.png 630w,
/static/5cfbab751637e0758b5e642b3f8af613/40601/validation.png 945w,
/static/5cfbab751637e0758b5e642b3f8af613/78612/validation.png 1260w,
/static/5cfbab751637e0758b5e642b3f8af613/e405b/validation.png 1566w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 603px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/0e4f131fc9a7f80a26a693467d44d476/9128f/specimen-patient.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 7.59493670886076%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsSAAALEgHS3X78AAAAa0lEQVQI13XMwQqCQBRAUf//1yLBiKBMnNFieJpGjb6XLrpNH+DicnY3UzPKEc7dgh8i/mnJmUpe+FFxw0T9mLi/VzoD0S/yd6NMP0YhsHOR/FJTuMDp1nNIHhthXzbk15aqj8gCIQ2DstkPx/+W+SJtYX0AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Información previa de muestra&quot;
        title=&quot;Información previa de muestra&quot;
        src=&quot;/static/0e4f131fc9a7f80a26a693467d44d476/9128f/specimen-patient.png&quot;
        srcset=&quot;/static/0e4f131fc9a7f80a26a693467d44d476/c26ae/specimen-patient.png 158w,
/static/0e4f131fc9a7f80a26a693467d44d476/6bdcf/specimen-patient.png 315w,
/static/0e4f131fc9a7f80a26a693467d44d476/9128f/specimen-patient.png 603w&quot;
        sizes=&quot;(max-width: 603px) 100vw, 603px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/ae2d2f462a29664b0532649603ac1777/3996e/selecciona-tipo-ex.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 24.68354430379747%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsSAAALEgHS3X78AAAAt0lEQVQY052Q3U7DMAxG+/6PhxiBcTfabgkda1PInxfOkqiIi12BpU/H1mdbljvnA9auLNZuWnHOI3Il/UG1PyahCzHxbjTj0GO05nQcscvMfyLnTFe3ugxfAk6+mz7jFesTa5DGxcXGO21+7atz9dJORFATPBwuqN6gxjNqOLN7M7zqmZfjhceD4amfeB4/mldzNUzN2xVvf5rRAXwqF/oQiWVzkExI5Q+VW175W2/88e7qoijcAD86gzlxBSA7AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Selecciona tipo de examne&quot;
        title=&quot;Selecciona tipo de examne&quot;
        src=&quot;/static/ae2d2f462a29664b0532649603ac1777/f058b/selecciona-tipo-ex.png&quot;
        srcset=&quot;/static/ae2d2f462a29664b0532649603ac1777/c26ae/selecciona-tipo-ex.png 158w,
/static/ae2d2f462a29664b0532649603ac1777/6bdcf/selecciona-tipo-ex.png 315w,
/static/ae2d2f462a29664b0532649603ac1777/f058b/selecciona-tipo-ex.png 630w,
/static/ae2d2f462a29664b0532649603ac1777/3996e/selecciona-tipo-ex.png 648w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/4c3fa539f798adbb5bdeb8b435f0bcae/2a08f/warning.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 33.54430379746836%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAABYlAAAWJQFJUiTwAAABKklEQVQoz6XPv0oDMQDH8bgIDroX8XFc3Jx9Ah/A3cGhDgrVDiKKg0txURx8BQVLTygIer0uQrXm2vuXSy7J5X7mjlor4iCGfPgmS/4QstYAWayBzNWwur6BcNDFk9vHs9uruD3P1qvqev0KpRSbW9sgZAlkYQVkfvlL4/oBe81j1JtnOL+4Qsfp4PbewZ312W/aDtpOF63LG+zsH2H38BT1g5MpwiMfmeDIOEMUBvjvIDyTSDlHwlJwkcEUBXJjYCrFDDOjgM5zSKWhrLJS51Bag4x8H0HMMBgLPPaHeKEC7wwYxgXeIjNh1/FPw0n9JLcyMGlAtFLVDXSc4JWGoAHDKBIYxwJBIhEyiUTk4ApIfyFUAaEN7LQH2qeWlD1Ya11VSTnd/0X55Q+jXPa8AXS2bAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Feedback visual de cuanto paciente no fue encontrado&quot;
        title=&quot;Feedback visual de cuanto paciente no fue encontrado&quot;
        src=&quot;/static/4c3fa539f798adbb5bdeb8b435f0bcae/f058b/warning.png&quot;
        srcset=&quot;/static/4c3fa539f798adbb5bdeb8b435f0bcae/c26ae/warning.png 158w,
/static/4c3fa539f798adbb5bdeb8b435f0bcae/6bdcf/warning.png 315w,
/static/4c3fa539f798adbb5bdeb8b435f0bcae/f058b/warning.png 630w,
/static/4c3fa539f798adbb5bdeb8b435f0bcae/40601/warning.png 945w,
/static/4c3fa539f798adbb5bdeb8b435f0bcae/78612/warning.png 1260w,
/static/4c3fa539f798adbb5bdeb8b435f0bcae/2a08f/warning.png 1422w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Y también me preocupé de que en secciones sin resultados mostrara un mensaje:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/03d9092336ad688548ea587c7f513bf2/7be33/sin-examenes.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.9493670886076%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAABfUlEQVQ4y5VUi26DMAzs///mqrESNl4JkIe5+cKjrSZKF+mUxHZs3yVwcW5AWZYKA2MqFF9fcM5B5hkpydsQEfgQcfE+5ATDMKzQZJKwjPkZ88E6A4gp4RI1q7UWdV1j8h6fZY2P4geNS2idrEjoBkE/zmh17nTmmjP9dgjwflo7DCF3xi67rkPbduh6i946LdKg0T3X1jFmRIwJwziBUk2TR5J5p0zfhU5q2Pd97nQbDKD9druhaWpUxuC7qrLdGOpdwqg/pbSfyZSp4TiOKsmMx8E9u2Yh+gmvkmx27umLMd4TssNR26aTFKxzGSzCaklIZc5zRlpobTZZ6dLG+EnPKeUxU6uUzvJ8StVm2rt8F3uHS0XJRhHZQW2IRez4Z/9ou9tXDakF9SGKotCbbvMB7jnzEvgCtkSMv16vu4aMC/pagq5zh3yY/6F3hJ3y2dhonY3lS1kTHgnNRKTEi9qSvr6Uk8rLJanoq/CnHfL7E3n9F3m+/eO4oLl+AeHtmlIou5EVAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Feedback visual cuando no hay exámenes&quot;
        title=&quot;Feedback visual cuando no hay exámenes&quot;
        src=&quot;/static/03d9092336ad688548ea587c7f513bf2/f058b/sin-examenes.png&quot;
        srcset=&quot;/static/03d9092336ad688548ea587c7f513bf2/c26ae/sin-examenes.png 158w,
/static/03d9092336ad688548ea587c7f513bf2/6bdcf/sin-examenes.png 315w,
/static/03d9092336ad688548ea587c7f513bf2/f058b/sin-examenes.png 630w,
/static/03d9092336ad688548ea587c7f513bf2/40601/sin-examenes.png 945w,
/static/03d9092336ad688548ea587c7f513bf2/78612/sin-examenes.png 1260w,
/static/03d9092336ad688548ea587c7f513bf2/7be33/sin-examenes.png 1558w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Finalmente, la aplicación es responsive, así que se ve bien en dispositivos móviles:&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/72cf457f5f48ee96c56016267d31f5e6/1d69c/responsive.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 177.8481012658228%; position: relative; bottom: 0; left: 0; background-image: url(&apos;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=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Preview de la app responsive&quot;
        title=&quot;Preview de la app responsive&quot;
        src=&quot;/static/72cf457f5f48ee96c56016267d31f5e6/f058b/responsive.png&quot;
        srcset=&quot;/static/72cf457f5f48ee96c56016267d31f5e6/c26ae/responsive.png 158w,
/static/72cf457f5f48ee96c56016267d31f5e6/6bdcf/responsive.png 315w,
/static/72cf457f5f48ee96c56016267d31f5e6/f058b/responsive.png 630w,
/static/72cf457f5f48ee96c56016267d31f5e6/1d69c/responsive.png 750w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Aspectos técnicos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Es una aplicación web estilo “Single page application” (SPA) construida con &lt;a href=&quot;https://reactjs.org/&quot;&gt;React&lt;/a&gt; (versión 17)&lt;/li&gt;
&lt;li&gt;La interfaz utiliza el framework &lt;a href=&quot;https://ant.design/&quot;&gt;AntDesign&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;El deploy fue realizado en &lt;a href=&quot;https://vercel.com/&quot;&gt;vercel&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cosas a mejorar&lt;/h2&gt;
&lt;p&gt;Por restricciones de tiempo, no alcancé a hacer estas cosas:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) Agregar un “confirmar” el envío del examen&lt;/strong&gt;. 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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) Descargar examen como PDF&lt;/strong&gt;. Al ver un examen particular, poder descargar los resultados en formato PDF. Supongo que en algún momento querrían imprimir los resultados…&lt;/p&gt;
&lt;p&gt;En cuanto a recursos FHIR utilizados, hay uno en particular que quizás debería ser incluido. Al enviar los resultados, crear un &lt;code class=&quot;language-text&quot;&gt;DiagnosticReport&lt;/code&gt; que incluya la información de la &lt;code class=&quot;language-text&quot;&gt;Observation&lt;/code&gt; que se está creando. Según la documentación, este tipo de recursos debe ser usado para representar exámenes de laboratorio.&lt;/p&gt;
&lt;h2&gt;Resultados del desafío&lt;/h2&gt;
&lt;p&gt;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 🎉&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/12083fad9bd006f1e2f08f668803feef/87629/primer-lugar.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.9493670886076%; position: relative; bottom: 0; left: 0; background-image: url(&apos;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==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Diploma de primer lugar&quot;
        title=&quot;Diploma de primer lugar&quot;
        src=&quot;/static/12083fad9bd006f1e2f08f668803feef/f058b/primer-lugar.png&quot;
        srcset=&quot;/static/12083fad9bd006f1e2f08f668803feef/c26ae/primer-lugar.png 158w,
/static/12083fad9bd006f1e2f08f668803feef/6bdcf/primer-lugar.png 315w,
/static/12083fad9bd006f1e2f08f668803feef/f058b/primer-lugar.png 630w,
/static/12083fad9bd006f1e2f08f668803feef/40601/primer-lugar.png 945w,
/static/12083fad9bd006f1e2f08f668803feef/78612/primer-lugar.png 1260w,
/static/12083fad9bd006f1e2f08f668803feef/87629/primer-lugar.png 2076w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Mis impresiones sobre FHIR para la interoperabilidad&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;En mi caso fue así. Lo complicado es la terminología clínica y como &lt;em&gt;mapear&lt;/em&gt; recursos con procesos de la vida real.&lt;/p&gt;
&lt;p&gt;Otra complicación que veo es que si bien la &lt;em&gt;forma&lt;/em&gt; de comunicación es estándar, pueden haber dificultades. Algunos ejemplos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;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 &lt;code class=&quot;language-text&quot;&gt;extension&lt;/code&gt;. ¿Qué pasa si no todos los centros lo hacen así?&lt;/li&gt;
&lt;li&gt;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 &lt;code class=&quot;language-text&quot;&gt;Observation&lt;/code&gt; o crearse múltiples recursos.&lt;/li&gt;
&lt;li&gt;Trabajar con el recurso &lt;code class=&quot;language-text&quot;&gt;Parameters&lt;/code&gt; 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í.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dejando de lado las dificultades, como creador de software, &lt;strong&gt;lo que más me gusta es la posibilidad de crear aplicaciones que funcionen independiente de donde provengan los datos&lt;/strong&gt;. Aplicaciones agnósticas a la fuente, pero que &lt;em&gt;hablen&lt;/em&gt; en HL7, de manera que puedan ser utilizadas por cualquier centro o institución que use el estándar.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/e56edc9bae5ce4c283d5a31e754bd03e/f3583/preview.png"></media:content></item><item><title><![CDATA[Estándares de interoperabilidad en salud]]></title><description><![CDATA[En el post anterior ya mencionamos qué implica y qué beneficios podría tener el utilizar la interoperabilidad en salud. Pero además, es…]]></description><link>https://blog.codeness.io/estandares-interoperabilidad/</link><guid isPermaLink="false">https://blog.codeness.io/estandares-interoperabilidad/</guid><dc:creator><![CDATA[Eliana Quijada]]></dc:creator><pubDate>Thu, 26 Nov 2020 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8d04cd480e844eae9411c4c0edce2f27/0b533/estandares_interoperabilidad.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 51.26582278481012%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB8klEQVQoz22SX28SQRTF9yP4gfwePvrks9H4bPShD5ImvlQTpLHRVI2GGA1t2ppWLUHTCrF/oSwtYgstBSnL8ke2sDM/7+4ChcSTTGbmztwz5565BoK+0jS7Lu0+NC41WmsCBPNSCQ4aTMRcmSxH4TIGyTN6MpvHf0hvZekP4jnbG5q0BSunEMnBkyx8r0KpA3VHU3MC4vhPk9DsexZ+mCjZG+ci62miTGitxGa+AqrLXE4xcwCpmuZlHjaE6HcrIP5S1jzOQPLckXTFnakw167f5G5ozldrWI7Ltjwb/rzFo8VF5hNxNs4cXhfgUuo6aSuUlCKuUGiJNT3N1J7YkK0w/SnF/eg6t2eizC/E/QoNzzMPpcoZkViMD/F1bLtJox/49UtKfC4qExXt73uuoipnm7sZbtx7yK0H09RqNZ+j3lXioaiwxEi71eHINNnZy5Av10fGp4pVZncv2Bc/7V6g2kOhapM2j8gfHmI12z6Hd2aMflkCUh1/9fAfNR1REl59y8fkchBRyicddoH3oZ6TLffqIWO8Rfz1YHi+dYXw2eo7XsTesJPMsV+0Ect9AcE98VepUSt5+cagfRjyBuvAr5ZIME+O+ba0wtfIK9aiy7R7V8mTOcHa4D8YHrqixCvJFlmnVpPiRdPvNfR480/iH+pB64+lT1XqAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Estándares de interoperabilidad en salud&quot;
        title=&quot;Estándares de interoperabilidad en salud&quot;
        src=&quot;/static/8d04cd480e844eae9411c4c0edce2f27/0b533/estandares_interoperabilidad.png&quot;
        srcset=&quot;/static/8d04cd480e844eae9411c4c0edce2f27/c26ae/estandares_interoperabilidad.png 158w,
/static/8d04cd480e844eae9411c4c0edce2f27/6bdcf/estandares_interoperabilidad.png 315w,
/static/8d04cd480e844eae9411c4c0edce2f27/0b533/estandares_interoperabilidad.png 500w&quot;
        sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En el &lt;a href=&quot;/interoperabilidad&quot;&gt;post anterior&lt;/a&gt; ya mencionamos qué implica y qué beneficios podría tener el utilizar la interoperabilidad en salud. Pero además, es importante considerar que para que toda esa comunicación entre diferentes sistemas informáticos realmente funcione, y que la información compartida sea utilizada de forma eficiente, es necesario establecer reglas para que las diferentes instituciones “conversen” y sepan de qué están hablando.&lt;/p&gt;
&lt;p&gt;Para permitir esta “conversación” se han establecido &lt;em&gt;estándares de interoperabilidad&lt;/em&gt;, enfocados en unificar la información que es compartida.&lt;/p&gt;
&lt;p&gt;Existen distintos tipos de estándares que pueden clasificarse según su funcionalidad. Por ejemplo, hay estándares de mensajería, terminología, documentos, entre otros.&lt;/p&gt;
&lt;h2&gt;Estándares de mensajería&lt;/h2&gt;
&lt;p&gt;Los estándares de mensajería establecen la estructura y el formato de la información compartida.&lt;/p&gt;
&lt;p&gt;Un ejemplo común para poder entender el objetivo de estos estándares es pensar en una receta de medicamentos hecha en papel.&lt;/p&gt;
&lt;p&gt;Habitualmente los talonarios de recetas institucionales tienen una serie de campos a completar por el médico, los cuales son indispensables para que la farmacia dispense el medicamento (como el nombre y rut del paciente, el diagnóstico, el medicamento, la dosis, la vía de administración, entre otros). Esta receta nos ayuda a establecer la estructura de la información que quiere comunicar el médico al químico farmacéutico, que finalmente autorizará la dispensación del medicamento. Si esta solicitud se hiciera escribiendo todos los datos en una hoja en blanco, el químico debería deducir a qué tipo de dato corresponde cada línea de información escrita.&lt;/p&gt;
&lt;p&gt;Si esto lo llevamos a los sistemas informáticos, es necesario saber el contenido que tendrá cada mensaje enviado y/o recibido, para así poder decirle al sistema qué debe hacer específicamente.&lt;/p&gt;
&lt;p&gt;Algunos ejemplos de estos estándares son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HL7 v2:&lt;/strong&gt; HL7 (&lt;em&gt;Health Level Seven International&lt;/em&gt;) es una organización sin fines de lucro que se encarga de desarrollar estándares que permiten intercambiar información asociada a salud. Esta es la versión más utilizada actualmente en los sistemas de salud.
Los mensajes de esta versión son algo difíciles de entender a simple vista, porque son varias líneas largas, que utilizan símbolos específicos para separar los datos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HL7 v3:&lt;/strong&gt; Esta versión intenta ser menos flexible que la anterior, ya que esta flexibilidad tiene altos costos que implican dificultades al intentar hacer integraciones o mantenciones de los sistemas. Este estándar además de mensajes incorpora también terminologías. Todas estas características hacen que la migración desde la versión anterior sea algo compleja.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DICOM:&lt;/strong&gt; (&lt;em&gt;Digital Imaging &amp;#x26; Communications in Medicine&lt;/em&gt;). Es un estándar de transmisión de imágenes médicas y datos. Las aplicaciones más comunes de este estándar son la visualización, almacenamiento, impresión y transmisión de las imágenes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Estándares de terminología&lt;/h2&gt;
&lt;p&gt;Estos estándares establecen conceptos comunes para referirnos al mismo diagnóstico, procedimiento, examen, síntoma, etc.&lt;/p&gt;
&lt;p&gt;Aquí ya se intenta hilar un poquito más fino, ya que sabemos que es habitual utilizar diferentes terminologías para referirse a un mismo síntoma, diagnóstico, examen, observación o medicamento. Si necesitamos automatizar procesos, decisiones o análisis de los datos obtenidos, es muy importante que estén adecuadamente clasificados.&lt;/p&gt;
&lt;p&gt;Algunos ejemplos son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SNOMED-CT:&lt;/strong&gt; (&lt;em&gt;Systematized Nomenclature of Medicine – Clinical Terms&lt;/em&gt;) terminología clínica integral, multilingüe y codificada. Mantenida y distribuida por la International Health Terminology Standards Development Organisation (IHTSDO).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LOINC:&lt;/strong&gt; (&lt;em&gt;Logical Observation Identifiers Names and Codes&lt;/em&gt;) Es un estándar internacional que incluye identificadores, nombres y códigos para identificar mediciones de salud, observaciones y documentos. Se utiliza principalmente para exámenes de laboratorio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CIE-10:&lt;/strong&gt; (&lt;em&gt;Clasificación internacional de enfermedades, 10.ª edición&lt;/em&gt;) es publicada por la Organización Mundial de la Salud (OMS). Determina la clasificación y codificación de las enfermedades y se ocupa principalmente para fines estadísticos relacionados con morbilidad y mortalidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Estándares de documentos&lt;/h2&gt;
&lt;p&gt;Indican qué información y cómo debería estructurarse en la generación de documentos clínicos tales como evoluciones clínicas, informes de exámenes o epicrisis.&lt;/p&gt;
&lt;p&gt;Ejemplos de este tipo de estándar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HL7 CDA:&lt;/strong&gt; CDA es la abreviatura de &lt;em&gt;Clinical Document Architecture&lt;/em&gt;. Está basado en la metodología de trabajo de HL7 V3. El objetivo de este estándar es definir la parte estructural y semántica del documento, pero no se ocupa del contenido de estos documentos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CCR:&lt;/strong&gt; (&lt;em&gt;Continuity of Care Record&lt;/em&gt;) fue desarrollado conjuntamente por ASTM International, la Sociedad Médica de Massachusetts, la Sociedad de Sistemas de Gestión e Información de Salud (HIMSS), la Academia Estadounidense de Médicos de Familia y otros proveedores de informática de la salud. Es una forma de crear documentos flexibles que contienen la información médica básica más relevante y oportuna sobre un paciente y enviarlos electrónicamente de un cuidador a otro.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;HL7 FHIR&lt;/h2&gt;
&lt;p&gt;FHIR significa &lt;em&gt;Fast Healthcare Interoperability Resources&lt;/em&gt;. Le haré una mención por separado porque tiene como objetivo intentar abordar varios tipos de estándares, combinando características de HL7 v2, v3 y CDA.&lt;/p&gt;
&lt;p&gt;Su funcionamiento se basa en el concepto de recursos, donde cada recurso es un bloque de información que representa un concepto de la atención clínica (como paciente, cita médica, prescripción de medicamentos, resultado de exámenes, etc). Y cada recurso puede ir relacionándose con otros, para por ejemplo asociar todas las citas médicas de un mismo paciente.&lt;/p&gt;
&lt;p&gt;Intenta simplificar su implementación y aprendizaje utilizando arquitecturas más comunes para los desarrolladores como lo son los archivos en formato &lt;em&gt;JSON&lt;/em&gt; o &lt;em&gt;XML&lt;/em&gt; y la utilización &lt;em&gt;API REST&lt;/em&gt; (Si no eres del área informática y estos conceptos te suenan a chino, es normal, pero en futuros posts planeo explicarlos con peras y manzanas, o mejor aún con píldoras y jeringas).&lt;/p&gt;
&lt;p&gt;Personalmente tuvimos la oportunidad de jugar un poco con este estándar durante el &lt;strong&gt;TechConnect 2020&lt;/strong&gt;, &lt;a href=&quot;/techconnect-2020&quot;&gt;escribimos un post sobre nuestra experiencia&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Resumen&lt;/h2&gt;
&lt;p&gt;Existen variadas herramientas enfocadas a solucionar algunas de las brechas que se presentan para poder implementar sistemas interoperables, el desafío está en el diseñar, desarrollar e implementar sistemas informáticos que les saquen el mayor provecho posible.&lt;/p&gt;
&lt;p&gt;Es cierto que existen muchas otras barreras para poder llegar a un punto ideal, pero tenemos la tecnología a nuestro servicio, sólo queda trabajar con ella y utilizarla para brindar una mejor atención de salud.&lt;/p&gt;
&lt;h2&gt;Algunas referencias&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.snomed.org/&quot;&gt;SNOMED-CT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://loinc.org/&quot;&gt;LOINC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hl7.org/fhir/&quot;&gt;HL7 FHIR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Si están interesados conocer más detalles sobre cómo se construyen los estándares este post les puede ayudar &lt;a href=&quot;https://www.informaticaensalud.net/2019/02/introduccion-a-interoperabilidad-y-estandares-en-salud-parte-2-2/&quot;&gt;Introducción a Interoperabilidad y estándares en salud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Aquí hay algunos detalles más técnicos de los diferentes estándares de HL7 &lt;a href=&quot;https://www.caduceus.es/estandares-hl7-fundamentales/&quot;&gt;Los 5 estándares HL7 fundamentales&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/61d50ae3953f6e8b153277d86c13c49b/f3583/preview.png"></media:content></item><item><title><![CDATA[Interoperabilidad en salud]]></title><description><![CDATA[En la práctica clínica, es habitual que una vez atendido el paciente se guarden sus datos en los sistemas de registro clínico propios del…]]></description><link>https://blog.codeness.io/interoperabilidad/</link><guid isPermaLink="false">https://blog.codeness.io/interoperabilidad/</guid><dc:creator><![CDATA[Eliana Quijada]]></dc:creator><pubDate>Tue, 17 Nov 2020 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/163117c4537ceacc98ce3d8a6e4d0d84/0b533/interoperabilidad-salud.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 51.26582278481012%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACOUlEQVQoz12SS28SYRSGx/hP/Bf+ghrjP9CNLlwbF+4aL4mbboxdmWhsrN0YxLioFaEIpS2Wa6FCO7SUBlrKXLgOt2EY5nGYoaTxJF/mnG/O9+Y9530F05wQzxaQazWUVoNpWJblHDtzan84S+D1Y6LZCm5Y13rcEA9FtF4PwTDGeLcSBCM5MoVT5+dk1tjUdJSuRTCcYP3jK7aTRRTNpNMbzYF0XScfT7K9/pNG9RKh0O6xEi3wYm2T5UiGgUuRhjZC7bgPpYbGmVKn0x26dXOIYZhOXrSZxXwBRjYxhjpCdaCzcVxlo1ghcCGh201qXuRkO+Y8ePIuw61HPu4vJbh57xuLn/PO/bHUd6eZTOZsp3MJ/BdHFy2WQxWWw+cEchK3n4YQFjwIdzwsLO7wYGmP3XQFv3eLWmx/hmRxtU1hcm2x09g9bfFyU2YxoOAvNAlnZW7c9fLwTRK5rRPKyAQ9PwisfiX5K4RhTVmajJs9zL7hMlRafVYzTQ5lDU3TOLrssCMq1FruWJv7sgM4/dY1g2q9xUFZpd/RyKZkzs4VGn/LjBsDG9Ay+ZMSebar8ilTtmXrOCADfYza1ufMu8Oxrb6byy1XLEXS2X8boXR8iVTR6HVsUbRul3Q+R6lSQiwVMcYmV1to2/ZQuyaeQA7/hyWCsRJ1u27PbDMwJrx//h3f7zO8/gqRpIQwsgGVeBw1nUZNpTANY27uK2P7oid4vqwRPbiY6zmZ0fXvFRDLXbYSEm3bav8AKoPTff9Q34cAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Interoperabilidad en salud&quot;
        title=&quot;Interoperabilidad en salud&quot;
        src=&quot;/static/163117c4537ceacc98ce3d8a6e4d0d84/0b533/interoperabilidad-salud.png&quot;
        srcset=&quot;/static/163117c4537ceacc98ce3d8a6e4d0d84/c26ae/interoperabilidad-salud.png 158w,
/static/163117c4537ceacc98ce3d8a6e4d0d84/6bdcf/interoperabilidad-salud.png 315w,
/static/163117c4537ceacc98ce3d8a6e4d0d84/0b533/interoperabilidad-salud.png 500w&quot;
        sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;En la práctica clínica, es habitual que una vez atendido el paciente se guarden sus datos en los sistemas de registro clínico propios del centro de atención de salud. Esta información queda encapsulada, disponible para ser utilizada sólo cuando el paciente regrese al mismo centro.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/023cea3e80a9e1152c53005aa01b88af/0b533/informe-encapsulado.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 51.26582278481012%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABO0lEQVQoz42SC4+CMBCE/f+/8OIZORQUrFD6FAo4N4VAcj4uNtl0C51vZ5vdgOt+v2PZh2HAOI5TLGv5/8naLJf7vkdVVWiaBo2UEEJAa70C38VjwRUoCbkSopSacu8ciqJgofDWzb9AawyMb6GthZI1tO/gCK0bh8YEFFePk/CoVYuyvkHq7o/7JV+B3lnk0uIrlZAU7YWhyKK8Wuxzg+Rk8H3QyEqHH+bxm/Hhye0KbG8ex9pSpLCjcFcY1ARW0hFmcShY8OKQnucCERrhvh0Q+vHZYQQmgg4oSjI6KO3kULBIbHWf6QkWQQmBZz7BkUWi88Z0z8Cb98goziuC2EquWyi+6/kytxfFcd+ygwjepgpdGN+3HEKAJqA2bJPOlHUwPM9zyflkLPswzPmr8dm8HNzp/NkwP2p/Afh0Cl1QaNT+AAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Los datos de la atención quedan encapsulados dentro de la institución&quot;
        title=&quot;Los datos de la atención quedan encapsulados dentro de la institución&quot;
        src=&quot;/static/023cea3e80a9e1152c53005aa01b88af/0b533/informe-encapsulado.png&quot;
        srcset=&quot;/static/023cea3e80a9e1152c53005aa01b88af/c26ae/informe-encapsulado.png 158w,
/static/023cea3e80a9e1152c53005aa01b88af/6bdcf/informe-encapsulado.png 315w,
/static/023cea3e80a9e1152c53005aa01b88af/0b533/informe-encapsulado.png 500w&quot;
        sizes=&quot;(max-width: 500px) 100vw, 500px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Esta situación era, y aún sigue siendo, algo inherente a los registros en papel. Sin embargo, muchos sistemas clínicos electrónicos replican este patrón a pesar de que una de las ventajas que nos brinda tener la información digitalizada es que no es necesario estar en el mismo lugar físico para acceder a ella (gracias al mágico internet).&lt;/p&gt;
&lt;p&gt;La interoperabilidad en salud tiene como objetivo evitar que existan todas estas “islas de información”, ya sea dentro de una misma institución como en diferentes instituciones.&lt;/p&gt;
&lt;h2&gt;Pero, ¿qué beneficios tiene esta posibilidad?&lt;/h2&gt;
&lt;p&gt;La interoperabilidad en salud permite mejorar la calidad y seguridad de la atención brindada a nuestros pacientes.&lt;/p&gt;
&lt;p&gt;Para explicar esta afirmación describiré algunos ejemplos de situaciones que me tocaba visualizar en el día a día de la atención clínica:&lt;/p&gt;
&lt;h3&gt;Situación 1: pacientes con enfermedades crónicas&lt;/h3&gt;
&lt;p&gt;Es muy habitual, sobre todo en el caso de los pacientes con enfermedades crónicas, que ellos o sus cuidadores tengan una carpeta, un cuaderno o un gran sobre, en donde van archivando uno a uno todos los exámenes y resúmenes de cada atención que reciben. Esto abre la posibilidad de que se pierdan, se dañen, o que simplemente en una situación de emergencia los olviden en casa.&lt;/p&gt;
&lt;p&gt;Al trabajar bajo el concepto de interoperabilidad, la institución prestadora podría consultar los resúmenes de las atenciones que el paciente ha recibido previamente y de esta manera evitar que sea el paciente el único responsable de portar con su información clínica.&lt;/p&gt;
&lt;h3&gt;Situación 2: derivación de pacientes&lt;/h3&gt;
&lt;p&gt;A veces un profesional debe realizar la derivación de un paciente a otro profesional que trabaja en un centro de atención diferente.&lt;/p&gt;
&lt;p&gt;Para que esta derivación se realice, pueden existir conductos regulares que exigen completar formularios oficiales. Muchas veces es el paciente o un familiar el encargado de trasladar este documento desde las manos del profesional que deriva hasta la oficina encargada de recibir la interconsulta.&lt;/p&gt;
&lt;p&gt;Similar a la situación anterior, que exista la forma de comunicar los datos ingresados por el primer profesional al segundo, permitiría evitar que sea el paciente o su familiar el responsable de trasladar esta hoja de papel. Esto es muy relevante considerando que hay traslados que pueden realizarse entre regiones.&lt;/p&gt;
&lt;h3&gt;Situación 3: registros clínicos y administrativos&lt;/h3&gt;
&lt;p&gt;Cuando trabajaba en un servicio de hospitalizados, cada mañana antes de entregar turno, debíamos obtener los resultados de los exámenes de laboratorio pertenecientes a nuestros pacientes desde el sistema informático del laboratorio del hospital. Parte del flujo que debían seguir estos resultados era:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La enfermera clínica los transcribía a mano a la hoja de enfermería diaria&lt;/li&gt;
&lt;li&gt;La enfermera clínica los ingresaba a la entrega de turno realizada en un documento digital&lt;/li&gt;
&lt;li&gt;El médico que entregaba turno debía ingresarlos en su entrega de turno digital&lt;/li&gt;
&lt;li&gt;El médico que recibía turno debía transcribirlos a la evolución médica diaria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Y como si todo esto fuera poco, cuando debíamos realizar seguimientos destinados a medir estándares de calidad, teníamos que ingresar algunos de estos resultados a la planilla excel que mensualmente solicitaba la unidad de Infecciones Asociadas a la Atención de Salud (IAAS).&lt;/p&gt;
&lt;p&gt;Este pequeño ejemplo práctico muestra uno de los muchos puntos de la atención que se vería beneficiado de sistemas de registro clínico informático que “conversen” entre sí, evitando los múltiples ingresos de la misma información, lo que a su vez reduce el riesgo de errores y también el tiempo del personal clínico utilizado en labores diferentes a la atención directa del paciente.&lt;/p&gt;
&lt;h2&gt;Estándares de interoperabilidad&lt;/h2&gt;
&lt;p&gt;Si consideramos la interoperabilidad como un proceso comunicativo, es muy importante que además de tener un canal para poder transmitir la información, también se utilice un lenguaje en común que sea comprensible para todos los participantes del proceso. De esta forma, todos los sistemas involucrados podrán interpretarlos, almacenarlos y mostrarlos.&lt;/p&gt;
&lt;p&gt;Para poder cumplir este objetivo, se originaron los estándares de interoperabilidad. Tema que hablaremos en las próximas entradas del blog.&lt;/p&gt;</content:encoded><media:content medium="image" url="https://blog.codeness.io/static/344fbe58a6baf4676831b10fbadcbe52/f3583/preview.png"></media:content></item></channel></rss>