Resumo Sobre o Aplicativo

Estou criando um aplicativo de chamados para o BOS - Banco de Olhos de Sorocaba. O aplicativo se chama "Controle de Chamados BOS" e tem este objetivo:

Captar os chamados de pacientes, coletando sua solicitação e enviando para o setor competente.

Tabelas do Aplicativo

As tabelas do banco de dados são:

Usuários - {Níveis de Permissão do mais baixo ao mais alto: 1. Paciente, 2. Líder de Setor, 3. Admin Geral} Subitens - {Campos: Nome do tipo "text"}, {Campos: nome do tipo "text", email do tipo "text", telefone do tipo "text", CPF do tipo "text", RG do tipo "text", data de nascimento do tipo "date", endereço (busca CEP) do tipo "text", nome da mãe do tipo "text"} Setor - {Campos: nome do tipo "text", líderes do tipo "Usuários", subitens do tipo "Subitens", e-mail do tipo "text", Observação do tipo "text"} Alerta - {Campos: nome do tipo "text", cor do tipo "text", ordem do tipo "number"} Status - {Campos: nome do tipo "text", cor do tipo "text", ordem do tipo "number"} Chamados - {Campos: setor do tipo "Setor", sub item do tipo "Sub Item", anexo do tipo "file", solicitação do tipo "text", paciente do tipo "usuário", alerta do tipo "Alerta", status do tipo "Status"}

Visualização das tabelas:

erDiagram
    USUARIOS ||--o{ CHAMADOS : "cria"
    SETOR ||--o{ CHAMADOS : "tem"
    SETOR ||--o{ SUBITENS : "possui"
    ALERTA ||--o{ CHAMADOS : "define"
    STATUS ||--o{ CHAMADOS : "define"
    
    USUARIOS {
        NivelPermissao text
        Nome text
        Email text
        Telefone text
        CPF text
        RG text
        DataNascimento date
        Endereco text
        NomeMae text
    }
    
    SETOR {
        Nome text
        Lideres USUARIOS
        Email text
        Observacao text
    }
    
    ALERTA {
        Nome text
        Cor text
        Ordem number
    }
    
    STATUS {
        Nome text
        Cor text
        Ordem number
    }
    
    CHAMADOS {
        Setor SETOR
        SubItem SUBITENS
        Anexo file
        Solicitacao text
        Paciente USUARIOS
        Alerta ALERTA
        Status STATUS
    }
    
    SUBITENS {
        Nome text
    }

Como funciona a relação entre as tabelas diante das regras de negócio do aplicativo:

Fluxo do Chamado

Um chamado é criado por um paciente e este vai para o painel do líder do departamento que o paciente escolheu na hora de preencher o formulário de chamado.

Níveis de Alerta

São 3 níveis de alerta que indicam o quão próximo está o chamado de vencer seu prazo de resposta que é de 3 dias úteis após sua criação: 1. Dentro do Prazo, 2. Alerta (quando falta 1 dia útil para vencer o prazo de resposta) e 3. Atrasado (quando o chamado passou do seu prazo de resposta). Observação: cada Setor tem a sua própria configuração do período de alerta.

Quem deve responder o chamado no prazo de resposta é o líder do setor. A cada mudança de alerta, o líder do setor deverá receber uma notificação por e-mail.

Regras dos Fluxos de Alerta do Setor

Status do Chamado

São 4 status diferentes que indicam a posição do chamado no fluxo de atendimento: 1. Aberto (quando o chamado é criado pelo paciente, mas não obteve uma resposta por parte do líder de setor), 2. Em Andamento (quando o chamado obteve uma resposta por parte do líder de setor), 3. Finalizado (quando o chamado teve sua resposta finalizada por parte do líder do setor) e 4. Cancelado (quando o chamado é cancelado por algum motivo que deve ser escrito pelo líder do setor).

Subitens