GUÍA CACHÉ SNOMED

Guía de configuración de caché de Snomed

El objetivo de esta guía es explicar las opciones de carga de los grupos de terminología y su posterior utilización.

En la sección 1 se explica la manera de cargar los grupos de conceptos en la base de datos mediante la carga de archivos.

En la sección 2 se muestra una versión alternativa de carga a la mencionada en la sección 1.

En la sección 3 se muestra la visualización de los grupos cargados desde el Backoffice de HSI.

Por último, en la sección 4 se muestra cómo activar las búsquedas que utilicen la caché previamente cargada.

 

1- Cargar conceptos en caché

   1.1 – Descargar archivos CSV

   1.2 – Cargar archivo CSV a través de       endpoint del backend

2- Alternativa para carga de conceptos en caché

3 – Visualizar grupos de terminología desde Backoffice de HSI

4 – Habilitar búsqueda en caché de Snomed

1. Cargar conceptos en caché

En esta sección se explicará el proceso a la hora de cargar y actualizar los grupos de terminología Snomed mediante la carga de archivos CSV a través de endpoints provistos por la aplicación.

Como introducción, es necesario aclarar que los grupos de terminología identifican los tipos de conceptos que se usan en las distintas búsquedas desde el sistema. Por ejemplo, cuando se busca en el campo “Procedimientos” de consulta ambulatoria, esta búsqueda se realiza según la expresión ECL asociada a la clave ECL PROCEDURE , cuando se buscan medicamentos se hace según la ECL MEDICINE, y así con los demás. Para poder hacer uso de la búsqueda local usando la caché de Snomed, hay que cargar cada uno de estos grupos con los conceptos que engloba. Los grupos son los siguientes:

 

  • ALLERGY
  • BLOOD_TYPE
  • CONSULTATION_REASON
  • DIAGNOSIS
  • FAMILY_RECORD
  • HOSPITAL_REASON
  • MEDICINE
  • PERSONAL_RECORD
  • PROCEDURE
  • VACCINE
  • DIABETES
  • HYPERTENSION

  • ELECTROCARDIOGRAPHIC_PROCEDURE
  • CARDIOVASCULAR_DISORDER
  • VIOLENCE_MODALITY
  • VIOLENCE_PROBLEM
  • VIOLENCE_TYPE

1.2 Cargar archivo CSV a través de endpoint del Backend

La actualización del grupo mediante el archivo CSV se puede hacer de forma sencilla desde Postman o un software similar, o con un comando CURL. Hay que realizar un request POST a los endpoints /api/snowstorm/load-concepts-csv para los archivos de conceptos principales y api/snowstorm/load-concepts-synonyms-csv para los archivos de sinónimos, indicando el archivo y la clave del grupo de terminología. Los usuarios autorizados a usar este endpoint deben contar con el rol ROOT o Administrador, por lo que el request debe tener como authorization header un Bearer token de un usuario con alguno de esos roles (el cual se puede obtener mediante el login al endpoint /api/auth). Como body del request, se debe incluir el archivo con la key “file”, y con la key “ecl” la clave ECL del grupo que se quiere actualizar.

Desde Postman, la configuración quedará similar a las siguientes capturas:

      De forma análoga, para la carga de sinónimos:

          Aclaración: Es conveniente cargar todos los conceptos principales en primer lugar y luego los sinónimos ya que estos dependen de los anteriores.

           

          Como un comando CURL, con un script bash se puede hacer de la siguiente manera:

          #!/bin/sh

           

          ENDPOINT=”http://localhost:8080/api/snowstorm/load-concepts-csv”

           

          TOKEN=”Authorization: eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbnR5cGUiOiJOT1JNQUwiLCJ1c2VySWQiOjEsInN1YiI6ImFkbWluQGV4YW1wbGUuY29tIiwiaWF0IjoxNjUwMzIyNzQ3LCJleHAiOjE2NTAzMjQ1NDd9.661q0oYuzvajeuWi7XTO15SeG1pQ7GCC8Td2E_jjNSn_re2tXAyEu9I_pz8mUJwXT-xWB200mRUPgGgAFP4Ipw”

           

          curl –verbose –location –request POST ${ENDPOINT} \

              –header “${TOKEN}” \

              –form ‘file=@planillas/HOSPITAL_REASON.csv;type=text/csv’ \

              –form ‘ecl=”HOSPITAL_REASON”‘

          Una vez ejecutado caso de una correcta actualización, la respuesta será similar a la siguiente:

          {

              “eclKey”: “HOSPITAL_REASON”,

              “conceptsLoaded”: 168390,

              “erroneousConcepts”: 0,

              “errorMessages”: []

          }

          En el caso de carga de sinónimos de conceptos la respuesta será similar a la siguiente:

          {

              “eclKey”: “HOSPITAL_REASON”,

              “conceptsLoaded”: 168390,

              “missingMainConcepts”: 0,

              “erroneousConcepts”: 0,

              “errorMessages”: []

          }

          En erroneousConcepts se mostrará la cantidad de conceptos que no pudieron ser cargados algún error, y en errorMessages los mensajes de estos errores, en caso que los hubiera. Adicionalmente, estos mensajes de error se estarán guardando en la base de datos en la tabla snomed_cache_log. En el caso de la carga de sinónimos se incluye un parámetro adicional missingMainConcepts que indica la cantidad de conceptos para los cuales no existe un concepto principal al cual asociar.

              2. Alternativa de carga de conceptos en caché

              Esta alternativa evita el uso de un endpoint que para su funcionamiento, requiere aumentar los límites en la configuración de acceso al sistema (proxy, balanceador de carga, ingress, nginx, etc).

              Sin importar cómo se realice la carga, la lista de grupos de terminologías cargados se puede observar desde el Backoffice, en el menú Datos Maestros > Grupos de terminología

              Esta página ofrece la funcionalidad para cargar una un formulario que permite agregar el CSV que borra y vuelve a cargar todos los términos de una ECL. Para esto el usuario deberá elegir la ECL y una agregar una URL donde se pueda acceder al CSV de manera pública.

                   

                  Al completar el formulario, se clickea en AGREGAR el pedido a la cola de procesamiento, por esto la página se actualizará para mostrar lo que está pendiente.

                      El procesamiento es en dos pasos, primero se realiza la descarga del CSV y segundo se carga de la terminología. El resultado final se refleja en la pantalla.

                      3. Visualizar grupos de terminología desde Backoffice de HSI

                      Desde el Backoffice de HSI se permite la visualización de los grupos de terminología cargados, junto con los conceptos que incluye y otros datos de interés. Se puede acceder al mismo a través del menú en Datos maestros > Grupos de terminología, donde se visualizará algo similar a la siguiente captura:

                      En rojo se marcan los grupos cargados para la búsqueda con la caché de Snomed. Si accedemos a uno, se va a visualizar algo como a continuación:

                      En esta vista, se puede ver la ECL asociada y su clave. Además, en la parte inferior se muestran todos los conceptos asociados al grupo, junto con su última actualización.

                      En el listado aparecen también los conceptos que ya no aparecen en las búsquedas debido a que en la última actualización del grupo no se incluyó este concepto. Este es el caso de “Alergia a aceite de cacahuate“, lo cual se hace evidente debido a que su fecha de última actualización (31/3/2022) es anterior a la última actualización del grupo ALLERGY (1/4/2022).

                      4. Habilitar búsqueda en caché de Snomed

                      Como último paso, para activar la búsqueda de conceptos mediante la caché de Snomed se debe levantar el sistema con el feature flag HABILITAR_BUSQUEDA_LOCAL_CONCEPTOS activado.

                      Para ello, basta con configurar la propiedad como sigue:

                      app.feature.HABILITAR_BUSQUEDA_LOCAL_CONCEPTOS=true

                      Una vez iniciado el sistema, las búsquedas de conceptos realizadas desde la Web App de HSI se realizarán de forma local en lugar de utilizar el servicio de Snowstorm.