En esta nueva release se trabajaron los siguientes puntos:
Contents
Internación
Profesionales Responsables en Episodios de Internación
Se desarrolló una nueva funcionalidad que permite al usuario administrativo gestionar los profesionales responsables asociados a un episodio de internación ya iniciado. El propósito principal es asegurar que la información registrada refleje con precisión a los profesionales que realmente participaron en la atención, permitiendo agregar o eliminar responsables durante todo el tiempo en que la internación permanezca abierta.
Visualización en el card de resumen
Dentro del card de resumen del episodio se incorporó un apartado denominado “Profesionales responsables”. Este bloque muestra las acciones disponibles según la situación actual del episodio:
- Si el episodio no tiene profesionales asociados, el sistema muestra únicamente la opción “Agregar responsable”.
- Si el episodio ya cuenta con profesionales, además de “Agregar responsable”, se habilita la acción “Eliminar” para cada profesional listado.
Esta visualización guía al usuario administrativo y permite mantener actualizado el listado de responsables según los cambios reales del proceso asistencial.

Agregar responsable
Apertura del popup
Al seleccionar la acción “Agregar responsable”, se despliega un popup diseñado específicamente para esta función.
El popup contiene el título “Responsable del episodio” y una cruz en la esquina superior derecha que permite cerrarlo sin realizar cambios.
Dentro del popup, el selector muestra el listado completo de profesionales habilitados en la institución.
El comportamiento incluye:
- Visualización del nombre del profesional y todas sus matrículas, si posee más de una.
- Inclusión únicamente de usuarios con los roles:
- Profesional de la salud
- Especialista médico
- Enfermero
- Especialista en odontología
Siempre se muestran todas las opciones disponibles.El listado permite seleccionar un solo profesional por vez, y si un responsable ya se encuentra asociado, no se duplica al elegirlo nuevamente.



Formato de visualización del nombre y apellido del profesional
La forma de mostrar el nombre del profesional varía según el estado del feature flag HABILITAR_DATOS_AUTOPERCIBIDOS:
- Si está habilitado (TRUE):
Nombre autopercibido (si existe) + Primer apellido + Otros apellidos - Si está deshabilitado (FALSE):
Primer nombre + Otros nombres + Primer apellido + Otros apellidos
Esto permite adecuar la visualización a las políticas institucionales vigentes.
Eliminación de profesionales responsables
Cuando el usuario selecciona la opción Eliminar sobre un profesional asociado, el sistema solicita una confirmación previa mediante un popup. Tras confirmar la acción:
- El profesional deja de visualizarse en el card de responsables.
- Se conserva un registro histórico en la base de datos, que incluye:
- ID del usuario
- Fecha y hora en que fue asociado
- Fecha y hora en que fue desasociado
Este mecanismo garantiza la trazabilidad completa del episodio, incluso cuando los responsables se modifican durante el proceso asistencial.


Agenda
Rango Etario en la creación de agendas
Con el objetivo de mejorar la precisión en la asignación de turnos y asegurar que cada agenda contempla las restricciones correspondientes a la edad de los pacientes, se desarrolló una nueva funcionalidad que permite configurar rangos etarios dentro de la creación de agendas. Este desarrollo está orientado a los usuarios con rol Administrador de agenda y se encuentra controlado mediante un Feature Flag, lo que permite habilitar progresivamente la funcionalidad.
Para garantizar un despliegue controlado, se creó un nuevo Feature Flag específico para este desarrollo:
- Nombre: HABILITAR_RANGO_ETARIO_EN_AGENDA_EN_DESARROLLO
- Valor inicial: false
Permite activar o desactivar la función sin afectar otros procesos existentes.
Incorporación del Campo “Rango Etario” en la Creación de Agenda
Al crear una nueva agenda, el administrador visualiza un nuevo campo opcional denominado “Rango etario”.
En esta sección se incorpora también la acción “+ Agregar nuevo rango”, que permite iniciar la configuración de rangos etarios específicos.

Popup para Crear un Nuevo Rango Etario
Al seleccionar la acción “+ Agregar nuevo rango”, el sistema despliega un popup con la siguiente estructura:
- Título: Crear rango etario para la agenda
- Subtítulo: Unidad
- Opciones de unidad mediante radio buttons:
- Años (seleccionado por defecto)
- Meses
- Selectores numéricos:
- Edad mínima (por defecto 0)
- Edad máxima (por defecto 100)
- Botones:
- Cancelar
- Agregar rango etario
Este popup permite configurar de forma clara y guiada los valores requeridos para cada rango.

Validaciones aplicadas en el Popup
Se incorporaron distintas validaciones para garantizar que los rangos etarios cargados sean consistentes:
Unidad:
- Obligatorio seleccionar Años o Meses.
Edad mínima:
- Con Años: entre 0 y 100.
- Con Meses: entre 0 y 12.
Edad máxima:
- Con Años: entre 1 y 100.
- Con Meses: entre 1 y 12.
Validaciones entre campos
- Edad mínima ≤ Edad máxima (se permiten valores iguales).
Mensajes de error
- Si Edad mínima > Edad máxima:
“Debe ser mayor a la edad mínima”. - Si Edad mínima < 0:
“Debe ser mayor al valor 0”. - Si Edad máxima supera el límite permitido:
“Debe ser menor al valor 100”. - Si el rango ya existe (misma unidad y valores):
El sistema informa que no se pueden crear rangos repetidos.
Ejemplos:



Estas validaciones aseguran la correcta definición de los rangos y evitan configuraciones duplicadas o inconsistentes.
Visualización de Rangos Etarios Creados
Una vez agregados, los rangos etarios se muestran con el siguiente formato:
“De [edad mínima] a [edad máxima] [unidad]”
Además, se mantiene visible la acción “+ Agregar nuevo rango” para permitir la carga de múltiples rangos.
Los rangos pueden solaparse, ya que esto forma parte de la lógica permitida dentro de la configuración de agendas.
Cabe destacar que las funciones de edición y eliminación quedan fuera del alcance de esta versión.

Configuración de Franjas Horarias
Con Rangos Etarios
Al avanzar en la creación de la agenda y llegar a la configuración de franjas horarias, el sistema incorpora una nueva sección:
- Subtítulo: Rango etario
- Listado de checkboxes con todos los rangos etarios configurados previamente
- Todos los rangos aparecen tildados por defecto
- El usuario puede destildar uno o varios rangos según la necesidad
- Si la cantidad de rangos supera un límite, la sección incorpora scroll para una visualización ordenada
Esto permite definir qué franjas estarán disponibles para cada rango etario configurado.

Sin Rangos Etarios
En el caso de que la agenda no tenga rangos etarios configurados, el popup de creación de franja no mostrará la sección “Rango etario”.
De este modo, la interfaz se ajusta dinámicamente según la configuración realizada.

Agenda de prácticas
Cargar orden más tarde en turno
Esta funcionalidad está asociada al siguiente Feature Flag de desarrollo hasta completar la implementación de todos los tipos de órdenes que se pueden utilizar en la asignación de un turno en agenda de práctica junto con su edicion: HABILITAR_AGENDA_DE_PRACTICAS_EN_DESARROLLO
A la hora de crear un nuevo turno, luego de validar la identidad del paciente en el paso dos del stepper, dentro del tercer paso se define el tipo de orden a asociar al turno correspondiente. Para esto, se muestran una serie de radiobuttons en donde el usuario indica qué tipo de orden corresponde al turno en cuestión debajo de la leyenda “Orden médica”. Las opciones son:
- Seleccionar orden
- Transcribir orden
- Cargar más tarde
- No requiere
Una vez seleccionada la opción “Cargar más tarde” se oculta el campo de tipo desplegable donde se listan las órdenes generadas dentro de HSI.

Luego, en el paso 4 donde se debe seleccionar qué estudios se van a realizar, del lado izquierdo se listan todas las prácticas
que conforman la agenda en cuestión.
Una vez confirmado el turno, dentro del detalle del mismo se muestra la leyenda de “Orden pendiente” debajo del título de “orden médica”.

Algunas cuestiones importantes a tener en cuenta:
- En esta versión quedó fuera del alcance poder editar el tipo de orden una vez definido el turno, es decir, si el turno quedó en estado “Orden pendiente” queda en ese estado.
- La indicación de este tipo de orden solo se puede realizar en los flujos de asignación de turno de las solapas “Oferta por profesional”, “Mis agendas” y “Oferta por institución”.
Precarga de procedimientos asignados al turno en consulta ambulatoria
Esta funcionalidad está asociada al siguiente Feature Flag de desarrollo: HABILITAR_AGENDA_DE_PRACTICAS_EN_DESARROLLO
A partir de este release, se precargan las prácticas/estudios que fueron asociados al turno cuando el profesional ingresa a la nueva consulta ambulatoria. Ejemplo:
Se asocian las prácticas “ECG de 12 derivaciones” y “SPECT cardiaco” a un turno.

Luego, cuando el paciente pasa a estar “En sala” y el profesional lo atiende, dentro de la consulta ambulatoria se precargan estas dos prácticas mencionadas debajo del desplegable “Procedimientos” con la misma fecha de realización que la del turno.

Reportes Mensuales Descargables – Unificación de filtros por Mes/Año
Se actualizó la forma de filtrar algunos reportes mensuales descargables incorporando 2 nuevos selectores de Mes y Año, estos selectores reemplazan los anteriores campos de selector de fechas de Fecha Inicio y Fecha Fin.
El objetivo es estandarizar la generación de reportes, limitados a periodos mensuales cerrados, de este modo, mejorar la performance en su comportamiento.
Es importante aclarar que la estructura y contenido de los reportes no se modifica.
Usuarios impactados
Esta mejora aplica a los usuarios con acceso al módulo de Reportes:
- Administrador institucional
- Personal de estadísticas
Reportes afectados
Esta mejora aplica a los siguientes reportes:
- Detalle Nominal de Consultorios Externos – Hoja 2
- Resumen Mensual de Consultorios Externos – Hoja 2.1
- Detalle Nominal de Turnos
- Detalle Nominal de Prestaciones de Imágenes Diagnósticas

Nuevo selector Mes y Año
Los reportes incluidos en esta mejora ahora muestran:
- Selector de Mes, limitado únicamente a los meses ya finalizados.
Selector de Año, disponible desde 2020 hasta el año en curso.

Al seleccionar Mes y Año, el sistema determina automáticamente el rango completo del mes, incluyendo correctamente el primer y el último día.
Ejemplo: si el mes corriente es enero, se preselecciona del 1ro al 31 de diciembre del año anterior.
Publicación de eventos por el envío de mails
El objetivo de esta funcionalidad es incorporar la publicación de eventos a través del protocolo MQTT cada vez que el sistema genera y dispara un correo electrónico a un destinatario.
Canal de publicación (tópico base): el evento se publicará en el siguiente tópico del broker:
/HSI/NOTIFICATION/EMAIL/TEMPLATE_ID
- TEMPLATE_ID: representa el identificador único de la plantilla de correo electrónico utilizada para generar el mensaje.
Estructura del contenido del evento: el mensaje que se publica es un objeto JSON con la siguiente estructura:
- args → información necesaria para armar la plantilla del correo electrónico.
- recipient → información del destinatario del correo electrónico.
Eventos publicados para el envio de mail:
A continuación, se detalla el tópico y el payload (contenido JSON) para cada tipo de evento que se publica en el message broker (MQTT) cuando se dispara la funcionalidad de envío de correo electrónico:
- Evento: Nuevo turno.
Descripción: se publica cuando se otorga un nuevo turno
Topico → /HSI/NOTIFICATION/EMAIL/NEW_APPOINTMENT
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281499123”
},
“args”: {
“professionalFullName”: “ALFARO Eduardo Daniel”,
“specialty”: “Pediatria”,
“day”: “Sábado 08 de noviembre de 2025”,
“time”: “06:30”,
“institution”: “Clinica Chacabuco”,
“recomendation”: “…”,
“cancelationLink”: null,
“fromFullName”: “HSI”,
“medicalCoverage”: “Medife”,
“doctorOffice”: “Consultorio 1”,
“identificationNumber”: “41553320”
}
}
- Evento: Nueva reserva
Descripción: se publica al otorgar una reserva online.
Tópico → /HSI/NOTIFICATION/EMAIL/EMAIL_CONFIRMAR_RESERVA
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
“args”: {
“cancelationLink”: “https://localhost:4200/auth/book-cancel/…”,
“namePatient”: “JOSELINA VALDEZ”,
“date”: “8/11/2025 a las 21:40:00 h”,
“nameProfessional”: “ALFARO Eduardo Daniel”,
“specialty”: “Adolescencia – Práctica no encontrada”,
“institution”: “Clinica Chacabuco – san martin 33 TANDIL Buenos Aires”,
“recomendation”: “- Presentarse 15 min antes con el carnet de la Obra Social.\n”,
“coveragePracticeInfo”: null
}
}
- Evento: Nuevo turno de teleconsulta o teleconsulta de segunda opinión.
Descripción: se publica al otorgar un turno con modalidad de teleconsulta con paciente o teleconsulta de segunda opinión.
Tópico → /HSI/NOTIFICATION/EMAIL/DIGITAL_CONSULTATION_EMAIL
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
“args”: {
“patientName”: “VALDEZ JOSELINA”,
“date”: “2025-11-15 21:40.hs”,
“professionalName”: “ALFARO Eduardo Daniel”,
“clinicalSpecialty”: “Adolescencia”,
“callLink”: “https://jitsi.lamansys.ar/…”
}
}
- Evento: Receta digital.
Descripción: se publica cuando se solicita enviar por correo electrónico la receta digital.
Tópico → /HSI/NOTIFICATION/EMAIL/DIGITAL_RECIPE
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
“args”: {
“patient”: {
“id”: 6901,
“identificationType”: “DNI”,
“identificationNumber”: “41334567”,
“firstName”: “JOSELINA”,
“middleNames”: null,
“lastName”: “VALDEZ”,
“otherLastNames”: null,
“nameSelfDetermination”: “josi”,
“fullName”: “VALDEZ, JOSELINA”
},
“recipeIdWithDomain”: “1-1258”,
“recipeId”: 1258,
“resources”: [
{
“resource”: {
“size”: 18129,
“stream”: {}
},
“contentType”: “application/pdf”,
“filename”: “41553415_1-1258.pdf”,
“fileName”: “41553415_1-1258.pdf”
}
],
“links”: [
“https://localhost:4200/api/external-document-access/download-prescription/..”
]
}
}
Aclaración: El campo de links contendrá los enlaces de descarga necesarios para obtener la receta en formato PDF. Por defecto, estos enlaces tendrán una vigencia de 24 horas, la cual puede ser configurada mediante propiedades.
notification.digital_recipe.token.expiration=24h
- Evento: Recuperar contraseña.
Descripción: se publica cuando el usuario se olvidó la contraseña.
Tópico → /HSI/NOTIFICATION/EMAIL/RESTORE_PASSWORD
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
“args” : {
“fullname” : “JOSELINA VALDEZ”,
“link” : “https://localhost:4200/auth/password-reset/..”
}
}
- Evento: Generación de reporte asincrónico.
Descripción: se publica cuando se terminó de generar el reporte mensual
Tópico → /HSI/NOTIFICATION/EMAIL/GENERATION_REPORT
JSON que se publica →
{
“args” : {
“reportType” : “Detalle Nominal de Turnos”,
“createdOn” : “2025-10-21T12:45:42.189Z”
},
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
}
- Evento: Informe de imágenes
Descripción: se publica cuando el informador solicita que se envíe el informe por mail.
Tópico → /HSI/NOTIFICATION/EMAIL/IMAGING_REPORT_EMAIL
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
“args”: {
“requestId”: 26,
“patient”: {
“id”: 6849,
“identificationType”: “DNI”,
“identificationNumber”: “2234567”,
“firstName”: “Graciela”,
“middleNames”: null,
“lastName”: “Venezia”,
“otherLastNames”: null,
“nameSelfDetermination”: null,
“fullName”: “Venezia, Graciela”
},
“resources”: [
{
“resource”: {
“size”: 9632,
“stream”: {}
},
“contentType”: “application/pdf”,
“filename”: “Apellido_Nombre.pdf”,
“fileName”: “Apellido_Nombre.pdf”
}
],
“attempts”: null,
“email”: “maildeprueba@gmail.com”,
“date”: null,
“links”: [
“https://localhost:4200/api/external-document-access/download-imaging-document/..”
]
}
Aclaración: El campo links contendrá los enlaces de descarga necesarios para obtener el informe en formato PDF. Por defecto, estos enlaces tendrán una vigencia de 24 horas, la cual puede ser configurada mediante propiedades. notification.imaging_report.token.expiration=24h
- Evento: Nuevo turno de imágenes.
Descripción: se publica cuando se otorga un turno de imágenes
Tópico → /HSI/NOTIFICATION/EMAIL/NEW_IMAGING_APPOINTMENT
JSON que se publica →
{
“recipient”: {
“firstname”: “JOSELINA”,
“lastname”: “VALDEZ”,
“email”: “maildeprueba@gmail.com”,
“phoneNumber”: “2281456789”
},
“args”: {
“professionalFullName”: null,
“specialty”: null,
“day”: “Viernes 07 de noviembre de 2025”,
“time”: “12:40”,
“institution”: “Clinica Chacabuco”,
“recomendation”: “…”,
“cancelationLink”: null,
“fromFullName”: “HSI”,
“medicalCoverage”: “O.S.P. BUENOS AIRES (IOMA)”,
“doctorOffice”: null,
“identificationNumber”: “41556789”
}
}
API Publica
Se corrigió el error en el rango de búsqueda de disponibilidad de turnos al consumir los servicios FetchAvailabilityByInstitutionsAndSpecialty y FetchAvailabilityBySpecialtyAndPracticeAndDate después de las 21:00hs.
