Files
rips_manager/ESTADO_CAMPOS.md
Lizandro GuarnizoandClaude Sonnet 4.6 0ec4ae3e66 Fix JSON generation: numero factura, forma pago, tipousuario, hora format
- numero: usar NUM_FACTURA en lugar de cadena vacía
- codFormaPago: CLIP (particular) / INST (EPS) según TNS real
- tipousuario: fallback desde TIPOUSU cuando TIPOUSUSISPRO es NULL
- fechaHoraEgreso: última FECHA_REPORTADO en lugar de FECHA_RECEPCION
- _fmt_datetime: eliminar espacios en tiempo ("06: 08: 29" → "06:08:29")
- especialidad: limpiar valores basura (., -, 0, 00)
- telefono: fallback "0000000" cuando vacío (campo requerido TNS)
- profesional: COALESCE(USUARIO, MEDICO.CODIGO) en queries SQL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 20:48:22 -05:00

194 lines
10 KiB
Markdown

# Estado de Campos — rips_manager
**Fecha:** 2026-06-25 | **Empresa:** 9002787299 | **Sucursal:** 81080
---
## 1. RIPS — Resolución 2275/2023 (vigente desde 1-abr-2024)
> Los PDFs en `/norma` son sobre RDA/IHCE (Res. 866/2021 y 1888/2025), **no sobre RIPS**.
> La norma RIPS vigente es la **Res. 2275/2023 + Res. 558/2024 + Res. 1884/2024** (no están en la carpeta).
> TNS recibe nuestros datos y genera el RIPS hacia MinSalud internamente.
### 1.1 Campos RIPS requeridos — nivel USUARIO (paciente)
| Campo RIPS (Res. 2275) | Fuente Firebird | Estado |
|---|---|---|
| `tipoDocumentoIdentificacion` | `PACIENTE.TIPOIDENT` | ✅ Enviado como `tipoDocumento` en Tercero |
| `numDocumentoIdentificacion` | `PACIENTE.DOCIDENT` | ✅ Enviado como `nit` en Tercero |
| `fechaNacimiento` | `PACIENTE.F_NACIMIENTO` | ✅ Formato `dd/MM/yyyy` |
| `codSexo` | `PACIENTE.SEXO` | ✅ Enviado como `sexo` |
| `tipoUsuario` | `RECEPCION.TIPOUSUSISPRO` | ✅ Con fallback desde `TIPOUSU` |
| `codMunicipioResidencia` | `PACIENTE.CIUDAD` | ✅ Enviado como `codigoCiudad` (DIVIPOLA, igual en FB y TNS) |
| `codZonaTerritorialResidencia` | `PACIENTE.TIPORES` | ✅ Enviado como `zona` (U→`01`, R→`02`) |
| `codPaisResidencia` | No existe en Firebird | ⚪ TNS lo completa con `170` (Colombia) |
| `codPaisOrigen` | No existe en Firebird | ⚪ TNS lo completa con `170` |
| `incapacidad` | No existe en Firebird | ⚪ TNS lo completa como `NO` |
### 1.2 Campos RIPS requeridos — nivel PROCEDIMIENTO (por examen)
| Campo RIPS (Res. 2275) | Fuente Firebird | Estado |
|---|---|---|
| `codProcedimiento` | `RELACION.COD_EXAMEN` | ✅ Enviado como `codigoMaterial` |
| `fechaInicioAtencion` | `RELACION.FECHA_REPORTADO` | ✅ Enviado como `fechaHoraRealizacion` |
| `codDiagnosticoPrincipal` | `RECEPCION.DIAG_PPAL` | ✅ Enviado como `diagnosticoprincipal` |
| `vrServicio` | `RELACION.PRECIO` | ✅ Enviado como `valor` |
| `numAutorizacion` | `RECEPCION.AUTORIZACION` | ✅ Enviado como `numeroAutorizacion` |
| `finalidadTecnologiaSalud` | **No existe en Firebird** | ⚠️ TNS lo gestiona internamente (confirmar) |
| `viaIngresoServicioSalud` | **No existe en Firebird** | ⚠️ Fijo `"01"` — TNS lo completa |
| `modalidadGrupoServicioTecSal` | **No existe en Firebird** | ⚠️ TNS lo gestiona internamente |
| `grupoServicios` | **No existe en Firebird** | ⚠️ TNS lo gestiona internamente |
| `codServicio` | **No existe en Firebird** | ⚠️ TNS lo gestiona internamente |
| `valorPagoModerador` | **No existe en Firebird** | ⚪ TNS lo pone en `0` para particulares |
| `conceptoRecaudo` | **No existe en Firebird** | ⚠️ TNS lo gestiona internamente |
| `idMIPRES` | **No existe en Firebird** | ⚪ Opcional — solo para servicios MIPRES |
| `tipoDoc/numDoc del profesional` | Solo username (`RECEPCION.USUARIO`) | ⚠️ TNS usa username, no CC del médico |
---
## 2. TNS API v2 — Estado del envío
### 2.1 POST /v2/tablas/Tercero/Crear
| Campo TNS | Fuente | Estado |
|---|---|---|
| `codigo` | `PACIENTE.CODIGO` | ✅ |
| `nit` | `PACIENTE.DOCIDENT` | ✅ |
| `tipoDocumento` | `PACIENTE.TIPOIDENT` (mapeado) | ✅ |
| `nombre`, `nombre1`, `nombre2` | `PACIENTE.NOMBRES` | ✅ |
| `apellido1`, `apellido2` | `PACIENTE.APELLIDOS` | ✅ |
| `direccion` | `PACIENTE.DIRECCION` | ✅ |
| `codigoCiudad` | `PACIENTE.CIUDAD` | ✅ Validado: DIVIPOLA igual en FB y TNS |
| `zona` | `PACIENTE.TIPORES` | ✅ U→`01`, R→`02` |
| `sexo` | `PACIENTE.SEXO` | ✅ |
| `fechaNacimiento` | `PACIENTE.F_NACIMIENTO` | ✅ |
| `etnia` | `PACIENTE.CODETNIA` | ✅ |
| `telefono` | `PACIENTE.TELEFONOS` | ✅ |
| `email` | `PACIENTE.EMAIL` | ✅ Fallback: `doc@sinregistro.co` |
| `natJuridica` | Hardcodeado `"N"` | ✅ Siempre Natural |
| `cliente` | Hardcodeado `"S"` | ✅ Siempre cliente |
| `zona1`, `clasificacion`, `codigoBarrio` | Hardcodeados `"00"` | ✅ Catálogos TNS sin config |
| `enfermedadCronica` | Hardcodeado `false` | ⚠️ No existe campo en Firebird |
| `noEnviarMinSalud` | Hardcodeado `false` | ⚠️ ¿Hay pacientes que no reportar? |
### 2.2 POST /v2/rda/RdaPaciente/Insertar
| Campo TNS | Fuente | Estado |
|---|---|---|
| `codigoPrefijo` | `RECEPCION.PREFIJO` | ✅ |
| `numero` | `RECEPCION.NUM_FACTURA` | ✅ Corregido (antes vacío) |
| `fecha` | `RECEPCION.FECHA_RECEPCION` | ✅ |
| `codTercero` | `RECEPCION.COD_PACIENTE` | ✅ |
| `tipoIngreso` | `RECEPCION.CLASEPROC` | ✅ (`1`=Amb, `2`=Hosp, `3`=Urgencias) |
| `fechaHoraIngreso` | `RECEPCION.HORAINICIORECEPCION` | ✅ Hora de inicio |
| `fechaHoraEgreso` | `RELACION.FECHA_REPORTADO` (última) | ✅ Fecha del último examen reportado |
| `diagnosticoprincipal` | `RECEPCION.DIAG_PPAL` | ✅ |
| `tipousuario` | `RECEPCION.TIPOUSUSISPRO` | ✅ Con fallback desde `TIPOUSU` |
| `numeroContrato` | `RECEPCION.NIT_EMPRESA` | ✅ NIT de EPS o `PART` |
| `numeroAutorizacion` | `RECEPCION.AUTORIZACION` | ✅ |
| `codFormaPago` | Derivado de `NIT_EMPRESA` | ✅ `PART``CLIP`, EPS→`INST` (validado en TNS) |
| `modalidadAtencion` | Hardcodeado `"01"` | ⚠️ No existe campo en Firebird (intramural) |
| `viaIngreso` | Hardcodeado `"01"` | ⚠️ No existe campo en Firebird (demanda espontánea) |
| `codVendedor` | Hardcodeado `"00"` | ✅ Default TNS validado |
| `codBanco` | Hardcodeado `"00"` | ✅ Default TNS validado |
| `codigoCentroCosto` | Hardcodeado `"00"` | ✅ Sin centros de costo configurados en TNS |
| `esTerapia` | Hardcodeado `false` | ✅ Es laboratorio |
| `esProcedimiento` | Hardcodeado `false` | ✅ Es laboratorio |
| **detallePedido:** | | |
| `codigoMaterial` | `RELACION.COD_EXAMEN` | ⚠️ Sin validar: DOCUXER sin permiso de artículos |
| `codigoBodega` | Hardcodeado `"00"` | ✅ Validado: única bodega en TNS es `"00"` |
| `cantidad` | Hardcodeado `1` | ✅ 1 examen = 1 unidad |
| `tipoUnidad` | Hardcodeado `"D"` | ✅ Default TNS |
| `valor` | `RELACION.PRECIO` | ✅ |
| `descuento` | Hardcodeado `0` | ✅ |
| `porcentajeIva` | Hardcodeado `0` | ✅ Salud sin IVA |
| `impConsumo` | Hardcodeado `0` | ✅ |
| `profesional` | `RECEPCION.USUARIO` (con fallback `MEDICO.CODIGO`) | ✅ Opcional según doc TNS |
| `especialidad` | `MEDICO.COD_ESPECIALIDAD` | ✅ Limpia valores basura (`.`, `-`, `00`) |
| `diagnosticoprincipal` | `RECEPCION.DIAG_PPAL` | ✅ |
| `fechaHoraRealizacion` | `RELACION.FECHA_REPORTADO` | ✅ Requerido — formato `dd/MM/yyyy HH:mm:ss` |
---
## 3. Hardcodeados — Resumen definitivo
### ✅ Correctos — defaults validados contra TNS
| Campo | Valor | Razón |
|---|---|---|
| `codVendedor` | `"00"` | Default TNS documentado |
| `codBanco` | `"00"` | Default TNS documentado |
| `codigoCentroCosto` | `"00"` | Sin centros de costo en TNS |
| `codigoBodega` | `"00"` | Única bodega existente en TNS (`PRINCIPAL`) |
| `tipoUnidad` | `"D"` | Default TNS (Unidad) |
| `cantidad` | `1` | 1 examen = 1 unidad lógica |
| `descuento` | `0` | Sin descuentos |
| `porcentajeIva` | `0` | Servicios de salud exentos |
| `impConsumo` | `0` | Sin impuesto al consumo |
| `esTerapia` | `false` | Es laboratorio clínico |
| `esProcedimiento` | `false` | Es laboratorio clínico |
| `natJuridica` | `"N"` | Paciente = persona Natural |
| `cliente` | `"S"` | Siempre es cliente |
| `zona1` / `clasificacion` / `codigoBarrio` | `"00"` | Catálogos TNS sin configurar |
| `privada` / `mixta` | `"N"` | Laboratorio no es privado/mixto |
| `comision` | `0` | Sin comisiones |
### ⚠️ Hardcodeados por ausencia de campo en Firebird — confirmar con operación
| Campo | Valor fijo | Situación |
|---|---|---|
| `viaIngreso` | `"01"` Demanda Espontánea | **No existe** columna en `RECEPCION`. ¿Siempre es espontáneo? |
| `modalidadAtencion` | `"01"` Intramural | **No existe** columna en `RECEPCION`. ¿Hacen domiciliarias? |
| `enfermedadCronica` | `false` | **No existe** en Firebird |
| `noEnviarMinSalud` | `false` | **No existe** en Firebird. ¿Hay pacientes sin reporte? |
---
## 4. Bugs corregidos en esta sesión
| Bug | Causa | Fix |
|---|---|---|
| `Column unknown DOC_NUM / FECHA_INI` | `fdb` no soporta `:name` params | `firebird_service.py` convierte a `?` positional |
| `"06: 08: 29"` (espacios en hora) | Firebird retorna TIME con espacios | `_fmt_datetime` limpia `": "``":"` |
| `"numero": ""` (factura vacía) | Hardcodeado `""` | Ahora usa `RECEPCION.NUM_FACTURA` |
| `"especialidad": "."` | `COD_ESPECIALIDAD` con basura en BD | Limpia `.`, `-`, `0`, `00` |
| `"tipousuario": "12"` siempre | `TIPOUSUSISPRO` NULL en 96% de registros viejos | Fallback desde `TIPOUSU`: `1``11`, `5``07` |
| `"codFormaPago": "CO"` | Código no existe en TNS de este lab | Cambiado a `CLIP` (particular) / `INST` (EPS) |
| `fechaHoraEgreso` = fecha entrada | Usaba `FECHA_RECEPCION` como egreso | Ahora usa `max(FECHA_REPORTADO)` de exámenes |
---
## 5. Pendientes bloqueantes
### En portal.tns.co (requiere admin TNS)
| Permiso | Para qué | Sin esto |
|---|---|---|
| **Insertar RDA Pacientes** (usuario DOCUXER) | Enviar `RdaPaciente/Insertar` | El envío retorna error 403 |
| **Ver artículos** (usuario DOCUXER) | Validar que códigos de exámenes existen en TNS | Los códigos `TSH`, `903841`, etc. pueden no existir como materiales |
### En Firebird (validar con quien administra el LIS)
| Campo | Acción |
|---|---|
| ¿`RECEPCION.VIAINGRESO` existe? | Consultar esquema — NO existe en la BD actual |
| ¿`RECEPCION.MODALIDAD` existe? | Consultar esquema — NO existe en la BD actual |
| ¿Hay exámenes sin `FECHA_REPORTADO` válida? | Verificar registros con año 1900 en `FECHA_REPORTADO` |
### En TNS (validar manualmente en portal.tns.co)
| Validación | Cómo verificar |
|---|---|
| Códigos de exámenes (`TSH`, `903841`, etc.) existen como Materiales | Ir a Inventario → Artículos en el portal |
| `finalidadTecnologiaSalud` que TNS genera para exámenes de laboratorio | Revisar un RDA ya creado en TNS |
| `conceptoRecaudo` que TNS asigna | Revisar un RDA ya creado en TNS |
---
## 6. Normas de referencia
| Norma | Sobre | En carpeta `/norma` |
|---|---|---|
| Res. 2275/2023 | **RIPS vigente** (formato de reporte a MinSalud) | ❌ Falta — agregar |
| Res. 558/2024 | Actualización RIPS | ❌ Falta — agregar |
| Res. 1884/2024 | Actualización RIPS | ❌ Falta — agregar |
| Res. 866/2021 | Datos clínicos para interoperabilidad IHCE | ✅ Está |
| Res. 1888/2025 | RDA — Resumen Digital de Atención (IHCE) | ✅ Está |
| Res. 1995/1999 | Normas historia clínica | ✅ Está |