Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
Padrões de saúde para agentes de IA (beta)
O que mudou num registo de paciente e o que se repete, calculado por regras estatísticas fixas: tendências, desvios do nível habitual da pessoa e recorrência de sintomas, cada um com o seu período, evidência e limitações; não diagnósticos.
A Anpheros calcula o que mudou no registo de um paciente e o que é recorrente, por regras estatísticas fixas, e entrega cada descoberta à sua aplicação ou agente de IA com o seu período, os recursos subjacentes, a versão do método e as suas limitações. Um modelo já não tem de adivinhar uma tendência a partir de um punhado de números: recebe a tendência, a incerteza em torno dela e os dados para citar.
Beta. Na sandbox funciona com quaisquer credenciais de sandbox (chaves sk_test_… e ligações OAuth de sandbox). Em registos de produção, funciona apenas sob o consentimento OAuth de um paciente que inclua a permissão separada anpheros/patterns; as chaves API de produção recebem 403.
O que encontra
| Tipo | Pergunta que responde | Método |
|---|---|---|
trend |
Uma medição está a subir ou a descer na janela? | Inclinação de Theil–Sen com Mann–Kendall num valor por dia (medianas semanais para dados de monitorização densos), corrigido quando os dias vizinhos são semelhantes |
trend (change_between_results) |
Como é que um teste laboratorial com dois a cinco resultados mudou? | Primeiro e último resultado, com o mais recente comparado com o intervalo de referência do relatório; descrito, não testado |
trend (event_rate_change) |
Um sintoma é registado com mais ou menos frequência? | Dias de sintoma em relação aos dias em que a pessoa registou algo, últimos 30 dias contra os 90 anteriores, teste exato |
baseline_deviation |
A última semana é invulgar para esta pessoa? | Últimos 7 dias contra os dias 8–60, Mann–Whitney ou diferença de médias ajustada por autocorrelação |
recurrence |
Episódios de sintomas voltam em intervalos regulares? | Intervalos entre o início dos episódios, Monte Carlo semeado contra episódios colocados aleatoriamente |
association (around_medication_start, sandbox) |
Um sintoma é registado com mais ou menos frequência desde o início de uma medicação? | Dias de sintoma em relação aos dias ativos nos 30 dias desde o início contra até 90 dias antes, teste exato |
association (after_short_sleep, sandbox) |
Um sintoma é registado com mais frequência em dias com menos de 6 horas de sono? | Dias com sono medido e um registo pela pessoa, noites curtas contra noites mais longas, teste exato de Fisher |
convergence (recent_changes_together, sandbox) |
Várias coisas mudaram no mesmo período recente? | Nenhum teste novo: agrupa pelo menos duas alterações recentes (uma semana invulgar, um sintoma com mais ou menos frequência) que são cada uma estatisticamente suportada; diz apenas que aconteceram juntas |
Todos os testes de uma execução são corrigidos em conjunto (Benjamini–Hochberg). Uma descoberta é statistically_supported apenas quando o valor q corrigido é inferior a 0.05 e a alteração é pelo menos o limiar para essa medição.
O que não é
- Não é um diagnóstico. As descobertas descrevem o registo; nunca nomeiam uma condição nem recomendam uma alteração de tratamento. Cada descoberta inclui
safety.not_a_diagnosis = trueesafety.causal_claim = false. - Não é uma causa. Uma alteração após uma nova medicação, ou duas coisas registadas em conjunto, não é prova de que uma causou a outra. As associações dizem apenas que duas coisas aconteceram aproximadamente ao mesmo tempo; cada uma inclui
confounding_possibleenot_causal, e apenas os inícios de medicação e o sono são testados contra sintomas, não todos os pares. Com credenciais de sandbox apenas por agora. - Não é um modelo de IA, e ainda não foi revisto clinicamente. Cada número provém de regras estatísticas fixas e versionadas; nenhum modelo de IA analisa os dados. Os limiares para uma alteração significativa foram definidos com assistência de IA e ainda não foram revistos por um clínico; cada descoberta indica isso em
review.thresholds_reviewed_by_clinician. O motor é validado em pacientes sintéticos com padrões conhecidos plantados: encontra o que foi plantado e permanece silencioso quando nada foi. Isso não é validação clínica.
Experimente
Cada projeto de sandbox tem 30 pacientes sintéticos, e seis deles têm um padrão plantado. Encontre um com GET /fhir/R4/Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|<key>.
| Paciente | O que foi plantado | O que o motor reporta |
|---|---|---|
| p01 Andrei Popescu | Pressão arterial diária em casa, a cair cerca de 8/5 mmHg ao longo de seis meses | trend.decreasing para sistólica (8480-6) e diastólica (8462-4) |
| p06 Giulia Rossi | Uma dor de cabeça a cada 7 dias, com uma margem de um dia | recurrence.intervals para dor de cabeça (R51) |
| p17 Ciarán Murphy | Fadiga em cerca de metade dos últimos 30 dias, contra 1 dia em 12 antes | frequency.increased para fadiga (R53) |
| p19 Felix Gruber | Frequência cardíaca de repouso de um relógio, cerca de 9 bpm acima do seu nível habitual na última semana | baseline.higher para frequência cardíaca de repouso (40443-4) |
| p20 Ivana Horvat | Frequência cardíaca de repouso de um relógio, a estabilizar cerca de 16 bpm ao longo de seis meses | trend.decreasing para frequência cardíaca de repouso (40443-4) |
| p30 Jan Kowalczyk | Dados densos de relógio e de casa sem nada plantado | nenhuma descoberta suportada: o motor permanece em silêncio |
Os projetos criados antes de 16 de outubro de 2026 recebem estes padrões após a reposição dos seus pacientes sintéticos a partir do painel; uma reposição substitui quaisquer alterações feitas neles.
curl -s https://platform.anpheros.com/v1/patients/$PATIENT/patterns?window_days=180 \
-H "Authorization: Bearer $ANPHEROS_KEY"
Com o SDK TypeScript (@anpheros/sdk 0.2.0 ou posterior):
const run = await anpheros.patterns.run(patientId, { window_days: 180, min_strength: 'moderate' });
for (const f of run.findings) console.log(f.summary_text, f.strength, f.limitations.map(l => l.code));
Com o servidor MCP, pergunte ao seu agente "O que mudou no registo deste paciente nos últimos seis meses?": ele chama get_health_patterns, e pode dar seguimento com get_pattern_evidence, get_series e compare_periods. POST /v1/context adiciona uma secção patterns para perguntas sobre alterações e relações, ou quando pede a necessidade patterns.
Endpoints
| Endpoint | O que retorna |
|---|---|
GET /v1/patients/{id}/patterns |
um run: descobertas, o que não pôde ser computado e porquê, que consentimento excluiu; filtros window_days (30–730), end, types, min_strength |
GET /v1/patients/{id}/patterns/{finding_id} |
uma descoberta, recomputada para a mesma janela |
GET /v1/patients/{id}/patterns/{finding_id}/evidence |
todos os recursos de suporte, paginados |
GET /v1/patients/{id}/series?code=… |
uma medição como um valor por dia, com cobertura, lacunas e alterações de origem |
POST /v1/patients/{id}/patterns/compare |
uma medição em dois períodos à sua escolha |
Ler um achado
summary_text: uma frase simples, segura para mostrar ou citar.strength:strong,moderate,weakounot_tested. Achados fracos e não testados são descrições, não evidências.window,comparison_window: os períodos analisados.evidence(até 20, distribuídos ao longo do período) eevidence_total: os recursos subjacentes ao achado, com versão, data, valor e tipo de autor.limitations: codificado, com texto. Mostre-os com o achado.review: se um clínico revisou os limiares (falsepor agora) e de onde provêm.method,engine_version,input_fingerprint: os mesmos dados, configuração e versões produzem o mesmo resultado e o mesmo id.
Regras a saber
- Consentimento primeiro. Ao abrigo de uma concessão OAuth, o motor lê apenas o que a concessão permite; o que não pôde ler está listado em
omitted, sem conteúdo. - IDs. Os pacientes aparecem com o ID par do seu projeto; os IDs de localização são derivados por projeto. Quando o registo muda, uma localização recebe um novo ID e o antigo responde com 404.
- Tempo. Quando o tempo de uma leitura tem um deslocamento explícito (
2026-10-16T00:30:00+03:00), conta no dia da pessoa; os tempos em UTC (Z) ou sem deslocamento permanecem no dia UTC. Cada localização indica qual emtime_basis(record_offsets,partly_localoulocal_time_unknown). Os dias locais são usados em registos de sandbox e de produção; os padrões de hora do dia ainda não são calculados. - Omitidos. Valores escritos por IA, resultados marcados como erro de introdução e datas conhecidas apenas pelo mês não são utilizados e são contados.
- Limites. 30 execuções de padrões por minuto por credencial, além dos habituais 600 pedidos por minuto.
Perguntas frequentes
Utiliza um modelo de linguagem?
Não. Todos os números provêm de métodos estatísticos fixos e versionados. Qualquer modelo, alojado ou local, pode ler os resultados.
Porque é que uma alteração clara nos meus dados é marcada como fraca?
Porque a evidência não sobrevive à correção para todos os testes na execução, a série é curta ou ruidosa, ou a alteração está abaixo do limiar para essa medição. A descoberta ainda descreve o que o registo mostra.
Funciona em registos de produção?
Sim, a partir de 16 de outubro de 2026, mas apenas sob o consentimento OAuth de um paciente que inclua a permissão separada anpheros/patterns, que o ecrã de consentimento mostra numa linha própria. Solicite o âmbito ao lado dos seus âmbitos patient/…; uma concessão sem ele, e qualquer chave de API de produção, resulta em 403.
Relacionado
- Servidor MCP FHIR para agentes de IA
- Aplicações LLM e dados de saúde
- Agentes de IA e dados médicos
- API de saúde com consentimento do paciente
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card