MakersNetwork/agenda-saude

View on GitHub
docs/database.md

Summary

Maintainability
Test Coverage
# Estrutura de dados

## appointments

Agendamentos, funciona como uma agenda onde vagas podem ser abertas. Agendamentos podem estar tanto vagos (sem um `patient_id`) quanto preenchidos.

  * `start`: data e horário de início da vaga.
  * `end`: data e horário de fim da vaga.
  * `active`: se agendamento está ativo ou suspenso. Pode estar suspenso por problemas com o paciente (por exemplo a idade não condiz com seu documento de identidade), ou pode ser usado para suspender vagas futuras afim de criar uma reserva de vagas para imprevistos.
  * `ubs_id`: unidade onde este agendamento será feito.
  * `patient_id`: paciente. Se estiver em branco, é uma vaga disponível para agendamento.
  * `check_in`: data e horário do check in na unidade. É realizado quando o paciente chega, se apresenta e todos os documentos estão em ordem.
  * `check_out`: data e horeario de check out na unidade. É realizado quando o paciente recebeu a dose e saiu.
  * `suspend_reason`: motivo pelo qual esta dose foi suspença (pode não ter motivo).

## conditions

Condições de agendamento, que possibilitam que vagas sejam agendadas.

  * `name`: nome (título) da condição, a ser mostrado na página inicial.
  * `start_at`: a partir de quando é válida.
  * `end_at`: até quando é válida.
  * `min_age`: idade mínima (opcional).
  * `max_age`: idade máxima (opcional)
  * `can_register`: mostra na lista de "grupos que podem cadastrar"
  * `can_schedule`: mostra na lista de "grupos que podem agendar"
  * `created_at`: data que condição foi criada.
  * `updated_at`: data que condição foi atualizada.

## conditions_groups

Associativa entre condições e grupos.

## conditions_ubs

Associativa entre condições e unidades.

## doses

Doses administradas da vacina em pacientes.

  * `patient_id`: Paciente do qual esta dose foi administrada.
  * `appointment_id`: Agendamento no qual esta dose foi administrada. Útil para inferir em qual unidade (`ubs`) a dose foi realizada.
  * `vaccine_id`: Vacina que foi administrada.
  * `sequence_number`: Número da dose (1 para primeira dose, 2 para segunda dose, ...)
  * `created_at`: Data que a dose foi administrada.
  * `follow_up_appointment_id`: Agendamento do reforço desta dose.

## groups

Grupos do qual o paciente participa.

  * `name`: Nome do grupo. Exemplo: "Trabalhadores de Saúde".
  * `parent_group_id`: Se este elemento é "filho" de algum outro grupo. Por exemplo, "Enfermeiros" ser um filho de "Trabalhadores de Saúde".
  * `position`: Posição na lista.
  * `context`: Contexto, sendo 0 para grupos Prioritarios e 1 para Comorbidades.
  * `active`: Se grupo está ativo ou não (neste caso não aparece mais).

## groups_patients

Tabela associativa entre `groups` e `patients`. É como sabemos quantos pacientes estão em quantos grupos.

## inquiry_answers

Respostas (alternativas) das perguntas do inquérito.

  * `text`: texto da resposta.
  * `inquiry_question_id`: de qual pergunta esta resposta faz parte.
  * `position`: posição.
  * `active`: se está ativa.

## inquiry_questions

Perguntas do inquérito.

  * `text`: texto da pergunta.
  * `form_type`: tipo de pergunta.
  * `position`: posição.
  * `active`: se está ativa.

## neighborhoods

Bairros da cidade.

  * `name`: nome do bairro.

## neighborhoods_ubs

Tabela associativa entre `ubs` e `neighborhood`, já que unidades de atendimento podem atender múltiplos bairros da cidade.

pages", force: :cascade do |t|
t.string "path", null: false
t.string "title", null: false
t.text "body", null: false
t.integer "context", null: false
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at

## patients

Pacientes.

  * `email`: email do paciente.
  * `created_at`:
  * `updated_at`:
  * `name`: nome do paciente.
  * `cpf`: número de CPF, usado para login.
  * `mother_name`: nome da mãe.
  * `phone`: número telefônico primário.
  * `other_phone`: número telefônico secundário.
  * `sus`: número do cartão do SUS.
  * `fake_mothers`: nomes falsos de mães. Usado para desafiar o usuário no login.
  * `login_attempts`: tentativas falhas de login. Usado para bloquear acesso após um número de tentativas falhas.
  * `public_place`: endereço residencial.
  * `place_number`: número residencial.
  * `neighborhood_id`:  bairro.
  * `street_2`: complemento residencial
  * `internal_note`: observação interna sobre o usuário, **ainda não em uso**.
  * `user_updated_at`: quando o paciente atualizou seu cadastro. Só registrado se foi o paciente (não registra se foi atualizado por operador).
  * `birthday`: data de nascimento.

## patients_inquiry_answers

Associativa entre pacientes e as respostas dos inquéritos.

## ubs

Unidades de saúde.

  * `name`: nome da unidade de saúde.
  * `shift_start`:
  * `shift_end`:
  * `break_start`:
  * `break_end`:
  * `slot_interval_minutes`:
  * `created_at`:
  * `updated_at`:
  * `phone`:
  * `address`:
  * `cnes`:
  * `active`:
  * `open_saturday`:
  * `saturday_shift_start`:
  * `saturday_break_start`:
  * `saturday_break_end`:
  * `saturday_shift_end`:
  * `appointments_per_time_slot`:
  * `sunday_shift_start`:
  * `sunday_break_start`:
  * `sunday_break_end`:
  * `sunday_shift_end`:
  * `neighborhood_id`:

## ubs_users

Tabela associativa entre `ubs` e `patients`.

## users

  * `email`: email do usuário, **não é usado**.
  * `encrypted_password`:
  * `reset_password_token`:
  * `reset_password_sent_at`:
  * `remember_created_at`:
  * `name`: Nome do administrador, também usado como login.
  * `administrator`: Se usuário é administrador ou não.

## vaccines

Tipos de vacinas disponíveis no sistema.

  * `name`: Nome informal da vacina.
  * `formal_name`: Nome formal da vacina, a título informativo.
  * `second_dose_after_in_days`: Após quantos dias a segunda dose deve ser administrada. Pode ser `NULL~ se não houver segunda dose.
  * `third_dose_after_in_days`: Após quantos dias a terceira dose deve ser administrada. Pode ser `NULL` se não houver terceira dose.