from __future__ import annotations


def base_rips_context() -> dict:
    return {
        "historia": {"_id": "hist-1", "codigos_cie10": [{"codigo": "A080", "descripcion": "Enteritis"}]},
        "quirurgico": {"_id": "qx-1"},
        "factura": {
            "_id": "fac-1",
            "factura_json": {
                "proveedor": {"nit": "900123456"},
                "informacion_factura": {"prefijo": "FV", "numero_factura": "1001"},
                "pagador": {
                    "numero_autorizacion": "AUT-55",
                    "nit_pagador": "800999111",
                    "aseguradora_eps": "EPS Demo",
                },
                "informacion_paciente": {
                    "numero_identificacion": "CC 123456789",
                    "fecha_ingreso": "2026-04-20 07:45",
                },
                "servicios_procedimientos": {
                    "procedimientos_quirurgicos": [
                        {
                            "codigo_cups": "895100",
                            "descripcion": "Sutura simple",
                            "cantidad": "1",
                            "valor_unitario": "49700",
                            "total": "49700",
                        }
                    ],
                    "medicamentos": [
                        {
                            "medicamento": "CEFALEXINA 500 MG",
                            "cantidad": "21",
                            "valor_unitario": "555",
                            "total": "11655",
                        }
                    ],
                },
            },
        },
        "metadatos_hc": {
            "datos_identificacion_paciente": "CC 123456789",
            "fecha_nacimiento": "1990-01-15",
            "sexo": "M",
            "fecha_ingreso": "2026-04-20 07:45",
        },
        "diagnosticos_consolidados": [
            {"codigo": "A080", "descripcion": "Enteritis debida a virus"},
        ],
    }


def base_rips_options() -> dict:
    return {
        "user": {
            "tipo_usuario": "01",
            "cod_municipio_residencia": "11001",
            "cod_zona_territorial_residencia": "01",
            "incapacidad": "NO",
        },
        "procedure": {
            "via_ingreso_servicio_salud": "01",
            "modalidad_grupo_servicio_tec_sal": "01",
            "grupo_servicios": "04",
            "cod_servicio": 1,
            "finalidad_tecnologia_salud": "44",
        },
        "medication_catalog": [
            {
                "match_key": "cefalexina 500 mg",
                "cod_tecnologia_salud": "44405-3",
                "tipo_medicamento": "01",
                "unidad_medida": 1,
                "forma_farmaceutica": "CAP",
                "unidad_min_dispensa": 1,
                "dias_tratamiento": 21,
            }
        ],
    }


def base_rips_v15_context() -> dict:
    context = base_rips_context()
    context["factura"]["factura_json"]["informacion_paciente"]["fecha_egreso"] = "2026-04-22 12:30"
    context["factura"]["factura_json"]["servicios_procedimientos"].update(
        {
            "examenes_laboratorio": [
                {
                    "codigo": "LAB001",
                    "prueba": "HEMOGRAMA",
                    "descripcion": "Hemograma automatizado",
                    "cantidad": "1",
                    "valor_unitario": "18000",
                    "total": "18000",
                }
            ],
            "imagenologia": [
                {
                    "codigo_servicio": "IMG001",
                    "estudio": "RX TORAX",
                    "descripcion": "Radiografía de tórax AP",
                    "cantidad": "1",
                    "valor_unitario": "42000",
                    "total": "42000",
                }
            ],
            "hospitalizacion": [
                {
                    "codigo_servicio": "106002",
                    "habitacion": "Habitación bipersonal",
                    "dias": "2",
                    "tarifa": "120000",
                    "total": "240000",
                }
            ],
            "honorarios_medicos": [
                {
                    "codigo": "HON001",
                    "rol": "Cirujano",
                    "profesional": "Dr. Demo",
                    "cantidad": "1",
                    "valor_unitario": "95000",
                    "total": "95000",
                }
            ],
        }
    )
    return context


def base_rips_v15_options() -> dict:
    options = base_rips_options()
    options["hospitalization"] = {
        "via_ingreso_servicio_salud": "02",
        "causa_motivo_atencion": "21",
        "condicion_destino_usuario_egreso": "02",
    }
    options["other_service_defaults"] = [
        {
            "source_section": "examenes_laboratorio",
            "tipo_os": "04",
        },
        {
            "source_section": "imagenologia",
            "tipo_os": "04",
        },
        {
            "source_section": "hospitalizacion",
            "tipo_os": "03",
        },
        {
            "source_section": "honorarios_medicos",
            "tipo_os": "04",
        },
    ]
    options["other_service_catalog"] = [
        {
            "source_section": "honorarios_medicos",
            "match_key": "Cirujano - Dr. Demo",
            "nom_tecnologia_salud": "Honorarios cirujano",
        },
    ]
    return options
