1<!DOCTYPE html><html lang="es"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><style data-href="/styles.152614f15db64dfc7b3d.css" id="gatsby-global-css">@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:100;src:local("Montserrat Thin "),local("Montserrat-Thin"),url(/static/montserrat-latin-100-191cc9f50f3b76b9617cb383f19acb7d.woff2) format("woff2"),url(/static/montserrat-latin-100-370318464551d5f25b0f0a78f374faac.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:100;src:local("Montserrat Thin italic"),local("Montserrat-Thinitalic"),url(/static/montserrat-latin-100italic-bdeaeb79db315697bd173a55b097dc18.woff2) format("woff2"),url(/static/montserrat-latin-100italic-ecf7d49386e8f265878e735db34a7c4b.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:200;src:local("Montserrat Extra Light "),local("Montserrat-Extra Light"),url(/static/montserrat-latin-200-85d5ef9db7f2dc6979172a4a3b2c57cb.woff2) format("woff2"),url(/static/montserrat-latin-200-1fc98e126a3d152549240e6244d7e669.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:200;src:local("Montserrat Extra Light italic"),local("Montserrat-Extra Lightitalic"),url(/static/montserrat-latin-200italic-49095760a498d024fe1a85a078850df9.woff2) format("woff2"),url(/static/montserrat-latin-200italic-fe46cf8b9462c820457d3bf537e4057f.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:300;src:local("Montserrat Light "),local("Montserrat-Light"),url(/static/montserrat-latin-300-7c3daf12b706645b5d3710f863a4da04.woff2) format("woff2"),url(/static/montserrat-latin-300-8dc95fab9cf98d02ca8d76e97d3dff60.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:300;src:local("Montserrat Light italic"),local("Montserrat-Lightitalic"),url(/static/montserrat-latin-300italic-f20b178ca2024a5eac8e42e6649db86c.woff2) format("woff2"),url(/static/montserrat-latin-300italic-3fe16939288856e8e828fa2661bf2354.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:400;src:local("Montserrat Regular "),local("Montserrat-Regular"),url(/static/montserrat-latin-400-bc3aa95dca08f5fee5291e34959c27bc.woff2) format("woff2"),url(/static/montserrat-latin-400-8102c4838f9e3d08dad644290a9cb701.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:400;src:local("Montserrat Regular italic"),local("Montserrat-Regularitalic"),url(/static/montserrat-latin-400italic-5cad650422a7184467af5a4d17b264c4.woff2) format("woff2"),url(/static/montserrat-latin-400italic-d191f22af3bb50902b99ac577f81a322.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:500;src:local("Montserrat Medium "),local("Montserrat-Medium"),url(/static/montserrat-latin-500-92d16e458625f4d2c8940f6bdca0ff09.woff2) format("woff2"),url(/static/montserrat-latin-500-8b763220218ffc11c57c84ddb80e7b26.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:500;src:local("Montserrat Medium italic"),local("Montserrat-Mediumitalic"),url(/static/montserrat-latin-500italic-47bfcca6b69d6a9acca7a8bff17193e2.woff2) format("woff2"),url(/static/montserrat-latin-500italic-72c01f753c3940c0b9cb6bf2389caddf.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:600;src:local("Montserrat SemiBold "),local("Montserrat-SemiBold"),url(/static/montserrat-latin-600-6fb1b5623e528e27c18658fecf5ee0ee.woff2) format("woff2"),url(/static/montserrat-latin-600-7c839d15a6f54e7025ba8c0c4b333e8f.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:600;src:local("Montserrat SemiBold italic"),local("Montserrat-SemiBolditalic"),url(/static/montserrat-latin-600italic-60789af1c9338ed1a9546722ec54b4f7.woff2) format("woff2"),url(/static/montserrat-latin-600italic-f3d4de8d0afb19e777c79032ce828e3d.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:700;src:local("Montserrat Bold "),local("Montserrat-Bold"),url(/static/montserrat-latin-700-39d93cf678c740f9f6b2b1cfde34bee3.woff2) format("woff2"),url(/static/montserrat-latin-700-80f10bd382f0df1cd650fec59f3c9394.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:700;src:local("Montserrat Bold italic"),local("Montserrat-Bolditalic"),url(/static/montserrat-latin-700italic-ba136d97b14e82284dd595e257f11c47.woff2) format("woff2"),url(/static/montserrat-latin-700italic-8c98142b425630821139c24bd1698700.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:800;src:local("Montserrat ExtraBold "),local("Montserrat-ExtraBold"),url(/static/montserrat-latin-800-b7018be9ed6cd94da8b6675b3a468c3b.woff2) format("woff2"),url(/static/montserrat-latin-800-9a9befcf50d64f9d2d19d8b1d1984add.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:800;src:local("Montserrat ExtraBold italic"),local("Montserrat-ExtraBolditalic"),url(/static/montserrat-latin-800italic-540ffdd223d1a9ad3d4e678e1a23372e.woff2) format("woff2"),url(/static/montserrat-latin-800italic-897086f99f4e1f45e6b1e9368527d0bc.woff) format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:900;src:local("Montserrat Black "),local("Montserrat-Black"),url(/static/montserrat-latin-900-58cd789700850375b834e8b6776002eb.woff2) format("woff2"),url(/static/montserrat-latin-900-26d42c9428780e545a540bbb50c84bce.woff) format("woff")}@font-face{font-family:Montserrat;font-style:italic;font-display:swap;font-weight:900;src:local("Montserrat Black italic"),local("Montserrat-Blackitalic"),url(/static/montserrat-latin-900italic-451157bc8861fe54f523b3669a3def71.woff2) format("woff2"),url(/static/montserrat-latin-900italic-a8ec4957e1c24f5793305763ad9845b3.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:300;src:local("Merriweather Light "),local("Merriweather-Light"),url(/static/merriweather-latin-300-b1158cfcd4aacb9d8fb61625e37af46a.woff2) format("woff2"),url(/static/merriweather-latin-300-cc7de05e166e90320d7d896e0f72a19d.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:300;src:local("Merriweather Light italic"),local("Merriweather-Lightitalic"),url(/static/merriweather-latin-300italic-8fe52a48089d6ebe46db0b8e7cc66263.woff2) format("woff2"),url(/static/merriweather-latin-300italic-e1331f5397c2a673f9d3765138debdb5.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:400;src:local("Merriweather Regular "),local("Merriweather-Regular"),url
1(/static/merriweather-latin-400-8276fdb72ae8f4714d4e6eba704cc39f.woff2) format("woff2"),url(/static/merriweather-latin-400-69f09800f4f6479d06e44eba837df872.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:400;src:local("Merriweather Regular italic"),local("Merriweather-Regularitalic"),url(/static/merriweather-latin-400italic-3a9be9ea9f7aa4af6de7307df21d9fc0.woff2) format("woff2"),url(/static/merriweather-latin-400italic-d76079ed7541a433a54f79316de086e9.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:700;src:local("Merriweather Bold "),local("Merriweather-Bold"),url(/static/merriweather-latin-700-fa534be7ffa380e39a7f6e03bf9a5e03.woff2) format("woff2"),url(/static/merriweather-latin-700-ba56ea84b8084b7ff9677f50d3cd81bd.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:700;src:local("Merriweather Bold italic"),local("Merriweather-Bolditalic"),url(/static/merriweather-latin-700italic-1ef5edaaa20ae53ea50399884c5e48c6.woff2) format("woff2"),url(/static/merriweather-latin-700italic-534bc9e7ce93c73d73426e46acd78092.woff) format("woff")}@font-face{font-family:Merriweather;font-style:normal;font-display:swap;font-weight:900;src:local("Merriweather Black "),local("Merriweather-Black"),url(/static/merriweather-latin-900-7528fb70e8a4a82c7305e72ff43ac25f.woff2) format("woff2"),url(/static/merriweather-latin-900-3799b6e2f5ed3fcccf9d7a708d7419fa.woff) format("woff")}@font-face{font-family:Merriweather;font-style:italic;font-display:swap;font-weight:900;src:local("Merriweather Black italic"),local("Merriweather-Blackitalic"),url(/static/merriweather-latin-900italic-e1b4d2aaa78e12ad84aaf8a56321e4c2.woff2) format("woff2"),url(/static/merriweather-latin-900italic-2ae22f731b3424e8dbb4b37f7ca6e708.woff) format("woff")} 2 3 4/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden]{display:none}:root{--maxWidth-none:"none";--maxWidth-xs:20rem;--maxWidth-sm:24rem;--maxWidth-md:28rem;--maxWidth-lg:32rem;--maxWidth-xl:36rem;--maxWidth-2xl:42rem;--maxWidth-3xl:48rem;--maxWidth-4xl:56rem;--maxWidth-full:"100%";--maxWidth-wrapper:var(--maxWidth-4xl);--spacing-px:"1px";--spacing-0:0;--spacing-1:0.25rem;--spacing-2:0.5rem;--spacing-3:0.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-20:5rem;--spacing-24:6rem;--spacing-32:8rem;--fontFamily-sans:Montserrat,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--fontFamily-serif:"Merriweather","Georgia",Cambria,"Times New Roman",Times,serif;--font-body:var(--fontFamily-sans);--font-heading:var(--fontFamily-sans);--fontWeight-normal:400;--fontWeight-medium:500;--fontWeight-semibold:600;--fontWeight-bold:700;--fontWeight-extrabold:800;--fontWeight-black:700;--fontSize-root:18px;--lineHeight-none:1;--lineHeight-tight:1.1;--lineHeight-normal:1.5;--lineHeight-relaxed:1.625;--fontSize-0:0.833rem;--fontSize-1:1rem;--fontSize-2:1.2rem;--fontSize-3:1.44rem;--fontSize-4:1.728rem;--fontSize-5:2.074rem;--fontSize-6:2.488rem;--fontSize-7:2.986rem;--color-primary:#3bc0bf;--color-text:#2e353f;--color-text-light:#4f5969;--color-heading:#062a3a;--color-heading-black:#000;--color-accent:#d1dce5;--color-cta:#f154b1}*,:after,:before{box-sizing:border-box}html{line-height:var(--lineHeight-normal);font-size:var(--fontSize-root);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,html{min-height:100%}body{font-family:var(--font-body);font-size:var(--fontSize-1);color:var(--color-text)}footer{padding:var(--spacing-6) var(--spacing-0)}hr{background:var(--color-accent);height:1px;border:0}.h1,h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);margin-top:var(--spacing-12);margin-bottom:var(--spacing-6);line-height:var(--lineHeight-tight);letter-spacing:-.025em}h2,h3,h4,h5,h6{font-weight:var(--fontWeight-bold)}.h1,h1,h2,h3,h4,h5,h6{color:var(--color-heading)}.h1,h1{font-weight:var(--fontWeight-black);font-size:var(--fontSize-6);margin:var(--spacing-6) 0}h2{font-size:var(--fontSize-5)}h3{font-size:var(--fontSize-4)}h4{font-size:var(--fontSize-3)}h5{font-size:var(--fontSize-2)}h6{font-size:var(--fontSize-1)}h1>a{color:var(--color-heading);text-decoration:none}h2>a,h3>a,h4>a,h5>a,h6>a{text-decoration:none;color:inherit}p{line-height:var(--lineHeight-relaxed);--baseline-multiplier:0.179;--x-height-multiplier:0.35;margin:var(--spacing-0) var(--spacing-0) var(--spacing-8) var(--spacing-0);padding:var(--spacing-0)}ol,ul{margin-left:var(--spacing-0);margin-right:var(--spacing-0);padding:var(--spacing-0) var(--spacing-4);margin-bottom:var(--spacing-8);list-style-position:outside;list-style-image:none}ol li,ul li{padding-left:var(--spacing-0)}li>p,ol li,ul li{margin-bottom:calc(var(--spacing-8)/2)}li :last-child{margin-bottom:var(--spacing-0)}li>ul{margin-left:var(--spacing-8);margin-top:calc(var(--spacing-8)/2)}blockquote{color:var(--color-text-light);margin-left:calc(var(--spacing-6)*-1);margin-right:var(--spacing-8);padding:var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-6);border-left:var(--spacing-1) solid var(--color-primary);font-size:var(--fontSize-2);font-style:italic;margin-bottom:var(--spacing-8)}blockquote>:last-child{margin-bottom:var(--spacing-0)}blockquote>ol,blockquote>ul{list-style-position:inside}table{margin-bottom:var(--spacing-8);border-spacing:.25rem}table thead tr th{border-bottom:1px solid var(--color-accent)}a{color:var(--color-heading);font-weight:700}a:focus,a:hover{text-decoration:none}.bold{font-weight:var(--fontWeight-bold)}.global-wrapper{margin:var(--spacing-4) auto;max-width:var(--maxWidth-wrapper);padding:var(--spacing-6) var(--spacing-8);background-color:#fff}.global-wrapper[data-is-root-path=true] .bio{margin-bottom:var(--spacing-20)}.global-header{margin-bottom:var(--spacing-12)}.main-heading{font-size:var(--fontSize-7);margin:0}.post-list-item{margin-bottom:var(--spacing-8);margin-top:var(--spacing-8);display:flex;align-items:center}.post-list-item p{margin-bottom:var(--spacing-0)}.post-list-item h2{font-size:var(--fontSize-4);color:var(--color-heading);margin-bottom:0;margin-top:var(--spacing-0)}.post-list-item header{margin-bottom:var(--spacing-4)}.post-tags{margin-bottom:var(--spacing-3)}.post-tags a{margin-right:var(--spacing-2);border-radius:9999px;background-color:var(--color-primary);text-decoration:none;line-height:1;color:#fff;padding:.25em .75em;font-size:75%;font-weight:700}.post-list-item .author-avatar{height:36px;width:36px}.author-info{display:flex;align-items:center;margin-top:var(--spacing-3)}.header-link-home{color:var(--color-heading);font-weight:var(--fontWeight-bold);font-family:var(--font-heading);text-decoration:none;font-size:var(--fontSize-2);display:inline-flex;align-items:center}.bio{display:flex;margin-bottom:var(--spacing-12)}.bio p{margin-bottom:var(--spacing-0)}.blog-post header h1{margin:var(--spacing-0) var(--spacing-0) var(--spacing-4) var(--spacing-0)}.blog-post header p{font-size:var(--fontSize-2);font-family:var(--font-heading)}.blog-post-nav ul{margin:var(--spacing-0)}.gatsby-highlight{margin-bottom:var(--spacing-8)}.index-logo{width:70px;height:70px;margin-right:10px}.post-logo{width:50px;height:50px;margin-right:8px}.footer-text{text-align:center}.author-avatar{width:70px;height:70px;margin-right:10px;border-radius:50%}.social-link{margin-left:var(--spacing-2);margin-right:var(--spacing-8)}.social-box{display:inline-block}.nav-button{background-color:var(--color-heading);padding:5px 8px;color:#fff;text-decoration:none;border-radius:5px}.figure-caption{text-align:center;font-style:italic}img{max-width:100%}.imagePostContainer{width:40%;display:inline-block}.summaryPostContainer{width:60%;display:inline-block;padding-left:20px}table{display:table;overflow:auto;width:100%;border-collapse:collapse;margin:2rem 0}table td,table th{padding:6px 13px;border:1px solid #dfe2e5}table tr:nth-child(2n){background-color:#f6f8fa}td,th{text-align:left;vertical-align:top}.header-container{display:flex;justify-content:space-between;align-items:center;margin:0 auto;max-width:var(--maxWidth-wrapper);padding:0 var(--spacing-8)}.header{padding:var(--spacing-6);background-color:var(--color-heading);color:#fff}.h1,.header h1{font-size:var(--fontSize-4);margin:0}.h1>a,.header h1>a{color:#fff;text-decoration:none;display:inline-flex;align-items:center}
4.navigation{display:flex;justify-content:space-between}.navigation a{text-decoration:none;padding:var(--spacing-2) var(--spacing-4);display:block;color:#fff}#menu-toggle{display:none}#menu-toggle+label{display:none;padding:var(--spacing-4)}.text-muted{color:var(--color-text-light)}@media (max-width:767px){table{display:block;max-width:100%}}@media (max-width:42rem){blockquote{padding:var(--spacing-0) var(--spacing-0) var(--spacing-0) var(--spacing-4);margin-left:var(--spacing-0)}ol,ul{list-style-position:inside}body{background:none}.main-heading{font-size:var(--fontSize-3)}.global-wrapper{box-shadow:none;margin-top:var(--spacing-0)}.global-wrapper,.header{padding:var(--spacing-4)}.header-container{padding:0}.navigation{display:none;position:absolute;z-index:0;flex-direction:column;background-color:var(--color-heading);left:0;right:0;top:112px}.navigation a{padding:var(--spacing-4)}#close-menu{display:none}#menu-toggle+label,#open-menu{display:block}#menu-toggle:checked~.navigation{display:flex}#menu-toggle:checked+label #open-menu{display:none}#menu-toggle:checked+label #close-menu{display:block}h1{font-size:var(--fontSize-4)}h2{font-size:var(--fontSize-3)}h3{font-size:var(--fontSize-2)}h4,h5,h6{font-size:var(--fontSize-1)}ol,ul{padding:var(--spacing-0)}.imagePostContainer{display:none}.summaryPostContainer{width:100%;padding-left:0}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}</style><meta name="generator" content="Gatsby 2.32.13"/><link rel="sitemap" type="application/xml" href="/sitemap.xml"/><link rel="alternate" type="application/rss+xml" title="RSS Feed del blog de Nessy" href="/rss.xml"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><meta name="theme-color" content="#062a3a"/><link rel="apple-touch-icon" sizes="192x192" href="/android-chrome-192x192.png"/><link rel="apple-touch-icon" sizes="384x384" href="/android-chrome-384x384.png"/><title data-react-helmet="true">Nueva versión de Cesar AI (v2) | El Blog de Nessy</title><meta data-react-helmet="true" name="description" content="Actualizamos Cesar AI, la herramienta que transforma información de un paciente a FHIR usando inteligencia artificial."/><meta data-react-helmet="true" name="image" content="https://blog.codeness.io/static/46a23edbf331f36477adde482b4d6f2c/f3583/Cesar.AI.png"/><meta data-react-helmet="true" property="og:image" content="https://blog.codeness.io/static/46a23edbf331f36477adde482b4d6f2c/f3583/Cesar.AI.png"/><meta data-react-helmet="true" property="og:image:width" content="1200"/><meta data-react-helmet="true" property="og:image:height" content="630"/><meta data-react-helmet="true" property="og:title" content="Nueva ver
4sión de Cesar AI (v2)"/><meta data-react-helmet="true" property="og:description" content="Actualizamos Cesar AI, la herramienta que transforma información de un paciente a FHIR usando inteligencia artificial."/><meta data-react-helmet="true" property="og:type" content="website"/><meta data-react-helmet="true" name="twitter:card" content="summary"/><meta data-react-helmet="true" name="twitter:creator" content="NessyHealth"/><meta data-react-helmet="true" name="twitter:image" content="https://blog.codeness.io/static/46a23edbf331f36477adde482b4d6f2c/f3583/Cesar.AI.png"/><meta data-react-helmet="true" name="twitter:title" content="Nueva versión de Cesar AI (v2)"/><meta data-react-helmet="true" name="twitter:description" content="Actualizamos Cesar AI, la herramienta que transforma información de un paciente a FHIR usando inteligencia artificial."/><link as="script" rel="preload" href="/webpack-runtime-0e2fcd59ed7d4ab6bbc1.js"/><link as="script" rel="preload" href="/styles-540f25bd5e5cb35d6f53.js"/><link as="script" rel="preload" href="/framework-29ba174b433dc5858bed.js"/><link as="script" rel="preload" href="/app-bb36b33bda458262cac0.js"/><link as="script" rel="preload" href="/a9a7754c-3bcea21576f028ee7e1a.js"/><link as="script" rel="preload" href="/commons-4eaec22c9a4ba53659fe.js"/><link as="script" rel="preload" href="/dffd9eda1bde23af0ce146d568b45c289f422d0a-07f2cd2b717c3d63858e.js"/><link as="script" rel="preload" href="/cd7d5f864fc9e15ed8adef086269b0aeff617554-66f6549d9c1d83fef11e.js"/><link as="script" rel="preload" href="/component---src-templates-blog-post-js-d9c3ab606ab3552d77ab.js"/><link as="fetch" rel="preload" href="/page-data/cesar-ai-v2/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/page-data/sq/d/3832538981.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><header class="header"><div class="header-container"><div class="h1"><a href="/"><img class="index-logo" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI2ODAuMzE1cHgiIGhlaWdodD0iNjgwLjMxNXB4IiB2aWV3Qm94PSIwIDAgNjgwLjMxNSA2ODAuMzE1IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2ODAuMzE1IDY4MC4zMTUiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPGc+CgkJPGc+CgkJCTxnPgoJCQkJPHBhdGggZmlsbD0iI0ZGRkZGRiIgc3Ryb2tlPSIjMUQ3NDc1IiBzdHJva2Utd2lkdGg9IjExLjc0MjMiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgZD0iTTE3OS43NDEsNzMuMjg5bDEyLjQ4NSw1MC44NjIKCQkJCQljMCwwLDU4LjcyLTI3LjI4Miw5Ni42MzQsMTguMDMxbDI4LjIwNy01NS45NDZjMCwwLDE0LjMzNC0xNy41NzItMTYuNjQ2LTMwLjA1NUMyNjguOTc5LDQxLjM4NCwxODAuNjY3LDMxLjIxMiwxNzkuNzQxLDczLjI4OXoKCQkJCQkiLz4KCQkJCTxnPgoJCQkJCTxwYXRoIGZpbGw9IiNBMTFEMjEiIGQ9Ik0yMDcuMjA1LDEwMC41ODZsMTMuMDMxLTIuNTZsLTMuNjkxLTE4Ljc5N2wtMTMuMDMxLDIuNTZsLTIuNTYxLTEzLjAzbC0xNS43NjQsMy4wOTcKCQkJCQkJYy0wLjAwNiwwLjEwOC0wLjAxNSwwLjIxLTAuMDE4LDAuMzE4bDEwLjgzOCw0NC4xNDRsMTMuNzU1LTIuNzAyTDIwNy4yMDUsMTAwLjU4NnoiLz4KCQkJCTwvZz4KCQkJPC9nPgoJCQk8cGF0aCBmaWxsPSIjNDFCRkJGIiBzdHJva2U9IiMxRDc0NzUiIHN0cm9rZS13aWR0aD0iMTEuNzQyMyIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBkPSJNNjIyLjg5LDM1OS4yMjkKCQkJCWMtOTkuNzg5LDY2LjUyNy0xNzguNDEyLDI4LjIyNS0xNzguNDEyLDI4LjIyNXMtNDEuMzI4LTEwMC43OTMtMTY3LjMyMi01OC40NjFjMCwwLDcuMjA3LTM3LjY4NCwyNi4zMjktNTcuMDUyCgkJCQljMTQuMDMtMTYuNTk2LDIyLjQ1Ny0zNy44NzUsMjIuNDU3LTYxLjA4MWMwLTUzLjAyNC00NC4wMTQtOTYuMDExLTk4LjMwOC05Ni4wMTFjLTM1LjkyNCwwLTY3LjM0MywxOC44MjItODQuNDk1LDQ2LjkxOAoJCQkJYy0zLjU1Ny0wLjMzOS03LjE2Ny0wLjUxOC0xMC44MjktMC41MThjLTUzLjY2LDAtOTcuMTU5LDM3LjMyOC05Ny4xNTksODMuMzc2YzAsNDYuMDQ3LDQzLjQ5OSw4My4zNzgsOTcuMTU5LDgzLjM3OAoJCQkJYzIwLjAxLDAsMzguNTk4LTUuMiw1NC4wNTMtMTQuMDk2Yy00My4wNTEsMTM5LjU2OSw4LjE0MiwxODQuNDI0LDguMTQyLDE4NC40MjRzLTU3Lj
4Q1NCwyOC4yMjItNjYuNTI1LDgwLjYzNgoJCQkJYzk4Ljc3OCw1My40MiwxMzAuMDI3LTI2LjIwNywxMzAuMDI3LTI2LjIwN3M1OC40NjEsMzcuMjk1LDE0MS4xMTUsMTYuMTI1YzM3LjI5NSw3Mi41NzUsMTAyLjgxMyw1MS40MDksMTAyLjgxMyw1MS40MDkKCQkJCXMxOS4xNS0zOS4zMTMtNy4wNTctOTIuNzMzYzkwLjcyMS00My4zNCwxNDAuMTEtMTU4LjI1MSwxNDAuMTEtMTU4LjI1MVM2MzcuMDAxLDM1NC4xOSw2MjIuODksMzU5LjIyOXoiLz4KCQkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyMDkuODgxOCIgeTE9IjI1Ny4xMzQ4IiB4Mj0iMjA5Ljg4MTgiIHkyPSIyNTcuMTM0OCI+CgkJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGRkZGIi8+CgkJCQk8c3RvcCAgb2Zmc2V0PSIwLjc4MyIgc3R5bGU9InN0b3AtY29sb3I6IzU2NkM2QztzdG9wLW9wYWNpdHk6MC4zNTQxIi8+CgkJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDMzRjNFO3N0b3Atb3BhY2l0eTowIi8+CgkJCTwvbGluZWFyR3JhZGllbnQ+CgkJCTxwYXRoIGZpbGw9InVybCgjU1ZHSURfMV8pIiBkPSJNMjA5Ljg4MiwyNTcuMTM1Ii8+CgkJCTxnPgoJCQkJPHBhdGggZD0iTTIyOS45MjgsMTgzLjQxMWMtNi4zNTksMTYuMzQ5LTIwLjgsMjUuOTg4LTMyLjI2MSwyMS41MzJjLTExLjQ1Ny00LjQ1OC0xNS41OTItMjEuMzIxLTkuMjM2LTM3LjY3MgoJCQkJCWM2LjM2LTE2LjM0NiwyMC44LTI1Ljk4NCwzMi4yNTktMjEuNTI5QzIzMi4xNSwxNTAuMTk5LDIzNi4yODYsMTY3LjA2MiwyMjkuOTI4LDE4My40MTF6Ii8+CgkJCQk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjMwLjg0NiwxNjIuNTc2YzAsNy44NjgtNC42NSwxNC4yNDktMTAuMzg4LDE0LjI0OWMtNS43MzUsMC0xMC4zODUtNi4zODEtMTAuMzg1LTE0LjI0OQoJCQkJCWMwLTcuODY2LDQuNjQ5LTE0LjI0NiwxMC4zODUtMTQuMjQ2QzIyNi4xOTYsMTQ4LjMzLDIzMC44NDYsMTU0LjcxLDIzMC44NDYsMTYyLjU3NnoiLz4KCQkJCTxlbGxpcHNlIGZpbGw9IiNGRkZGRkYiIGN4PSIxOTcuNzA0IiBjeT0iMTg5Ljg4NiIgcng9IjYuOTI1IiByeT0iOS40OTYiLz4KCQkJPC9nPgoJCTwvZz4KCTwvZz4KPC9nPgo8L3N2Zz4K" alt="Volver al inicio"/>El Blog de Nessy</a></div><input type="checkbox" id="menu-toggle"/><label for="menu-toggle"><svg id="open-menu" xmlns="http://www.w3.org/2000/svg" style="height:28px;width:28px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"></path></svg><svg id="close-menu" xmlns="http://www.w3.org/2000/svg" style="height:28px;width:28px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path></svg></label><nav class="navigation" role="navigation"><a href="/">Inicio</a><a href="/about">Sobre nosotros</a></nav></div></header><div class="global-wrapper" data-is-root-path="false"><main><article class="blog-post" itemscope="" itemType="http://schema.org/Article"><div class="post-tags"><a title="Ver artÃculos sobre Proyectos" href="/tags/proyectos/">Proyectos</a></div><header><h1 itemProp="headline">Nueva versión de Cesar AI (v2)</h1><p>16 de enero, 2025</p></header><section class="post-body" itemProp="articleBody"><p><a href="https://cesar-ai.web.app/">Cesar AI</a> es una aplicación web que transforma información de un paciente (en cualquier formato) a un recurso Patient de <a href="https://blog.codeness.io/que-es-hl7-fhir/">HL7 FHIR</a>.</p> 5<p>Es un experimento <a href="https://blog.codeness.io/construyendo-cesar-ai/">que construà el año 2023</a>, con la idea de que podrÃa ayudar a acelerar procesos de integración entre distintos sistemas informáticos en salud.</p> 6<p>Ahora año 2026, aprovechando la <a href="https://hl7chile.cl/fhir-connectathon-2026/">Connectathon 2026</a>, actualizamos la herramienta para que funcione (no lo estaba ð) y para que use los últimos perfiles de HL7 Chile.</p> 7<p>A continuación te explico sobre los cambios que hicimos.</p> 8<h2>Contexto - de dónde viene Cesar AI</h2> 9<p>Luego del <a href="https://blog.codeness.io/nuestra-experiencia-en-la-emprendethon-2023/">evento de la Emprendethon año 2023</a>, comencé a pensar en qué tipo de soluciones podrÃan ayudar a acelerar los <a href="https://blog.codeness.io/interoperabilidad/">proyectos de interoperabilidad en salud</a>.</p> 10<p>Si bien aprender a usar los <a href="https://blog.codeness.io/estandares-interoperabilidad/">estándares de interoperabilidad</a> como FHIR es importante, a veces no es tan sencillo hacerlo.</p> 11<p>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.</p> 12<p>¿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?</p> 13<p><span 14 class="gatsby-resp-image-wrapper" 15 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; " 16 > 17 <a 18 class="gatsby-resp-image-link" 19 href="/static/46a23edbf331f36477adde482b4d6f2c/c1b63/Cesar.AI.png" 20 style="display: block" 21 target="_blank" 22 rel="noopener" 23 > 24 <span 25 class="gatsby-resp-image-background-image" 26 style="padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC9klEQVQozw3R20+bdRzH8V6ZXSxOM2+MMXHsn5gX7n/wwsS4eDHhwmRbXDbNiJmoS9TIaW6ETDe1FCZQtnVAqRQohxY61tNGD7TjWaUt0PLw9OHpiR542idvfxevfH6H5Jt88zF9+rHBJx0Gn3W3uGAROSN4hBfCK4MLaZE5g4t5g/6iwXLFQK0boBsYZUH8FzcMpGWDVZuB6Vpni+/uGnT0CCMt2h1N2leFl0KiyRfJOhd36rTvN+jRdJbKTdRqExpNDK0FqR
26ZHIZ3Uoo7P1sTkC1SRtTLX+lS+NB9xxdnkslfn0osGV6QWX2vwTRWuH0N3qcViqUH+SFxqYmCugR6povsNcksGwccNTA8f1LDbanT2VvjqT4WrNoXr7go3YgaXn2c5f7Obj7p+5fxP/XyfzOI60tFqx2jpfaLrG6TD27jH54mMp4nYWpiejhR4Mpqlq6dG1+gxNx1lbszl+CFSp8P2jDdPvMG7p09z6uRJrnp8LIlti1WdvY3XbCXi7Ms5QiEvLrOXzUdioH0txsvdML23ZbruZ7k1JfOjS+aWN8vnA/9w9swHfHjuHG1tbVz6d4EptUAmc4C0Esb/PMTC3Dz+YADf4ziRMbFyz1iM4cUEg7+V6HtYpteh8stchr6QSqfDx9vvvc+JU2/xzpk2vvWFcJTqyKkiIaeHjbVZpESCV9EgrkcrrJsPMS1PNPBOHnOvW+OOeY87k7sMruX5PVrij2SFAemAnwMxBrN57uVLTO4W2d8qsTnvJTE3QXzBT3x2FffEGit/yZji0jZydYu/+1M8sMhYXAUsvgJDEY0h6RDLToERpcKwXMCc0bBJGntRUX2gQMtTouZU2ZvURCkaK8OaKGVmFbvbyfhADutYAasrj9WnYo0Jr4WMyviOeNsWuaXyNKqSDqrwTEVfVlGdhySnVPxWldkhVZRyu4C9v8j03TxTYwdMLypMB4RNISn8l2daEuLiHFawBxWkdYWGW+FwQSE1oxB+ouAZVZgZUvgf3CrMV7VvwCcAAAAASUVORK5CYII='); background-size: cover; display: block;" 27 ></span> 28 <img 29 class="gatsby-resp-image-image" 30 alt="Cesar.AI.png" 31 title="Cesar.AI.png" 32 src="/static/46a23edbf331f36477adde482b4d6f2c/f058b/Cesar.AI.png" 33 srcset="/static/46a23edbf331f36477adde482b4d6f2c/c26ae/Cesar.AI.png 158w, 34/static/46a23edbf331f36477adde482b4d6f2c/6bdcf/Cesar.AI.png 315w, 35/static/46a23edbf331f36477adde482b4d6f2c/f058b/Cesar.AI.png 630w, 36/static/46a23edbf331f36477adde482b4d6f2c/40601/Cesar.AI.png 945w, 37/static/46a23edbf331f36477adde482b4d6f2c/c1b63/Cesar.AI.png 1200w" 38 sizes="(max-width: 630px) 100vw, 630px" 39 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;" 40 loading="lazy" 41 /> 42 </a> 43 </span></p> 44<h2>Ahora sÃ⦠Los cambios que hicimos</h2> 45<p>La herramienta tenÃa 2 problemas:</p> 46<ol> 47<li>No funcionaba debido a la depreciación de la API de OpenAI.</li> 48<li>No usaba los últimos perfiles de HL7 Chile.</li> 49</ol> 50<h3>Cambio #1: Actualización de la API de OpenAI</h3> 51<p>Cuando construà Cesar AI el Q1 del 2023, usé el modelo <code class="language-text">text-davinci-003</code> de OpenAI, que fue dado de baja, al parecer, <a href="https://platform.openai.com/docs/deprecations">en enero de 2024</a>. Espero que la herramienta haya estado funcionando bien⦠pero al parecer llevaba mucho tiempo sin hacerlo ð</p> 52<p>Cuento corto, ahora la actualicé para que use <code class="language-text">gpt-4o-mini</code>, 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.</p> 53<h3>Cambio #2: Actualización de la forma en que el LLM procesa los datos</h3> 54<p>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:</p> 55<div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Input de usuario (csv, txt, json) â LLM â CSV â Código de la aplicación â FHIR</code></pre></div> 56<p>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 <a href="https://github.com/toon-format/toon">Toon</a> están siendo tan populares).</p> 57<p>Luego, <a href="https://openai.com/index/new-models-and-developer-products-announced-at-devday">OpenAI introdujo soporte de respuestas tipo JSON (âJSON Modeâ)</a>, 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 <a href="https://openai.com/index/introducing-structured-outputs-in-the-api">Agosto del 2024 comenzaron a soportar âoutputâ estructurado</a>, donde puedes especificar cómo debe ser la respuesta del LLM.</p> 58<p>Asà que ahora, cuando solicitamos que el LLM genere un JSON, le decimos que debe tener la siguiente estructura:</p> 59<div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">rut: string | null - RUT del paciente 60nombres: string - Nombres de pila (sin apellidos) 61apellido_paterno: string - Apellido paterno 62apellido_materno: string | null - Apellido materno (opcional) 63genero: enum["male", "female", "other", "unknown"] - Género 64telefono: string | null - Número de teléfono 65email: string | null - Correo electrónico 66address: string | null - Dirección 67birthday: string - Fecha de nacimiento (formato YYYY-MM-DD)</code></pre></div> 68<p>Y el código de la aplicación se encarga de convertir eso a FHIR válido:</p> 69<div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">Input de usuario (csv, txt, json) â LLM â JSON (formato propio) â Código de la aplicación â FHIR</code></pre></div> 70<p><span 71 class="gatsby-resp-image-wrapper" 72 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; " 73 > 74 <a 75 class="gatsby-resp-image-link" 76 href="/static/fbe4be667e62e631e680acf96992cf61/c1b63/cesar-ai-flow.png" 77 style="display: block" 78 target="_blank" 79 rel="noopener" 80 > 81 <span 82 class="gatsby-resp-image-background-image" 83 style="padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABbUlEQVQoz6VSTU/CQBDt39F40RhN/E0kJiReCQkHiFgOROMB4cIPMMDBI+rBtAJ+ERSVcmjLQltoy9LPLd26pYmJiIkJ77A7MztvJvNmqWANUJc3uCdiYuHwCPwF/kt+6cLBUMfYX/Dx0nMUmC/wuyiFkOfYtqqqxNE0rVKp1Go1AMDKWlHQcRzP80KyDCQIDYSQoiilUimZTCYSiVwuB6ea5Qadftjt/Oz0olC4rtcJB0LY+/x4bT8Tm6o273gwmHsewzA0TRNaNpslV6t1DxSHbRum5Rzs7e9u72xtbHa77wLPN1m20WjYlkVVxSfdNV3bGY5G+Xw+nU6nUimaPhEEIcD+DELS+TiTOYzFjuJxXZ8OeK7D3r49PJIZqQAHyEWqFs4simK5XC4WixzHEdcwDGU89jEmQ5EE27KXBevJHTDm/Xm0LUyUm0wmRNvvDMKUJIkEZVk2TfMHmRGuwKwfMSP8pfOKPa/zw74A8DJb22Wz5SYAAAAASUVORK5CYII='); background-size: cover; display: block;" 84 ></span> 85 <img 86 class="gatsby-resp-image-image" 87 alt="Input (csv, txt, json) -> LLM -> JSON -> FHIR" 88 title="Input (csv, txt, json) -> LLM -> JSON -> FHIR" 89 src="/static/fbe4be667e62e631e680acf96992cf61/f058b/cesar-ai-flow.png" 90 srcset="/static/fbe4be667e62e631e680acf96992cf61/c26ae/cesar-ai-flow.png 158w, 91/static/fbe4be667e62e631e680acf96992cf61/6bdcf/cesar-ai-flow.png 315w,
92/static/fbe4be667e62e631e680acf96992cf61/f058b/cesar-ai-flow.png 630w, 93/static/fbe4be667e62e631e680acf96992cf61/40601/cesar-ai-flow.png 945w, 94/static/fbe4be667e62e631e680acf96992cf61/c1b63/cesar-ai-flow.png 1200w" 95 sizes="(max-width: 630px) 100vw, 630px" 96 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;" 97 loading="lazy" 98 /> 99 </a> 100 </span></p> 101<p>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.</p> 102<p>¿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.</p> 103<h3>Cambio #3: Actualización de los perfiles de HL7 Chile</h3> 104<p>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 <a href="https://hl7chile.cl/fhir/ig/clcore/StructureDefinition-CorePacienteCl.html">CL Paciente</a>.</p> 105<p>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 <code class="language-text">display</code>, pero el perfil de HL7 Chile te pide âMetropolitana de Santiagoâ.</p> 106<div class="gatsby-highlight" data-language="text"><pre class="language-text"><code class="language-text">El nombre de display para CSCodRegionCL#13 debe ser 'Metropolitana de Santiago',no 'Región Metropolitana'</code></pre></div> 107<p>Luego me puse ambicioso y quise que el resultado cumpliera con <a href="https://interoperabilidad.minsal.cl/fhir/ig/nid/0.4.9/StructureDefinition-MINSALPaciente.html">MINSAL Paciente</a>, que es el que usamos durante la Connectathon 2026.</p> 108<p>Aquà tuve que hacer más cambios, ya que este pide más información que <a href="https://hl7chile.cl/fhir/ig/clcore/StructureDefinition-CorePacienteCl.html">CL Paciente</a>. Por ejemplo, <code class="language-text">birthDate</code> y <code class="language-text">isDeceased</code> son obligatorios en Minsal Paciente, pero no en CL Paciente. Agregué estos campos, y por supuesto que <code class="language-text">isDeceased</code> es <code class="language-text">false</code> por defecto.</p> 109<h3>Cambio #4: Visualización del JSON</h3> 110<p>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 <a href="https://claude.com/product/claude-code">Claude Code</a> que mejorara ese aspecto e instaló <a href="https://github.com/TexteaInc/json-viewer">json-viewer</a>.</p> 111<h2>Resultado</h2> 112<p>Ahora la herramienta funciona y cumple con los perfiles de HL7 Chile actuales. Está disponible en <a href="https://cesar.codeness.io/">cesar.codeness.io</a>.</p> 113<p><span 114 class="gatsby-resp-image-wrapper" 115 style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; " 116 > 117 <a 118 class="gatsby-resp-image-link" 119 href="/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/d2c28/cesar-ai-v2.png" 120 style="display: block" 121 target="_blank" 122 rel="noopener" 123 > 124 <span 125 class="gatsby-resp-image-background-image" 126 style="padding-bottom: 52.53164556962025%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABYlAAAWJQFJUiTwAAACHElEQVQoz2WTS3ObMBSF+f/TVRdddCabPFbdtYtOZ5JV06btTNtF3ThOwBgDDgbMG0kIcU8v4L4m8nw+XGEdH12EdbfUlB8GxI+G4h0TGuyDmSQkBGuJ588u4K8b1BnQHgxk2kMlPbpYk4409VyL7w2Ji4wsP+wI8/itxzFM350W+HhzjaYtp7rHkzGtk05N7WlE1nbXgdKU1HYHsQ0hvADtxkdpuyiYUYUXonI2yB82SO59NOsthDvT2BtU/pbEXQF5+ghr5WYU+S6icEedkDCdhtFM16FnRhVNyy3Zo0oSqKqaalG3kKxNUZEX+CgWCamzkKylm8JZ3WLjusiLAkIKRv63f9X3iJIDqrKE5HtSdYyaVI0B+Df1QwF1HsDyEz
126k3gh2GYYDhxcYYrmmGP4oTp1mO6pBAlPyndQ1RlZNKoaCMRuVx/TqCFaTqaEhPu32cmwxzXtDxk9VmSqX4emRKORqGNapPGSwvkWM2aE7XjwmP+gcaINgw4B7mWYaWtzwaztvu/hoGDeW3FVlR1tM/R+ZpzPEA6R5hnKLMc7QtPxClmcmMpGTDXlMZ1HRY1WS9dTy8vL/Byf0XYnDhfMO583WscbL6jBc/P2AR+fMZNAMG7u/I2Oee0cYQz6Dat0jWNaz3TkxX9gNd2g4ubZuuHFbmnW3jzXKJV4sVrjcxFkGFH34BNy4nvLhAFOWUPuY47HOKtxm/ZS39AmclQpfmLsCbAAAAAElFTkSuQmCC'); background-size: cover; display: block;" 127 ></span> 128 <img 129 class="gatsby-resp-image-image" 130 alt="Screenshot de Cesar AI v2" 131 title="Screenshot de Cesar AI v2" 132 src="/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/f058b/cesar-ai-v2.png" 133 srcset="/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/c26ae/cesar-ai-v2.png 158w, 134/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/6bdcf/cesar-ai-v2.png 315w, 135/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/f058b/cesar-ai-v2.png 630w, 136/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/40601/cesar-ai-v2.png 945w, 137/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/78612/cesar-ai-v2.png 1260w, 138/static/1d6ed27b1f17e0eac2a79dfc24ae42a0/d2c28/cesar-ai-v2.png 4000w" 139 sizes="(max-width: 630px) 100vw, 630px" 140 style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;" 141 loading="lazy" 142 /> 143 </a> 144 </span></p> 145<p>Si pillas algún problema o tienes alguna sugerencia, puedes escribirme a mi <a href="https://www.linkedin.com/in/codewithnico/">LinkedIn</a>.</p></section><hr/><footer><div class="bio"><div class="author-avatar gatsby-image-wrapper" style="position:relative;overflow:hidden;display:inline-block;width:70px;height:70px"><img aria-hidden="true" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEqUlEQVQ4y22T2XMUVRSH58kHtRDIOpnp7pnuniXbJJMdshEyIQnZYFgCRCKEJJCwC0mUFMpigEBYEtawhCAJBgEt1iqg1BIpKUuLguJBLV98sKzywb/h83SHzdKHU32r77nf/f3OPceRYMzCini9VL5lOP2VuFLqUNKiqBlLUcLNqFkr0SRUWSuhxbK3QHIacAaqSDBn22cnz8/C8RImG0nBGtySrGYuQ8teiTeniUC4iuRwBWaoEm84ije/E092i52jpC/ElVxLoq/8FfAlTDaU9EV4spaj5XUQyKkjMiOTmSGDUMCL36tieD2YGRGBtkuskdz3UEONorZeoJEXCstE2dznsGb0gnUYuUuIFGbRUJhCrplId1MthekBprz9DlPeegO3kYlR3PVc7cpJqKVUhDmsmrmlXprUR89fjV7cQ1p+PeVhnfLsIHvWr+Dvn+7y682z9K9vJqC5mD49BqNoI0ZJj5zpsJVa9pMC1ThcyXV28b25begzN2KW78aXs5gsbwxb3m3g6/Fh/vjhPs9ujzO27wM6Fs8hLjYWvbRHcnehF72PN281WmYT7tQGHJY66wbbqtzoqzyAUtTNqmiE7y4c4kTPOp5eO8mnOzbQ29JEX+ciQkGdpMIu/FUHMUo/FCEbbOuWSofVBp6cVvTCzZhlH+GbewSlbDe961r5/avLPL1+kd9ujPDZzg08GBng3qmdVBZlo5Rux1dzFHP2DrG/RRy2i9MlOGy7Itko3opPLHirBglFhzm9byd/PrrDXw9v8WB0kMObWngydoibxz5maSSbUN1B9JoTmJFPbGdeqaUWbhKg9JPVAkZJt2z2YcwdIjD/Agf6h3l8a4SHE2d4NHGRKwf3MLJ7CwPdzTRE2whGL2DUHMes2Dtpu2CtAJf/F2jWDKHXj5Kx9DIT54d5cuM0T66Mc3toP6N9a9nUuYLUxs8x549J7rH/Ab5m2Xpho/oI/nln0edfob1riHuXDvP07jVujwzS3VZLdbSF5MYv8TWcs93Yrl63bD2K97VHMSr346s/hdpwmc6uo5wb2Mq2zR00L6yhqthPbW09/uglzPqzGFUDrx4lr91uP7tttBdtU9qLOadfXvoQrpJe2lat4fGd0/Rva6dlUTndrdUsq5uJK7dF7A5K7gGMWdv/3TZ2Y0tT6nmtGAVtApcRTC1FDeYRidSI3XF+vHWeqyd3cfV4Lw3VFUyNV1ED+eKsEWOGDER+mz1p7tR51uhVoKXORgsWyIyGUMx0NH8WeuoMFH8eo4N7eXZ/gu+/OMPYUB/eQJgkPR3Vl4HLE8Stp0leLkqwREYvIkBDmtQUkC9TvhK+bNxmGE8wB5cklkdq+eWb6/z87R2qqqPEa2kCScepJZOgBCSC9jpR9RPrCuBIVFNw+7JEYQ5aIIckb7oNtEIVpdOcfjpXtbFkQSNvTnWR5EnB6Uklzu0nQRWQliKwZOLdAaYnaDhinSZOgShyWBGw6s+24YovbK9VuSTG5Ze6eXCJMivHLXsuI0OshwRowXwC8zAtXoAxiTpxcsACTKp6DhT7L1RbSj3B3EmY/LfCJfV2etJs27FJBlPj3EyLU/gHBhzbgqfkxlYAAAAASUVORK5CYII=" alt="Nicolás Gómez" style="position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;transition-delay:500ms"/><noscript><picture><source srcset="/static/c454b7eddf2624b2e434eb2b68050446/31406/nico.png 1x, 146/static/c454b7eddf2624b2e434eb2b68050446/1edbf/nico.png 1.5x, 147/static/c454b7eddf2624b2e434eb2b68050446/b3779/nico.png 2x" /><img loading="lazy" width="70" height="70" srcset="/static/c454b7eddf2624b2e434eb2b68050446/31406/nico.png 1x, 148/static/c454b7eddf2624b2e434eb2b68050446/1edbf/nico.png 1.5x, 149/static/c454b7eddf2624b2e434eb2b68050446/b3779/nico.png 2x" src="/static/c454b7eddf2624b2e434eb2b68050446/31406/nico.png" alt="Nicolás Gómez" style="position:absolute;top:0;left:0;opacity:1;width:100%;height:100%;object-fit:cover;object-position:center"/></picture></noscript></div><div><p><b>Nicolás Gómez</b></p><p>Ingeniero Civil en Computación PUC.</p><div class="social-box"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="linkedin" class="svg-inline--fa fa-linkedin fa-w-14 " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
149<path fill="currentColor" d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg><a class="social-link" href="https://www.linkedin.com/in/codewithnico" target="_blank" rel="noreferrer">codewithnico</a></div><div class="social-box"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter-square" class="svg-inline--fa fa-twitter-square fa-w-14 " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"></path></svg><a class="social-link" href="https://twitter.com/codewithnico" target="_blank" rel="noreferrer">codewithnico</a></div><div class="social-box"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-w-16 " role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg><a class="social-link" href="https://github.com/muZk" target="_blank" rel="noreferrer">muZk</a></div></div></div></footer></article><nav class="blog-post-nav"><ul style="display:flex;flex-wrap:wrap;justify-content:space-between;list-style:none;padding:0"><li><a class="nav-button" rel="prev" href="/nuestra-experiencia-en-la-connectathon-2025/">â <!-- -->Nuestra experiencia en la Connectathon 2025</a></li><li><a class="nav-button" rel="next" href="/archivo-del-nessy-letter/">Archivo del Nessy Letter<!-- --> â</a></li></ul></nav></main><footer class="footer-text"><hr/>Hecho por Codeness con<!-- --> <span role="img" aria-label="cariño">â¤ï¸</span><br/>© <!-- -->2026<!-- --> <a target="_blank" rel="noreferrer" href="https://codeness.io">Codeness</a></footer></div></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div>
149<script> 150 (function(f, a, t, h, o, m){ 151 a[h]=a[h]||function(){ 152 (a[h].q=a[h].q||[]).push(arguments) 153 }; 154 o=f.createElement('script'), 155 m=f.getElementsByTagName('script')[0]; 156 o.async=1; o.src=t; o.id='fathom-script'; 157 m.parentNode.insertBefore(o,m) 158 })(document, window, '//cdn.usefathom.com/tracker.js', 'fathom'); 159 fathom('set', 'siteId', 'FCIFLVPZ'); 160 </script>
160<script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/cesar-ai-v2/";/*]]>*/</script>
160<script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-bf692ef827d0e4700f4a.js"],"app":["/app-bb36b33bda458262cac0.js"],"component---src-pages-404-js":["/component---src-pages-404-js-b39ffbf5b0e2e5bdb5d5.js"],"component---src-pages-index-js":["/component---src-pages-index-js-9de70264320e1ab1fceb.js"],"component---src-pages-tags-js":["/component---src-pages-tags-js-940a3c6554b99af4a03f.js"],"component---src-pages-using-typescript-tsx":["/component---src-pages-using-typescript-tsx-cb93bb1ff43e0c30b513.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-d9c3ab606ab3552d77ab.js"],"component---src-templates-page-js":["/component---src-templates-page-js-e5139abca30ce747910b.js"],"component---src-templates-tags-js":["/component---src-templates-tags-js-17f9a7d51b0978ceeb16.js"]};/*]]>*/</script>
160<script src="/polyfill-bf692ef827d0e4700f4a.js" nomodule=""></script>
160<script src="/component---src-templates-blog-post-js-d9c3ab606ab3552d77ab.js" async=""></script>
160<script src="/cd7d5f864fc9e15ed8adef086269b0aeff617554-66f6549d9c1d83fef11e.js" async=""></script>
160<script src="/dffd9eda1bde23af0ce146d568b45c289f422d0a-07f2cd2b717c3d63858e.js" async=""></script>
160<script src="/commons-4eaec22c9a4ba53659fe.js" async=""></script>
160<script src="/a9a7754c-3bcea21576f028ee7e1a.js" async=""></script>
160<script src="/app-bb36b33bda458262cac0.js" async=""></script>
160<script src="/framework-29ba174b433dc5858bed.js" async=""></script>
160<script src="/styles-540f25bd5e5cb35d6f53.js" async=""></script>
160<script src="/webpack-runtime-0e2fcd59ed7d4ab6bbc1.js" async=""></script>
160</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.