{
  "version": 21,
  "variables": [],
  "tiles": {
    "0": {
      "type": "markdown",
      "content": "# Clinica Las Condes — Centro de Observabilidad Integral\n### Portal de Agendamiento de Pacientes | Isapre - Fonasa - Privado\n---"
    },
    "1": {
      "title": "Total Eventos CLC",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| summarize total = count()",
      "visualization": "singleValue"
    },
    "2": {
      "title": "Journeys Unicos",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| summarize journeys = countDistinct(trace_id)",
      "visualization": "singleValue"
    },
    "3": {
      "title": "Eventos Isapre",
      "type": "data",
      "query": "fetch bizevents\n| filter event.provider == \"CLC-Isapre\"\n| filter event.kind == \"BIZ_EVENT\"\n| summarize total = count()",
      "visualization": "singleValue"
    },
    "4": {
      "title": "Eventos Fonasa",
      "type": "data",
      "query": "fetch bizevents\n| filter event.provider == \"CLC-Fonasa\"\n| filter event.kind == \"BIZ_EVENT\"\n| summarize total = count()",
      "visualization": "singleValue"
    },
    "5": {
      "title": "Eventos Privado",
      "type": "data",
      "query": "fetch bizevents\n| filter event.provider == \"CLC-Privado\"\n| filter event.kind == \"BIZ_EVENT\"\n| summarize total = count()",
      "visualization": "singleValue"
    },
    "6": {
      "title": "Servicios Detectados",
      "type": "data",
      "query": "fetch dt.entity.service\n| fieldsAdd name = entity.name\n| filter contains(name, \"clc\")\n| summarize total = count()",
      "visualization": "singleValue"
    },
    "7": {
      "type": "markdown",
      "content": "---\n## Experiencia del Paciente"
    },
    "8": {
      "title": "Distribucion por Segmento de Paciente",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| fieldsAdd segmento = if(event.provider == \"CLC-Isapre\", \"Isapre\", else: if(event.provider == \"CLC-Fonasa\", \"Fonasa\", else: \"Privado\"))\n| summarize total = count(), by:{segmento}",
      "visualization": "pieChart"
    },
    "9": {
      "title": "Volumen por Segmento en el Tiempo",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| fieldsAdd segmento = if(event.provider == \"CLC-Isapre\", \"Isapre\", else: if(event.provider == \"CLC-Fonasa\", \"Fonasa\", else: \"Privado\"))\n| makeTimeseries count(), by:{segmento}, interval:5m",
      "visualization": "lineChart"
    },
    "10": {
      "title": "Actividad Total en el Tiempo",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| makeTimeseries count(), interval:5m",
      "visualization": "areaChart"
    },
    "11": {
      "type": "markdown",
      "content": "---\n## Negocio — Valor Economico por Segmento\n\n| Metrica | Isapre | Fonasa | Privado |\n|---------|--------|--------|---------|\n| Copago promedio | $18.000 | $15.000 | $95.000 |\n| Valor consulta | $60.000 | $60.000 | $95.000 |\n| LTV anual | $3.000.000 | $1.200.000 | $5.000.000 |\n| Inasistencia | 6% | 12% | 4% |\n| Conversion | 55% | 35% | 65% |\n| Dependencia critica | API Isapre | Bono Fonasa | Webpay |"
    },
    "12": {
      "title": "Resumen Ejecutivo por Segmento",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| fieldsAdd segmento = if(event.provider == \"CLC-Isapre\", \"Isapre\", else: if(event.provider == \"CLC-Fonasa\", \"Fonasa\", else: \"Privado\"))\n| summarize TotalEventos = count(), JourneysUnicos = countDistinct(trace_id), Servicios = countDistinct(event.type), by:{segmento}\n| sort TotalEventos desc",
      "visualization": "table"
    },
    "13": {
      "type": "markdown",
      "content": "---\n## Servicios — Journey Isapre\n\n**Flujo:** ValidacionRUT > FichaClinica > ValidacionCobertura > BusquedaMedico > PagoCopago > Confirmacion"
    },
    "14": {
      "title": "Etapas Journey Isapre",
      "type": "data",
      "query": "fetch bizevents\n| filter event.provider == \"CLC-Isapre\"\n| filter event.kind == \"BIZ_EVENT\"\n| summarize total = count(), by:{event.type}\n| sort total desc",
      "visualization": "barChart"
    },
    "15": {
      "type": "markdown",
      "content": "## Servicios — Journey Fonasa\n\n**Flujo:** ValidacionRUT > FichaClinica > ValidacionDerechos > BusquedaHora > BonoElectronico > Confirmacion"
    },
    "16": {
      "title": "Etapas Journey Fonasa",
      "type": "data",
      "query": "fetch bizevents\n| filter event.provider == \"CLC-Fonasa\"\n| filter event.kind == \"BIZ_EVENT\"\n| summarize total = count(), by:{event.type}\n| sort total desc",
      "visualization": "barChart"
    },
    "17": {
      "type": "markdown",
      "content": "## Servicios — Journey Privado\n\n**Flujo:** ValidacionRUT > FichaClinica > BusquedaHoraPreferente > ReservaHora > PagoTotal > ConfirmacionVIP"
    },
    "18": {
      "title": "Etapas Journey Privado",
      "type": "data",
      "query": "fetch bizevents\n| filter event.provider == \"CLC-Privado\"\n| filter event.kind == \"BIZ_EVENT\"\n| summarize total = count(), by:{event.type}\n| sort total desc",
      "visualization": "barChart"
    },
    "19": {
      "type": "markdown",
      "content": "---\n## Servicios — Tiempos de Respuesta"
    },
    "20": {
      "title": "Tiempo de Respuesta por Servicio CLC (p50 / p90 / p99)",
      "type": "data",
      "query": "timeseries p50 = avg(dt.service.request.response_time), by:{dt.entity.service}, filter:{contains(dt.entity.service.name, \"clc\")}\n| fieldsAdd p50_ms = arrayAvg(p50) / 1000\n| sort p50_ms desc\n| limit 18",
      "visualization": "table"
    },
    "21": {
      "title": "Tasa de Error por Servicio CLC",
      "type": "data",
      "query": "timeseries errors = avg(dt.service.request.failure_rate), by:{dt.entity.service}, filter:{contains(dt.entity.service.name, \"clc\")}\n| fieldsAdd error_rate = arrayAvg(errors)\n| sort error_rate desc\n| limit 18",
      "visualization": "table"
    },
    "22": {
      "title": "Request Rate por Servicio CLC",
      "type": "data",
      "query": "timeseries rate = avg(dt.service.request.count), by:{dt.entity.service}, filter:{contains(dt.entity.service.name, \"clc\")}\n| fieldsAdd rpm = arrayAvg(rate)\n| sort rpm desc\n| limit 18",
      "visualization": "barChart"
    },
    "23": {
      "type": "markdown",
      "content": "---\n## Infraestructura — Host y Recursos"
    },
    "24": {
      "title": "CPU del Host",
      "type": "data",
      "query": "timeseries cpu = avg(dt.host.cpu.usage), by:{dt.entity.host}\n| limit 5",
      "visualization": "lineChart"
    },
    "25": {
      "title": "Memoria del Host",
      "type": "data",
      "query": "timeseries mem = avg(dt.host.memory.usage), by:{dt.entity.host}\n| limit 5",
      "visualization": "lineChart"
    },
    "26": {
      "title": "Disco del Host",
      "type": "data",
      "query": "timeseries disk = avg(dt.host.disk.usage), by:{dt.entity.host}\n| limit 5",
      "visualization": "lineChart"
    },
    "27": {
      "title": "Procesos Activos",
      "type": "data",
      "query": "fetch dt.entity.process_group\n| fieldsAdd name = entity.name\n| filter contains(name, \"clc\") or contains(name, \"bizobs\") or contains(name, \"business-observability\")\n| fields name\n| sort name asc\n| limit 25",
      "visualization": "table"
    },
    "28": {
      "title": "Trafico de Red del Host",
      "type": "data",
      "query": "timeseries sent = avg(dt.host.network.bytes_tx), received = avg(dt.host.network.bytes_rx), by:{dt.entity.host}\n| limit 5",
      "visualization": "areaChart"
    },
    "29": {
      "type": "markdown",
      "content": "---\n## Servicios Detectados por Dynatrace"
    },
    "30": {
      "title": "Todos los Servicios CLC",
      "type": "data",
      "query": "fetch dt.entity.service\n| fieldsAdd name = entity.name\n| filter contains(name, \"clc\")\n| fields name\n| sort name asc",
      "visualization": "table"
    },
    "31": {
      "type": "markdown",
      "content": "---\n## Trazabilidad — Ultimos Eventos"
    },
    "32": {
      "title": "Ultimos 50 Eventos de Pacientes",
      "type": "data",
      "query": "fetch bizevents\n| filter event.kind == \"BIZ_EVENT\"\n| filter event.provider == \"CLC-Isapre\" or event.provider == \"CLC-Fonasa\" or event.provider == \"CLC-Privado\"\n| fieldsAdd segmento = if(event.provider == \"CLC-Isapre\", \"Isapre\", else: if(event.provider == \"CLC-Fonasa\", \"Fonasa\", else: \"Privado\"))\n| fields timestamp, Segmento=segmento, Servicio=event.type, TraceId=trace_id, Host=dt.entity.host\n| sort timestamp desc\n| limit 50",
      "visualization": "table"
    },
    "33": {
      "type": "markdown",
      "content": "---\n## Dependencias Criticas\n\n| Segmento | Sistema Externo | Que pasa si falla | Impacto por hora |\n|----------|----------------|-------------------|------------------|\n| **Isapre** | API Isapre (Colmena, Cruz Blanca, etc.) | Paciente no valida cobertura, no puede agendar | 40 pacientes perdidos, $2.400.000 CLP |\n| **Fonasa** | Sistema Nacional Fonasa | Sin bono electronico, 100% bloqueado | 40 pacientes perdidos, $2.400.000 CLP |\n| **Privado** | Webpay Transbank | Pago de $95.000 no se procesa | 15 pacientes perdidos, $1.425.000 CLP |\n| **Todos** | Registro Civil | Validacion RUT falla, nadie puede registrarse | 100% bloqueado |\n| **Todos** | Motor de Agendamiento | Sin horas disponibles | 100% bloqueado |\n\n---\n*Dashboard generado por Transafety Ltda. | Business Observability Demonstrator | Dynatrace*"
    }
  }
}
