Skip to main content

Remedio

Visão Geral

A classe 'Remedio' representa a entidade fundamental no sistema de gerenciamento de remédios. Esta classe é mapeada para a tabela 'Remedios' no banco de dados e é utilizada para armazenar e gerenciar informações relacionadas a medicamentos.

Atributos da Entidade

  • id ('Long'): O identificador único do remédio, gerado automaticamente.
  • nome ('String'): O nome do remédio.
  • via ('Via'): A via de administração do remédio, utilizando a enumeração 'Via'.
  • lote ('String'): O número de lote do remédio.
  • quantidade ('int'): A quantidade disponível do remédio.
  • validade ('LocalDate'): A data de validade do remédio.
  • laboratorio ('Laboratorio'): O laboratório que produziu o remédio, utilizando a enumeração 'Laboratorio'.
  • ativo ('boolean'): Status que indica se o remédio está ativo ou não.

Construtores

  • NoArgsConstructor: Construtor padrão para uso do JPA.
  • AllArgsConstructor: Construtor que inicializa todos os campos da entidade.
  • Remedio(DadosCadastroRemedio dados): Construtor que cria uma instância de Remedio a partir de um 'DadosCadastroRemedio', configurando o remédio como ativo por padrão.

Métodos

  • atualizarInformacao(@Valid DadosAtualizarRemedio dados): Atualiza informações do remédio com dados fornecidos, modificando apenas os campos que não estão nulos no DTO de atualização.
  • inativar(): Marca o remédio como inativo.
  • reativar(): Marca o remédio como ativo novamente.

Mapeamento JPA

  • @Entity(name = "Remedio"): Especifica que esta classe é uma entidade.
  • @Table(name = "Remedios"): Define o nome da tabela associada à entidade.
  • @Id @GeneratedValue(strategy = GenerationType.IDENTITY): Marca 'id' como a chave primária e configura a geração automática do valor.
  • @Enumerated(EnumType.STRING): Indica que os campos enumerados 'via' e laboratorio devem ser armazenados como strings.

Validações

  • As validações de campos individuais, tais como não nulos ou formatação, são delegadas aos DTOs, como DadosCadastroRemedio e DadosAtualizarRemedio, garantindo que os dados sejam validados antes de chegar à camada de persistência.

Segurança e Transações

  • Métodos críticos que alteram o estado do remédio, como inativar e reativar, devem ser executados dentro de transações para garantir a integridade e a consistência dos dados.
  • A segurança de acesso a métodos específicos deve ser gerenciada por meio de configurações de segurança na camada de serviço ou controlador, assegurando que apenas usuários autorizados possam realizar operações sensíveis.

Considerações de Design

  • A implementação de métodos para alteração parcial de entidades, como atualizarInformacao, requer cuidado para evitar sobreposições indesejadas e manter a consistência dos dados.
  • O uso de @Valid no método atualizarInformacao assegura que os dados passados respeitam as regras de validação definidas nos DTOs, protegendo a aplicação contra estados inválidos.