# language: es
# Fuente: album/book/ops-templates/veterinarian/03-realizar-visita.md
# Drive: 08. IT y Producto/Funcionalidades Plataforma Veterinario
# Tests Backend: pytest tests/contracts/mascotas/test_vet_visits.py
# Tests Frontend: npx playwright test vet-visit.spec.ts

Característica: Realizar visita y crear informe medico

  Como veterinario
  Quiero registrar la atencion medica de mis visitas
  Para mantener el historial clinico del paciente

  Antecedentes:
    Dado que estoy logueado como veterinario
    Y tengo una visita programada para hoy con mascota "Luna"
    Y la visita esta en estado "Pagado"

  # ============================================
  # INICIAR VISITA
  # ============================================

  Escenario: Ver informacion antes de la visita
    Cuando accedo al detalle de la visita
    Entonces deberia ver la direccion para llegar
    Y deberia ver el telefono del dueno para confirmar
    Y deberia ver los servicios a realizar
    Y deberia ver el historial previo de Luna

  Escenario: Iniciar visita al llegar
    Dado que llegue al domicilio
    Cuando hago click en "Iniciar visita"
    Entonces el estado deberia cambiar a "En progreso"
    Y deberia registrarse la hora de inicio
    Y deberia habilitarse el boton "Crear informe"

  # ============================================
  # CREAR INFORME MEDICO
  # ============================================

  Escenario: Completar informe con examen fisico
    Dado que la visita esta en progreso
    Cuando voy a "Crear informe"
    Y completo el examen fisico:
      | campo                 | valor       |
      | Peso                  | 4.5 kg      |
      | Temperatura           | 38.5 °C     |
      | Frecuencia cardiaca   | 120 lpm     |
      | Frecuencia resp       | 25 rpm      |
      | Mucosas               | Rosadas     |
      | Hidratacion           | Normal      |
    Y guardo el informe
    Entonces el examen fisico deberia guardarse

  Escenario: Agregar diagnostico y tratamiento
    Dado que complete el examen fisico
    Cuando agrego el diagnostico:
      """
      Otitis externa bilateral leve.
      Paciente presenta prurito y secrecion ceruminosa.
      Sin signos de infeccion secundaria.
      """
    Y agrego el tratamiento:
      """
      Limpieza de oidos con solucion fisiologica.
      Aplicacion de gotas oticas antibioticas.
      Control en 7 dias.
      """
    Y guardo el informe
    Entonces el diagnostico y tratamiento deberian guardarse

  Escenario: Recetar medicamentos
    Dado que estoy creando el informe
    Cuando agrego medicamentos:
      | nombre           | dosis   | frecuencia     | duracion  |
      | Otomax gotas     | 5 gotas | cada 12 horas  | 7 dias    |
      | Meloxicam 1.5mg  | 1 comp  | cada 24 horas  | 3 dias    |
    Y guardo el informe
    Entonces los medicamentos deberian aparecer en el informe
    Y el dueno podra verlos desde su cuenta

  Escenario: Solicitar estudios complementarios
    Dado que necesito estudios de laboratorio
    Cuando agrego estudio:
      | tipo                | indicaciones                    |
      | Hemograma completo  | Ayuno de 8 horas               |
      | Perfil hepatico     | Para control pre-quirurgico    |
    Y guardo el informe
    Entonces los estudios deberian quedar registrados
    Y deberian mostrarse como "Pendientes de resultado"

  # ============================================
  # COMPLETAR VISITA
  # ============================================

  Escenario: Completar visita con informe
    Dado que el informe esta completo
    Cuando hago click en "Completar visita"
    Y confirmo la finalizacion
    Entonces la visita deberia pasar a estado "Completado"
    Y deberia generarse factura electronica (AFIP)
    Y el dueno deberia recibir notificacion
    Y el informe deberia ser visible para el dueno

  Escenario: No puedo completar sin informe
    Dado que la visita esta en progreso
    Pero no cree ningun informe
    Cuando intento completar la visita
    Entonces deberia ver error "Debes crear el informe antes de completar"

  # ============================================
  # GUARDADO AUTOMATICO
  # ============================================

  Regla: El informe se guarda automaticamente

    Escenario: Guardado automatico cada 30 segundos
      Dado que estoy escribiendo el informe
      Cuando pasan 30 segundos
      Entonces deberia ver indicador "Guardado automaticamente"

    Escenario: Recuperar informe despues de desconexion
      Dado que estaba escribiendo el informe
      Y perdi conexion a internet
      Cuando recupero la conexion
      Entonces deberia recuperar mi progreso
      Y no deberia perder lo que escribi

  # ============================================
  # CASOS ESPECIALES
  # ============================================

  Escenario: Visita con multiples mascotas
    Dado que la visita incluye a "Luna" y "Rocky"
    Cuando creo el informe
    Entonces deberia crear un informe separado para cada mascota
    Y ambos informes deberian estar asociados a la misma visita

  Escenario: Cancelar visita in situ
    Dado que llegue al domicilio
    Pero el dueno no esta
    Cuando marco la visita como "Cancelada in situ"
    Y selecciono motivo "Dueno ausente"
    Entonces la visita deberia marcarse como cancelada
    Y deberia generarse cargo por visita fallida
    # Segun politicas de la empresa

  Escenario: Emergencia durante visita rutinaria
    Dado que estoy en una consulta de vacunacion
    Y detecto una condicion que requiere atencion urgente
    Cuando agrego servicio "Consulta de urgencia"
    Entonces deberia poder documentar ambos servicios
    Y el precio deberia ajustarse

  Escenario: Derivar a clinica
    Dado que el paciente necesita atencion en clinica
    Cuando marco "Derivacion a clinica"
    Y especifico el motivo
    Entonces deberia quedar registrada la derivacion
    Y el dueno deberia recibir instrucciones
