Initial commit: RIPS Manager web system
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import httpx
|
||||
import json
|
||||
from typing import Optional
|
||||
|
||||
|
||||
async def send_json(
|
||||
url: str,
|
||||
json_data: dict,
|
||||
method: str = "POST",
|
||||
headers: Optional[dict] = None,
|
||||
timeout: int = 30,
|
||||
) -> dict:
|
||||
default_headers = {"Content-Type": "application/json"}
|
||||
if headers:
|
||||
default_headers.update(headers)
|
||||
|
||||
try:
|
||||
async with httpx.AsyncClient(timeout=timeout) as client:
|
||||
if method == "POST":
|
||||
resp = await client.post(url, json=json_data, headers=default_headers)
|
||||
elif method == "PUT":
|
||||
resp = await client.put(url, json=json_data, headers=default_headers)
|
||||
else:
|
||||
resp = await client.get(url, headers=default_headers)
|
||||
|
||||
return {
|
||||
"status_code": resp.status_code,
|
||||
"success": resp.is_success,
|
||||
"body": resp.text,
|
||||
"headers": dict(resp.headers),
|
||||
}
|
||||
except httpx.TimeoutException:
|
||||
return {"status_code": 0, "success": False, "body": "Timeout", "headers": {}}
|
||||
except Exception as e:
|
||||
return {"status_code": 0, "success": False, "body": str(e), "headers": {}}
|
||||
@@ -0,0 +1,55 @@
|
||||
import fdb
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class FirebirdService:
|
||||
def __init__(self):
|
||||
self.conn = None
|
||||
|
||||
def connect(self, host: str, port: int, database: str, user: str, password: str):
|
||||
try:
|
||||
self.conn = fdb.connect(
|
||||
host=host,
|
||||
port=port,
|
||||
database=database,
|
||||
user=user,
|
||||
password=password,
|
||||
charset="UTF8",
|
||||
)
|
||||
return True, "Conexión exitosa"
|
||||
except Exception as e:
|
||||
return False, str(e)
|
||||
|
||||
def disconnect(self):
|
||||
if self.conn:
|
||||
self.conn.close()
|
||||
self.conn = None
|
||||
|
||||
def is_connected(self) -> bool:
|
||||
return self.conn is not None
|
||||
|
||||
def test_connection(self) -> tuple:
|
||||
if not self.conn:
|
||||
return False, "No hay conexión activa"
|
||||
try:
|
||||
cur = self.conn.cursor()
|
||||
cur.execute("SELECT 1 FROM RDB$DATABASE")
|
||||
cur.fetchone()
|
||||
return True, "Conexión OK"
|
||||
except Exception as e:
|
||||
return False, str(e)
|
||||
|
||||
def execute_query(self, query: str, params: Optional[dict] = None) -> tuple:
|
||||
if not self.conn:
|
||||
return False, "No hay conexión activa", []
|
||||
try:
|
||||
cur = self.conn.cursor()
|
||||
if params:
|
||||
cur.execute(query, params)
|
||||
else:
|
||||
cur.execute(query)
|
||||
columns = [desc[0] for desc in cur.description] if cur.description else []
|
||||
rows = cur.fetchall()
|
||||
return True, "", [dict(zip(columns, row)) for row in rows]
|
||||
except Exception as e:
|
||||
return False, str(e), []
|
||||
@@ -0,0 +1,89 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def generar_terceros(row: dict) -> dict:
|
||||
return {
|
||||
"tipoDocumentoIdentificacion": row.get("tipo_documento", "CC"),
|
||||
"numDocumentoIdentificacion": row.get("numero_documento", ""),
|
||||
"primerNombre": (row.get("primer_nombre") or "").upper(),
|
||||
"segundoNombre": (row.get("segundo_nombre") or "").upper(),
|
||||
"primerApellido": (row.get("primer_apellido") or "").upper(),
|
||||
"segundoApellido": (row.get("segundo_apellido") or "").upper(),
|
||||
"fechaNacimiento": str(row.get("fecha_nacimiento", ""))[:10],
|
||||
"codSexo": row.get("cod_sexo", "M"),
|
||||
"codEntidadAdministradora": row.get("cod_entidad", ""),
|
||||
"tipoUsuario": row.get("tipo_usuario", "01"),
|
||||
"codPaisResidencia": row.get("cod_pais", "170"),
|
||||
"codMunicipioResidencia": row.get("cod_municipio", ""),
|
||||
"codZonaTerritorialResidencia": row.get("cod_zona", "01"),
|
||||
"incapacidad": row.get("incapacidad", "NO"),
|
||||
"codPaisOrigen": row.get("cod_pais_origen", "170"),
|
||||
"direccionResidencia": row.get("direccion", ""),
|
||||
"codZonaResidencia": row.get("cod_zona", "01"),
|
||||
}
|
||||
|
||||
|
||||
def generar_procedimiento(row: dict, consecutivo: int) -> dict:
|
||||
return {
|
||||
"consecutivo": consecutivo,
|
||||
"codProcedimiento": row.get("cod_procedimiento", ""),
|
||||
"fechaInicioAtencion": str(row.get("fecha_atencion", datetime.now().strftime("%Y-%m-%d %H:%M")))[:16],
|
||||
"codDiagnosticoPrincipal": row.get("cod_diagnostico", "R790"),
|
||||
"codDiagnosticoRelacionado": row.get("cod_diagnostico_rel", None),
|
||||
"finalidadTecnologiaSalud": row.get("finalidad", "23"),
|
||||
"viaIngresoServicioSalud": row.get("via_ingreso", "02"),
|
||||
"modalidadGrupoServicioTecSal": row.get("modalidad", "01"),
|
||||
"grupoServicios": row.get("grupo_servicio", "02"),
|
||||
"codServicio": int(row.get("cod_servicio", 706)),
|
||||
"codPrestador": row.get("cod_prestador", ""),
|
||||
"tipoDocumentoIdentificacion": row.get("tipo_doc_profesional", "CC"),
|
||||
"numDocumentoIdentificacion": row.get("num_doc_profesional", ""),
|
||||
"vrServicio": int(row.get("vr_servicio", 0)),
|
||||
"valorPagoModerador": int(row.get("valor_pago_moderador", 0)),
|
||||
"conceptoRecaudo": row.get("concepto_recaudo", "05"),
|
||||
"numAutorizacion": row.get("num_autorizacion", None),
|
||||
"idMIPRES": row.get("id_mipres", None),
|
||||
"codComplicacion": row.get("cod_complicacion", None),
|
||||
"numFEVPagoModerador": row.get("num_fev_pago_moderador", None),
|
||||
}
|
||||
|
||||
|
||||
def generar_transaccion(
|
||||
factura: str,
|
||||
num_doc_obligado: str,
|
||||
rows_tercero: Optional[dict],
|
||||
rows_procedimientos: list,
|
||||
) -> dict:
|
||||
transaccion = {
|
||||
"numDocumentoIdObligado": num_doc_obligado,
|
||||
"numFactura": factura,
|
||||
"tipoNota": None,
|
||||
"numNota": None,
|
||||
"usuarios": [],
|
||||
}
|
||||
|
||||
if rows_tercero and rows_procedimientos:
|
||||
usuario = {
|
||||
"tipoDocumentoIdentificacion": rows_tercero.get("tipoDocumentoIdentificacion", "CC"),
|
||||
"numDocumentoIdentificacion": rows_tercero.get("numDocumentoIdentificacion", ""),
|
||||
"codEntidadAdministradora": rows_tercero.get("codEntidadAdministradora", ""),
|
||||
"tipoUsuario": rows_tercero.get("tipoUsuario", "01"),
|
||||
"fechaNacimiento": rows_tercero.get("fechaNacimiento", ""),
|
||||
"codSexo": rows_tercero.get("codSexo", "M"),
|
||||
"codPaisResidencia": rows_tercero.get("codPaisResidencia", "170"),
|
||||
"codMunicipioResidencia": rows_tercero.get("codMunicipioResidencia", ""),
|
||||
"codZonaTerritorialResidencia": rows_tercero.get("codZonaTerritorialResidencia", "01"),
|
||||
"incapacidad": rows_tercero.get("incapacidad", "NO"),
|
||||
"consecutivo": 1,
|
||||
"codPaisOrigen": rows_tercero.get("codPaisOrigen", "170"),
|
||||
"servicios": {
|
||||
"procedimientos": [
|
||||
generar_procedimiento(p, i + 1)
|
||||
for i, p in enumerate(rows_procedimientos)
|
||||
]
|
||||
},
|
||||
}
|
||||
transaccion["usuarios"].append(usuario)
|
||||
|
||||
return transaccion
|
||||
Reference in New Issue
Block a user