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:
co-authored by
Claude Sonnet 4.6
parent
bdc0e244fc
commit
58bdb4ae55
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user