É uma API para armazenar o prontuário do paciente de forma unificada de forma que possa ser acessado de qualquer clínica ou hostipal, facilitando assim diagnósticos, marcação de consultas, exames, além de outras funcionalidades.
Para inicializar este projeto, é necessário utilizar o comando abaixo para instalar todas as dependências:
yarn install
Configure as variáveis de ambiente no arquivo .env, passando suas credenciais para se conectar ao seu banco de dados local.
Tendo feito isso, basta executar o comando abaixo para inicializar a aplicação:
yarn dev
- Node.js
- Express.js
- TypeScript
- Typeorm
- PostgreSQL
- Bcrypt
- Jsonwebtoken
- Yup
- Cadastro de paciente
- Cadastro de endereço
- Cadastro de tutor
- Cadastro de consulta
- Cadastro de tratamento
- Cadastro de exames
- Cadastro de vacinas
- Cadastro de medicação
- Cadastro de diagnóstico
- Cadastro de Hospital/Clínica
- Cadastro de Médicos
- Cadastro de especialização médica
- Consulta ao prontuário do paciente
- Login
Texto sobre os testes aqui... Texto sobre os testes aqui... Texto sobre os testes aqui... Texto sobre os testes aqui...
Link externo para o diagrama: https://drive.google.com/file/d/1WaVQXjuVh6DKbJMOE377DYT39DVKPA_6/view?usp=sharing
Base url: https://api-unisaude-j9ma.onrender.com
Body
{
"name": "Steiner",
"cpf": "12345678900",
"age": 21,
"email": "steiner@mail.com",
"genre": "Masculino",
"phone": "2199999-9999",
"password": "123456",
"father": "Pai",
"mother": "Mãe",
"blood_type": "A+",
"addressId": "27feeea3-4913-4f28-9ab9-12d137e39fd7"
}
Retorno esperado - 201
{
"email": "steiner@mail.com",
"id": "5811c0c7-c8e8-41b8-9405-fa0bb74388fb"
}
Possíveis error
status - 400
{
"message": "Patient is alredy exist"
}
{
"message": ["email is a required field", "password is a required field"]
}
Body
{
"name": "Steiner",
"crm": "52889900",
"email": "sd@mail.com",
"password": "123456",
"specializationId": "41244de7-e36b-4c14-b2be-f991bc807873"
}
Retorno esperado - 201
{
"name": "Steiner",
"email": "sd@mail.com",
"crm": "52889900",
"specialization": "Clínico Geral"
}
Possíveis erros
Status - 400
{
"message": [
"email is a required field",
"crm is a required field",
"password is a required field",
"specializationId is a required field"
]
}
Status - 401
{
"message": "patient is a minor and has not registered guardians"
}
Body
{
"email": "steiner8@mail.com",
"password": "123456"
}
Retorno esperado - 200
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNjRlMmJlNjgtYzA2Ny00Y2FlLWI0NTAtZmFmMWRiZTlhNDQzIn0sImlhdCI6MTY3NDA2MjY4MSwiZXhwIjoxNjc0MTQ5MDgxLCJzdWIiOiI2NGUyYmU2OC1jMDY3LTRjYWUtYjQ1MC1mYWYxZGJlOWE0NDMifQ.hGY2TfRKLh3FWvJy9AksOG_W3_mWJNPiEzBpg07yxJo"
}
Possíveis erros
Status - 400
{
"message": ["email required field", "password required field"]
}
Body
{
"email": "steiner8@mail.com",
"password": "123456"
}
Retorno esperado - 200
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiNjRlMmJlNjgtYzA2Ny00Y2FlLWI0NTAtZmFmMWRiZTlhNDQzIn0sImlhdCI6MTY3NDA2MjY4MSwiZXhwIjoxNjc0MTQ5MDgxLCJzdWIiOiI2NGUyYmU2OC1jMDY3LTRjYWUtYjQ1MC1mYWYxZGJlOWE0NDMifQ.hGY2TfRKLh3FWvJy9AksOG_W3_mWJNPiEzBpg07yxJo"
}
Possíveis erros
Status - 400
{
"message": ["email required field", "password required field"]
}
Body
{
"street": "Rua R",
"number": 190,
"district": "Recreio dos Bandeirantes",
"zip_code": 12345678,
"city": "Rio de Janeiro",
"state": "RJ",
"complement": "Casa sem portão"
}
Retorno esperado - 201
{
"state": "CE",
"city": "Fortaleza",
"zip_code": 12344321,
"district": "Sao Joao",
"complement": "Casa do portao azul",
"number": 12,
"street": "rua 123"
}
Body
{
"appointment_date": "2022-08-19T17:13:22.646Z",
"appointment_date_type": "Online",
"specialization": "Clínico Gera2ls",
"patient_id": "39a0d5c4-0fdf-4583-90ab-7532d653ace5",
"doctor_id": "0f680075-627e-4994-88a1-cb2ef864d88f",
"hospital_id": "b8418f77-110b-405c-9701-e44b37f3b4f1"
}
Retorno esperado - 201
Possíveis error
Status - 400
Body
Retorno esperado - 200
[
{
"name": "Steiner",
"cpf": "12345678909",
"age": 21,
"email": "steiner9@mail.com",
"genre": "Masculino",
"phone": "2199999-9999",
"father": "Pai",
"mother": "Mãe",
"blood_type": "A+",
"addressId": "27feeea3-4913-4f28-9ab9-12d137e39fd7"
}
]
Body
Retorno esperado - 200
{
"name": "Steiner",
"cpf": "12345678909",
"age": 21,
"email": "steiner9@mail.com",
"genre": "Masculino",
"phone": "2199999-9999",
"father": "Pai",
"mother": "Mãe",
"blood_type": "A+",
"addressId": "27feeea3-4913-4f28-9ab9-12d137e39fd7"
}
Possíveis erros
Retorno esperado - 404
{
"message": "Patients is not exists"
}
Body
Retorno esperado - 200
[
{
"id": "7e0e9e70-9e31-4085-9c0f-7a2eb11f7a7e",
"street": "rua 123",
"number": 12,
"complement": "Casa do portao azul",
"district": "Sao Joao",
"zip_code": 12344321,
"city": "Fortaleza",
"state": "CE"
}
]
Body
Retorno esperado - 200
[
{
"id": "7e0e9e70-9e31-4085-9c0f-7a2eb11f7a7e",
"street": "rua 123",
"number": 12,
"complement": "Casa do portao azul",
"district": "Sao Joao",
"zip_code": 12344321,
"city": "Fortaleza",
"state": "CE"
}
]
Possíveis erros
Retorno esperado - 404
{
"message": "Address is not exists"
}
Bearer token
{
headers : {"Authorization": `Bearer ${token}`}
}
Body
Retorno esperado - 200
{
"name": "Steiner",
"cpf": "12345678909",
"age": 21,
"email": "steiner9@mail.com",
"genre": "Masculino",
"phone": "2199999-9999",
"father": "Pai",
"mother": "Mãe",
"blood_type": "A+",
"addressId": "27feeea3-4913-4f28-9ab9-12d137e39fd7"
}
Possíveis erros
Retorno esperado
Status - 401
{
"message": "Don't is permission update outhers acconts"
}
Status - 403
{
"message": "Token invalid"
}
Status - 404
{
"message": "User not found"
}
Body
Retorno esperado - 204
Possíveis erros
Retorno esperado
Status - 401
{
"message": "Don't is permission delete outhers acconts"
}
Status - 403
{
"message": "Token invalid"
}
Status - 404
{
"message": "User not found"
}