Skip to content

Diagrama de Sequência

Lucas Christian edited this page Jun 4, 2026 · 1 revision
sequenceDiagram
    autonumber

    %% =========================
    %% Participantes
    %% =========================
    actor U as Usuário Comum
    participant UI as Interface Web
    participant KC as Keycloak
    participant MF as Medflow
    participant BD as Base de Dados

    %% =========================
    %% Autenticação e autorização funcional
    %% =========================
    U->>UI: Acessa a área de agendamento
    UI->>KC: Solicita autenticação do usuário
    KC-->>UI: Retorna usuário autenticado e token de acesso

    UI->>MF: Solicita acesso ao agendamento
    MF->>KC: Valida token e permissão funcional para criar consulta
    KC-->>MF: Confirma permissão funcional
    MF->>BD: Verifica vínculo local do usuário com a organização
    BD-->>MF: Confirma usuário ativo na organização
    MF-->>UI: Libera acesso à área de agendamento

    %% =========================
    %% Consulta de opções
    %% =========================
    UI->>MF: Solicita opções disponíveis para agendamento
    MF->>BD: Verifica organização, unidades, especialidades e médicos ativos
    BD-->>MF: Retorna opções disponíveis
    MF-->>UI: Apresenta especialidades, unidades e médicos

    U->>UI: Seleciona especialidade, unidade e médico
    UI->>MF: Solicita horários disponíveis
    MF->>BD: Verifica alocação do médico, agenda configurada, bloqueios e consultas existentes
    BD-->>MF: Retorna horários livres
    MF-->>UI: Apresenta calendário com horários disponíveis

    %% =========================
    %% Confirmação do agendamento
    %% =========================
    U->>UI: Escolhe data e horário
    UI->>MF: Solicita resumo da consulta
    MF->>BD: Verifica se o horário continua disponível
    BD-->>MF: Confirma disponibilidade
    MF-->>UI: Apresenta resumo da consulta

    U->>UI: Confirma o agendamento
    UI->>MF: Solicita criação da consulta

    %% =========================
    %% Transação crítica
    %% =========================
    Note over MF,BD: Transação crítica: revalidar regra de negócio e registrar consulta

    MF->>KC: Confirma permissão funcional para criar consulta
    KC-->>MF: Permissão funcional confirmada

    MF->>BD: Revalida usuário, organização, médico, consultório, agenda e bloqueios
    BD-->>MF: Dados contextuais confirmados

    MF->>BD: Revalida ausência de conflito no horário
    BD-->>MF: Nenhum conflito encontrado

    MF->>BD: Registra consulta com status agendada
    BD-->>MF: Confirma criação da consulta

    MF-->>UI: Retorna confirmação do agendamento
    UI-->>U: Exibe mensagem de sucesso e detalhes da consulta
Loading

Clone this wiki locally