Uma aplicação web para listagem de resultados de exames de laboratório.
- Linguagem: Ruby
- Framework web: Sinatra
- Web server: Puma
- Processamento assíncrono: Sidekiq
- Suite de testes: RSpec
- Lint: Rubocop
- Monitoramento de cobertura de testes: SimpleCov
A aplicação sempre que possível priorizará o Português (mais especificamente, pt-BR). Portanto todo texto que não seja código, incluíndo descrições de testes, mensagens de commit, comentários no código, nomes de colunas no banco de dados, entre outros, estará em Português.
- Possuir Docker Engine (ou Docker Desktop) instalado em sua máquina local.
Em um terminal aberto no diretório do projeto, basta executar o comando abaixo para iniciar a aplicação:
bin/dev
Basta executar o comando abaixo em um terminal aberto no diretório do projeto para encerrar todos os containers inicializados em bin/setup
:
docker compose down
http://localhost:3000/
- Status: 200 (OK)
- Corpo da resposta: Página web que exibe os resultados de
GET /tests
em formato de tabela dentro de uma página reativa, renderizando 100 conteúdos por vez.
http://localhost:3000/tests ou
GET '/tests'
- Status: 200 (OK)
- Corpo da resposta: Arquivo JSON com os resultados dos exames cadastrados na plataforma
- Exemplo de retorno:
[
{
"result_token": "00S0MD",
"date": "2022-03-03",
"full_name": "Ladislau Duarte",
"cpf": "099.204.552-53",
"email": "[email protected]",
"birth_date": "1981-02-02",
"doctor": {
"crm": "B000BJ8TIA",
"crm_state": "PR",
"full_name": "Ana Sophia Aparício Neto"
},
"tests": [
{
"type": "hemácias",
"limits": "45-52",
"results": "45"
},
{
"type": "leucócitos",
"limits": "9-61",
"results": "82"
},
[...],
{
"type": "ácido úrico",
"limits": "15-61",
"results": "3"
}
]
},
{
"result_token": "06LD0G",
"date": "2021-05-15",
"full_name": "Valentina Cruz",
"cpf": "003.596.348-42",
"email": "[email protected]",
"birth_date": "1979-04-04",
"doctor": {
"crm": "B00067668W",
"crm_state": "RS",
"full_name": "Félix Garcês"
},
"tests": [
{
"type": "hemácias",
"limits": "45-52",
"results": "77"
},
{
"type": "leucócitos",
"limits": "9-61",
"results": "89"
},
[...],
{
"type": "ácido úrico",
"limits": "15-61",
"results": "39"
}
]
},
]
- Status: 200 (OK)
- Corpo da resposta: Arquivo JSON com mensagem de erro
- Exemplo de retorno:
{
"errors": {
"message": "Não foi possível conectar-se ao banco de dados."
}
}
http://localhost:3000/tests/:result_token ou
GET '/tests'
- Status: 200 (OK)
- Corpo da resposta: Arquivo JSON com o exame encontrado através da pesquisa por
- Exemplo de retorno:
{
"result_token": "00S0MD",
"date": "2022-03-03",
"full_name": "Ladislau Duarte",
"cpf": "099.204.552-53",
"email": "[email protected]",
"birth_date": "1981-02-02",
"doctor": {
"crm": "B000BJ8TIA",
"crm_state": "PR",
"full_name": "Ana Sophia Aparício Neto"
},
"tests": [
{
"type": "hemácias",
"limits": "45-52",
"results": "45"
},
{
"type": "leucócitos",
"limits": "9-61",
"results": "82"
},
[...],
{
"type": "ácido úrico",
"limits": "15-61",
"results": "3"
}
]
}
- Status: 200 (OK)
- Corpo da resposta: Arquivo JSON com mensagem de erro
- Exemplo de retorno:
{
"errors": {
"message": "Não foi possível conectar-se ao banco de dados."
}
}
- Status: 200 (OK)
- Corpo da resposta: Arquivo JSON com mensagem de erro
- Exemplo de retorno:
{
"errors": {
"message": "Não foi encontrado nenhum exame com o token informado."
}
}
- Status: 200 (OK)
- Corpo da resposta: Arquivo JSON com mensagem de erro
- Exemplo de retorno:
{
"errors": {
"message": "Não foi possível conectar-se ao banco de dados."
}
}