Skip to content

Rec 292- Nuevo circuito de receta con PRAXIS - #119

Merged
ma7payne merged 10 commits into
refactor-matifrom
REC-292
Oct 15, 2026
Merged

ma7payne merged 10 commits into
refactor-matifrom
REC-292

Conversation

@agustin1996ra

@agustin1996ra agustin1996ra commented Oct 6, 2026 •

Copy link
Copy Markdown

Requerimiento

Funcionalidad desarrollada

  1. Autorización (RBAC)
  • checkAuth ahora expone los roles del usuario (req.user.roleNames).
  • Nuevo middleware requirePermission(action, resource) con grants en código (access-control.ts) y 403 unificado.
  • Autorización aplicada a las rutas de todos los módulos; chequeo de rol roto en prescriptions corregido.
  • Seed idempotente de roles (npm run seed:roles).
  • Documentación en docs/authorization.md.
  1. Tokens de aplicación (authApps)
  • Módulo applications: entidad de aplicación (nombre, organización, permisos, activo) y token vigente.
  • Endpoints: POST /applications, POST /applications/:id/token, GET /applications/me.
  • Middleware checkAppAuth (valida el token contra el vigente almacenado → revocable) y requireAppPermission(permiso) con soporte de wildcard resource:*.
  • Revocación por reemisión (con jti único).
  • Documentación en docs/app-tokens.md.
  1. Modelo de receta (fuente de verdad)
  • identificadoresExternos (praxis / prestacion / registro) con índice multikey y syncExterno por entidad.
  • Modelo expandido para no perder interacciones: estados[], estadoActual, estadosDispensa[], estadoDispensaActual, dispensa[] y nuevos estados Suspendida/Rechazada.
  • Orden y fechas escalonadas para tratamiento prolongado.
  1. Integración con Praxis
  • Config PRAXYS_ENDPOINT/PRAXYS_API_KEY; cliente y mapper cableados.
  • Envío por insumo, con tratamientoProlongado derivado de los meses, guardando el idPrescripcion (compartido por treatmentGroupId).
  • Sincronización local-first con marcado pendiente/no_aplicable/ok.
  • Job de reintento sync-praxis-identifiers (cada 15 min, 3 intentos → error).
  1. Ingesta desde ANDES
  • Endpoint interno POST /prescriptions/andes/ingest (token de aplicación + permiso).
  • Adapta el formato de receta de ANDES, preserva idPrestacion/idRegistro, deduplica por idRegistro + conceptId (o magistral) y genera N recetas para tratamiento prolongado.
  1. API compatible con ANDES (hub) — /api/modules/recetas
  • GET /recetas, /motivos, /filtros, /verificar, /profesional/:id, /por-prestacion/:id, /por-paciente/:dni (con ambito=todas), POST / (ingesta), PATCH / (suspender, dispensar, cancelar-dispensa, rechazar, sin-dispensar, dispensa-parcial), POST /:id/dispensa.
  • View adapter que devuelve el shape de receta de ANDES (estadoActual, estadosDispensa, dispensa, medicamento.*, idReceta).
  • Notificación de dispensa (SIFAHO → RecetAr) + job de reconciliación actualizar-estados-dispensa.
  • OpenAPI del hub.
  1. Jobs de estado
  • vencimiento-recetas (pendiente→vigente→vencida) y los anteriores, corriendo en agenda-ui

UserStories llegó a completarse

  • Si
  • No

Requiere actualizaciones en la base de datos

  • Si

  • No

  • Nuevo índice en la colección prescriptions:
    { 'identificadoresExternos.entidad': 1, 'identificadoresExternos.valor': 1 }
    (multikey compuesto, no único; lo crea Mongoose al arrancar).

    db.prescriptions.createIndex(
    { "identificadoresExternos.entidad": 1, "identificadoresExternos.valor": 1 },
    { name: "identificadoresExternos_entidad_valor" })
  • Seed de roles del sistema: npm run seed:roles (idempotente).

  • RecetAr agrega campos nuevos al schema de recetas (identificadoresExternos,
    syncExterno, estados/estadosDispensa/dispensa). Sin migración de datos.

@ma7payne
ma7payne changed the base branch from master to refactor-mati October 15, 2026 16:43
@ma7payne
ma7payne merged commit 2002ffa into refactor-mati Oct 15, 2026
1 check passed
@ma7payne
ma7payne deleted the REC-292 branch October 15, 2026 17:29
ma7payne pushed a commit that referenced this pull request Oct 25, 2026
* REC-292: Crear los recursos para conectarse con praxis

* Auth para apps y permisos en las rutas

* docs(openspec): incorpora specs del circuito de recetas en el repo

* feat(applications): tokens de aplicacion para acceso sistema-a-sistema

* docs(openspec): archiva app-tokens-recetar

* feat(recetas): circuito de recetas - modelo, praxis, ingesta y hub compatible ANDES

* feat(recetas): job de vencimiento y verificacion e2e del circuito

* feat(recetas): expone idReceta en el shape compatible y test de combinacion por prestacion

* feat(recetas): notificacion de dispensa (endpoint + job de reconciliacion) y cierre 5.3

* docs(openspec): archiva circuito-recetas-recetar y separa change generico-sugerido-praxis
ma7payne pushed a commit that referenced this pull request Oct 26, 2026
* REC-292: Crear los recursos para conectarse con praxis

* Auth para apps y permisos en las rutas

* docs(openspec): incorpora specs del circuito de recetas en el repo

* feat(applications): tokens de aplicacion para acceso sistema-a-sistema

* docs(openspec): archiva app-tokens-recetar

* feat(recetas): circuito de recetas - modelo, praxis, ingesta y hub compatible ANDES

* feat(recetas): job de vencimiento y verificacion e2e del circuito

* feat(recetas): expone idReceta en el shape compatible y test de combinacion por prestacion

* feat(recetas): notificacion de dispensa (endpoint + job de reconciliacion) y cierre 5.3

* docs(openspec): archiva circuito-recetas-recetar y separa change generico-sugerido-praxis
ma7payne pushed a commit that referenced this pull request Oct 26, 2026
* REC-292: Crear los recursos para conectarse con praxis

* Auth para apps y permisos en las rutas

* docs(openspec): incorpora specs del circuito de recetas en el repo

* feat(applications): tokens de aplicacion para acceso sistema-a-sistema

* docs(openspec): archiva app-tokens-recetar

* feat(recetas): circuito de recetas - modelo, praxis, ingesta y hub compatible ANDES

* feat(recetas): job de vencimiento y verificacion e2e del circuito

* feat(recetas): expone idReceta en el shape compatible y test de combinacion por prestacion

* feat(recetas): notificacion de dispensa (endpoint + job de reconciliacion) y cierre 5.3

* docs(openspec): archiva circuito-recetas-recetar y separa change generico-sugerido-praxis
ma7payne pushed a commit that referenced this pull request Oct 27, 2026
* REC-292: Crear los recursos para conectarse con praxis

* Auth para apps y permisos en las rutas

* docs(openspec): incorpora specs del circuito de recetas en el repo

* feat(applications): tokens de aplicacion para acceso sistema-a-sistema

* docs(openspec): archiva app-tokens-recetar

* feat(recetas): circuito de recetas - modelo, praxis, ingesta y hub compatible ANDES

* feat(recetas): job de vencimiento y verificacion e2e del circuito

* feat(recetas): expone idReceta en el shape compatible y test de combinacion por prestacion

* feat(recetas): notificacion de dispensa (endpoint + job de reconciliacion) y cierre 5.3

* docs(openspec): archiva circuito-recetas-recetar y separa change generico-sugerido-praxis
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants