diff --git a/app/routes/automation.py b/app/routes/automation.py index 7191c97..52ac268 100644 --- a/app/routes/automation.py +++ b/app/routes/automation.py @@ -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} diff --git a/app/routes/test_rda.py b/app/routes/test_rda.py index dcfe623..e46b24a 100644 --- a/app/routes/test_rda.py +++ b/app/routes/test_rda.py @@ -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 diff --git a/app/services/json_generator.py b/app/services/json_generator.py index 04580d1..f28464f 100644 --- a/app/services/json_generator.py +++ b/app/services/json_generator.py @@ -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,