O Prescripta é uma aplicação demonstrativa e educacional de segurança de medicamentos. Ela reúne contexto fictício de paciente, conhecimento medicamentoso curado, regras determinísticas, cobertura, revisão humana, relatórios e auditoria em uma interface FastAPI + React.
Não é dispositivo médico, não possui validação clínica, regulatória ou institucional e não deve ser usado em atendimento real. Não substitui avaliação profissional, bula, protocolo, autoridade sanitária ou decisão institucional. Use somente dados fictícios.
O projeto é uma base de portfólio e pesquisa para tornar explícitos os dados usados, os dados ausentes, a vigência das fontes e a precedência entre achados. O backend é a fonte de autorização e da decisão. IA opcional apenas explica snapshots já calculados ou extrai conteúdo recuperado, sempre com fallback determinístico e revisão humana.
O projeto não implementa FHIR completo, SMART App Launch ou CDS Hooks. Os adapters de importação são compatibilidade parcial e demonstrativa; não representam uma integração hospitalar certificada. A base interna usa busca lexical indexada, não um RAG clinicamente validado.
- envelope canônico de decisão com
coverage_status, achados, fontes, dados faltantes e abstention; - dose dimensional para massa, frequência, taxa, infusão, procedimento e exposição acumulada;
- catálogo demonstrativo com princípio ativo, produto, aliases, jurisdição, versão e status de revisão;
- autorização por instituição, escopo de paciente e trilha de acessos negados;
- snapshots clínicos imutáveis, hash de JSON canônico e relatórios históricos reprodutíveis;
- reconciliação granular de importações com consentimento e decisão humana por item;
- override governado sem reduzir severidade, com justificativa e segundo revisor independente;
- sessão em cookie HttpOnly, lockout persistente, MFA TOTP opcional e startup seguro fora do modo local;
- providers de IA opcionais com credenciais criptografadas, allowlist/SSRF, circuit breaker compartilhado e fallback local;
- PDF/JSON/CSV, paginação, manifesto de truncamento e auditoria pseudonimizada;
- Alembic, PostgreSQL em CI, testes automatizados, SAST/SCA, secret scan e SBOM.
| Workspace profissional | Paciente autorizado |
|---|---|
![]() |
![]() |
| Decisão clínica | Revisão farmacêutica |
![]() |
![]() |
A galeria corrente e seu manifesto SHA-256 também incluem checagem estruturada, auditoria e mobile.
Requer Python 3.12+, Node.js 24+ e npm.
python -m venv .venv
.\.venv\Scripts\python -m pip install -r backend\requirements.txt
.\.venv\Scripts\python -m pip install -r backend\requirements-dev.txt
cd frontend
npm ciCopie .env.example para .env e mantenha o modo local enquanto usar SQLite, auto-seed e
credenciais demonstrativas. Em terminais separados:
powershell -ExecutionPolicy Bypass -File scripts/dev.ps1Ou consulte o guia de setup local.
React/TypeScript
│ cookie HttpOnly + contratos tipados
FastAPI routes ── autorização por papel, instituição e objeto
│
serviços de aplicação ── ClinicalDecisionOrchestrator ── regras determinísticas
│ │
SQLAlchemy/Alembic busca lexical/IA explicativa
│ │
PostgreSQL (produção alvo) snapshots e fontes bloqueadas
Regras clínicas não ficam nas rotas nem no frontend. Uma checagem persiste decisão, eventos e snapshot na mesma transação. Relatórios de prescrição leem apenas esse snapshot e verificam seu hash.
O modo local cria dados artificiais quando PRESCRIPTA_AUTO_SEED=true. Credenciais demonstrativas,
SQLite, CORS local e o segredo padrão são rejeitados em ambientes não locais. O catálogo e as regras
seed permanecem marcados como demo ou pending_review; ausência de cobertura nunca aparece como
resultado favorável.
- não versione
.env, banco local, chaves, caches,node_modulesoudist; - não envie CPF, CNS, contato, endereço ou identificadores reais a providers externos;
- nomes e e-mails não são copiados para novos eventos de auditoria;
- pseudonimização não é anonimização e continua sujeita a controle de acesso e retenção;
- produção exige PostgreSQL, segredo forte, auto-seed desligado, CORS explícito e chave de criptografia;
- vulnerabilidades devem seguir SECURITY.md, não uma issue pública.
O modelo de ameaça, o hazard log clínico e os riscos aceitos registram controles e risco residual.
- índice da documentação
- arquitetura
- regras clínicas
- interoperabilidade
- IA e busca lexical
- testes e operações
- auditorias históricas, changelog e índice de releases
cd backend
..\.venv\Scripts\python -m ruff check . --no-cache
..\.venv\Scripts\python -m pytest
cd ..\frontend
npm run lint
npm run typecheck
npm run test:coverage
npm run build
npm run test:e2e
cd ..
python scripts/check_assets.pyOs gates completos estão em .github/workflows/ci.yml, .github/workflows/security.yml e nos scripts
scripts/check_*.py.
Apache License 2.0. Fontes, padrões e projetos usados apenas como benchmark mantêm suas próprias licenças; nenhum claim de conformidade é derivado deles.




