Consiste em uma simples API que permite o registro de médicos e seus dados.
Nesse desafio foi proposto a criação de uma API que permitisse o registro de médicos, informando os dados pessoais, juntamente com o CEP. A partir do CEP deve ser feito uma requisição para a API dos correios e pegar as informações do endereço do médico.
- Add doctor.
- Get all registered doctors, Get doctor by queries and params .
- Update doctor info.
- Soft delete a doctor.
http://localhost:5000
POST /specialties/seed
message: Specialties added!
status: 201
http://localhost:5000
GET /specialties
status: 200
data:[
{
"id": 1,
"name": "Alergologia",
"doctors": []
},
{
"id": 2,
"name": "Angiologia",
"doctors": []
},
{
"id": 3,
"name": "Buco maxilo",
"doctors": []
},
{
"id": 4,
"name": "Cardiologia clínica",
"doctors": []
},
{
"id": 5,
"name": "Cardiologia infantil",
"doctors": []
},
{
"id": 6,
"name": "Cirurgia cabeça e pescoço",
"doctors": []
},
{
"id": 7,
"name": "Cirurgia cardíaca",
"doctors": []
},
{
"id": 8,
"name": "Cirurgia de tórax",
"doctors": []
}
]
http://localhost:5000
POST /doctors/add
Body | Type | Description |
---|---|---|
name |
string |
Required. doctor name |
crm |
string |
Required. doctor crm |
telefoneFixo |
string |
Required. doctor telefoneFixo |
telefoneCelular |
string |
Required. doctor telefoneCelular |
cep |
string |
Required. doctor cep |
specialties |
number[] |
Required. doctor specialties |
name: no máximo 120 caractéres
crm: no máximo 7 caracteres
cep: deve ser um cep válido.
specialties: Array de números de 1 a 8, deve conter pelo menos dois números
message: Doctor successfully registered!
status: 201
http://localhost:5000
GET /doctors
status: 200
data:[
{
"id": 1,
"name": "Almeida",
"crm": "7554611",
"telefoneFixo": "81374098174",
"telefoneCelular": "813298470349",
"cep": "60720096",
"specialties": [
"Alergologia",
"Angiologia",
"Buco maxilo",
"Cardiologia infantil",
"Cirurgia cabeça e pescoço"
]
},
{
"id": 2,
"name": "Carlos",
"crm": "7554622",
"telefoneFixo": "85374098174",
"telefoneCelular": "853298470349",
"cep": "79002051",
"specialties": [
"Alergologia",
"Angiologia",
]
},
...
]
http://localhost:5000
GET /doctors/:id
GET /doctors?name={}
GET /doctors?crm={}
GET /doctors?telefoneFixo={}
GET /doctors?telefoneCelular={}}
GET /doctors?cep={}
GET /doctors?name=specialties={}
status:200
data:
[
{
"id": 1,
"name": "Almeida",
"crm": "7554611",
"telefoneFixo": "81374098174",
"telefoneCelular": "813298470349",
"cep": "60720096",
"specialties": [
"Alergologia",
"Angiologia",
"Buco maxilo",
"Cardiologia infantil",
"Cirurgia cabeça e pescoço"
]
}
]
status:200
data:
[
{
"id": 1,
"name": "Almeida",
"crm": "7554611",
"telefoneFixo": "81374098174",
"telefoneCelular": "813298470349",
"specialties": [
"Alergologia",
"Angiologia",
"Buco maxilo",
"Cardiologia infantil",
"Cirurgia cabeça e pescoço"
],
"address": {
"cep": "60720-096",
"logradouro": "Rua Cônego de Castro",
"complemento": "até 1538 - lado par",
"bairro": "Parangaba",
"localidade": "Fortaleza",
"uf": "CE",
"ibge": "2304400",
"gia": "",
"ddd": "85",
"siafi": "1389"
}
}
]
http://localhost:5000
PATCH /doctors/update/:id
Params | Type | Description |
---|---|---|
id |
integer |
Required. doctorId |
Body | Type | Description |
---|---|---|
name |
string |
Optional. doctor name |
crm |
string |
Optional. doctor crm |
telefoneFixo |
string |
Optional. doctor telefoneFixo |
telefoneCelular |
string |
Optional. doctor telefoneCelular |
cep |
string |
Optional. doctor cep |
specialties |
number[] |
Optional. doctor specialties |
status:200
updatedData:
{
"id": 1,
"name": "Almeida",
"crm": "7554611",
"telefoneFixo": "81374098174",
"telefoneCelular": "813298470349",
"cep": "60720096",
"specialties": [
"Cirurgia cabeça e pescoço",
"Cirurgia cardíaca"
]
}
http://localhost:5000
PATCH /doctors/delete/:id
Params | Type | Description |
---|---|---|
id |
integer |
Required. doctorId |
message: Doctor deactivated from system!
http://localhost:5000
PATCH doctors/activate/:id
Params | Type | Description |
---|---|---|
id |
integer |
Required. doctorId |
message: Doctor active!
POSTGRES_HOST=gcb-db
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=1234
POSTGRES_DATABASE=gcb
PORT=5000
NODE_ENV=development
Clone the project
git clone https://github.com/FKnight-cyber/DoctorApi
Start the server
First remember to create .env, check .env-example archive.
on root folder
run: npm run docker-compose up --build -d
run: npm run test:e2e
run: npm run test:watch doctor.service.spec.ts
run: npm run test:watch specialty.service.spec.ts
Apesar de simples foi um projeto que me fez aprender bastante, até então não tinha desenvolvido nenhum projeto com NestJS e TypeORM, gostei muito da forma como o Nest lida com o Typescript. Foi uma experiência nova e gratificante construir uma API com Nest.js .
- Ryan Nicholas a full-stack developer looking for new challenges!.