Agrega campos demograficos paciente en RDA y Tercero (etnia, zona, identidadGenero, divPolitica, antecedentes, fechaNac, direccion)

- SQL RDA join PACIENTE para obtener datos demograficos
- generar_rda_paciente: incluye etnia, identidadGenero, zona, divisionPoliticaAdministrativa, antecedentes, fechaNacimiento, direccion
- generar_tercero_api: agrega identidadGenero, divisionPoliticaAdministrativa, antecedentes; default ciudad Cucuta 54001

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-26 20:49:12 -05:00
co-authored by Claude Sonnet 4.6
parent bdc0e244fc
commit 58bdb4ae55
3 changed files with 45 additions and 8 deletions
+8 -1
View File
@@ -64,11 +64,18 @@ SELECT
m.COD_ESPECIALIDAD,
COALESCE(NULLIF(TRIM(m.CODIGO), ''), NULLIF(TRIM(r.USUARIO), ''), '') AS profesional,
e.CODCONTRATO,
TRIM(m.DOCIDMEDICO) AS DOCIDMEDICO
TRIM(m.DOCIDMEDICO) AS DOCIDMEDICO,
p.F_NACIMIENTO AS F_NAC_PAC,
p.SEXO AS SEXO_PAC,
p.CODETNIA AS CODETNIA_PAC,
COALESCE(TRIM(p.DIRECCION), '') AS DIRECCION_PAC,
p.CIUDAD AS COD_CIUDAD_PAC,
p.TIPORES AS TIPORES_PAC
FROM RECEPCION r
JOIN RELACION rel ON rel.IDRECEPCION = r.IDRECEPCION
LEFT JOIN MEDICO m ON m.CODIGO = r.COD_MEDICO
LEFT JOIN EMPRESA e ON e.NIT = r.NIT_EMPRESA
LEFT JOIN PACIENTE p ON p.CODIGO = r.COD_PACIENTE
WHERE r.FECHA_RECEPCION BETWEEN :fecha_ini AND :fecha_fin
AND r.NUM_FACTURA > 0
{filtro_contrato_rda}
+8 -1
View File
@@ -24,11 +24,18 @@ SELECT
m.COD_ESPECIALIDAD,
COALESCE(NULLIF(TRIM(m.CODIGO), ''), NULLIF(TRIM(r.USUARIO), ''), '') AS profesional,
e.CODCONTRATO,
TRIM(m.DOCIDMEDICO) AS DOCIDMEDICO
TRIM(m.DOCIDMEDICO) AS DOCIDMEDICO,
p.F_NACIMIENTO AS F_NAC_PAC,
p.SEXO AS SEXO_PAC,
p.CODETNIA AS CODETNIA_PAC,
COALESCE(TRIM(p.DIRECCION), '') AS DIRECCION_PAC,
p.CIUDAD AS COD_CIUDAD_PAC,
p.TIPORES AS TIPORES_PAC
FROM RECEPCION r
JOIN RELACION rel ON rel.IDRECEPCION = r.IDRECEPCION
LEFT JOIN MEDICO m ON m.CODIGO = r.COD_MEDICO
LEFT JOIN EMPRESA e ON e.NIT = r.NIT_EMPRESA
LEFT JOIN PACIENTE p ON p.CODIGO = r.COD_PACIENTE
WHERE {where}
AND r.NUM_FACTURA > 0
AND e.CODCONTRATO IS NOT NULL
+29 -6
View File
@@ -53,6 +53,10 @@ def generar_tercero_api(row: dict) -> dict:
tipo_doc = _TIPO_DOC_MAP.get(str(row.get("TIPOIDENT") or "CC").strip(), "C")
zona = _ZONA_MAP.get(str(row.get("TIPORES") or "U").strip(), "01")
sexo = str(row.get("SEXO") or "M").strip().upper()
identidad_genero = "1" if sexo == "M" else "2"
cod_ciudad = str(row.get("COD_CIUDAD") or "54001").strip() or "54001"
return {
"codigo": str(row.get("CODIGO") or "").strip(),
"natJuridica": "N",
@@ -64,8 +68,9 @@ def generar_tercero_api(row: dict) -> dict:
"apellido1": apellidos[0] if apellidos else "",
"apellido2": apellidos[1] if len(apellidos) > 1 else "",
"direccion": (row.get("DIRECCION") or "").strip(),
"codigoCiudad": str(row.get("COD_CIUDAD") or "00").strip(),
"nombreCiudad": (row.get("NOM_CIUDAD") or "SIN CIUDAD").strip().upper(),
"codigoCiudad": cod_ciudad,
"nombreCiudad": (row.get("NOM_CIUDAD") or "CUCUTA").strip().upper(),
"divisionPoliticaAdministrativa": cod_ciudad,
"zona1": "00",
"clasificacion": "00",
"nomRegTri": nombre_completo,
@@ -77,9 +82,11 @@ def generar_tercero_api(row: dict) -> dict:
"codigoBarrio": "00",
"comision": 0,
"fechaNacimiento": _fmt_fecha(row.get("F_NACIMIENTO")),
"sexo": str(row.get("SEXO") or "M").strip(),
"sexo": sexo,
"identidadGenero": identidad_genero,
"zona": zona,
"etnia": str(row.get("CODETNIA") or "99").strip(),
"antecedentes": "",
"cliente": "S",
"enfermedadCronica": False,
"noEnviarMinSalud": False,
@@ -160,9 +167,18 @@ def generar_rda_paciente(rows: list, default_profesional: str = "", default_espe
tipousu = str(h.get("TIPOUSU") or "").strip()
tipoususispro = _TIPOUSU_MAP.get(tipousu, "11")
# viaIngreso y modalidadAtencion no existen en RECEPCION → valores fijos de laboratorio
via_ingreso = "01" # Demanda espontánea (pacientes llegan directo al lab)
modalidad = "01" # Intramural (laboratorio en sede fija)
# Datos demográficos del paciente (disponibles cuando el SQL hace JOIN PACIENTE)
sexo_pac = str(h.get("SEXO_PAC") or "M").strip().upper()
identidad_genero = "1" if sexo_pac == "M" else "2"
etnia_pac = str(h.get("CODETNIA_PAC") or "99").strip() or "99"
tipores_pac = str(h.get("TIPORES_PAC") or "U").strip()
zona_pac = _ZONA_MAP.get(tipores_pac, "01")
div_pol = str(h.get("COD_CIUDAD_PAC") or "54001").strip() or "54001"
fecha_nac_pac = _fmt_fecha(h.get("F_NAC_PAC"))
direccion_pac = str(h.get("DIRECCION_PAC") or "").strip()
via_ingreso = "01"
modalidad = "01"
return {
"codigoPrefijo": default_prefijo or str(h.get("PREFIJO") or "00").strip(),
@@ -186,6 +202,13 @@ def generar_rda_paciente(rows: list, default_profesional: str = "", default_espe
"esTerapia": False,
"esProcedimiento": False,
"numeroAutorizacion": autorizacion,
"etnia": etnia_pac,
"identidadGenero": identidad_genero,
"zona": zona_pac,
"divisionPoliticaAdministrativa": div_pol,
"antecedentes": "",
"fechaNacimiento": fecha_nac_pac,
"direccion": direccion_pac,
"detallePedido": detalle_pedido,
"detalleFormaPago": [{
"codigoFormaPago": cod_forma_pago,