Skip to content

Proyecto Fivet para la asignatura del Proyecto Desarrollo e Integracion de Soluciones

Notifications You must be signed in to change notification settings

MARSFOREVER472/fivet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proyecto Fivet

PROJECT DESCRIPTION:

This is the Fivet project for the subject of the Development and Integration of Solutions course in 2022, with all the dependencies installed through a .gradle extension file, another .proto file to generate calls to the methods of some classes of said particular project.

Use cases for creating a veterinary record (FiVet)

1.- Create Veterinary Record: It begins when the veterinarian wants to create a record for a patient who does not have one. The veterinarian will have to record the patient's data and optionally the owner's data. For patient data, the veterinarian will have to enter the name, species, date of birth or age, breed, sex, color, and can take a photo at the time, or associate an image file from the device or through a link Regarding the owner, it is interesting to register the name, address, landline, mobile phone, email and RUT. You will also have to indicate whether the type of record is internal or external (in the case of a consultation for a patient who is not a client of the veterinary clinic).

2.- Search Veterinary Record: The veterinarian wants to see a patient's record. To do this, the search is carried out by RUT of the owner, name of the patient or record number. If more than one (patient name) is found, a summary of all those found must be shown, the veterinarian can select one from that list. If only one is found, the information on the file is displayed.

3.- Add Control to a Patient: The veterinarian wants to add a control to a patient who may or may not have a record. To do this, if it has one, the Search Veterinary Record use case is carried out. If not available, the Create Veterinary Record use case is carried out. The Veterinarian will enter the data of a control, that is: date, temperature, weight, height, diagnosis, name of the veterinarian who performed it, the date of the next control if applicable and if it is necessary to associate an exam with your name. and date it was carried out.

4.- Create a Patient Card: The veterinarian wants to create a card for an internal patient or a new patient. To do this, in the event that it is an inpatient, the use case Search Veterinary Record is carried out. If it is new, the Create Veterinary File use case is carried out. The veterinarian extracts the data required to enter them into the card, with respect to the owner, these are: owner (owner's name), address, telephone number, and with respect to the patient: record number, patient name, species, sex, age and photo.

The project is divided by some of its attributes to regard:

  • Patient monitoring (Control).
  • Patient examination (Examen).
  • Patient medical record (Ficha Medica).
  • Patient photo (It is not taken into account when testing it but it is considered in the project(Foto)).
  • Person (Persona).

What attributes would you take into account for each class in the project?

  • For the Control class:

    • Date (Fecha).
    • Temperature (Temperatura).
    • Weight (Peso).
    • Height (Altura).
    • Diagnosis (Diagnostico).
    • Vet (Veterinario).
    • Medical record (Ficha Medica).
  • For the exam (Examen) class:

    • Name (Name of the medical exam (Nombre)).
    • Date (Fecha (Date the exam was taken)).
  • For the person class (Persona):

    • ID (RUT).
    • Name (Nombre).
    • Address (Direccion).
    • Landline number (Telefono fijo).
    • Mobile number (Telefono movil).
    • E-mail (Correo).
    • Password (Contraseña).
  • For photo class (Foto):

    • URL.
  • For the medical record class (Ficha Medica):

    • Patient record number (Numero de ficha del paciente).
    • Patient name (Nombre del paciente).
    • Patient species (Especie del paciente).
    • Birthdate (Fecha de nacimiento).
    • Patient breed (Raza del paciente).
    • Patient gender (Sexo del paciente).
    • Patient type (Tipo del paciente al que pertenece).
    • Patient owner (Dueño del paciente).
    • Patient number controls (Cantidad de controles del paciente).

Regarding the service of a veterinary record...

  • The service of a veterinary record is made up of 2 modalities:

    • Client (FivetClient).
    • Server (FivetServer).
  • Also, in this project one of these methods is considered to be able to effectively perform unit testing:

    • Database (Database connections).
    • gRPC (GOOGLE Remote Procedure Call).
    • Problem General Model.
  • The .proto file is distributed as follows in code:

Message 1: Persona Entity

message PersonaEntity {
  string rut = 1;
  string nombre = 2;
  string email = 3;
  string direccion = 4;
  string telefonoFijo = 5;
  string telefonoMovil = 6;
  string password = 7;
}

Message 2: Medical Record Entity

message FichaMedicaEntity {
  int32 numeroFicha = 1;
  string nombrePaciente = 2;
  string especie = 3;
  string fechaNacimiento = 4;
  string raza = 5;
  SexoEntity sexo = 6;
  string color = 7;
  string tipo = 8;
  PersonaEntity duenio = 9;
  repeated ControlEntity controles = 10;
}

Message 3: Control Entity

message ControlEntity {
  string fecha = 1;
  float temperatura = 2;
  float peso = 3;
  float altura = 4;
  string diagnostico = 5;
  PersonaEntity veterinario = 6;
  FichaMedicaEntity fichaMedica = 7;
}

Depending on the person's gender

enum SexoEntity {
  UNDEFINED = 0;
  MACHO = 1;
  HEMBRA = 2;
}

Message 4: Ficha Medica Reply Entity

message FichaMedicaReply {
  FichaMedicaEntity fichaMedica = 1;
}

Message 5: To add a medical record from your entity (Ficha Medica)

message AddFichaReq {
  FichaMedicaEntity fichaMedica = 1;
}

Message 6: To retrieve a medical record

message RetrieveFichaMedicaReq {
  int32 numeroFicha = 1;
}

Message 7: To search for a medical record that is requested

message SearchFichaMedicaReq {
  string query = 1;
}

Message 8: Add a requested person

message AddPersonaReq {
  PersonaEntity persona = 1;
}

Message 9: Add a medical check from your entity

message AddControlReq {
  ControlEntity control = 1;
}

Message 10: Request medical checks

message ControlRequest {
  ControlEntity control = 1;
}

Message 11: To authenticate a user using their credentials

message AuthenticateReq {
  string login = 1;
  string password = 2;
}

Message 12: To bring a person back from the system

message PersonaReply {
  PersonaEntity persona = 1;
}

Through a veterinary record service

service FivetService {

  rpc authenticate(AuthenticateReq) returns(PersonaReply) {}

  rpc addControl(AddControlReq) returns(FichaMedicaReply) {}

  rpc retrieveFicha(RetrieveFichaMedicaReq) returns(FichaMedicaReply) {}

  rpc searchFicha(SearchFichaMedicaReq) returns (stream FichaMedicaEntity) {}

  rpc addFicha(AddFichaReq) returns(FichaMedicaReply) {}

  rpc addPersona(AddPersonaReq) returns (PersonaReply) {}

}

Traducido del español:

Descripción del trabajo:

Este es el proyecto Fivet para la asignatura del curso Desarrollo e Integración de Soluciones año 2022, con todas las dependencias instaladas mediante un archivo de extensión .gradle, otro archivo .proto para generar llamados a los métodos de algunas clases de dicho proyecto en particular.

Casos de uso para la realización de una ficha veterinaria (FiVet)

1.- Crear Ficha Veterinaria: Comienza cuando el veterinario desea crear una ficha para un paciente que no tiene una. El veterinario tendrá que registrar los datos del paciente y opcionalmente los del dueño. Para los datos del paciente, el veterinario tendrá que ingresar el nombre, especie, fecha de nacimiento o edad, raza, sexo, color, y podrá tomar una foto en el momento, o asociar un archivo de imagen desde el dispositivo o por medio de un link. Con respecto al dueño, interesa registrar el nombre, dirección, teléfono fijo, teléfono móvil, email y RUT. Además tendrá que indicar si el tipo de ficha es interno o externo (en caso de una consulta para un paciente que no es cliente de la veterinaria).

2.- Buscar Ficha Veterinaria: El veterinario desea ver la ficha de un paciente. Para ello la búsqueda se realiza por RUT del dueño, nombre del paciente o número de ficha. En caso de encontrar más de una (nombre de paciente) se debe mostrar un resumen de todas las encontradas, el veterinario podrá seleccionar una de esa lista. En caso de encontrar sólo una, se despliega la información de la ficha.

3.- Agregar Control a un Paciente: El veterinario desea agregar un control a un paciente que puede tener ficha o no. Para ello, en el caso de que tenga, se realiza el caso de uso Buscar Ficha Veterinaria. En caso de no tener se realiza el caso de uso Crear Ficha Veterinaria. El Veterinario ingresará los datos de un control, esto es: fecha, temperatura, peso, altura, diagnóstico, nombre del veterinario que la realizó, la fecha del próximo control si es que se aplica y si es necesario asociar a un examen con su nombre y fecha en que se realizó.

4.- Crear Carnet de un Paciente: El veterinario desea crear un carnet a un paciente interno o un paciente nuevo. Para ello, en el caso de que sea un paciente interno, se realiza el caso de uso Buscar Ficha Veterinaria. En caso de ser nuevo, se realiza el caso de uso Crear Ficha Veterinaria. El veterinario extrae los datos que se requieren para ingresarlos al carnet, con respecto al dueño, estos son: propietario (nombre del dueño), domicilio, teléfono y a los que respecta al paciente: número de ficha, nombre del paciente, especie, sexo, edad y foto.

El proyecto se divide por algunos de sus atributos a considerar:

  • Control del paciente.
  • Examen del paciente.
  • Ficha médica del paciente.
  • Foto del paciente (No lo toma en cuenta al testearlo pero se considera en el proyecto).
  • Persona.

Qué atributos tomaría en cuenta para cada clase del proyecto?

  • Para la clase Control:

    • Fecha.
    • Temperatura.
    • Peso.
    • Altura.
    • Diagnóstico.
    • Veterinario.
    • Ficha Médica.
  • Para la clase Examen:

    • Nombre (Nombre del examen médico).
    • Fecha (Fecha en la que se realizó el examen).
  • Para la clase Persona:

    • RUT.
    • Nombre.
    • Dirección.
    • Teléfono Fijo.
    • Teléfono Móvil.
    • Correo.
    • Contraseña.
  • Para la clase Foto:

    • URL.
  • Para la clase Ficha Médica:

    • Número de ficha del paciente.
    • Nombre del paciente.
    • Especie del paciente.
    • Fecha de nacimiento.
    • Raza del paciente.
    • Sexo del paciente.
    • Tipo del paciente.
    • Dueño del paciente.
    • Cantidad de controles del paciente.

Respecto al servicio de una ficha veterinaria...

  • El servicio de una ficha veterinaria se componen de 2 modalidades:

    • Cliente (FivetClient).
    • Servidor (FivetServer).
  • También, en este proyecto se considera uno de estos métodos para poder realizar efectivamente las pruebas unitarias:

    • Database (Conexiones a la base de datos).
    • gRPC (Protocolo de comunicación entre servicios).
    • Modelo general del problema.
  • El archivo .proto se distribuye de la siguiente manera en código:

Mensaje 1: Entidad Persona

message PersonaEntity {
  string rut = 1;
  string nombre = 2;
  string email = 3;
  string direccion = 4;
  string telefonoFijo = 5;
  string telefonoMovil = 6;
  string password = 7;
}

Mensaje 2: Entidad Ficha Medica

message FichaMedicaEntity {
  int32 numeroFicha = 1;
  string nombrePaciente = 2;
  string especie = 3;
  string fechaNacimiento = 4;
  string raza = 5;
  SexoEntity sexo = 6;
  string color = 7;
  string tipo = 8;
  PersonaEntity duenio = 9;
  repeated ControlEntity controles = 10;
}

Mensaje 3: Entidad Control

message ControlEntity {
  string fecha = 1;
  float temperatura = 2;
  float peso = 3;
  float altura = 4;
  string diagnostico = 5;
  PersonaEntity veterinario = 6;
  FichaMedicaEntity fichaMedica = 7;
}

Según género de la persona

enum SexoEntity {
  UNDEFINED = 0;
  MACHO = 1;
  HEMBRA = 2;
}

Mensaje 4: Respuesta de la Entidad Ficha médica

message FichaMedicaReply {
  FichaMedicaEntity fichaMedica = 1;
}

Mensaje 5: Para añadir una ficha médica desde su entidad (Ficha Médica).

message AddFichaReq {
  FichaMedicaEntity fichaMedica = 1;
}

Mensaje 6: Para recuperar una ficha médica.

message RetrieveFichaMedicaReq {
  int32 numeroFicha = 1;
}

Mensaje 7: Para buscar una ficha médica a la cual se le solicita.

message SearchFichaMedicaReq {
  string query = 1;
}

Mensaje 8: Agregar una persona solicitada.

message AddPersonaReq {
  PersonaEntity persona = 1;
}

Mensaje 9: Añadir un control médico desde su entidad (Control).

message AddControlReq {
  ControlEntity control = 1;
}

Mensaje 10: Solicitar controles médicos.

message ControlRequest {
  ControlEntity control = 1;
}

Mensaje 11: Para autenticar a un usuario mediante sus credenciales.

message AuthenticateReq {
  string login = 1;
  string password = 2;
}

Mensaje 12: Para traer de regreso a una persona desde el sistema.

message PersonaReply {
  PersonaEntity persona = 1;
}

Mediante un servicio de una ficha veterinaria.

service FivetService {

  rpc authenticate(AuthenticateReq) returns(PersonaReply) {}

  rpc addControl(AddControlReq) returns(FichaMedicaReply) {}

  rpc retrieveFicha(RetrieveFichaMedicaReq) returns(FichaMedicaReply) {}

  rpc searchFicha(SearchFichaMedicaReq) returns (stream FichaMedicaEntity) {}

  rpc addFicha(AddFichaReq) returns(FichaMedicaReply) {}

  rpc addPersona(AddPersonaReq) returns (PersonaReply) {}

}

Arquitectura de un ORM

Acerca de cómo se construye un programa siguiendo este modelo que está aquí abajo:

image

Espero que esto les sirva de apoyo!!!

Muchas gracias!!!

Integrante:

Marcelo Andrés Lam Biaggini

About

Proyecto Fivet para la asignatura del Proyecto Desarrollo e Integracion de Soluciones

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages