AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Dados sintéticos de pacientes para testes

Synthea, personas e dados gerados por modelos comparados, o que bons dados de teste contêm e o que aconteceu quando carregámos pacientes Synthea para um servidor FHIR.

Dados sintéticos de pacientes são registos médicos inventados — pacientes, diagnósticos, medicamentos, resultados de laboratório, consultas — gerados para parecerem e comportarem-se como os reais, para que possa criar, testar e demonstrar software de saúde sem tocar em qualquer informação de saúde de alguém. É o padrão para desenvolvimento: dados reais de pacientes num ambiente de teste representam um risco de privacidade e geralmente um problema legal. Esta página aborda as principais formas de obter dados sintéticos, os pontos fortes e fracos de cada um, como projetar testes em torno deles e como carregá-los num servidor FHIR — incluindo o que aconteceu quando carregámos pacientes Synthea no Anpheros.

Três formas de obter pacientes sintéticos

Abordagem Exemplo Ideal para Atenção
Simulação baseada em regras Synthea (open source, da MITRE): simula vidas desde o nascimento com módulos de doenças e exporta bundles FHIR R4, C-CDA e CSV Volume, históricos completos, formatos standard Centrado nos EUA por defeito (demografia, recursos de faturação, códigos); os padrões são tão realistas quanto os módulos
Personas curadas Pacientes desenhados manualmente com condições específicas Demos, casos extremos, testes repetíveis Poucos pacientes; alguém tem de os manter coerentes
Geração estatística ou ML a partir de dados reais Modelos treinados num conjunto de dados real Realismo da investigação Pode vazar pessoas reais se feito incorretamente; necessita de avaliação de privacidade, não apenas "é sintético"

Texto escrito por um modelo de linguagem a pedido é uma quarta fonte, arriscada: lê-se bem, mas muitas vezes contradiz-se (uma medicação sem a condição que trata, valores de laboratório impossíveis) e não deve ser a base de testes.

O que os bons dados de teste contêm

Médias realistas não são suficientes. O código falha nas extremidades, por isso certifique-se de que os seus dados, sintéticos ou não, incluem:

Carregar Pacientes Synthea num Servidor FHIR

O Synthea gera um Bundle FHIR R4 transaction por paciente. Gerámos dois pacientes (java -jar synthea-with-dependencies.jar -p 2 -s 4242 Massachusetts) e carregámo-los numa instância local do Anpheros. O bundle do primeiro paciente continha 221 entradas:

Mantido (tipos que o Anpheros armazena) Removido (tipos que o Anpheros não armazena)
Observation 61, Procedure 48, DiagnosticReport 24, Condition 15, Encounter 12, DocumentReference 12, Immunization 6, Patient, CareTeam, CarePlan, Provenance Claim 13, ExplanationOfBenefit 13, SupplyDelivery 9, Device 2, ImagingStudy 1, MedicationRequest 1

O carregador pergunta ao servidor quais os tipos que suporta, mantém apenas esses e envia os restantes como uma transação:

import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });   // sk_test_… key
const SUPPORTED = new Set(((await anpheros.fhir.metadata()) as any).rest[0].resource.map((r: any) => r.type));
const bundle = JSON.parse(await readFile(process.argv[2], 'utf8'));            // one Synthea patient file
const kept = bundle.entry.filter((e: any) => SUPPORTED.has(e.resource.resourceType));
const out: any = await anpheros.fhir.transaction({ ...bundle, entry: kept } as any);
console.log('created', out.entry.length);

Resultado: 182 recursos criados numa transação. As referências urn:uuid entre as entradas mantidas foram resolvidas para IDs do servidor (um result de DiagnosticReport aponta para uma Observation existente); as referências às 39 entradas descartadas permanecem como escritas, pelo que, antes de carregar, recolha os fullUrl de cada entrada descartada e remova ou converta as referências mantidas que apontam para elas, e Patient/{id}/$summary produziu um International Patient Summary com 15 problemas, 6 imunizações, 15 resultados e 28 sinais vitais. $everything retornou 363 entradas, incluindo a proveniência que a plataforma adiciona a cada escrita.

Três coisas a saber antes de confiar nele:

Os nomes no Synthea incluem números (Marcelo725 Gulgowski816) propositadamente, para que ninguém os confunda com pessoas reais.

Pacientes sintéticos na sandbox Anpheros

Cada projeto sandbox Anpheros recebe a sua própria cópia de 30 pacientes sintéticos, gerados a partir de personas desenhadas manualmente: idades de 3 a 85 anos, vários países e línguas da UE, condições codificadas em ICD-10, medicamentos em ATC, laboratórios e sinais vitais em LOINC com unidades UCUM e intervalos de referência, seis meses de histórico e documentos. Um projeto recém-inicializado contém 30 pacientes, 43 condições, 51 declarações de medicação, 1.811 observações, 57 documentos e 6 alergias. Os dados são determinísticos — cada projeto vê as mesmas pessoas com os mesmos valores, apenas com IDs diferentes — e um reset restaura-os. Cada persona mantém um identificador estável, pelo que Patient?identifier=https://anpheros.com/fhir/sid/sandbox-persona|p02 encontrará sempre a mesma pessoa. Ver Base de dados FHIR gratuita e sandbox.

Utilize as personas quando pretender registos pequenos e coerentes que cubram línguas europeias e as funcionalidades da própria plataforma; carregue Synthea quando precisar de volume ou de históricos ao estilo dos EUA.

Perguntas frequentes

O que são dados sintéticos de pacientes?

Registos de saúde inventados que se assemelham a registos reais em estrutura e padrões, mas que não descrevem nenhuma pessoa real. Permite que os desenvolvedores criem e testem sem usar informações de saúde protegidas.

Os dados sintéticos são anónimos por definição?

Dados gerados a partir de regras, como os do Synthea, não contêm pacientes reais. Dados gerados por modelos treinados em registos reais ainda podem revelar pessoas reais e necessitam de uma avaliação de privacidade antes de serem partilhados.

Posso importar dados do Synthea para um servidor FHIR?

Sim. O Synthea exporta pacotes de transação FHIR R4. Remova os tipos de recursos que o servidor não suporta, verifique como ele lida com referências condicionais e publique cada pacote como uma transação.

A sandbox Anpheros inclui pacientes sintéticos?

Sim: 30 por projeto, com seis meses de histórico codificado, mais até 50 pacientes de teste que você cria.

Relacionado

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy