Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
748 changes: 534 additions & 214 deletions .github/scripts/validate_appointment_queue_integrity.py

Large diffs are not rendered by default.

50 changes: 41 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,40 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).

## [Unreleased]

### Agregado
- Contrato canónico versionado `docs/contracts/hsc-care-routing.csv` para los 16 servicios
registrados. Define por UUID la categoría de agenda, ubicación, política de llegada, cola y
ámbito de atención; 13 servicios quedan programables, 11 permiten cola y dos son de atención
directa.
- Categoría local de agenda `Odontología general`, separada de la especialidad reconocida
`Cirugía Bucal y Maxilofacial`, y atributo multivaluado de proveedor para habilitar categorías
de agenda con validación frontend configurable (`off`, `warn` o `strict`).
- Conceptos dedicados para servicios de cola. `Queue.service` deja de reutilizar UUIDs de
`AppointmentServiceDefinition`, que pertenecen a otro tipo de recurso.

### Cambiado
- `VisitType` representa únicamente el ámbito: Atención Ambulatoria, Sesión Grupal Ambulatoria,
Hospitalización, Emergencia o Atención Extramural. La especialidad y la prestación permanecen
en el servicio de cita y el encuentro clínico.
- Obstetricia y nutrición ambulatorias se ubican en UPSS Consulta Externa; hospitalización de
cirugía general se ubica en UPSS Hospitalización; Hemodiálisis usa UPSS Diálisis.
- Rehabilitación, hemodiálisis y nutrición tienen equivalencias explícitas con sus colas. El
registro de llegada ya no depende de coincidencias por nombre ni de selección manual.
- Los tipos de servicio uno-a-uno se eliminan del paquete; la duración operativa vive en la definición
del servicio hasta que el hospital configure variantes reales, como primera consulta o control.

### Retirado
- Servicios de cita para emergencia, atención inmediata del recién nacido y aplicación de
inyectables. Son flujos no programables o requieren confirmar cartera y UPSS antes de activarse.
- Tipos de atención que codificaban especialidades, dispensación o diagnóstico dentro de
`VisitType`, y el atributo ficticio `Parent Visit Type` que OpenMRS Core nunca interpretó, se
eliminan del paquete canónico y no se recrean en instalaciones nuevas.

### Validación
- CI comprueba que content y configuración frontend reproduzcan exactamente el contrato, que las
colas usen Concepts dedicados, que no reaparezcan tipos especializados y que odontología general
nunca quede asociada a Cirugía Bucal y Maxilofacial.

### Agregado
- Person attribute **Método de Verificación de Seguro** (`bc1e5c92-e46a-4bc9-8cba-d9093a0eb659`, FreeText):
traza cómo se verificó la afiliación (manual-web / setisis / siteds), requerido por la
Expand Down Expand Up @@ -47,9 +81,8 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
5 679 mapeos) y la suscripción de `openconceptlab.subscriptionUrl` a esa versión.

### Corregido
- Mapea las citas de cirujano dentista en UPSS Consulta Externa a la cola compartida de Consulta Externa y exige el
tipo de visita `Consulta Ambulatoria - Odontología`, permitiendo que Admisión encole sin mezclar el contexto
clínico de la consulta.
- Mapea las citas de cirujano dentista general en UPSS Consulta Externa a la cola compartida y usa el ámbito
`Atención Ambulatoria`; la categoría `Odontología general` conserva el contexto sin duplicarlo en `VisitType`.
- Mantiene el nombre estable `Admision` para que Initializer pueda actualizar el rol existente por UUID, reemplazar
su herencia y aplicar la allowlist de registro, citas y check-in. Esto restaura la lectura necesaria para encolar
desde Citas y retira historia clínica, dashboard/configuración/purgas de colas, administración de catálogos y
Expand Down Expand Up @@ -90,8 +123,8 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
- Define `Personal de Emergencia` como rol operativo directo para búsqueda y alta rápida, visitas, triaje,
atención y movimientos de cola. Puede cerrar de forma coordinada registros legados vinculados a citas, sin
heredar los permisos amplios de consulta externa ni recibir configuración, purga o borrado clínico.
- Copia a cada definición de servicio la duración de su único tipo activo, sin inventar horarios ni cupos, y deja
auditados seis mapeos automáticos y nueve selecciones manuales entre servicios de cita y colas.
- Conserva una duración base positiva en cada definición de servicio sin inventar horarios ni cupos, retira los
tipos de servicio redundantes y publica reglas explícitas para todos los servicios programables.
- Protege `Get Providers` como privilegio requerido del rol `Admision` para que pueda listar doctores y
proveedores mediante la API REST.
- Agrega `Get Concept Sources` al rol `Admision` para que FHIR pueda cargar los datos existentes al editar un
Expand All @@ -106,10 +139,9 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
tipos de encuentro y roles de proveedor distintos, sin formularios JSON ni migración automática de
históricos. Agrega un contrato de ubicación/RBAC para el frontend y una validación CI de regresión.
- Agrega los atributos de visita `Número de turno de cola` y `UUID de cita vinculada`, la propiedad global del
número de turno y una validación CI de RBAC con privilegios oficiales, metadata, duración y mapeos exactos por
UUID y tipo de visita; declara `America/Lima` como zona operativa para los consumidores SIHSALUS, conserva UTC
en servidor/JVM según la convención de OpenMRS y documenta el corte UTC del correlativo diario de Queue 3.0 como
limitación upstream. Exige selección manual sin inferencias por nombre cuando no existe coincidencia inequívoca.
número de turno y una validación CI de RBAC con privilegios oficiales, metadata, duración y rutas exactas por
UUID; declara `America/Lima` como zona operativa para los consumidores SIHSALUS y conserva UTC en servidor/JVM
según la convención de OpenMRS.
- Agrega privilegios frontend específicos para la tabla de consultas activas, resumen de consulta, formularios
clínicos, canasta de órdenes y lista de tareas. Los asigna a consulta externa y, de forma acotada, a los roles
clínicos que ya tenían el acceso funcional equivalente; `Enfermera` los hereda de `Doctor Consulta Externa`.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# SIHSALUS Content Package

SIHSALUS Content Package para OpenMRS, con la versión actual **1.22.0**.
SIHSALUS Content Package para OpenMRS, con la versión actual **1.23.0**.

The contents of a typical Content Package are:
* **Configuration**
Expand Down Expand Up @@ -39,7 +39,7 @@ If this command reports any violations, you can then run `mvn spotless:apply` to

Remember, in most cases, you don't need to run these commands separately as Spotless will run automatically during the build process with `mvn clean package`.

Versión del paquete: **1.22.0**.
Versión del paquete: **1.23.0**.

## Cobertura MINSA (Categoría II)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
Uuid,Void/Retire,Name,Description,Duration,Start Time,End Time,Max Load,Speciality,Location,Label Colour
7ba3aa21-cc56-47ca-bb4d-a60549f666c0,,Consulta ambulatoria por médico general,"Atención ambulatoria realizada por un médico general para diagnóstico y tratamiento básico.",20,,,,9f2a8cd0-32c6-4844-8df7-1ac9c4d79943,35d2234e-129a-4c40-abb2-1ae0b2400001,#feecae
1ef43565-9c96-4f58-bfd2-c864c7cedac1,,Teleconsulta por médico,"Consulta médica realizada a distancia mediante tecnología de comunicación.",20,,,,9f2a8cd0-32c6-4844-8df7-1ac9c4d79943,35d2234e-129a-4c40-abb2-1ae0b2400001,#defbe6
4ec5c4fe-cfe0-48ff-9e4d-2f201078feae,,Atención ambulatoria por enfermera(o),"Atención ambulatoria brindada por personal de enfermería para cuidados generales.",20,,,,,35d2234e-129a-4c40-abb2-1ae0b2400001,#9ef0f0
c8d4f6e2-5b7a-41d9-93e4-7f6a8b3c2d01,,Atención ambulatoria por psicólogo(a),"Consulta ambulatoria enfocada en la salud mental realizada por psicólogo(a).",45,,,,9c8b7a6d-5e4f-43c1-9a2b-8d3e6f5c2a10,35d2234e-129a-4c40-abb2-1ae0b2400001,#ffccf2
a6d7f9b3-2c5e-48d1-93e4-7f8a6b5c2d02,,Atención ambulatoria por obstetra,"Consulta ambulatoria especializada en obstetricia, atendida por un obstetra.",30,,,,5f7c1d89-ae34-4b8c-a231-0d8e5b6c3f10,35d2234e-129a-4c40-abb2-1ae0b2400004,#ffb3b3
b3c2d4e5-f6a7-48d9-93e1-8f7a6b5c4d02,,Atención ambulatoria por cirujano dentista,"Atención ambulatoria en odontología realizada por cirujano dentista.",30,,,,4e6f8d2c-3a5b-495e-9d78-2f4c6a8b1e09,35d2234e-129a-4c40-abb2-1ae0b2400001,#b3e0ff
d4e5f6a7-b8c9-41e2-93f3-1a9b8c7d6e04,,Atención en tópico de inyectables y nebulizaciones,"Procedimientos ambulatorios de inyectables y nebulizaciones en tópicos específicos.",15,,,,,35d2234e-129a-4c40-abb2-1ae0b2400001,#ffd699
e5f6a7b8-c9d0-42f3-93e4-2b0a9c8d7e05,TRUE,Atención de urgencias y emergencias,"Servicio retirado del dominio de citas: emergencia se gestiona como atención inmediata y cola operativa, no como cita programada.",,,,,3c9a7b2d-4e5f-489a-bd78-1f6e3c8d5a01,35d2234e-129a-4c40-abb2-1ae0b2400003,#ffdd99
f7a8b9c0-d1e2-43f4-93e5-3b1a9c8d7e06,,Atención inmediata del recién nacido,"Atención inmediata para recién nacidos realizada por un médico subespecialista en neonatología.",30,,,,14106bb7-dad6-4446-809d-737f4c128ae3,35d2234e-129a-4c40-abb2-1ae0b2400004,#e6b3cc
115b9e98-0bb4-4791-afa6-d21d071cfd87,,Hospitalización de Cirugía General,"Cuidado hospitalario para pacientes sometidos a procedimientos de cirugía general.",60,,,,d8e2f4a0-b5c3-41d7-942a-6c4a1e9f3b22,35d2234e-129a-4c40-abb2-1ae0b2400005,#cce6ff
e6a43c30-71ac-4ec6-9757-c78a50ee8e8b,,Procedimientos de Laboratorio Clínico Tipo II-1,"Realización de procedimientos de laboratorio clínico de complejidad tipo II-1 para diagnóstico.",15,,,,7e5d3c2b-8a9f-41d6-93c4-6b2a1f8e5d07,35d2234e-129a-4c40-abb2-1ae0b2400006,#d9e6cc
70b7402d-fdfe-4707-94d8-5eb5780ffde5,,Ecografía general y Doppler,"Estudio de ecografía general y Doppler para evaluación diagnóstica.",30,,,,2b4d6f8a-1c3e-49d5-93a7-8e5f6b3c2d01,35d2234e-129a-4c40-abb2-1ae0b2400013,#e6ccb3
74156b5c-b1b0-4432-b073-a8af65ebcb11,,Atención en farmacia clínica,"Atención farmacéutica especializada en el ámbito clínico, incluyendo asesoramiento y dispensación de medicamentos.",15,,,,,35d2234e-129a-4c40-abb2-1ae0b2400007,#e6e6fa
dcaa59d1-64f2-45f5-a930-2ccc0ef37e61,,Terapia de rehabilitación,"Sesión programada de medicina de rehabilitación o terapia física.",45,,,,a85cfebd-f0ad-465e-859c-ee20ded8fa90,35d2234e-129a-4c40-abb2-1ae0b2400010,#c8f7c5
89bde58b-2161-4095-8e52-0d8b5003012b,,Sesión de hemodiálisis,"Sesión programada de hemodiálisis para pacientes que requieren terapia dialítica.",240,,,,e8a5a5bb-60f4-42e6-a96f-fd9da40d5c1a,35d2234e-129a-4c40-abb2-1ae0b2400011,#b8d8ff
3663f478-80fb-4585-b92f-7f82873198ee,,Atención nutricional,"Consulta programada de nutrición y dietética para evaluación y seguimiento nutricional.",30,,,,32f2c8e3-79cf-4016-939f-469bed37abdb,35d2234e-129a-4c40-abb2-1ae0b2400012,#d7f0b2
7ba3aa21-cc56-47ca-bb4d-a60549f666c0,,Consulta ambulatoria por médico general,"Prestación 54 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. La duración es una decisión operativa local.",20,,,,9f2a8cd0-32c6-4844-8df7-1ac9c4d79943,35d2234e-129a-4c40-abb2-1ae0b2400001,#feecae
1ef43565-9c96-4f58-bfd2-c864c7cedac1,,Teleconsulta por médico general,"Prestación 219 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. La duración es una decisión operativa local.",20,,,,9f2a8cd0-32c6-4844-8df7-1ac9c4d79943,35d2234e-129a-4c40-abb2-1ae0b2400001,#defbe6
4ec5c4fe-cfe0-48ff-9e4d-2f201078feae,,Atención ambulatoria por enfermera(o),"Prestación 137 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. La duración es una decisión operativa local.",20,,,,,35d2234e-129a-4c40-abb2-1ae0b2400001,#9ef0f0
c8d4f6e2-5b7a-41d9-93e4-7f6a8b3c2d01,,Atención ambulatoria por psicólogo(a),"Prestación 135 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. La duración es una decisión operativa local.",45,,,,9c8b7a6d-5e4f-43c1-9a2b-8d3e6f5c2a10,35d2234e-129a-4c40-abb2-1ae0b2400001,#ffccf2
a6d7f9b3-2c5e-48d1-93e4-7f8a6b5c2d02,,Atención ambulatoria por obstetra,"Prestación 140 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. Obstetra es una profesión, no la especialidad médica Ginecología y Obstetricia.",30,,,,,35d2234e-129a-4c40-abb2-1ae0b2400001,#ffb3b3
b3c2d4e5-f6a7-48d9-93e1-8f7a6b5c4d02,,Consulta ambulatoria por cirujano dentista general,"Prestación 142 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. Odontología general es una categoría local de agenda y no la especialidad Cirugía Bucal y Maxilofacial.",30,,,,a0d4e64e-eb63-4271-bdf1-ffa10392c282,35d2234e-129a-4c40-abb2-1ae0b2400001,#b3e0ff
d4e5f6a7-b8c9-41e2-93f3-1a9b8c7d6e04,TRUE,Aplicación de inyectables,"Prestación 520 de la NTS N.° 249-MINSA/DGAIN-2026. Se retira de la agenda hasta que el hospital confirme la UPSS Tópico de Atención en Salud y su cartera habilitada.",15,,,,,35d2234e-129a-4c40-abb2-1ae0b2400001,#ffd699
e5f6a7b8-c9d0-42f3-93e4-2b0a9c8d7e05,TRUE,Atención de urgencias y emergencias,"Servicio retirado del dominio de citas: emergencia se gestiona como atención inmediata y cola operativa, no como cita programada.",,,,,,35d2234e-129a-4c40-abb2-1ae0b2400003,#ffdd99
f7a8b9c0-d1e2-43f4-93e5-3b1a9c8d7e06,TRUE,Atención inmediata del recién nacido,"Prestaciones 9 y 10 de la NTS N.° 249-MINSA/DGAIN-2026 en Centro Obstétrico. Se retira de citas porque es una atención inmediata vinculada al parto, no una prestación programable.",30,,,,14106bb7-dad6-4446-809d-737f4c128ae3,35d2234e-129a-4c40-abb2-1ae0b2400004,#e6b3cc
115b9e98-0bb4-4791-afa6-d21d071cfd87,,Hospitalización de cirugía general,"Prestación 296 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Hospitalización. La cita representa el ingreso programado, no la programación de un procedimiento quirúrgico.",60,,,,d8e2f4a0-b5c3-41d7-942a-6c4a1e9f3b22,35d2234e-129a-4c40-abb2-1ae0b2400002,#cce6ff
e6a43c30-71ac-4ec6-9757-c78a50ee8e8b,,Procedimientos de patología clínica,"Agrupador local de agenda para las prestaciones 488 a 493 de la NTS N.° 249-MINSA/DGAIN-2026 que estén habilitadas en la cartera efectiva del hospital.",15,,,,7e5d3c2b-8a9f-41d6-93c4-6b2a1f8e5d07,35d2234e-129a-4c40-abb2-1ae0b2400006,#d9e6cc
70b7402d-fdfe-4707-94d8-5eb5780ffde5,,Ecografía general y Doppler,"Prestación 418 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Diagnóstico por Imágenes. La duración es una decisión operativa local.",30,,,,2b4d6f8a-1c3e-49d5-93a7-8e5f6b3c2d01,35d2234e-129a-4c40-abb2-1ae0b2400013,#e6ccb3
74156b5c-b1b0-4432-b073-a8af65ebcb11,,Atención en farmacia clínica,"Prestación 440 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Farmacia. La duración es una decisión operativa local.",15,,,,,35d2234e-129a-4c40-abb2-1ae0b2400007,#e6e6fa
dcaa59d1-64f2-45f5-a930-2ccc0ef37e61,,Rehabilitación mediante terapia física,"Agrupador local de agenda alineado con las prestaciones 505 y 506 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Terapias de Medicina Física y de Rehabilitación.",45,,,,a85cfebd-f0ad-465e-859c-ee20ded8fa90,35d2234e-129a-4c40-abb2-1ae0b2400010,#c8f7c5
89bde58b-2161-4095-8e52-0d8b5003012b,,Hemodiálisis,"Prestación 433 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Diálisis. La duración es una decisión operativa local.",240,,,,e8a5a5bb-60f4-42e6-a96f-fd9da40d5c1a,35d2234e-129a-4c40-abb2-1ae0b2400011,#b8d8ff
3663f478-80fb-4585-b92f-7f82873198ee,,Atención ambulatoria por nutricionista,"Prestación 152 de la NTS N.° 249-MINSA/DGAIN-2026 en la UPSS Consulta Externa. No corresponde a la UPSS Nutrición y Dietética, que atiende soporte nutricional de pacientes hospitalizados.",30,,,,32f2c8e3-79cf-4016-939f-469bed37abdb,35d2234e-129a-4c40-abb2-1ae0b2400001,#d7f0b2
Original file line number Diff line number Diff line change
@@ -1,16 +1 @@
Uuid,Void/Retire,Name,Duration,Service Definition
7016bc77-c80c-4a46-9730-0e63dadfe7af,,Consulta médica general,20,7ba3aa21-cc56-47ca-bb4d-a60549f666c0
e25f9042-b8c9-4fd6-9023-c322dc930ea4,,Teleconsulta médica,20,1ef43565-9c96-4f58-bfd2-c864c7cedac1
72d1e17a-db74-493a-8c45-05efb07723a7,,Atención de enfermería,20,4ec5c4fe-cfe0-48ff-9e4d-2f201078feae
2e0925d5-36f0-455b-9b24-f72eeae84bcd,,Consulta psicológica,45,c8d4f6e2-5b7a-41d9-93e4-7f6a8b3c2d01
f2c75953-5682-43d7-a6a3-6457ccda5ce7,,Consulta obstétrica,30,a6d7f9b3-2c5e-48d1-93e4-7f8a6b5c2d02
fa4a2d1c-d0bc-4e26-9a59-a5dd9a8fea91,,Consulta odontológica,30,b3c2d4e5-f6a7-48d9-93e1-8f7a6b5c4d02
dbf4e832-0527-46f2-aa5a-76d7a9d1151a,,Procedimiento de tópico,15,d4e5f6a7-b8c9-41e2-93f3-1a9b8c7d6e04
7dc58699-5960-4f4c-b260-2ded1d410c8d,,Atención inmediata neonatal,30,f7a8b9c0-d1e2-43f4-93e5-3b1a9c8d7e06
b263e87b-60a3-4d5a-afcd-988d93216fd4,,Programación quirúrgica,60,115b9e98-0bb4-4791-afa6-d21d071cfd87
93d94dd0-4ef9-4749-b936-670438879bb1,,Procedimiento de laboratorio,15,e6a43c30-71ac-4ec6-9757-c78a50ee8e8b
bac05992-8ab4-4dd8-87ea-464ec4898561,,Estudio de imágenes,30,70b7402d-fdfe-4707-94d8-5eb5780ffde5
898a6dfb-aaea-40fb-97b7-95935c2b5eec,,Atención farmacéutica,15,74156b5c-b1b0-4432-b073-a8af65ebcb11
f94a040f-b6e5-4315-927c-84058f3eeba4,,Terapia de rehabilitación,45,dcaa59d1-64f2-45f5-a930-2ccc0ef37e61
6c84de9c-117e-4778-9415-d01e5653da51,,Sesión de hemodiálisis,240,89bde58b-2161-4095-8e52-0d8b5003012b
04f3ac2f-6bfa-4807-8ef3-72164d69d6eb,,Consulta nutricional,30,3663f478-80fb-4585-b92f-7f82873198ee
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ d8e2f4a0-b5c3-41d7-942a-6c4a1e9f3b22,,Cirugía General
a3b5c7e1-2f4d-46e8-9c12-8d7e4f6a2b09,,Traumatología y Ortopedia
8d2e4f6a-1b3c-49d7-95a2-7f3e8b6c5d10,,Anestesiología
4e6f8d2c-3a5b-495e-9d78-2f4c6a8b1e09,,Cirugía Bucal y Maxilofacial
a0d4e64e-eb63-4271-bdf1-ffa10392c282,,Odontología general
f5d7e8c3-2a4b-49d6-8e1f-7b3a9c6d2e01,,Enfermedades Infecciosas y Tropicales
9c8b7a6d-5e4f-43c1-9a2b-8d3e6f5c2a10,,Salud Mental
2b4d6f8a-1c3e-49d5-93a7-8e5f6b3c2d01,,Radiología e Imagenología
Expand Down
Loading
Loading