Diagramas do projeto

Diagrama do Entidade e Relacionamentos (DER)

classDiagram class operadores { +id: Integer +nome: String(50) not null +login: String(50) not null +password: String(50) not null +telefone: String(20) } class hospitais { +id: Integer +nome: String(50) +telefone: String(20) } class status_da_agenda_ou_consulta { +id: Integer +nome: String(20) } class medicos { +id: Integer +id_operadores: Integer +nome: String(50) +telefone: String(25) +telefone_da_secretaria: String(25) +login: String(50) +senha: String(20) } class servico_de_agendas { +id: Integer +id_operador: Integer +nome: String(100) +login: String(50) +senha: String(50) } class convenios { +id: Integer +id_medico: Integer +nome: String(50) +login: String(50) +senha: String(50) } class clientes { +id: Integer +nome: String(50) not null +telefone_whatsApp: String(25) +e_mail: String(50) +login: String(50) not null +senha: String(20) not null +id_convenio: Integer +dataTime_disponivel: Date +matricula_no_convenio: String(50) } class integracao { +id: Integer +endereco_do_site: String(255) not null +login: String(50) not null +senha: String(20) not null +status: Boolean not null } class expediente_do_medico_data { +id_medico: Integer not null +data: Date not null +hora_inicial: timestamp not null +hora_final: timestamp not null } class agenda { +id: Integer +id_Medico: Integer not null +id_Cliente: Integer not null +data: timestamp not null +hora: timestamp not null +data_confirmacao: timestamp not null +id_convenio: Integer +id_status_da_agenda_ou_consulta: Integer not null +id_formas_de_pagamento: Integer +dataTime_criacao: timestamp not null +observacoes: String(255) } class formas_de_pagamento { +id: Integer +Nome: String(30) not null } class consulta { +id: Integer +id_agenda: Integer +id_cliente: Integer not null +id_medico: Integer not null +dataTime: timestamp not null +id_convenio: Integer +id_forma_de_pagamento: Integer +id_status_da_agenda_ou_consulta: Integer not null +Observacao: String(255) } operadores "1" -- "1..n" medicos : id_operadores medicos "0" -- "1..n" convenios : id_medico clientes "1" -- "0..n" convenios : id_convenio clientes "1" -- "1..n" agenda : id_Cliente medicos "1" -- "0..n" expediente_do_medico_data : id_medico expediente_do_medico_data "1" -- "1..n" medicos : id_medico agenda "1" -- "0..1" convenios : id_convenio agenda "1" -- "0..1" formas_de_pagamento : id_formas_de_pagamento agenda "1" -- "1..n" status_da_agenda_ou_consulta : id_status_da_agenda_ou_consulta consulta "1" -- "0..1" convenios : id_convenio consulta "1" -- "0..1" formas_de_pagamento : id_forma_de_pagamento consulta "1" -- "1..n" status_da_agenda_ou_consulta : id_status_da_agenda_ou_consulta medicos "1" -- "1..n" agenda : id_Medico
  • Explicação do diagrama
    • O diagrama de entidade de relacionamento (DER) mostra as relações entre as entidades de um sistema. No caso deste diagrama, as entidades são:

      • Operador
      • Hospital
      • Status_da_agenda_ou_consulta
      • Medico
      • ServiçoDeAgendas
      • Convenio
      • Cliente
      • Integração
      • ExpedienteDoMedicoData
      • Agenda
      • FormasDePagamento
      • Consulta
    • A simbologia usada para indicar os relacionamentos são:

      • 1 : Indica o lado do relacionamento que só pode conter uma ocorrência.

      • 1..1 : Indica que o identificador de ambas a tabelas devem ser iguais;

        • Exemplo:
          • Código da agenda.idCliente é obrigatório ser igual a cliente.id.
      • 1..n : Indica que pelo menos um (1) identificador de uma das tabelas devem ser igual o identificador da outra;

      • 0..n : Indica que o relacionamento entre as tabelas é opcional e que pode haver mais de referência de uma tabela na outra;

        • Exemplo:
          • O identificador Consulta.idAgenda é opcional ser igual ao identificador Agenda.id porque o médico pode atender um paciente sem que o mesmo tenha sido agendado.

Diagrama do projeto que deu origem ao gráfico acima


    classDiagram

      class operadores {
        +id: Integer
        +nome: String(50) not null
        +login: String(50) not null
        +password: String(50) not null        
        +telefone: String(20)
      }

      class hospitais {
        +id: Integer
        +nome: String(50)
        +telefone: String(20)
      }

      class status_da_agenda_ou_consulta {
        +id: Integer
        +nome: String(20)
      }

      class medicos {
        +id: Integer
        +id_operadores: Integer
        +nome: String(50)
        +telefone: String(25)
        +telefone_da_secretaria: String(25)
        +login: String(50)
        +senha: String(20)
      }

      class servico_de_agendas {
        +id: Integer
        +id_operador: Integer
        +nome: String(100)
        +login: String(50)
        +senha: String(50)
      }

      class convenios {
        +id: Integer
        +id_medico: Integer
        +nome: String(50)
        +login: String(50)
        +senha: String(50)
      }

      class clientes {
        +id: Integer
        +nome: String(50) not null
        +telefone_whatsApp: String(25)
        +e_mail: String(50)
        +login: String(50) not null
        +senha: String(20) not null
        +id_convenio: Integer
        +dataTime_disponivel: Date
        +matricula_no_convenio: String(50)
      }

      class integracao {
        +id: Integer
        +endereco_do_site: String(255) not null
        +login: String(50) not null
        +senha: String(20) not null
        +status: Boolean not null
      }

      class expediente_do_medico_data {
        +id_medico: Integer not null
        +data: Date not null
        +hora_inicial: timestamp not null
        +hora_final: timestamp not null              
      }
      
      class agenda {
        +id: Integer
        +id_Medico: Integer not null
        +id_Cliente: Integer not null
        +data: timestamp not null
        +hora: timestamp not null
        +data_confirmacao: timestamp not null
        +id_convenio: Integer
        +id_status_da_agenda_ou_consulta: Integer not null
        +id_formas_de_pagamento: Integer
        +dataTime_criacao: timestamp not null
        +observacoes: String(255)
      }

      class formas_de_pagamento {
        +id: Integer
        +Nome: String(30) not null
      }

      class consulta {
        +id: Integer
        +id_agenda: Integer
        +id_cliente: Integer not null
        +id_medico: Integer not null
        +dataTime: timestamp not null
        +id_convenio: Integer
        +id_forma_de_pagamento: Integer
        +id_status_da_agenda_ou_consulta: Integer not null
        +Observacao: String(255)
      }

     class dm_xtable {
        +id:integer
        +nome String(50)
        +endereco String(255)    
        +cnpj String(18)  
        +cpf String(14)
        +cep String(10)
        +valor_SMALLINT SMALLINT
        +valor_Integer Integer
        +valor_FLOAT8 DOUBLE        
        +dd_mm_yy date
        +dd_mm_yyyy date
        +dd_mm_yy_hh_nn timeStamp    
        +dd_mm_yy_hh_nn_ss timeStamp
        +dd_mm_yyyy_hh_nn timeStamp
        +dd_mm_yyyy_hh_nn_ss timeStamp
        +hh_nn time
        +hh_nn_ss time
        +sexo string(15)         
        +EstadoCivil string(15)  
        +Status string(5)        
            
     }  
);



      operadores "1" -- "1..n" medicos : id_operadores  
      medicos "0" -- "1..n" convenios : id_medico
      clientes "1" -- "0..n" convenios : id_convenio
      clientes "1" -- "1..n" agenda : id_Cliente
      medicos "1" -- "1..n" expediente_do_medico_data : id_medico
      expediente_do_medico_data "1" -- "1..n" expediente_do_medico_horas : id_expediente_do_medico_data
      agenda "1" -- "0..1" convenios : id_convenio
      agenda "1" -- "0..1" formas_de_pagamento : id_formas_de_pagamento
      agenda "1" -- "1..n" status_da_agenda_ou_consulta : id_status_da_agenda_ou_consulta
      consulta "1" -- "0..1" convenios : id_convenio
      consulta "1" -- "0..1" formas_de_pagamento : id_forma_de_pagamento
      consulta "1" -- "1..n" status_da_agenda_ou_consulta : id_status_da_agenda_ou_consulta
      medicos "1" -- "1..n" agenda : id_Medico

Referências

  1. Gráfico criado com projeto mermaid
  2. PostgreSQL: The World's Most Advanced Open Source

🔝🔝