Documentação funcional
Escopo, atores, fluxos e regras de negócio do ICTUS CME.
Atores do sistema
| Perfil | Escopo | Permissões principais |
|---|---|---|
| ADMIN | Matriz / Filial | CRUD total, gestão de usuários, criação de filiais, troca de contexto. |
| SUPERVISOR | Filial | Liberação paramétrica, recall, quarentena (release), CRUDs operacionais. |
| NURSE_RT | Filial | Liberação Bowie-Dick, leitura BI, manutenção preventiva. |
| NURSE | Filial | Operação completa do chão-de-CME exceto liberação. |
| TECHNICIAN | Filial | Expurgo, lavagem, preparo, esterilização. |
| VIEWER | Filial | Apenas leitura (dashboards e consultas). |
Domínios de negócio
1. Cadastros mestres
- Organizações (matriz + filiais)
- Setores (centro de custo + tipo ambiente: SUJO/LIMPO/ESTÉRIL/MISTO)
- Locais (hierárquicos: prédio → andar → sala → prateleira → carrinho)
- Fornecedores (instrumental, OPME, embalagem, químicos, equipamento)
- Especialidades cirúrgicas
- Embalagens (papel grau cirúrgico, SMS, contêiner; validade base; compatibilidade vapor/plasma)
- Modelos de Item (catálogo) com atributos térmicos, conformação complexa, vida útil em ciclos, custo de reposição
- Inventário de Itens (instâncias individuais com barcode/QR único)
- Templates de Kit + receita visual com fotos R2
- Equipamentos (autoclaves, lavadoras, ultrassônicas) + programas de ciclo
- Usuários com perfil RBAC + opcional RFID/biometria
2. Operação chão-de-CME
Operador bipa o kit, depois bipa os itens individualmente. Reconciliação no submit: se um item esperado faltar ou se um item estranho aparecer, alerta vermelho com pulse + beep dissonante. Inclui modal OPME para balanço de consumíveis.
Sistema roteia kits para lavadora compatível (termodesinfectora vs. ultrassônica), bloqueando combinações incorretas (ex.: instrumento com mola sensível a calor não vai à termo).
Mostra a receita do kit com fotos. Operador bipa cada peça; sistema bloqueia se peça vier de outra matriz, valida compatibilidade térmica e peso vs. ciclo planejado. Ao finalizar, emite ZPL ao Zebra ZD220.
Tela do equipamento com gate Bowie-Dick (autoclave vapor): RT precisa aprovar antes do primeiro ciclo do dia. Soma peso em tempo real (não estoura carga). Operador insere parâmetros observados ao final.
Supervisor / RT confere parâmetros do ciclo + indicador biológico (BI). Libera o lote para arsenal ou retém para reprocesso.
Lista ordenada por validade ASC; destaque amarelo nos kits próximos do vencimento; retirada por barcode.
PWA mobile para circulante de sala: vincula o kit ao prontuário do paciente. Esse vínculo é a chave para o recall biológico em cascata.
Itens / kits suspeitos são bloqueados; liberação exige re-autenticação de SUPERVISOR ou superior no momento da ação (não basta estar logado).
Botão de pânico com confirmação dupla. Dispara job RECALL_CASCADE que percorre batch → kits → cirurgias → pacientes, marca todos como quarentenados, e dispara webhook ao ERP / CCIH com lista de pacientes potencialmente expostos.
Equipamento com manutenção vencida é interditado automaticamente. Itens com contagem de ciclos ≥ vida útil estimada são marcados para passivação obrigatória.
Regras de negócio críticas
- FSM rígida: toda transição de estado de Item / KitInstance / Batch passa pelo motor em
worker/src/lib/fsm.ts. Tentativas inválidas retornam HTTP 409 e ficam no audit log. - Idempotência: mutações sensíveis aceitam header
Idempotency-Key. Replays retornam a resposta original. - Bowie-Dick diário: cron 04:00 UTC marca todas autoclaves vapor como pendentes; primeira tentativa de ciclo do dia trava aguardando RT liberar.
- Indicador biológico: leitura final só permitida após decorrido o tempo de incubação informado pelo fabricante (cron a cada 6h varre BIs prontos).
- Recall em cascata: nenhum kit afetado pode ser "des-recalled" — só fechado com justificativa de RT.
- Re-autenticação supervisor: release de quarentena exige senha do supervisor no momento (não confia em sessão).
Hierarquia matriz + filiais
Uma única conta ICTUS pode hospedar várias unidades (HQ + N filiais). O ADMIN da matriz cadastra cada filial em Admin → Filiais; ao criar a primeira filial, a organização atual (que era STANDALONE) é promovida automaticamente a HQ. Para operar uma filial, o usuário usa o seletor de organização no canto superior direito — o JWT é re-emitido com o novo escopo, mantendo referência à matriz de origem.