diff --git a/app/routes/docs.py b/app/routes/docs.py new file mode 100644 index 0000000..2f6ee60 --- /dev/null +++ b/app/routes/docs.py @@ -0,0 +1,11 @@ +from fastapi import APIRouter, Request, Depends +from app.auth import get_current_user + +router = APIRouter(prefix="/docs", tags=["docs"]) + + +@router.get("") +async def docs_page(request: Request, user: dict = Depends(get_current_user)): + return request.app.state.templates.TemplateResponse("docs.html", { + "request": request, "user": user, + }) diff --git a/app/templates/base.html b/app/templates/base.html index 29000e7..a10aa5d 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -93,6 +93,10 @@ Actividad +
+ Sistema web de integración de datos clínicos para el Laboratorio Clínico Ximena Caicedo, que permite el intercambio de información de ventas y recepciones (RDA) con el sistema TNS (Tecnología de Negocios en Salud), de manera estructurada, segura y trazable. +
++ Centraliza la gestión de contratos, el envío de facturas de venta, la generación de RDA de pacientes, la sincronización con WhatsApp ERP y el registro completo de toda la actividad del sistema. +
+Envío TNS
Ventas y RDA
Firebird
Base de datos clínica
Trazabilidad
Log completo
Stack tecnológico
+| Componente | Tecnología |
|---|---|
| Backend | Python 3 + FastAPI (async) |
| Frontend | Jinja2 + TailwindCSS + Font Awesome |
| BD local | SQLite 3 (WAL mode) |
| BD clínica | Firebird 2.5 — 192.168.0.125:3025 |
| API externa | TNS — REST JSON + Bearer Token |
| Servidor | Windows — uvicorn :8080 |
| Auth | JWT + bcrypt |
Flujo de datos
+URL del sistema (red local)
+http://192.168.0.125:8080
+Credenciales iniciales
+| Campo | Valor |
|---|---|
| Usuario | admin |
| Contraseña | admin123 |
Importante
+Cambiar la contraseña al primer ingreso. Menú usuario → Cambiar contraseña.
+Nuevos usuarios: acceder a /register con sesión activa.
+/dashboard — Pantalla de inicio. Resumen en tiempo real del estado del sistema.
+/config — Parámetros de conexión y credenciales del sistema.
+| Parámetro | Descripción |
|---|---|
| {{ row[0] }} | +{{ row[1] }} | +
/contratos — Gestión de convenios. Define cómo se procesa la información de cada aseguradora.
+| Campo | Descripción |
|---|---|
| {{ row[0] }} | +{{ row[1] }} | +
Códigos de Pago
+Sección en la misma página para agregar/eliminar códigos (CIAC, CR, MU ya vienen por defecto). El select inline de cada fila asigna la forma de pago al contrato sin recargar la página.
+/ventas — Consulta y envío de facturas de venta al endpoint TNS /v2/facturacion/Ventas/Crear. Solo procesa facturas con PREFIJO = CMXC.
+Flujo de uso
+Filtros automáticos
+Agrupación
+Una factura puede tener múltiples recepciones. Se agrupan por CMXC-{NUM} y se envían como un único JSON con todos los ítems en detallePedido.
+/automation — Envío masivo de recepciones RDA al endpoint /v2/rda/RdaPaciente/Insertar. Procesa PREFIJO = LHXC, RCXC, SC.
+Flujo de uso
+Comportamiento automático
+/terceros — Registro manual de pacientes en TNS via /v2/tablas/Tercero/Crear.
+/transaccion — Envío manual de RDA para una factura o recepción específica usando una consulta SQL guardada.
+/pacientes — Sincronización masiva de pacientes con el sistema WhatsApp ERP del laboratorio.
+/queries — Gestión de consultas SQL reutilizables que se ejecutan contra Firebird.
+terceros
Consultas para datos de pacientes (Tercero/Crear en TNS).
transaccion
Consultas para recepciones RDA (RdaPaciente/Insertar).
ventas
Consultas históricas para facturas de venta.
Las consultas se pueden crear, editar y eliminar. Se cargan como selector en los módulos Terceros y Transacción. Soportan parámetros :fecha_ini, :fecha_fin, :num_factura, :doc_num.
+/test-rda — Herramienta de diagnóstico para probar el envío de RDA por recepción o factura específica.
+/logs — Registro completo de todos los envíos al sistema TNS con filtros avanzados y reenvío.
+Filtros disponibles
+Por cada registro
+/logs/resumen — Vista consolidada de todos los envíos de un día, agrupados por factura/paciente.
+/logs/actividad — Log de auditoría de todas las acciones de los usuarios del sistema.
+Acciones registradas
+Filtros
+/envios/erp — Integración con el sistema WhatsApp ERP del laboratorio.
+/envios/tns — Vista de envíos recientes al sistema TNS con estado consolidado.
+POST {TNS_BASE}/v2/facturacion/Ventas/Crear?codigosucursal={api_sucursal}
+{
+ "codigoPrefijo": "CMXC",
+ "numero": "00309",
+ "numeroFactura": "00309",
+ "sucursal": "00",
+ "fecha": "15/07/2026",
+ "kardexId": 0,
+ "codigoPedido": "",
+ "nombreCliente": "",
+ "codTercero": "900123456-7", // NIT con dígito de verificación
+ "codVendedor": "00",
+ "codDespachar": "00",
+ "codFormaPago": "CR", // CIAC | CR | MU
+ "codBanco": "", // siempre vacío
+ "fechaVence": "14/08/2026", // FECHAFACT + DIASVENC días
+ "fechaEntrega": "15/07/2026",
+ "plazoDias": 30, // 0 si CIAC, DIASVENC si CR/MU
+ "observacion": "",
+ "sucursal": "00",
+ "codigoCentroCosto": "00",
+ "codigoArea": "00",
+ "terminal": "00",
+ "detallePedido": [
+ {
+ "codMat": "90600", // CUPS del examen
+ "codBodega": "00",
+ "cantidad": 1,
+ "tipoUnidad": "M",
+ "descuento": 0,
+ "descuentoValor": 0,
+ "centrosCostos": "00",
+ "porcIva": 0,
+ "valor": 7000,
+ "impConsumo": 0,
+ "observacion": "",
+ "lote": "",
+ "fechaVenceLote": "",
+ "nroDocumento": "",
+ "itemsSerial": [],
+ "tipoSerial": ""
+ }
+ ],
+ "detalleFormaPago": [],
+ "asentar": 0,
+ "detalleDescuentos": []
+}
+ POST {TNS_BASE}/v2/rda/RdaPaciente/Insertar?codigosucursal={api_sucursal}
+{
+ "codigoPrefijo": "LHXC",
+ "numero": "05103",
+ "fecha": "15/07/2026",
+ "codTercero": "1090512345", // código paciente en Firebird
+ "codVendedor": "00",
+ "codigoCentroCosto": "00",
+ "tipoIngreso": "1",
+ "fechaHoraIngreso": "15/07/2026 08:30:00",
+ "fechaHoraEgreso": "15/07/2026 08:35:00",
+ "modalidadAtencion": "01",
+ "numeroContrato": "040", // null si sin_contrato=1
+ "descuento": 0,
+ "diagnosticoprincipal": "Z017",
+ "discapacidad": "08",
+ "tipousuario": "11", // del mapa de contratos
+ "viaIngreso": "01",
+ "esTerapia": false,
+ "esProcedimiento": false,
+ "numeroAutorizacion": null,
+ "detallePedido": [
+ {
+ "codigoMaterial": "90600", // CUPS del examen
+ "codigoBodega": "00",
+ "cantidad": 1,
+ "observacion": "",
+ "profesional": "12345678",
+ "especialidad": "01",
+ "profesionalRemisionante": "00",
+ "diagnosticoprincipal": "Z017",
+ "fechaHoraRealizacion": "15/07/2026 08:30:00"
+ }
+ ]
+}
+ El sistema determina codFormaPago con la siguiente prioridad:
CIAC si total=$0, CR si total>$0.
+ | Código | Nombre | plazoDias | fechaVence |
|---|---|---|---|
| CIAC | Contado inmediato | 0 | = fecha de la factura |
| CR | Crédito | DIASVENC (30) | FECHAFACT + 30 días |
| MU | Mixto | DIASVENC (30) | FECHAFACT + 30 días |
codBanco siempre se envía como cadena vacía "". DIASVENC se lee de FACTURA_DIAN.DIASVENC en Firebird.
Banderas de contrato
+| Bandera | Efecto |
|---|---|
| excluir_rda=1 | NO aparece en RDA / Automatización. |
| excluir_ventas=1 | NO aparece en Ventas. |
| sin_contrato=1 | JSON RDA con numeroContrato: null. |
| cod_forma_pago | Override de forma de pago en venta. |
Prefijos de factura
+| Prefijo | Módulo |
|---|---|
| CMXC | Ventas — remisiones externas. |
| LHXC | Automatización RDA. |
| RCXC | Automatización RDA. |
| SC | Automatización RDA. |
U-SITE S.A.S. BIC
+contacto@u-s.app
+https://u-s.app
+Lunes a viernes — días hábiles
+Antes de contactar soporte
+