Book an exam with preparation confirmation
- Met
- 4
- Partial
- 1
- Not met
- 2
- Inconclusive
- 2
C1POST /agendamentos/exames endpoint · Controllers/AgendamentoController.cs:69Met
Route declared in the controller and covered by an integration test that books and reads back the created slot.
EvidenceControllers/AgendamentoController.cs:69commit c7d2a10
C2Preparation instructions returned per exam type · Servicos/PreparoExameService.cs:24Met
Fasting, suspended medication and the guidance text come from the preparation registry, by exam type, not from a constant in the code; a type with no rule fails explicitly instead of returning an empty preparation.
EvidenceServicos/PreparoExameService.cs:24commit c7d2a10
C3Times stored in the site’s time zone · Servicos/AgendamentoService.cs:63Partial
Three of the four date fields go through the site converter, which falls back to America/Sao_Paulo when the site has no zone on file. DataSolicitacao stores raw UTC and shows up three hours ahead in the record.
EvidenceServicos/AgendamentoService.cs:63commit c7d2a10
C4Preparation confirmation required in the request · Validadores/AgendarExameValidator.cs:14Met
A request without the patient’s acknowledgement is refused in the validator, before it reaches the service, with a message in the user’s language.
EvidenceValidadores/AgendarExameValidator.cs:14commit c7d2a10
C5The booking protocol carries the exam date · Controllers/AgendamentoController.cs:85Met
Pattern AGD-yyyyMMdd-0000, assembled in the controller from the exam date and the day’s sequence number — not from the date the request was made.
EvidenceControllers/AgendamentoController.cs:85commit c7d2a10
C6A slot already taken on the professional’s schedule is blocked at booking · Servicos/DisponibilidadeProfissionalService.cs:45Not met
The free-slot grid comes from the professional’s shift alone, and the only filter applied is the lunch break. An exam already booked is never subtracted, so two patients end up holding the same professional’s 8 a.m.; that subtraction was expected right here, in the slot builder.
EvidenceServicos/DisponibilidadeProfissionalService.cs:45commit c7d2a10
C7Booking limited to the Front desk and Clinical staff roles · Controllers/AgendamentoController.cs:76Not met
The endpoint requires authentication and nothing else: no Roles, no policy. Any authenticated user — including the patient logged into the portal — books an exam against any record.
EvidenceControllers/AgendamentoController.cs:76commit c7d2a10
C8Cap of 40 exams per shift in the collection roomInconclusive
The service counts the shift’s bookings, but nothing in the commit sets 40 as the cap. The number may live in the site’s configuration, which is not in this repository.
No evidence in the code
C9Access to health data recorded in the audit trailInconclusive
The agent answered Met, citing Infra/Auditoria/AuditoriaService.cs:214. The file has 190 lines at commit c7d2a10 — the cited line does not exist, so the verdict dropped to inconclusive. With health data, recording who read what is an LGPD requirement, so the item goes back for human review.
Evidence not confirmedInfra/Auditoria/AuditoriaService.cs:214Met → Inconclusive