@startuml
package model {

	class Usuario {
		string username
		string password
	}

	class ContactoEmergencia {
		int id_contacto
		string nombre
		string parentesco
		string telefono
	}

	class Paciente {
    varchar carnet
    boolean es_estudiante
    varchar nombres
    varchar apellidos
    char sexo
    varchar correo
    varchar telefono
    varchar seguro
    varchar carrera_o_dept
    date fecha_nacimiento
    varchar tipo_sangre
    varchar direccion
    text nota_importante
		ContactoEmergencia contacto_emergencia_1
		ContactoEmergencia contacto_emergencia_2
	}

	class Antecedente {
		int id_antecedente
		TipoAntecedente tipo
		string descripcion
	}

	class TipoAntecedente {
		int id_tipo
		string descripcion
	}

	class Tratamiento {
		int id_tratamiento
		string descripcion
	}

	class Visita {
		int id_visita
		Paciente paciente
		string motivo
    timestamp fecha
    text diagnostico
    text referencia
		ExamenFisico examen_fisico
	}

	class ExamenFisico {
		int id_examen_fisico
		string descripcion
		int frecuencia_respiratoria
		float temperatura
		int saturacion_oxigeno
		int glucometria
		int frecuencia_cardiaca
		int presion_arterial
	}
}

package server {
	class LoginRequest {
		string username
		string password
	}
	class LoginResponse {
		string token
	}

	class LogoutRequest {
		string token
	}

	class GetVisitasRequest {
		int paciente_id
		string token
	}
	class GetVisitasResponse {
		Visita[] visitas
	}

	class PostVisitaRequest {
		Visita nueva_visita
		string token
	}
	class PostVisitaResponse {
		Visita visita
	}

	class GetPacienteRequest {
		int paciente_id
		string token
	}
	class GetPacienteResponse {
		Paciente paciente
	}

	class PostPacienteRequest {
		Paciente nuevo_paciente
		string token
	}
	class PostPacienteResponse {
		Paciente paciente
	}
	
	class GetExamenFisicoRequest {
		int examen_id
		string token
	}
	class GetExamenFisicoResponse {
		ExamenFisico examen
	}

	class PostExamenFisicoRequest {
		ExamenFisico nuevo_examen
		string token
	}
	class PostExamenFisicoResponse {
		ExamenFisico examen
	}

	class GetTratamientoRequest {
		int tratamiento_id
		string token
	}
	class GetTratamientoResponse {
		Tratamiento tratamiento
	}

	class PostTratamientoRequest {
		Tratamiento nuevo_tratamiento
		string token
	}
	class PostTratamientoResponse {
		Tratamiento tratamiento
	}

	class GetTipoAntecedenteRequest {
		int tipo_id
		string token
	}
	class GetTipoAntecedenteResponse {
		TipoAntecedente tipo
	}

	class PostTipoAntecedenteRequest {
		TipoAntecedente nuevo_tipo
		string token
	}
	class PostTipoAntecedenteResponse {
		TipoAntecedente tipo
	}
}
@enduml
