- 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>
10 KiB
10 KiB
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
/normason 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á |