#HealthShare

0 Seguidores · 156 Publicaciones

InterSystems HealthShare es una plataforma informática de servicios médicos para hospitales, sistemas de suministro integrados (IDN) e intercambios de información sobre la salud regional y nacional (HIE). HealthShare incluye el intercambio de información sobre salud, en el que se agregan datos, flujos de trabajo, análisis de texto y tecnologías para realizar análisis.

Obtener más información

InterSystems Official Jose-Tomas Salvador · nov 11, 2025

Resumen

Esta versión introduce el FHIR Server 2025.10.0, que ofrece las últimas mejoras en cumplimiento de estándares y rendimiento. También mejora el proceso de actualización de Health Connect Cloud (HCC) para una mayor fiabilidad y añade nueva flexibilidad a Network Connect mediante la compatibilidad con listas de prefijos en las configuraciones de VPN.

Nuevas características y mejoras

0
0 8
Artículo Luis Angel Pérez Ramos · oct 30, 2025 3m read

Hola comunidad,

Quería compartir mi experiencia trabajando en proyectos con grandes volúmenes de datos. A lo largo de los años, he tenido la oportunidad de manejar enormes cantidades de datos de pacientes, datos de aseguradoras y registros transaccionales mientras trabajaba en la industria hospitalaria. He tenido la oportunidad de crear informes muy extensos que requerían usar lógicas avanzadas para obtener datos de múltiples tablas, cuyos índices no me ayudaban a escribir un código eficiente.

Esto es lo que he aprendido sobre cómo gestionar grandes volúmenes de datos de manera eficiente.

Elegir el método de acceso a datos adecuado

Como todos sabemos en esta comunidad, IRIS ofrece múltiples formas de acceder a los datos. Elegir el método correcto dependerá de lo que necesitemos.

  • Acceso directo a los Globales: el más rápido para operaciones masivas de lectura/escritura. Por ejemplo, si tengo que recorrer índices y obtener datos de pacientes, puedo iterar sobre los globales para procesar millones de registros. Esto ahorra mucho tiempo.
Set ToDate=+HSet FromDate=+$H-1ForSet FromDate=$O(^PatientD("Date",FromDate)) Quit:FromDate>ToDate  Do
. Set PatId=""ForSet PatId=$Order(^PatientD("Date",FromDate,PatID)) Quit:PatId=""Do
. . Write$Get(^PatientD("Date",FromDate,PatID)),!
  • Uso de SQL: útil para requisitos de generación de informes o análisis, aunque más lento para conjuntos de datos muy grandes.
0
0 21
Artículo Ricardo Paiva · oct 8, 2025 1m read

gj :: configExplorer es una nueva extensión de VS Code que se integra con Server Manager y aprovecha Structurizr para generar diagramas de configuración de vuestros servidores.

Aquí tenéis un breve video introductorio.

0
0 22
Artículo Vachan C Rannore · oct 2, 2025 3m read

Empezar con ObjectScript es realmente emocionante, pero también puede resultar un poco extraño si estáis acostumbrados a otros lenguajes. Muchos principiantes tropiezan con los mismos obstáculos, así que aquí tenéis algunas "trampas” a las que debéis prestar atención. (Y también algunos consejos para evitarlas)

PONER NOMBRES AL AZAR

Todos hemos caído en la tentación de llamar a algo Test1 o MyClass solo para avanzar rápido. Pero una vez que vuestro proyecto crece, esos nombres se convierten en una pesadilla.

0
0 33
Artículo Beatrice Zorzoli · sep 29, 2025 5m read

Me uní a InterSystems hace menos de un año. Sumergirme en ObjectScript e IRIS fue emocionante, pero también estuvo lleno de pequeñas sorpresas que me hicieron tropezar al principio. En este artículo recojo los errores más comunes que yo, y muchos compañeros nuevos, cometemos, explico por qué ocurren y muestro ejemplos concretos junto con soluciones prácticas. Mi objetivo es ayudar a otros desarrolladores que empiezan a ahorrar tiempo y evitar los mismos obstáculos en el camino.

1. Perderse entre las clases del sistema y no saber por dónde empezar

0
0 31
Artículo Jose-Tomas Salvador · sep 9, 2025 4m read

Aviso: el siguiente tutorial requiere instalar qpdf-12.2.0 y libreoffice-25.2.5 para HSCV2025.2

Ejemplos para instalar qpdf

Linux y Ubuntu

# 1. Descargad qpdf-12.2.0 AppImage de forma programática o manual desde https://github.com/qpdf/qpdf/releases/tag/v12.2.0
wget -O qpdf-12.2.0.AppImage https://github.com/qpdf/qpdf/releases/download/v12.2.0/qpdf-12.2.0-x86_64.AppImage

# 2. Haced que el AppImage sea ejecutable
chmod +x qpdf-12.2.0.AppImage

# 3. Añadid el ejecutable al PATH del sistema como “qpdf”
sudo mv qpdf-12.2.0.AppImage /usr/local/bin/qpdf

# 4. Verificad que estáis ejecutando la versión 12.2.0
qpdf --version

# Si aparece el mensaje "AppImages require FUSE to run"
sudo apt install libfuse2

Windows

# Ejecutad como Administradores en PowerShell

# 1. Descargad el instalador MSVC de qpdf-12.2.0 (en este ejemplo se usa 64bit)
# Para otras máquinas, consultad https://github.com/qpdf/qpdf/releases/tag/v12.2.0 y reemplazad con el archivo .exe adecuado
cd $env:TEMP
Invoke-WebRequest `
  -Uri "https://github.com/qpdf/qpdf/releases/download/v12.2.0/qpdf-12.2.0-msvc64.exe" `
  -OutFile "qpdf-12.2.0-msvc64.exe"

# 2. Instalad desde el EXE en modo silencioso
$installFile = Join-Path $env:TEMP "qpdf-12.2.0-msvc64.exe"
$installDir = "C:\Program Files\qpdf"
Start-Process -FilePath $installFile `
  -ArgumentList "/S","/D=$installDir" `
  -Verb RunAs -Wait

# 3. Añadid la carpeta bin de qpdf al PATH del sistema
$binDir = "C:\Program Files\qpdf\bin"
$mp = [Environment]::GetEnvironmentVariable("Path","Machine")
if ($mp -notmatch [regex]::Escape($binDir)) {
  $new = "$mp;$binDir"
  [Environment]::SetEnvironmentVariable("Path",$new,"Machine")
}

# 4. Recargad el PATH actualizado en la sesión actual
$env:Path = [Environment]::GetEnvironmentVariable('Path','Machine')

# 5. Verificad que estáis ejecutando la versión 12.2.0
qpdf --version

Ejemplos para instalar libreoffice

Nota

  • Si la descarga desde la terminal no funciona, consultad la versión oficial y seleccionad LibreOffice 25.2.5 para vuestro sistema operativo.
  • Si www.libreoffice.org está bloqueado por vuestro firewall, descargad el archivo de instalación en local, copiadlo a la máquina virtual y luego ejecutad mv ~/path/to/install_file $TMPDIR/install_file en linux/ubuntu o mv ~\path\to\install_file $env:TEMP\install_file en windows.
  • Para pruebas internas, cuando descarguéis el archivo de instalación, vuestro sistema operativo local puede descomprimir automáticamente el gzip. Si os aparece el error "not in gzip format", intentad eliminar la bandera z del comando tar -zxf.
  • Si aparece el error "error while loading shared libraries", instalad las librerías necesarias de la siguiente forma:
    • Comando de instalación
      • Linux: sudo dnf install
      • Ubuntu: sudo apt install
    • Dependencias
      • libcups2
      • libcairo2
      • libX11-xcb for linux or libx11-xcb1 for ubuntu
      • libXinerama for linux or libxinerama1 for ubuntu

Linux

# 1. Descargad el paquete LibreOffice 25.2.5
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT
wget -qO "$TMPDIR/LibreOffice_25.2.5.rpm.tar.gz" https://www.libreoffice.org/donate/dl/rpm-x86_64/25.2.5/en-US/LibreOffice_25.2.5_Linux_x86-64_rpm.tar.gz

# 2. Descomprimid el paquete LibreOffice 25.2.5
tar -zxf "$TMPDIR/LibreOffice_25.2.5.rpm.tar.gz" -C "$TMPDIR"

# 3.1 Instalad los RPM en RHEL
sudo dnf install -y "$TMPDIR"/LibreOffice_*/*/*.rpm

# 3.2 Instalad los RPM en Suse
sudo zypper --no-refresh --allow-unsigned-rpm -y install "$TMPDIR"/LibreOffice_*/*/*.rpm

# 4. Añadid el ejecutable al PATH del sistema
echo 'export PATH=/opt/libreoffice25.2/program:$PATH' >> ~/.bashrc
source ~/.bashrc

# 5. Verificad que estáis ejecutando la versión 25.2.5
soffice --version

Ubuntu

# 1. Descargad el paquete LibreOffice 25.2.5
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT
wget -qO "$TMPDIR/LibreOffice_25.2.5.deb.tar.gz" https://www.libreoffice.org/donate/dl/deb-x86_64/25.2.5/en-US/LibreOffice_25.2.5_Linux_x86-64_deb.tar.gz

# 2. Descomprimid el paquete LibreOffice 25.2.5
tar -zxf "$TMPDIR/LibreOffice_25.2.5.deb.tar.gz" -C "$TMPDIR"

# 3. Instalad los DEBs
sudo dpkg -i "$TMPDIR"/LibreOffice_*/*/*.deb

# 4. Añadid el ejecutable al PATH del sistema
echo 'export PATH=/opt/libreoffice25.2/program:$PATH' >> ~/.bashrc
source ~/.bashrc

# 5. Verificad que estáis ejecutando la versión 25.2.5
soffice --version

Windows

# Ejecutad como Administradores en PowerShell

# 1. Descargad el MSI en el directorio Temp
cd $env:TEMP
# $msiUrl  = 'https://www.libreoffice.org/donate/dl/win-x86_64/25.2.5/en-US/LibreOffice_25.2.5_Win_x86-64.msi'
# $msiPath = Join-Path $env:TEMP 'LibreOffice_25.2.5.msi'
Invoke-WebRequest `
  -Uri https://www.libreoffice.org/donate/dl/win-x86_64/25.2.5/en-US/LibreOffice_25.2.5_Win_x86-64.msi `
  -OutFile "LibreOffice_25.2.5.msi"

# 2. Instalad desde el MSI en modo silencioso
Start-Process msiexec.exe `
  -ArgumentList '/i "LibreOffice_25.2.5.msi" /qn /norestart' `
  -Wait

# 3.Añadid la carpeta de programas de LibreOffice al PATH del sistema
$loBin = 'C:\Program Files\LibreOffice\program'
$mp = [Environment]::GetEnvironmentVariable('Path','Machine')
if ($mp -notmatch [regex]::Escape($loBin)) {
  [Environment]::SetEnvironmentVariable('Path', "$mp;$loBin", 'Machine')
}

# 4. Recargad el PATH actualizado en la sesión actual
$env:Path = [Environment]::GetEnvironmentVariable('Path','Machine')

# 5. Verificad que estáis ejecutando la versión 25.2.5
soffice --version
0
0 25
Artículo Ricardo Paiva · sep 1, 2025 3m read

Al comenzar con InterSystems IRIS o Caché, los desarrolladores a menudo se encuentran con tres conceptos fundamentales: Dynamic Objects, Globals y Relational Table. Cada uno tiene su papel en la construcción de soluciones escalables y mantenibles. En este artículo recorreremos ejemplos prácticos de código, destacaremos buenas prácticas y mostraremos cómo estos conceptos se relacionan entre sí.

1. Trabajando con Dynamic Objects:

0
0 37
Artículo Luis Angel Pérez Ramos · jul 21, 2025 3m read

¡Saludos estimados miembros de la comunidad!

Muchos recordaréis las capacidades NLP disponibles en IRIS con el nombre de iKnow y que fueron deprecadas hará no mucho tiempo. Pero...¿Deprecado todo? ¡NO! Una pequeña aldea resiste a la deprecación, ¡los índices iFind!

Y os preguntaréis, ¿para qué valen estos magníficos índices? Pues muy sencillo, sirven para indexar los textos presentes en las columnas de tipo String y Stream y acelerar dramáticamente la velocidad de consulta sobre las mismas.

¿Qué son los índices %iFind?

1
1 43
Artículo Ricardo Paiva · jun 4, 2025 3m read

IRIS admite transformaciones CCDA y FHIR de forma nativa, pero acceder y visualizar estas funcionalidades requiere tiempo de configuración y conocimiento del producto. La aplicación IRIS Interop DevTools fue diseñada para cerrar esa brecha, permitiendo a los implementadores comenzar de inmediato y explorar las capacidades de transformación integradas del producto.

Además del entorno de transformación IRIS XML, XPath y CCDA, el paquete Interop DevTools ahora proporciona:

0
0 41
Artículo Landon Minor · mayo 30, 2025 3m read

Perfilando Documentos CCD con la Herramienta CCD Data Profiler de LEAD North
¿Alguna vez has abierto un CCD y te has encontrado con una pared de XML enredada? No estás solo. Aunque los CCD son un formato central para el intercambio de datos clínicos, son notoriamente densos, prolijos y poco amigables para la vista humana. Para los desarrolladores y analistas que intentan validar su estructura o extraer información significativa, navegar estos documentos puede sentirse más como arqueología que como ingeniería.

0
0 49
InterSystems Official Mario Sanchez Macias · feb 24, 2025

19 de febrero de 2025 – Alerta: Consultas SQL que están devolviendo resultados incorrectos

InterSystems ha corregido dos problemas que pueden hacer que un pequeño número de consultas SQL devuelvan resultados incorrectos. Además, ha solucionado una inconsistencia en el manejo de los tipos de datos de fecha y hora, lo que podría provocar que algunas aplicaciones existentes que dependían del comportamiento anterior e inconsistente obtengan resultados diferentes e inesperados, aunque correctos.

DP-436825: Algunas consultas SQL con Lateral Join pueden devolver resultados incorrectos

0
0 63
Artículo Luis Angel Pérez Ramos · feb 20, 2025 3m read

Es posible que hayáis notado que, para configurar un mirror en InterSystems IRIS for Health™ y HealthShare® Health Connect, hay un requisito especial. En este artículo, quiero guiaros paso a paso por el proceso.

Esto supone que ya habéis configurado el segundo miembro de conmutación por error y habéis confirmado un estado exitoso de dicho miembro en el monitor del mirror:

Paso 1: Activad el usuario HS_Services (en el servidor de respaldo y en el principal).

2
1 91
Artículo Alberto Fuentes · feb 20, 2025 2m read

Los ISCLOGs son una herramienta útil de depuración proporcionada con IRIS que os puede ayudar a solucionar muchos tipos de problemas. Para obtener más información sobre cómo generar estos registros, consultad la siguiente documentación de IRIS: "Logging".

Este registro se escribe en el global ^ISCLOG almacenado en el espacio de nombres %SYS. Cada nodo de esta global representa un evento independiente, y en algunos casos, se registra información adicional en los subnodos.

0
0 59
Artículo Ashok Kumar T · feb 12, 2025 5m read

Podéis encontrar errores en cualquier punto de la ejecución del programa, y hay varias formas de generarlos y manejarlos en IRIS. En este artículo, exploraremos cómo gestionar excepciones de manera eficiente.

Uno de los tipos de retorno más utilizados es %Status, que los métodos emplean para indicar éxito o fallo. Vamos a empezar hablando de los valores de %Status.

Trabajando con %Status

0
0 58
Artículo Joel Espinoza · feb 4, 2025 2m read

Estimada comunidad,

Quería comentarles que hoy publique en OpenExchange un acelerador de APIs muy simple de implementar (con algún parecido a Redis, pero más funcional) y con resultados bastante buenos, a continuación está la publicación del README, espero les sea de ayuda!

https://openexchange.intersystems.com/package/memoria

Memoria

Esta aplicación permite almacenar el resultado de una llamada a la API GET de forma permanente o por un periodo de tiempo, reduciendo los tiempos de respuesta al cliente final.

En el ejemplo a continuación se utiliza la API pública de Rick & Morty para realizar varias consultas al servidor. Cada consulta por sí sola y utilizando la conexión a internet del hogar demora alrededor de 300 ms. Al utilizar el acelerador el tiempo de respuesta es de alrededor de 7 ms.

Cliente

La clase memoria.client es la encargada de llamar al método MGet, este método ejecuta la llamada a la API externa pero primero valida si la información de esta API está cacheada en la tabla memoria.store, de ser así valida que esté dentro del Time to Live (TTL) configurado y retorna el dato, si el TTL ya expiró borra la información y genera la llamada, almacena el resultado y lo retorna al programa.

Código de prueba

Para una API estática, es decir, lista de países, nombre de ciudades, etc., recomiendo usar TTL=0 para mantener la lista en la tienda.

Resultado de la API

En la primera llamada (cuadrado rojo en la parte superior), el tiempo de la llamada fue de 722 ms y en todas las demás llamadas, el tiempo fue de aproximadamente 7 ms, en este caso solo un 1 % del tiempo original.

Después de 10 segundos (valor TTL), el tiempo aumentó a 220 ms

Resultado

Panel

El Panel es una pequeña aplicación que le permite administrar los datos almacenados en caché y eliminarlos si es necesario.

Vista del panel

1
0 61
Artículo Ricardo Paiva · ene 29, 2025 4m read

No estoy seguro de que haya muchos que se conecten a MS SQL para ejecutar consultas, procedimientos almacenados, etc., pero nuestro sistema de salud tiene muchas bases de datos diferentes basadas en MS SQL que usamos en el entorno de interoperabilidad por diversas razones.

Con el impulso de movernos de on-premises a la nube, nos encontramos con algunas dificultades con nuestras conexiones SQL Gateway y cómo configurarlas para usar Microsoft Entra para la autenticación de Active Directory.

0
0 77