Uma API com um CRUD de consultas médicas utilizando Python, Django e Django Rest Framework
-
Create venv
python -m venv venv
-
Ativando o ambiente virtual
Para ativar o ambiente virtual no Linux:
source venv/bin/activate
Para ativar o ambiente virtual no Windows:
.\venv\Scripts\activate
Após o comando inserido, deve aparecer o nome do ambiente virtual
-
Install requirements
pip install -r requirements.txt
-
Run
python manage.py runserver
-
Testes
python manage.py test consultas
`GET /profissionais`
curl --location --request GET 'http://localhost:8000/consultas/profissionais'
Status: 200 OK
Content-Type: application/json
```
[
{
"id": 1,
"nome": "Maria",
"nome_social": "",
"especialidade": "Ginecologista"
}
]
```
`GET /profissionais/:id`
curl --location --request GET 'http://localhost:8000/consultas/profissionais/:id'
Status: 200 OK
Content-Type: application/json
```
{
"id": 1,
"nome": "Maria",
"nome_social": "",
"especialidade": "Ginecologista"
}
```
`POST /profissionais`
curl --location --request POST 'http://localhost:8000/consultas/profissionais'
**Parametros**:
```
{
`nome`: string, obrigatório,
`nome_social`: string, opcional,
`especialidade`: string, obrigatório
}
```
Status: 201 CREATED
Content-Type: application/json
```
{
"mensagem": "Profissional cadastrado com sucesso",
"detalhes": {
"id": 1,
"nome": "Maria",
"nome_social": "",
"especialidade": "Ginecologia"
}
}
```
`PUT /profissionais/:id`
curl --location --request PUT 'http://localhost:8000/consultas/profissionais/:id'
**Parametros**:
```
{
`nome`: string, obrigatório,
`nome_social`: string, opcional,
`especialidade`: string, obrigatório
}
```
Status: 200 OK
Content-Type: application/json
```
{
"mensagem": "Profissional atualizado com sucesso",
"detalhes": {
"id": 1,
"nome": "Maria",
"nome_social": "",
"especialidade": "Ginecologia"
}
}
```
`DELETE /profissionais/:id`
curl --location --request DELETE 'http://localhost:8000/consultas/profissionais/:id'
Status: 200 OK
Content-Type: application/json
```
{
"mensagem": "Profissional excluído com sucesso",
}
```
`GET /consultas`
curl --location --request GET 'http://localhost:8000/consultas'
Status: 200 OK
Content-Type: application/json
```
[
{
"id": 4,
"paciente": "Maria",
"nome_social": "",
"profissional": 2,
"data_consulta": "2023-06-19"
}
]
```
`GET /consultas/profissional/:id_profissional`
curl --location --request GET 'http://localhost:8000/consultas/profissional/:id_profissional'
Status: 200 OK
Content-Type: application/json
```
[
{
"id": 4,
"paciente": "Maria",
"nome_social": "",
"profissional": 2,
"data_consulta": "2023-06-19"
}
]
```
`GET /consultas/:id`
curl --location --request GET 'http://localhost:8000/consultas/:id'
Status: 200 OK
Content-Type: application/json
```
{
"id": 4,
"paciente": "Maria",
"nome_social": "",
"profissional": 2,
"data_consulta": "2023-06-19"
}
```
`POST /consultas`
curl --location --request POST 'http://localhost:8000/consultas'
**Parametros**:
```
{
`paciente`: string, obrigatório,
`nome_social`: string, opcional,,
`data_consulta`: string, obrigatório, ex: "19-06-2022",
`profissional`: number, obrigatório, ex: 1
}
```
Status: 201 CREATED
Content-Type: application/json
```
{
"mensagem": "Consulta cadastrada com sucesso",
"detalhes": {
"id": 1,
"paciente": "Maria",
"nome_social": "",
"profissional": 3,
"data_consulta": "2023-06-19"
}
}
```
`PUT /consultas/:id`
curl --location --request PUT 'http://localhost:8000/consultas/:id'
**Parametros**:
```
{
`paciente`: string, obrigatório,
`nome_social`: string, opcional,,
`data_consulta`: string, obrigatório, ex: "19-06-2022",
`profissional`: number, obrigatório, ex: 1
}
```
##### Response
Status: 200 OK
Content-Type: application/json
```
{
"mensagem": "Consulta atualizada com sucesso",
"detalhes": {
"id": 1,
"paciente": "Maria",
"nome_social": "",
"profissional": 3,
"data_consulta": "2023-06-19"
}
}
```
### DELETE consulta
##### Request
`DELETE /consultas/:id`
curl --location --request DELETE 'http://localhost:8000/consultas/consultas/:id'
##### Response
Status: 200 OK
Content-Type: application/json
```
{
"mensagem": "Consulta excluída com sucesso",
}
```