Buscar este blog

Seguidores

Vistas a la página totales

viernes, 28 de diciembre de 2018

REVISTA SALUD DIGITAL

Es una publicación digital orientada a mostrar tecnologías aplicadas al campo de la salud en Latinoamérica cubriendo Transformación Digital, Telemedicina, Historia Clínica Electrónica, Big Data, Impresión 3D, e Inteligencia Artificial, entre otras.

domingo, 23 de diciembre de 2018

Utilizando Docker con Snowstorm


Esta es una prueba experimental que aún no está listo para la producción.

Tenga en cuenta que esto es experimental y, actualmente, la forma más fácil de usar snowstorm es descargar el archivo más reciente de este repositorio de GitHub.

Esta es una opción fácil porque instalará Snowstorm, la versión correcta de Elasticsearch y los conectará por usted.

El docker-compose.yml en la opción de repo ejecutará todo lo necesario para usar Snowstorm sin la necesidad de construir nada. Sin embargo, deberá generar índices de SNOMED CT elasticsearch que puede generar usted mismo, ver las instrucciones de carga de snomed aquí o ponerse en contacto con techsupport@snomed.org para obtener acceso a una copia de algunos índices ya generados.

Una vez que tenga los índices, puede descomprimirlos en una carpeta local
~ / elastic o cambiar la siguiente línea en docker-compose.yml
desde
~ / elastic a una carpeta local de su elección:


volúmenes:
      - ~ / elastic: / usr / share / elasticsearch / data

Una vez hecho esto, simplemente ejecuta:

ventana acoplable-componer hasta -d

Referencia
https://github.com/IHTSDO/snowstorm/blob/master/docs/using-docker.md

Riesgo de Dr. Google

Dr.Google Is a Liar

Fake news threatens our democracy. Fake medical news threatens our lives.
Este artículo del New York time escrito por el Cardiólogo Dr. Haider Warraich advierte sobre los riesgo que puede representar noticias falsas del salud o su mala interpretación por parte de los pacientes.

Todo comenzó durante la clase de yoga. Sintió un extraño tirón en su cuello, una sensación completamente extraña para ella. Su amiga le sugirió que corriera a la sala de emergencias. Resultó que ella estaba teniendo un ataque al corazón.

Ella no encajaba con el estereotipo de alguien que podría tener un ataque al corazón. Hizo ejercicio, no fumó, observó su plato. Pero al revisar su historial médico, encontré que su nivel de colesterol estaba muy alto. Le habían recetado un medicamento de estatina para reducir el colesterol, pero nunca retiró la receta debido a las cosas aterradoras que había leído sobre las estatinas en Internet. Fue víctima de una enfermedad que se estaba preparando rápidamente para convertirse en una pandemia moderna: falsas noticias médicas.

Si bien la desinformación ha sido objeto de gran atención en la política, la desinformación médica podría tener un recuento de cuerpos aún mayor. Como sucede con las noticias falsas en general, las mentiras médicas tienden a extenderse más allá de las verdades en Internet, y tienen repercusiones muy reales.

Numerosos estudios han demostrado que los beneficios de las estatinas superan con creces los riesgos, especialmente para las personas con alto riesgo de enfermedad cardíaca. Pero han sido atacados en línea por un grupo dispar que incluye fanáticos paranoicos, personas que venden terapias alternativas y aquellos que solo quieren clics. Las innumerables páginas web y las publicaciones en las redes sociales exageran los riesgos poco comunes y acumulan afirmaciones infundadas, desde afirmar que las estatinas causan cáncer hasta sugerir que el colesterol bajo es realmente malo para la salud. Un estudio encontró que incluso en las historias que simplemente sopesan los riesgos en comparación con los beneficios de las estatinas se relacionaron con la suspensión de los medicamentos contra el colesterol por parte de los pacientes, que se asocia con un aumento en los ataques cardíacos.

La información médica falsa también puede hacer que los pacientes experimenten mayores efectos secundarios a través del "efecto nocebo". A veces, los pacientes se benefician de una intervención simplemente porque creen que lo harán: ese es el efecto placebo. El efecto nocebo es lo contrario: los pacientes pueden experimentar efectos adversos solo porque los anticipan. Esto es muy cierto de las estatinas. En los ensayos a ciegas, los pacientes que reciben estatinas no tienen más probabilidades de reportar dolor muscular que los pacientes que reciben un placebo. Sin embargo, en la práctica clínica, según un estudio, casi una quinta parte de los pacientes que toman estatinas informan efectos secundarios, lo que lleva a muchos a suspender los fármacos.

La información médica falsa también puede hacer que los pacientes experimenten mayores efectos secundarios a través del "efecto nocebo". A veces, los pacientes se benefician de una intervención simplemente porque creen que lo harán: ese es el efecto placebo. El efecto nocebo es lo contrario: los pacientes pueden experimentar efectos adversos solo porque los anticipan. Esto es muy cierto de las estatinas. En los ensayos a ciegas, los pacientes que reciben estatinas no tienen más probabilidades de reportar dolor muscular que los pacientes que reciben un placebo. Sin embargo, en la práctica clínica, según un estudio, casi una quinta parte de los pacientes que toman estatinas informan efectos secundarios, lo que lleva a muchos a suspender los fármacos.

¿Qué más hay en la lista de noticias falsas? Como siempre, vacunas: de acuerdo con una historia viral engañosa de este año, el cuerpo de un epidemiólogo del Centro para el Control y la Prevención de Enfermedades se lavó en un río después de haber expresado su preocupación por la vacuna contra la gripe. La semana pasada, Mark Green, un médico en Tennessee que acaba de ser elegido para el Congreso, repitió la falsa falsedad de que las vacunas pueden causar autismo (más tarde dijo que sus comentarios habían sido "malinterpretados").

False concerns that the vaccine for human papillomavirus causes seizures and other side effects reduced coverage rates in Japan from 70 percent to less than 1 percent in recent years. Polio vaccinators in Pakistan are frequently attacked by militants because they  think the vaccine is intended to sterilize the local population.

Cancer is another big target for pushers of medical misinformation — many of whom are making money off alternative therapies. “Though most people think cancer tumors are bad, they’re actually the way your body attempts to contain the harmful cells,” one fake news story reads. It suggests that surgery “compounds the risk of spreading harmful cells,” and warns that “prescription medications cause the body to become acidic, adding to the uncontrolled cell mutations.”

A 2017 study found that when cancer patients turn to alternative therapies like diets, herbs and supplements in place of conventional therapies, they are 2.5 times more likely to die. By exploiting people’s fears, those who dissuade patients from getting evidence-based treatment have blood on their hands.


Referencias
https://www.nytimes.com/2018/12/16/opinion/statin-side-effects-cancer.html

jueves, 20 de diciembre de 2018

ElasticSearch para Windows


Elasticsearch (ES) es un motor de búsqueda orientado a documentos JSON estructurados sin schemas, desarrollado en JAVA de código abierto, una de las principales características es que nos permite tener una arquitectura distribuida, escalable y de alta disponibilidad, ES se basa en Lucene para las búsqueda de texto. Las búsquedas el cual soporta multi idioma, geolocalización, autocompletado, sugerencias. ideal para los proyectos en donde trabajemos con big data.

Esta disponible para Linux, Mac y obviamente para Windows, si queres vivir tu experiencia con este maravilloso y revolucionario motor de búsqueda documental podemos bajarlo e instalarlo desde el siguiente link:


Referencias
https://www.elastic.co/downloads/elasticsearch
https://backtrackacademy.com/articulo/conociento-elasticsearch

Lidiando en el procesamiento del lenguaje natural en Informática en salud

Se conoce como Procesamiento de Lenguaje Natural (NLP por sus siglas en inglés) al campo de estudio interdisciplinario entre la inteligencia artificial, las ciencias computacionales y la lingüística cuyo objetivo es lograr que las computadoras realicen tareas de utilidad que involucren el lenguaje humano. Dichas tareas pueden ser enfocadas a permitir la comunicación humano-máquina, mejorar la comunicación humano-humano o simplemente para realizar procesos de reconocimiento de habla o texto.


No basta conocer los términos para poder entender algo, y para poder tomar acciones y armar procesos hace falta entender. Hay una frase de Matt Groening que gráfica bien lo que acabo de decir:
"Sé todas esas palabras, pero esa frase no tiene sentido para mí".
Es decir que no basta machear las palabras contra términos conocidos, sino que que esto debe tener un sentido.

La búsqueda de texto completo es una batalla entre la precisión (devolver la menor cantidad de documentos irrelevantes como sea posible) y la recuperación (devolver) la mayor cantidad posible de documentos relevantes. Aunque coincidir solo las palabras exactas que el usuario ha consultado serían precisas, no es suficiente. Nos perderíamos muchos documentos que el usuario consideraría relevantes. En su lugar, necesitamos expandir la red más amplia, para buscar también palabras que no sean exactamente iguales a las originales pero que estén relacionadas.

La principal característica del lenguaje natural que hace difícil la automatización de su procesamiento es la ambigüedad, algo con lo que el cerebro humano generalmente logra acostumbrarse a lidiar. Al interpretar una sentencia el ser humano evoca toda una serie de experiencias personales y contextuales que la impregnan de significado, lo cual resulta muy complejo de modelar programáticamente.

¿No esperaría que la búsqueda de "zorro marrón rápido" coincida con un documento que contenga "zorros marrón rápidos", "Johnny Walker" para que coincida con "Johnnie Walker" o "Arnolt Schwarzenneger" para que coincida con "Arnold Schwarzenegger"?

Si existen documentos que contienen exactamente lo que el usuario ha consultado, esos documentos deberían aparecer en la parte superior del conjunto de resultados, pero las coincidencias más débiles pueden incluirse más abajo en la lista. Si ningún documento coincide exactamente, al menos podemos mostrar las posibles coincidencias del usuario; ¡Incluso pueden ser lo que el usuario pretendía originalmente!



Referencias
https://www.elastic.co/guide/en/elasticsearch/guide/current/languages.html
https://medium.com/soldai/procesamiento-de-lenguaje-natural-5315cf212d0f

¿Qué es ECL (Enterprise Control Language)?

ECL (Enterprise Control Language) es un lenguaje de programación declarativo, centrado en los datos, diseñado en 2000 para permitir que un equipo de programadores procese big data a través de un clúster informático de alto rendimiento sin que el programador participe en muchas de las decisiones imperativas de nivel inferior.




Referencias
https://hpccsystems.com/training/documentation/learning-ecl
https://www.elastic.co/guide/en/elasticsearch/guide/current/using-language-analyzers.html

Mongo DB vs ElasticSearch


  • MongoDB es una base de datos de propósito general, 
  • Elasticsearch es un motor de búsqueda de texto distribuido respaldado por Lucene.

  • ElasticSearch es muy bueno para tareas específicas: indexar y buscar grandes conjuntos de datos. Se usa cuando tiene alguna información secundaria sobre sus datos y necesita saber los registros reales

Resolución del Ministerio de Salud y Acción Social sobre los estándares HL7-FHIR y SNOMED

Esta resolución de diciembre del 2018 es para mi un break point en lo que se refiere a Informática Medica en la Argentina.


MINISTERIO DE SALUD Y DESARROLLO SOCIAL
SECRETARÍA DE GOBIERNO DE SALUD
Resolución 680/2018
RESOL-2018-680-APN-SGS#MSYDS
Ciudad de Buenos Aires, 05/12/2018
Visto el expediente EX-2018-50604001-APN-DD#MSYDS ; y
CONSIDERANDO
Que por Decreto N° 802 de fecha 5 de septiembre de 2018 se atribuye al SECRETARIO DE GOBIERNO DE SALUD el objetivo de entender en la planificación global del sector salud y en la coordinación con las autoridades sanitarias de las jurisdicciones provinciales y del Gobierno de la Ciudad Autónoma de Buenos Aires, con el fin de implementar un Sistema Federal de Salud consensuado, que cuente con la suficiente viabilidad social.
Que el Gobierno Nacional fijó, a través del MINISTERIO DE SALUD Y DESARROLLO SOCIAL, como una de sus políticas sustanciales a partir de 2016, avanzar en el camino hacia la COBERTURA UNIVERSAL DE SALUD -CUS-.
Que por Decreto N° 908 de fecha 2 de agosto de 2016 se aprueban las finalidades para la Estrategia COBERTURA UNIVERSAL DE SALUD –CUS-, dentro de las cuales se encuentra la de modernización del Sector Público de Salud.
Que mediante la Resolución N°475/16 se instruye a todos los programas nacionales de salud, cualquiera sea su fuente de financiamiento, a colaborar y coordinar su accionar con la implementación y el desarrollo de la estrategia de la Cobertura Universal de Salud, con el objeto de promover el acceso a la atención sanitaria integral, gratuita y con la adecuada calidad, jerarquizando el Primer Nivel de Atención.
Que por ANEXO I -IF-2018-23176242-APN-DD#MS- de la Resolución del MINISTERIO DE SALUD N° 1013/18 se aprobó la estrategia de implementación de la COBERTURA UNIVERSAL DE SALUD, la cual se desarrolló mediante tres ejes principales, del cual el segundo es el de SISTEMAS DE INFORMACIÓN INTEROPERABLES Y APLICACIONES INFORMÁTICAS.
Que dentro del eje SISTEMAS DE INFORMACIÓN INTEROPERABLES Y APLICACIONES INFORMÁTICAS, mencionado en el párrafo anterior, se inicia, en conjunto con las jurisdicciones, el camino hacia un sistema de salud que cuente con tecnologías que faciliten el registro de la información en forma primaria durante el contacto con el paciente, en sistemas interoperables que permitan compartir la información entre niveles de atención y jurisdicciones, construyendo para cada paciente una historia clínica nacional, longitudinal y completa, de utilidad clínica, estadística y de gestión.
Que por Decisión Administrativa N° 307/18 se creó la DIRECCIÓN NACIONAL DE SISTEMAS DE INFORMACIÓN EN SALUD cuya responsabilidad primaria es la de gestionar las condiciones para el desarrollo y coordinación de los sistemas de información en salud a nivel nacional y jurisdiccional.
Que dentro de las acciones de la mencionada DIRECCIÓN NACIONAL se encuentra la de gestionar el diseño e implementación de estándares de interoperabilidad y contribuir a la conectividad en establecimientos de salud en el ámbito federal.
Que por Resolución de la SECRETARIA DE GOBIERNO DE SALUD N° 189 de fecha 25 de octubre de 2018 se aprobó la Estrategia Nacional de Salud Digital, la cual establece dentro de las actividades a realizar para el desarrollo de la misma la definición de estándares de terminología, comunicación, conjuntos básicos de datos mínimos, entre otros, los cuales se seleccionarán tomando en cuenta los estándares utilizados en proyectos públicos y privados en la actualidad, y las iniciativas de armonización en salud digital regionales y globales.
Que a los fines descriptos resulta necesaria la recomendación del conjunto de estándares para la representación y comunicación de información sanitaria utilizados a nivel mundial para resolver diferencias de estructura y codificación entre sistemas de información en salud, permitiendo la interacción y el intercambio productivo de datos entre aplicaciones heterogéneas, independientemente de su plataforma tecnológica o de su lenguaje de desarrollo.
Que las organizaciones internacionales SNOMED Internacional, HL7 (Health Level Seven) y la Organización Mundial de la Salud recomiendan estándares que se complementan para dar soporte a todos los procesos de soporte al registro, transferencia y análisis de datos en sistemas de información en salud.
Que la utilización de estándares permitirá que los registros y programas nacionales cuenten con información completa, precisa y oportuna, al integrarse con los Sistemas de Información en Salud jurisdiccionales y de otros subsistemas.
Que la utilización de estándares posibilitará la transferencia de información entre sistemas de información con fines asistenciales, para asegurar la mejor calidad de atención, integrando la información de la historia clínica del paciente a través de todas las jurisdicciones y subsistemas.
Que la DIRECCIÓN GENERAL DE ASUNTOS JURÍDICOS ha tomado intervención en la faz de su competencia.
Que la presente se dicta en ejercicio de las facultades conferidas por el Decreto N° 802/18.
Por ello,
EL SECRETARIO DE GOBIERNO DE SALUD
RESUELVE:
ARTÍCULO 1°- Apruébase el documento “ESTANDARES” el cual se incorpora como ANEXO IF-2018-55220238-APN-SSCPS#MSYDS y forma parte integrante de la presente.
ARTÍCULO 2°- Establécese que las jurisdicciones que han adherido a la Estrategia de COBERTURA UNIVERSAL EN SALUD serán beneficiarias de las capacitaciones y la asistencia técnica que se generen con motivo del documento aprobado en el artículo 1° de la presente.
ARTÍCULO 3°-. Deléguese, al titular de la DIRECCIÓN NACIONAL DE SISTEMAS DE INFORMACIÓN DE SALUD, la facultad de actualizar las recomendaciones de utilización de estándares.
ARTÍCULO 4°-. Comuníquese, publíquese, dese a la Dirección Nacional del Registro Oficial y archívese. Adolfo Luis Rubinstein
NOTA: El/los Anexo/s que integra/n este(a) Resolución se publican en la edición web del BORA -www.boletinoficial.gob.ar-
e. 07/12/2018 N° 93390/18 v. 07/12/2018
Fecha de publicación 07/12/2018

Referencia

Docker en Windows

Docker y Microsoft tienen una relación tecnológica de ingeniería conjunta para brindar una experiencia de Docker consistente para desarrolladores y operadores de Microsoft. 

Todas las versiones de Windows Server 2016 y posteriores vienen con Docker Engine - Enterprise. 

Además, los desarrolladores pueden aprovechar Docker de forma nativa con Windows 10 a través de Docker Desktop. 

Los contenedores de Windows de Docker funcionan de la misma manera que en Linux: la misma CLI de Docker, API, formato de imagen y servicios de distribución de contenido. 

Beneficios adicionales:
  • Proporcione una experiencia de usuario de Docker consistente: use los mismos comandos e IU en Windows que en los entornos Linux
  • Elimine conflictos: diferentes versiones de IIS / .NET pueden coexistir en un solo sistema con aislamiento de contenedor
  • Complementario con la virtualización de Hyper-V con propiedades de aislamiento adicionales cuando los contenedores de Hyper V se seleccionan en tiempo de ejecución
  • Imágenes base más pequeñas: aproveche las nuevas imágenes base más pequeñas como Windows Server Core y Nano Server en Windows Server 1709, 1803 y Windows Server 2019


Referencias
https://docs.docker.com/docker-for-windows/
https://www.docker.com/products/windows-containers

¿Puedo llevar una aplicación dockerizarla de unLinux a una un Windows?

En lo que parece ser un tema recurrente (del cual prometo que me iré pronto), pasaré un tiempo hablando sobre lo que Docker no es. Docker no es la virtualización de aplicaciones.

Pasé una buena cantidad de tiempo en VMware, donde trabajé en VMware View (que dio inicio a Horizon View y luego a Horizon 7), por lo que estoy más que un poco familiarizado con la virtualización de escritorios y aplicaciones. Y, entiendo por qué algunas personas, cuando nos escuchan por primera vez hablar de aprovechar Docker para la portabilidad de la aplicación, piensan en la forma de App-V, XenApp o ThinApp.


Ayer hablamos sobre cómo se ejecuta la cadena de suministro de software moderno en Docker, y en esa publicación notamos que el 41% de los usuarios de Docker apunta a la portabilidad de aplicaciones como un caso de uso central.


Antes de unirme a Docker, si hubiera escuchado la "portabilidad de la aplicación", habría pensado de inmediato en ThinApp (basado en gran medida en mi herencia VMware). Esa frase para muchos de los que trabajan en computación de escritorio y de servidor tradicional significa la capacidad de entregar aplicaciones sin problemas, sin encontrar errores comunes como el "infierno de DLL". Podría significar usar algo como App-V o ThinApp para poner la aplicación dentro de un arenero que incluye la aplicación y todos los archivos DLL necesarios. O bien, podría significar alojar la aplicación en un servidor y entregarla de forma remota a la Citrix XanApp o la RemoteApp de Microsoft. Los ejemplos comunes de objetivos de virtualización de aplicaciones incluyen IE6 con extensiones personalizadas, Microsoft Word, Excel, etc.
Por lo tanto, aquí hay una base conceptual común entre estas soluciones de virtualización de aplicaciones y Docker. Pero también hay algunas diferencias críticas.

Como escribí anteriormente, Docker no es una tecnología de virtualización en el sentido histórico de la palabra, sino una plataforma de entrega de aplicaciones. Docker permite que las aplicaciones monolíticas tradicionales se entreguen como un conjunto de microservicios reutilizables.

Todas las herramientas que mencioné en esta publicación están realmente orientadas a entregar aplicaciones de escritorio de Windows heredadas. Estas aplicaciones son monolíticas, ya que contienen su propia GUI (frente a una aplicación web a la que se accede a través de un navegador). Por el contrario, la carga de trabajo de Docker más utilizada son las aplicaciones web multiservicio.

Entonces, sí, los contenedores Docker encapsulan todo el código y las bibliotecas necesarios para ejecutar un servicio. Pero esos servicios son fundamentalmente diferentes a las aplicaciones que se entregan a través de las tecnologías tradicionales de virtualización de aplicaciones.

Al final, Docker no es un reemplazo directo para la virtualización de aplicaciones. Es una forma de tomar muchas de las aplicaciones implementadas utilizando tecnologías virt de la aplicación y recrearlas de una manera que ofrezca mayores niveles de agilidad, portabilidad y control.

Referencias
https://blog.docker.com/2016/04/app-virtualization-docker/
https://www.dataart.com.ar/news/para-que-nos-sirve-docker/

¿Qué diferencia a Docker respecto a una máquina virtual?



Todas las aplicaciones tienen sus propias dependencias, que incluyen tanto los recursos de software y hardware. Los Contenedores Docker aportarán numerosos beneficios en comparación con las tecnologías existentes. En términos de tecnología, es bastante interesante en escenarios donde ayuda en la promoción de la portabilidad de la nube mediante la ejecución de las mismas aplicaciones en diferentes entornos virtuales esto es muy útil en el ciclo de vida para el desarrollo de software.


Cuando se trata de comparar los dos tipos de tecnologías se podría decir que Docker y sus contenedores tienen mucho más potencial que las máquinas virtuales. Este desafío vs no ha comenzado y ya vemos un claro ganador en base a nuestra experiencia. Sin embargo, vamos a detallar bien cada punto destacando los aspectos fuertes y débiles al usar Docker vs VM, distinguiendo categorías como rendimiento, rapidez, portabilidad, seguridad y administración.
Realmente el concepto es algo similar, pero un contenedor no es lo mismo que una máquina virtual. Un contenedor es más ligero, ya que mientras que a una máquina virtual necesitas instalarle un sistema operativo para funcionar, un contenedor de Docker funciona utilizando el sistema operativo que tiene la máquina en la que se ejecuta el contenedor.

Digamos que el contenedor de Docker toma los recursos más básicos, que no cambian de un ordenador a otro del sistema operativo de la máquina en la que se ejecuta. Y los aspectos más específicos del sistema que pueden dar más problemas a la hora de llevar el software de un lado a otro, se meten en el interior del contenedor.



Docker es una plataforma abierta para desarrolladores, es un mecanismo que ayuda a aislar las dependencias por cada aplicación mediante la creación de contenedores. Los contenedores son escalables y seguros si los comparamos con el enfoque anterior del uso 

Para que te hagas una idea, el concepto de portabilidad de un contenedor de Docker es algo similar a la máquina virtual de Java.

Que un contenedor Docker tome los aspectos básicos de funcionamiento del sistema operativo de la máquina en la que se ejecuta lo vuelve más ligero que una máquina virtual.

Referencias

Dockerización


Es muy probable que últimamente de una u otra forma hayas escuchado hablar de Docker en algún contexto: en una conferencia, a un desarrollador de tu empresa, a alguien de sistemas, cuando se habla de entornos, despliegues…


¿Qué es Docker?

La idea detrás de Docker es crear contenedores ligeros y portables para las aplicaciones software que puedan ejecutarse en cualquier máquina con Docker instalado, independientemente del sistema operativo que la máquina tenga por debajo, facilitando así también los despliegues. Un Docker es una herramienta que puede empaquetar una aplicación y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor, esto nos permite llevar esos contenedores de un servidor a otro.

Con el reciente boom de los lenguajes de scripting (lenguajes que no generan archivos binarios) este concepto se rompe un poco y los DevOps del mundo se han puesto imaginativos y a falta de un archivo binario deciden “dockerizar” las aplicaciones, entonces ahora en lugar de un archivo binario tenemos una imagen de docker que al correr sirve nuestra aplicación.



Y es que esta tecnología está bastante relacionada con el área de sistemas, con los entornos en los que se ejecutan las aplicaciones software.

Por ello, puede que al hablar de ella se utilicen palabras muy específicas, al igual que cuando se menciona Puppet (Simplifica drásticamente la administración de sistemas: Puppet en 10 min.), Chef, etc. que gente no familiarizada con estos temas no entiende.

Hoy mi objetivo con este post es que de forma clara, entiendas qué es Docker, por qué su uso se ha extendido tanto en estos años y qué beneficios aporta.

Con estas bases podrás investigar un poco más sobre Docker en la documentación oficial, foros, etc., y utilizar la herramienta de alguna manera, adaptándola a tus necesidades.


Para que podamos acceder como usuarios normales a una aplicación, dicha aplicación software necesita estar ejecutándose en una máquina, en un ordenador. Pero además, dependiendo del tipo de aplicación, dicho ordenador también necesita tener instaladas una serie de cosas para que la aplicación se ejecute correctamente: cierta versión de Java instalado, un servidor de aplicaciones (p.e tomcat, que es el software que realmente estará ejecutando mi aplicación y haciendo que pueda interactuar con ella).

Docker, me permite meter en un contenedor (“una caja”, algo auto contenido, cerrado) todas aquellas cosas que mi aplicación necesita para ser ejecutada (java, Maven, tomcat…) y la propia aplicación. Así yo me puedo llevar ese contenedor a cualquier máquina que tenga instalado Docker y ejecutar la aplicación sin tener que hacer nada más, ni preocuparme de qué versiones de software tiene instalada esa máquina, de si tiene los elementos necesarios para que funcione mi aplicación , de si son compatibles…

Yo ejecutaré mi aplicación software desde el contenedor de Docker, y dentro de él estarán todas las librerías y cosas que necesita dicha aplicación para funcionar correctamente.

En la fecha en la que se ha escrito el post, tienes que tener en cuenta que Docker utiliza ciertos aspectos de Linux, por lo que los contenedores de Docker no funcionan de forma nativa en Windows o OX. Solo funcionan en máquinas Linux, así que si necesitas ejecutar el contenedor sobre una máquina con otro sistema operativo distinto a Linux, deberás instalar una máquina virtual Linux. 

¿Qué beneficios tiene esto?
Docker es una herramienta diseñada para beneficiar tanto a desarrolladores, testers, como administradores de sistemas, en relación a las máquinas, a los entornos en sí donde se ejecutan las aplicaciones software, los procesos de despliegue, etc.

En el caso de los desarrolladores, el uso de Docker hace que puedan centrarse en desarrollar su código sin preocuparse de si dicho código funcionará en la máquina en la que se ejecutará.

Por ejemplo, sin utilizar Docker un posible escenario podría ser el siguiente (hay otras formas de solucionar este escenario, pero por poner un ejemplo claro):

– Pepe tiene en su ordenador instalado Java 8, y está programando una funcionalidad específica de la aplicación con algo que solo está disponible en esa versión de Java.

– José tiene instalado en su máquina Java 7, porque está en otro proyecto trabajando sobre otro código, pero Pepe quiere que José ejecute el código de su aplicación en su máquina. O José se instala Java 8, o la aplicación en su máquina fallará.

Este escenario desaparece con Docker. Para ejecutar la aplicación, Pepe se crea un contenedor de Docker con la aplicación, la versión 8 de Java y el resto de recursos necesarios, y se lo pasa a José.

José, teniendo Docker instalado en su ordenador, puede ejecutar la aplicación a través del contenedor, sin tener que instalar nada más.

Por eso Docker también es muy bueno para el testing, para tener entornos de pruebas. Por un lado, es muy sencillo crear y borrar un contenedor, además de que son muy ligeros, por lo que podemos ejecutar varios contenedores en una misma máquina (donde dicho contenedor tendría el entorno de nuestra aplicación: base de datos, servidor, librerías…). Por otro, un mismo contenedor funcionará en cualquier máquina Linux: un portátil, el ordenador de tu casa, máquinas alojadas en Amazon, tu propio servidor…

Esto además beneficia a la parte de sistemas, ya como los contenedores son más ligeros que las máquinas virtuales, se reduce el número de máquinas necesarias para tener un entorno.



martes, 18 de diciembre de 2018

¿Que opciones tenemos para usar SNOMED CT?

Tenemos varias opciones para usar SNOMED CT,  de acuerdo para lo que necesitemos podemos usar una u otra:

  • Browser Es la mas fácil, gratuita y rápida es usar el browser de  SNOMED CT,vpara navegar la terminología y encontrar los términos. Para usar el browser ingresamos a https://browser.ihtsdotools.org/ 
  • La segunda es bajarnos la base de datos e  instalarla en un motor de base de datos para poder consultarla, desde una aplicación o en forma directa. Para usar la licencia y poder bajar SNOMED CT se tienen que inscribir.  Si el país es miembro de SNOMED, la licencia es gratuita para los miembros de ese país, pero conviene consultar cada caso de uso y las licencias que pueden ser otorgadas. Los archivos que se enumeran a continuación se incluyeron previamente en la distribución del Formato de publicación 1 (RF1) de la Edición Internacional de SNOMED CT. Debido a que los archivos no cambian de una versión a otra, a partir de enero de 2015, los archivos se han puesto a disposición de forma permanente en los Centros de Publicaciones Nacionales para Miembros de IHTSDO y los Licenciados Afiliados a través de Internet. Ya no están incluidos en la Edición Internacional. Para descargar los lanzamientos de SNOMED CT desde esta página, haga clic en el nombre del archivo para iniciar la descarga. La herramienta de conversión RF2 es una herramienta de código abierto, basada en Java, basada en software para facilitar la conversión de archivos SNOMED CT en formato RF2 a formato RF1. La herramienta proporciona una utilidad de línea de comando y una Interfaz Gráfica de Usuario (GUI) para facilitar la configuración, el seguimiento del progreso y el mantenimiento de datos adicionales cuando no está disponible como parte de una versión RF2. El conjunto de referencia de tipo ordenado de SNOMED CT se proporciona en archivos planos delimitados por tabuladores codificados UTF-8 que se pueden importar a cualquier base de datos u otra aplicación de software.
  • La tercera opción es instalar un servidor de terminología. Los servidores de terminología mas conocidos son:
  • SnowStrom
  • Ontoserver
    Usar un servidor permite que  pueda ser consultado por aplicaciones clientes a través de servicios REST.






    Referencias
    https://hcen.salud.uy/documents/22124/23644/doc_StarterGuide_Current-SP_20140521.pdf/048e20ad-1e41-4403-ae0c-7948c52afd3a
    https://confluence.ihtsdotools.org/pages/viewpage.action?pageId=38256204
    https://browser.ihtsdotools.org/
    https://www.argentina.gob.ar/salud/snomed
    https://www.nlm.nih.gov/research/umls/licensedcontent/snomedpermanentpackages.html
    https://hl7latam.blogspot.com/2018/12/que-es-un-servidor-de-terminologia.html

    lunes, 17 de diciembre de 2018

    #bbuzz 17: Alan Woodward - How does a Lucene Query actually work?

    What is in a Lucene index? Adrien Grand, Software Engineer, Elasticsearch

    Introduction to Apache Lucene | Why Lucene | Apache Lucene Tutorial | Ed...

    ¿ Qué es el IPS (International Patient Summary)?



    El resumen internacional del paciente es un resumen mínimo
    IPS ( INTERNATIONAL PATIENT SUMMARY) y no exhaustivo del paciente, independiente de la especialidad, independiente de la condición, pero fácilmente utilizable por todos los clínicos para la atención no programada (transfronteriza) de un paciente.
    http://international-patient-summary.net/mediawiki/index.php?title=Main_Page


    El Comité Europeo de Normalización (CEN) han aprobado la Norma Europea para Resúmenes de Pacientes para atención transfronteriza no planificada. Este es un hito para la colaboración europea y mundial y puede salvar vidas.



    La norma toma como punto de partida las Directrices europeas sobre atención transfronteriza, adoptadas por la Red Europea de eSalud. Estas directrices surgieron del programa piloto a gran escala epSOS financiado por la UE. Forman la base para la infraestructura de servicios digitales de eHealth en Europa que está actualmente en funcionamiento.

    Con el fin de facilitar la adopción de un formato común para el resumen del paciente en todos los Estados miembros, la Comisión Europea permitió al CEN crear esta norma y su guía de implementación complementaria, a través del proyecto CEN International Patient Summary (IPS).


    Un resumen internacional del paciente, accesible a los profesionales de la salud a través de las fronteras, puede salvar vidas en caso de situaciones de emergencia y mejorar la atención segura. Fue desarrollado por el piloto europeo a gran escala epSOS y desarrollado y probado por proyectos europeos como eStandards y Trillium-II.

    El Comité Europeo de Normalización (CEN, francés: Comité Europeo de Normalización) es una organización pública de estándares cuya misión es fomentar la economía de la UE, el bienestar de los ciudadanos europeos y el medio ambiente a través de estándares y especificaciones. Los miembros del Comité Técnico del CEN 251 aprobaron la norma europea para 'El resumen del paciente para la atención transfronteriza no planificada'.

    Un IPS (Resumen de Paciente Internacional) contiene los siguientes datos:

    • Información general sobre el paciente (por ejemplo, nombre, fecha de nacimiento, sexo)
    • Un resumen médico que consta de los datos clínicos más importantes del paciente (por ejemplo, alergias, problemas médicos actuales, implantes médicos o procedimientos quirúrgicos mayores durante los últimos seis meses).
    • Una lista de los medicamentos actuales, incluidos todos los medicamentos recetados que el paciente está tomando actualmente.
    • Información sobre el propio Resumen del paciente, p. cuándo y por quién se generó o actualizó el Resumen del paciente. Estos datos también se utilizan para fines de protocolo y seguridad.


    Referencias

    Lagash Webinars - Elastic Search

    Cómo instalar ElasticSearch en Windows: Tutorial en español

    ¿Que es un servidor de terminología?



    Un servidor de terminología proporciona una interfaz de usuario (por ejemplo, un navegador o un conjunto de controles de pantalla) o puede proporcionar servicios de software de bajo nivel para permitir el acceso a la terminología de otras aplicaciones.





    Los servidores de terminología también proporcionan una gama de servicios de software relacionados con la terminología a través de una interfaz de programación de aplicaciones para sus aplicaciones cliente.


    Los servicios de terminología típicos suelen incluir:


    • Hacer coincidir una cadena de entrada de texto arbitraria, definida por el usuario (o expresión regular) con una lista interna fija de expresiones en lenguaje natural, posiblemente utilizando palabras equivalentes, ortografía alternativa, abreviaturas o tablas de sustitución de parte del discurso y otros recursos léxicos, para aumentar El recuerdo y la precisión del algoritmo de emparejamiento.
    • Hacer coincidir una cadena de entrada de texto arbitraria, definida por el usuario (o expresión regular) con una lista interna fija de expresiones en lenguaje natural, posiblemente utilizando palabras equivalentes, ortografía alternativa, abreviaturas o tablas de sustitución de parte del discurso y otros recursos léxicos, para aumentar El recuerdo y la precisión del algoritmo de emparejamiento.
    • Recuperar cualquier asociación afirmada entre una lista fija de expresiones terminológicas en un idioma y traducciones en otro idioma natural
    • Recuperar cualquier asociación afirmada entre una lista fija de expresiones terminológicas en un idioma y traducciones en otro idioma natural
    • Recuperar cualquier asociación afirmada entre una lista fija de expresiones terminológicas y entidades en un sistema de concepto u ontología (ciencia de la información)
    • Recuperar cualquier asociación afirmada entre una lista fija de expresiones terminológicas y entidades en un sistema de concepto u ontología (ciencia de la información)
    • Recuperar cualquier vínculo semántico afirmado o inferible entre conceptos en un sistema de concepto u ontología (ciencia de la información), particularmente relaciones de subsunción (Is-a)
    • Recuperar cualquier vínculo semántico afirmado o inferible entre conceptos en un sistema de concepto u ontología (ciencia de la información), particularmente relaciones de subsunción (Is-a)
    • Recuperar cualquier asociación directamente afirmada, o la mejor aproximada indirectamente inferible, entre conceptos en una ontología y entidades en uno o más recursos externos (por ejemplo, bibliotecas de imágenes, reglas de soporte de decisiones o clasificaciones estadísticas)
    • Recuperar cualquier asociación directamente afirmada, o la mejor aproximada indirectamente inferible, entre conceptos en una ontología y entidades en uno o más recursos externos (por ejemplo, bibliotecas de imágenes, reglas de soporte de decisiones o clasificaciones estadísticas)

    Los servidores de terminología mas conocidos son:
    • SnowStrom
    • Ontoserver
    Ontoserver es un servidor de terminología que consulta, busca, filtra y clasifica terminologías clínicas estándar, como SNOMED CT.Ontoserver es un servidor de terminología clínica basado en el estándar de Recursos de Interoperabilidad de Salud Rápida (FHIR). Algunas de sus características clave incluyen: compatibilidad inmediata con las ontologías SNOMED CT, LOINC y OWL, como la ontología del fenotipo humano (HPO); un rápido algoritmo de búsqueda basado en prefijos para asegurar que los usuarios puedan encontrar fácilmente el contenido y no se desanime a ingresar datos codificados; un mecanismo de sindicación para facilitar el mantenimiento de las terminologías actualizadas; y una implementación completa del lenguaje de restricción de expresión (ECL) de SNOMED CT, que permite un análisis de datos sofisticado.


    SnowStorm es un servidor de terminología de SNOMED CT Open Source.

    El servidor esta construido en Elasticsearch,  enfocado para que sea performante y escalable.

    Ejemplo de  SnowStrorm en instalacion en un docker

    https://github.com/IHTSDO/snowstorm/commit/74967b18612ddbd9ad9c2139aeff632b080eac43

    Para la Instalacion del SnowStorm se instala el Eslastic Search y se pone un sevicio a correr y luego se instala el snowstorm y luego se carga las bases  de datos de terminología Snomed .


    Referencias
    https://hl7latam.blogspot.com/2018/11/que-es-ontoserver.html
    https://hl7latam.blogspot.com/2018/12/ontoserver-y-fhir-en-c.html
    https://hl7latam.blogspot.com/2018/11/servidor-terminologia-snowstorm.html
    https://hl7latam.blogspot.com/2018/12/snowstorm-servidor-de-terminologia-de.html

    sábado, 15 de diciembre de 2018

    Tutorial sobre como instalar Ontoserver

    Ontoserver y FHIR en C #


    Durante el NCTS Connectathon, me estaba conectando al Ontoserver público de CSIRO. Luego, intenté conectarme al NTS y ​​recordé que requiere autenticación. La documentación del NCTS junto con la colección de carteros que la acompaña es útil, así que veamos cómo podemos hacerlo en C #. 

    Categoría: Sin clasificar Etiquetas: C #, FHIR, Ontoserver
    Restricción de SNOMED CT con ECL
    Una solución de terminología lista para usar puede ahorrarle mucho tiempo a los desarrolladores. Sin embargo, dependiendo del conjunto de características que se ofrezcan, puede perder muchas de las capacidades que ofrece SNOMED CT. Especialmente así con un servidor FHIR, cuya API estandarizada admite búsqueda de texto y subsunción.

    Categoría: Terminología Etiquetas: ECL, FHIR, implementación, Ontoserver, snomed ct, terminología
    Concatenando descripciones de AMT
    Hoy he visto la siguiente consulta:

    "Desafortunadamente, el software en nuestros gabinetes de dispensación automatizados solo puede aceptar valores de hasta 15 caracteres ..."

    Esto es desafortunado, debido a los casi 6000 MPUU en AMT, solo 10 tienen 15 caracteres o menos. 

    Categoría: Terminología de eSalud Sin clasificar Etiquetas: amt, implementación, lenguaje, terminología
    La cerveza no es etanol.
    Recientemente se me mostró esta curiosa sub-jerarquía en SNOMED CT

    ¿La cerveza es un etanol?

    Mi primera respuesta fue que estas cosas son mezclas. Y como tal debe tener un tipo de relación contenida o tiene ingrediente. La cerveza contiene etanol.


    Categoría: Terminología Sin categoría Etiquetas: snomed ct, substance
    Explorando la expansión del conjunto de valores FHIR en .Net
    Hay algunas formas de trabajar con un servidor de terminología FHIR en C #. Mi objetivo en estos ejemplos es encontrar un código (y devolver el término preferido) con el término "inr" del conjunto de ref. 1072351000168102 de SNOMED CT-AU. Para todos estos, usaré el mismo punto final:


    Categoría: Terminología de programación Etiquetas: C #, FHIR, refsets, snomed ct
    ¿Los clínicos realmente necesitan una (otra) aplicación?
    Esta mañana me desperté con la noticia de que:

    la Autoridad Independiente de Precios Hospitalarios (IHPA) (está solicitando ofertas) para una aplicación móvil para mejorar la documentación clínica y la codificación en los registros médicos de los pacientes ... que los médicos pueden usar en su trabajo diario y ... les pide a los médicos que utilicen una terminología médica precisa.

    Categoría: eHealth Ramblings Uncategorised Tags: aplicaciones, móviles
    El control de versiones salió mal
    Una frustración habitual para mí es el uso indebido de (o más probablemente la falta de conocimiento de cómo usar) los sistemas de control de versiones para la gestión de documentos.

    Si está trabajando con documentos y tiene acceso a un sistema de control de versiones, no incluya los nombres de los archivos como sufijo. En absoluto. Con cualquier cosa.

    Categoría: Ramblings sin categorizar
    Un caso para no elegir primitivas proximales.
    El IHTSDO tiene una preferencia para definir conceptos por los padres primarios proximales más cercanos (CPP). Todavía estoy convencido del beneficio de este enfoque, y prefiero declarar a cualquier padre obvio (independientemente de su estado de definición) junto con un conjunto de atributos de definición que son independientes de cualquier padre.
    Categoría: Terminología de control de calidad Etiquetas: control de calidad, snomed ct, terminología
    Melones definidos
    Hace algún tiempo, me enteré de una característica de la lógica de la descripción: inclusiones del concepto general (ICG). Me tomó un tiempo entender la idea, pero me pareció que esta publicación era la más efectiva, al menos para mí, para entender de qué se trataba. 


    {
      "resourceType": "OperationOutcome",
      "issue": [
      {
        "severity": "error",
        "code": "processing",
        "diagnostics": "This is the base URL of FHIR server. Unable to handle this request, as it does not contain a resource type or operation name."
      }
      ]
    }
    
    

    Categoría: Terminología Tags: descripción lógica, GCI, terminología
    Modelo “2 cajas” AMT
    Una de las cosas de las que se hablaba frecuentemente en AMT (tanto V2 como V3) ha sido las "7 cajas". Según mi experiencia, cuando se discute el modelo de AMT, siempre se presenta como una sola cosa monolítica, específicamente según esta imagen a continuación (el original está disponible aquí). 

    Referencias
    http://snoyowie.com/2015/02/amt-2-box-model/
    http://snoyowie.com/
    https://ontoserver.csiro.au/stu3-latest
    https://documenter.getpostman.com/view/784165/ontoserver-51-example-fhir-terminology-requests/RW1hhG1S

    Tutorial de SNOMED CT en CSharp


    Este tutorial se enfoca en el uso de CSharp con una colección de objetos modelo predefinidos para acceder al contenido de SNOMED CT desde los servicios backend del navegador IHTSDO.

    Si no tiene instalado Visual Studio en su sistema, descargue la versión gratuita del sitio de Microsoft.

    Prerrequisitos
    Comience por clonar el proyecto y luego abra el archivo de la solución en Visual Studio 2015, y luego compile de manera normal. Esto debería descargar 2 paquetes NuGet (Newtonsoft.Json y RestSharp) en la compilación.

    git clone https://github.com/IHTSDO/SNOMED-in-5-minutes.git
    Ejecución de ejemplos desde la línea de comandos
    El punto de entrada de la aplicación es el archivo program.cs que se puede encontrar aquí:

    rest-client-csharp / SnomedClient / program.cs
    El cliente tiene dos clases definidas para los datos devueltos:

    rest-client-csharp / SnomedClient / SnomedSearch.cs
    rest-client-csharp / SnomedClient / SnomedConcept.cs
    La 'Búsqueda por consulta' y 'Búsqueda en mi id. De descripción' devuelven el modelo SnomedSearch, mientras que la 'Búsqueda por mi identificación de concepto' devuelve el modelo SnomedConcept.

    Hay un archivo rest-client-csharp / SnomedClient / bin / Debug / RunExamples.cmd que ejecutará todas las consultas siguientes para usted:

    SnomedClient.exe findByQuery "ataque cardíaco"
    SnomedClient.exe findByDescriptionId 679406011
    SnomedClient.exe findByConceptId 109152007
    SnomedClient.exe findByQueryWithFilter "heart" "procedure"
    Cuando se ejecute rest-client-csharp / SnomedClient / bin / Debug / SnomedClient.exe por sí solo, devolverá el Uso:

    Uso: SnomedClient <comando> <arg> [<arg2>]
    Llamadas de muestra
      - FindByQuery "ataque al corazón"
      - findByDescriptionId 679406011
      - findByConceptId 109152007
      - findByQueryWithFilter "heart" "procedure"
    Para ver la respuesta JSON sin formato, deberá editar SnomedClient.cs y habilitar la opción de depuración, y configurar el directorio de salida.

            // Solo para la depuración, se establece en verdadero para capturar respuestas
            privado readonly bool _debug = true;
            cadena privada de solo lectura _dir = @ "c: \ temp \";
    Buscando por consulta
    Buscando "ataque al corazón":

    SnomedClient.exe findByQuery "ataque cardíaco"
    Esta llamada escribe algo de salida en la consola:

    Utilizando URL: http://browser.ihtsdotools.org/api/snomed
    Edición: en edición
    Lanzamiento: 20160131

    Buscando texto: ataque al corazón
    Total de entradas devueltas: 13
    Buscando por descripción id
    Buscando "679406011":

    SnomedClient.exe findByDescriptionId 679406011
    Esta llamada escribe algo de salida en la consola:

    Utilizando URL: http://browser.ihtsdotools.org/api/snomed
    Edición: en edición
    Lanzamiento: 20160131

    Buscando Id de descripción: 679406011
    FSN encontrado: metilfeniltetrahidropiridina (sustancia)
    Buscando por concepto id
    Buscando "109152007":

    SnomedClient.exe findByConceptId 109152007
    Esta llamada escribe algo de salida en la consola:

    Utilizando URL: http://browser.ihtsdotools.org/api/snomed
    Edición: en edición
    Lanzamiento: 20160131

    ID de concepto de búsqueda: 109152007
    FSN encontrado: kit de prueba de bilirrubina (sustancia)
    Búsqueda por cadena de consulta con un filtro semántico.
    Buscando "corazón" dentro de "procedimiento":

    SnomedClient.exe findByQueryWithFilter "heart" "procedure"
    Esta llamada escribe algo de salida en la consola:

    Utilizando URL: http://browser.ihtsdotools.org/api/snomed
    Edición: en edición
    Lanzamiento: 20160131

    Buscando texto: corazón
    Con filtro: procedimiento.
    Total de entradas devueltas: 746


    Referencias
    https://github.com/IHTSDO/SNOMED-in-5-minutes/tree/csharp/csharp-examples
    https://github.com/MoxeHealth/SNOMEDRecursiveConceptFinder
    http://snoyowie.com/

    Snowstorm Servidor de terminología de Snomed

    SnowStorm es un servidor de terminología de SNOMED CT Open Source.
    El servidor esta construido en Elasticsearch,  enfocado para que sea performante y escalable.

    Instalacion en un docker
    https://github.com/IHTSDO/snowstorm/commit/74967b18612ddbd9ad9c2139aeff632b080eac43

    Esta es una opción fácil porque instalará Snowstorm, la versión correcta de Elasticsearch y los conectará por usted.
     El docker-compose.yml en la opción de repo ejecutará todo lo necesario para usar Snowstorm sin la necesidad de construir nada. Sin embargo, ** tendrá que generar índices de SNOMED CT elasticsearch ** que puede generar usted mismo, consulte las [instrucciones de carga de snomed aquí] (docs / loading-snomed.md), o póngase en contacto con [techsupport@snomed.org] ( mailto :: techsupport@snomed.org) para obtener acceso a una copia de algunos índices ya generados.

    Resultado de imagen para Snowstorm

    El docker-compose.yml en la opción de repo ejecutará todo lo necesario para usar Snowstorm sin la necesidad de construir nada. Sin embargo, ** deberá generar índices de SNOMED CT elasticsearch ** que puede generar usted mismo, consulte las [instrucciones de carga de snomed aquí] (loading-snomed.md), o póngase en contacto con [techsupport@snomed.org] (mailto: : techsupport@snomed.org) para obtener acceso a una copia de algunos índices ya generados.

     Una vez que tenga los índices, puede descomprimirlos en una carpeta local ~ / elastic o cambiar la siguiente línea en [docker-compose.yml] (docker-compose.yml) de ~ / elastic a una carpeta local de su elección: