Skip to content

API relacionamento médico / paciente utilizando padrões Repository, IoC e ID

Notifications You must be signed in to change notification settings

medinasp/API_HealthLink_Repository_ID_IOC

Repository files navigation

API Relacionamento Médico Paciente

Tópicos


Descrição do projeto

Esta é uma API que define as regras de ações entre dois atores: médico e paciente; e contempla os endpoints de cadastro, edição, leitura e ação dos atores com o meio que os relaciona. A interação entre médico e paciente será feita através de uma interface de agendamento de consultas


Requisitos funcionais

Modelagem e identificação das interações entre os atores.

Dados devem ser persistidos em memória, mas de forma que facilmente seja substituída a persistência para um banco de dados, através de repository pattern.

Deverá ter validação dos dados principais dos atores e do relacionamento entre eles.


Requisitos não funcionais

A API deverá ser desenvolvida em clean architecture onde abrigará em sua modelagem os patterns: Repository, IoC, Identity.

Deverá ser desenvolvida com orientação a objeto, existindo por completo, o encapsulamento de dados e utilizando .Net 6.


Abstração

Iniciaremos pela modelagem dos dados considerando o padrão Repository, que deverá nos permitir desenvolver um código desacoplado, facilmente integrável e escalável observando boas práticas com interfaces e repositórios genéricos compartilháveis entre todas as entidades.

Usaremos a orientação Code First, preparando a camada de infraestrutura para aplicar o Migration em vários bancos de dados Sql diferentes.

Data Annotations para validação dos dados e relacionamentos na própria entidade, além de lógicas de consistência em conjunto com a classe de contexto.

Neste Projeto usaremos

Deixaremos como padrão o banco , mas o código ficará preparado com as configurações e conexões necessárias comentadas para o caso de rodar os outros.

Na camada de apresentação, ficará disponível uma interface para trabalhar com serviço de autenticação através do Jason Web Token, porém não usaremos nesse momento para facilitar os testes.

Usaremos o padrão de inversão de controle com injeções de dependências na classe Program.cs, já que usaremos a versão 6 do .net, e com isso podemos maximizar a modularidade e flexibilidade do nosso código

Pacotes necessários para trabalhar com todos bancos de dados:

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.SqlServer
  • Pomelo.EntityFrameworkCore.MySql

Importante observar que os pacotes que precisarem ser instalados em mais de uma camada, devem ser instalados na mesma versão em cada uma.

Execução

Clonar este repositório: https://github.com/medinasp/API_HealthLink_Repository_ID_IOC.git Não são necessárias alterações se você quiser rodar com o banco local SQLite, basta executar. Caso queira usar outro banco, será necessário comentar as linhas que fazem referência ao SQLite e descomentar as linhas do banco que você quer usar nos seguintes arquivos e classes:

  • apsettings.json (Camada de Apresentação HealthLinkApi)
  • Program.cs (Camada de Apresentação HealthLinkApi)
  • ContextBase (Camada de Infra/Configuration).

Depois disso você deverá acessar a camada de Infra/Migration, remover os arquivos de migration que já constam no diretório, abrir o console do Package Manager e rodar os comandos para executar nova migration no banco que você escolheu Add-migration initial Update-database

Próximo passo é executar a aplicação, abrir a coleção de endpoints que está na pasta EndpointTestes e importar no seu testador preferido.

Extras

Testes

Ficará também disponível para download dentro do próprio repositório (/EndpointTestes), a coleção de testes com as rotas e json preparados para testar todos endpoints da aplicação, basta aplicar dentro do seu testador preferido

Testes automatizados

Dentro da solução foi desenvolvido um projeto de testes automatizados para a cobertura completa de todos os controllers.

Ferramentas utilizadas

About

API relacionamento médico / paciente utilizando padrões Repository, IoC e ID

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published