- 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>
194 lines
10 KiB
Markdown
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á |
|