PyHealth: Kit de Ferramentas de IA em Saúde
Visão Geral
PyHealth é uma biblioteca Python abrangente para IA em saúde que oferece ferramentas especializadas, modelos e conjuntos de dados para machine learning clínico. Use esta habilidade ao desenvolver modelos de previsão em saúde, processar dados clínicos, trabalhar com sistemas de codificação médica ou implantar soluções de IA em ambientes de saúde.
Quando Usar Esta Habilidade
Invoque esta habilidade quando:
- Trabalhar com conjuntos de dados de saúde: MIMIC-III, MIMIC-IV, eICU, OMOP, dados EEG de sono, imagens médicas
- Tarefas de previsão clínica: Previsão de mortalidade, readmissão hospitalar, tempo de permanência, recomendação de medicamentos
- Codificação médica: Tradução entre sistemas de códigos ICD-9/10, NDC, RxNorm, ATC
- Processamento de dados clínicos: Eventos sequenciais, sinais fisiológicos, texto clínico, imagens médicas
- Implementar modelos de saúde: RETAIN, SafeDrug, GAMENet, StageNet, Transformer para EHR
- Avaliar modelos clínicos: Métricas de justiça, calibração, interpretabilidade, quantificação de incerteza
Capacidades Principais
PyHealth opera por meio de um pipeline modular de 5 etapas otimizado para IA em saúde:
- Carregamento de Dados: Acesso a 10+ conjuntos de dados de saúde com interfaces padronizadas
- Definição de Tarefas: Aplicar 20+ tarefas de previsão clínica predefinidas ou criar tarefas personalizadas
- Seleção de Modelo: Escolher entre 33+ modelos (baselines, deep learning, específicos de saúde)
- Treinamento: Treinar com checkpoint automático, monitoramento e avaliação
- Implantação: Calibrar, interpretar e validar para uso clínico
Desempenho: 3x mais rápido que pandas para processamento de dados de saúde
Fluxo de Trabalho de Início Rápido
from pyhealth.datasets import MIMIC4Dataset
from pyhealth.tasks import mortality_prediction_mimic4_fn
from pyhealth.datasets import split_by_patient, get_dataloader
from pyhealth.models import Transformer
from pyhealth.trainer import Trainer
# 1. Carregar dataset e definir tarefa
dataset = MIMIC4Dataset(root="/path/to/data")
sample_dataset = dataset.set_task(mortality_prediction_mimic4_fn)
# 2. Dividir dados
train, val, test = split_by_patient(sample_dataset, [0.7, 0.1, 0.2])
# 3. Criar data loaders
train_loader = get_dataloader(train, batch_size=64, shuffle=True)
val_loader = get_dataloader(val, batch_size=64, shuffle=False)
test_loader = get_dataloader(test, batch_size=64, shuffle=False)
# 4. Inicializar e treinar modelo
model = Transformer(
dataset=sample_dataset,
feature_keys=["diagnoses", "medications"],
mode="binary",
embedding_dim=128
)
trainer = Trainer(model=model, device="cuda")
trainer.train(
train_dataloader=train_loader,
val_dataloader=val_loader,
epochs=50,
monitor="pr_auc_score"
)
# 5. Avaliar
results = trainer.evaluate(test_loader)
Documentação Detalhada
Esta habilidade inclui documentação de referência abrangente organizada por funcionalidade. Leia arquivos de referência específicos conforme necessário:
1. Conjuntos de Dados e Estruturas de Dados
Arquivo: references/datasets.md
Leia quando:
- Carregar conjuntos de dados de saúde (MIMIC, eICU, OMOP, EEG de sono, etc.)
- Compreender estruturas de dados Event, Patient, Visit
- Processar diferentes tipos de dados (EHR, sinais, imagens, texto)
- Dividir dados para treinamento/validação/teste
- Trabalhar com SampleDataset para formatação específica de tarefa
Tópicos-chave:
- Estruturas de dados principais (Event, Patient, Visit)
- 10+ conjuntos de dados disponíveis (EHR, sinais fisiológicos, imagem, texto)
- Carregamento e iteração de dados
- Estratégias de divisão treino/validação/teste
- Otimização de desempenho para grandes conjuntos de dados
2. Tradução de Codificação Médica
Arquivo: references/medical_coding.md
Leia quando:
- Traduzir entre sistemas de codificação médica
- Trabalhar com códigos de diagnóstico (ICD-9-CM, ICD-10-CM, CCS)
- Processar códigos de medicamentos (NDC, RxNorm, ATC)
- Padronizar códigos de procedimento (ICD-9-PROC, ICD-10-PROC)
- Agrupar códigos em categorias clínicas
- Lidar com classificações hierárquicas de medicamentos
Tópicos-chave:
- InnerMap para pesquisas dentro do sistema
- CrossMap para tradução entre sistemas
- Sistemas de codificação suportados (ICD, NDC, ATC, CCS, RxNorm)
- Padronização de códigos e travessia de hierarquia
- Classificação de medicamentos por classe terapêutica
- Integração com conjuntos de dados
3. Tarefas de Previsão Clínica
Arquivo: references/tasks.md
Leia quando:
- Definir objetivos de previsão clínica
- Usar tarefas predefinidas (mortalidade, readmissão, recomendação de medicamentos)
- Trabalhar com tarefas baseadas em EHR, sinais, imagem ou texto
- Criar tarefas de previsão personalizadas
- Configurar esquemas de entrada/saída para modelos
- Aplicar lógica de filtragem específica de tarefa
Tópicos-chave:
- 20+ tarefas clínicas predefinidas
- Tarefas EHR (mortalidade, readmissão, tempo de permanência, recomendação de medicamentos)
- Tarefas de sinais (estágio de sono, análise EEG, detecção de convulsões)
- Tarefas de imagem (classificação COVID-19 raio-X do tórax)
- Tarefas de texto (codificação médica, classificação de especialidade)
- Padrões de criação de tarefa personalizada
4. Modelos e Arquiteturas
Arquivo: references/models.md
Leia quando:
- Selecionar modelos para previsão clínica
- Compreender arquiteturas e capacidades de modelos
- Escolher entre modelos de propósito geral e específicos de saúde
- Implementar modelos interpretáveis (RETAIN, AdaCare)
- Trabalhar com recomendação de medicamentos (SafeDrug, GAMENet)
- Usar redes neurais gráficas para saúde
- Configurar hiperparâmetros de modelo
Tópicos-chave:
- 33+ modelos disponíveis
- Propósito geral: Logistic Regression, MLP, CNN, RNN, Transformer, GNN
- Específicos de saúde: RETAIN, SafeDrug, GAMENet, StageNet, AdaCare
- Seleção de modelo por tipo de tarefa e tipo de dados
- Considerações de interpretabilidade
- Requisitos computacionais
- Diretrizes de sintonização de hiperparâmetros
5. Pré-processamento de Dados
Arquivo: references/preprocessing.md
Leia quando:
- Pré-processar dados clínicos para modelos
- Lidar com eventos sequenciais e dados de séries temporais
- Processar sinais fisiológicos (EEG, ECG)
- Normalizar valores de laboratório e sinais vitais
- Preparar rótulos para diferentes tipos de tarefas
- Construir vocabulários de recursos
- Gerenciar dados ausentes e outliers
Tópicos-chave:
- 15+ tipos de processador
- Processamento de sequências (padding, truncação)
- Processamento de sinais (filtragem, segmentação)
- Extração e codificação de características
- Processadores de rótulo (binário, multi-classe, multi-label, regressão)
- Pré-processamento de texto e imagem
- Fluxos de trabalho de pré-processamento comuns
6. Treinamento e Avaliação
Arquivo: references/training_evaluation.md
Leia quando:
- Treinar modelos com a classe Trainer
- Avaliar desempenho de modelo
- Calcular métricas clínicas
- Avaliar justiça de modelo entre grupos demográficos
- Calibrar previsões para confiabilidade
- Quantificar incerteza de previsão
- Interpretar previsões de modelo
- Preparar modelos para implantação clínica
Tópicos-chave:
- Classe Trainer (train, evaluate, inference)
- Métricas para tarefas binária, multi-classe, multi-label, regressão
- Métricas de justiça para avaliação de viés
- Métodos de calibração (Platt scaling, temperature scaling)
- Quantificação de incerteza (conformal prediction, MC dropout)
- Ferramentas de interpretabilidade (visualização de atenção, SHAP, ChEFER)
- Exemplo de pipeline de treinamento completo
Instalação
uv pip install pyhealth
Requisitos:
- Python ≥ 3.7
- PyTorch ≥ 1.8
- NumPy, pandas, scikit-learn
Casos de Uso Comuns
Caso de Uso 1: Previsão de Mortalidade em UTI
Objetivo: Prever mortalidade de pacientes em unidade de terapia intensiva
Abordagem:
- Carregar dataset MIMIC-IV → Leia
references/datasets.md
- Aplicar tarefa de previsão de mortalidade → Leia
references/tasks.md
- Selecionar modelo interpretável (RETAIN) → Leia
references/models.md
- Treinar e avaliar → Leia
references/training_evaluation.md
- Interpretar previsões para uso clínico → Leia
references/training_evaluation.md
Caso de Uso 2: Recomendação Segura de Medicamentos
Objetivo: Recomendar medicamentos evitando interações medicamentosas
Abordagem:
- Carregar dataset EHR (MIMIC-IV ou OMOP) → Leia
references/datasets.md
- Aplicar tarefa de recomendação de medicamentos → Leia
references/tasks.md
- Usar modelo SafeDrug com restrições DDI → Leia
references/models.md
- Pré-processar códigos de medicamentos → Leia
references/medical_coding.md
- Avaliar com métricas multi-label → Leia
references/training_evaluation.md
Caso de Uso 3: Previsão de Readmissão Hospitalar
Objetivo: Identificar pacientes em risco de readmissão em 30 dias
Abordagem:
- Carregar dados EHR multi-site (eICU ou OMOP) → Leia
references/datasets.md
- Aplicar tarefa de previsão de readmissão → Leia
references/tasks.md
- Lidar com desbalanceamento de classes no pré-processamento → Leia
references/preprocessing.md
- Treinar modelo Transformer → Leia
references/models.md
- Calibrar previsões e avaliar justiça → Leia
references/training_evaluation.md
Caso de Uso 4: Diagnóstico de Distúrbio do Sono
Objetivo: Classificar estágios do sono a partir de sinais EEG
Abordagem:
- Carregar dataset de EEG de sono (SleepEDF, SHHS) → Leia
references/datasets.md
- Aplicar tarefa de estágio de sono → Leia
references/tasks.md
- Pré-processar sinais EEG (filtragem, segmentação) → Leia
references/preprocessing.md
- Treinar modelo CNN ou RNN → Leia
references/models.md
- Avaliar desempenho por estágio → Leia
references/training_evaluation.md
Caso de Uso 5: Tradução de Código Médico
Objetivo: Padronizar diagnósticos entre diferentes sistemas de codificação
Abordagem:
- Leia
references/medical_coding.md para orientação abrangente
- Use CrossMap para traduzir entre ICD-9, ICD-10, CCS
- Agrupe códigos em categorias clinicamente significativas
- Integre com processamento de conjunto de dados
Caso de Uso 6: Codificação ICD de Texto Clínico
Objetivo: Atribuir automaticamente códigos ICD a partir de notas clínicas
Abordagem:
- Carregar MIMIC-III com texto clínico → Leia
references/datasets.md
- Aplicar tarefa de codificação ICD → Leia
references/tasks.md
- Pré-processar texto clínico → Leia
references/preprocessing.md
- Usar TransformersModel (ClinicalBERT) → Leia
references/models.md
- Avaliar com métricas multi-label → Leia
references/training_evaluation.md
Melhores Práticas
Manipulação de Dados
Sempre divida por paciente: Previne vazamento de dados garantindo que nenhum paciente apareça em múltiplas divisões
from pyhealth.datasets import split_by_patient
train, val, test = split_by_patient(dataset, [0.7, 0.1, 0.2])
Verifique estatísticas do dataset: Compreenda seus dados antes de modelar
print(dataset.stats()) # Pacientes, visitas, eventos, distribuições de códigos
Use pré-processamento apropriado: Combine processadores com tipos de dados (veja references/preprocessing.md)
Desenvolvimento de Modelo
Comece com baselines: Estabeleça desempenho baseline com modelos simples
- Logistic Regression para tarefas binárias/multi-classe
- MLP para baseline inicial de deep learning
Escolha modelos apropriados para tarefa:
- Interpretabilidade necessária → RETAIN, AdaCare
- Recomendação de medicamentos → SafeDrug, GAMENet
- Sequências longas → Transformer
- Relações gráficas → GNN
Monitore métricas de validação: Use métricas apropriadas para tarefa e lide com desbalanceamento de classe
- Classificação binária: AUROC, AUPRC (especialmente para eventos raros)
- Multi-classe: macro-F1 (para desbalanceado), weighted-F1
- Multi-label: Jaccard, example-F1
- Regressão: MAE, RMSE
Implantação Clínica
Calibre previsões: Garanta que probabilidades sejam confiáveis (veja references/training_evaluation.md)
Avalie justiça: Avalie entre grupos demográficos para detectar viés
Quantifique incerteza: Forneça estimativas de confiança para previsões
Interprete previsões: Use pesos de atenção, SHAP ou ChEFER para confiança clínica
Valide minuciosamente: Use conjuntos de teste isolados de diferentes períodos de tempo ou locais
Limitações e Considerações
Requisitos de Dados
- Grandes conjuntos de dados: Modelos de deep learning exigem dados suficientes (milhares de pacientes)
- Qualidade dos dados: Dados ausentes e erros de codificação impactam desempenho
- Consistência temporal: Garanta que divisão treino/teste respeite ordenação temporal quando necessário
Validação Clínica
- Validação externa: Teste em dados de diferentes hospitais/sistemas
- Avaliação prospectiva: Valide em configurações clínicas reais antes da implantação
- Revisão clínica: Tenha clínicos revisando previsões e interpretações
- Considerações éticas: Aborde privacidade (HIPAA/GDPR), justiça e segurança
Recursos Computacionais
- GPU recomendada: Para treinar modelos de deep learning eficientemente
- Requisitos de memória: Grandes conjuntos de dados podem exigir 16GB+ RAM
- Armazenamento: Conjuntos de dados de saúde podem ter 10s-100s de GB
Resolução de Problemas
Problemas Comuns
ImportError para dataset:
- Garanta que arquivos de dataset sejam baixados e caminho esteja correto
- Verifique compatibilidade de versão de PyHealth
Falta de memória:
- Reduza tamanho do batch
- Reduza comprimento da sequência (
max_seq_length)
- Use acumulação de gradiente
- Processe dados em pedaços
Desempenho ruim:
- Verifique desbalanceamento de classe e use métricas apropriadas (AUPRC vs AUROC)
- Verifique pré-processamento (normalização, manipulação de dados ausentes)
- Aumente capacidade de modelo ou épocas de treinamento
- Verifique vazamento de dados em divisão treino/teste
Treinamento lento:
- Use GPU (
device="cuda")
- Aumente tamanho do batch (se memória permitir)
- Reduza comprimento da sequência
- Use modelo mais eficiente (CNN vs Transformer)
Obtendo Ajuda
Exemplo: Fluxo de Trabalho Completo
# Pipeline completo de previsão de mortalidade
from pyhealth.datasets import MIMIC4Dataset
from pyhealth.tasks import mortality_prediction_mimic4_fn
from pyhealth.datasets import split_by_patient, get_dataloader
from pyhealth.models import RETAIN
from pyhealth.trainer import Trainer
# 1. Carregar dataset
print("Carregando dataset MIMIC-IV...")
dataset = MIMIC4Dataset(root="/data/mimic4")
print(dataset.stats())
# 2. Definir tarefa
print("Configurando tarefa de previsão de mortalidade...")
sample_dataset = dataset.set_task(mortality_prediction_mimic4_fn)
print(f"Geradas {len(sample_dataset)} amostras")
# 3. Dividir dados (por paciente para prevenir vazamento)
print("Dividindo dados...")
train_ds, val_ds, test_ds = split_by_patient(
sample_dataset, ratios=[0.7, 0.1, 0.2], seed=42
)
# 4. Criar data loaders
train_loader = get_dataloader(train_ds, batch_size=64, shuffle=True)
val_loader = get_dataloader(val_ds, batch_size=64)
test_loader = get_dataloader(test_ds, batch_size=64)
# 5. Inicializar modelo interpretável
print("Inicializando modelo RETAIN...")
model = RETAIN(
dataset=sample_dataset,
feature_keys=["diagnoses", "procedures", "medications"],
mode="binary",
embedding_dim=128,
hidden_dim=128
)
# 6. Treinar modelo
print("Treinando modelo...")
trainer = Trainer(model=model, device="cuda")
trainer.train(
train_dataloader=train_loader,
val_dataloader=val_loader,
epochs=50,
optimizer="Adam",
learning_rate=1e-3,
weight_decay=1e-5,
monitor="pr_auc_score", # Use AUPRC para dados desbalanceados
monitor_criterion="max",
save_path="./checkpoints/mortality_retain"
)
# 7. Avaliar no conjunto de teste
print("Avaliando no conjunto de teste...")
test_results = trainer.evaluate(
test_loader,
metrics=["accuracy", "precision", "recall", "f1_score",
"roc_auc_score", "pr_auc_score"]
)
print("\nResultados do Teste:")
for metric, value in test_results.items():
print(f" {metric}: {value:.4f}")
# 8. Obter previsões com atenção para interpretação
predictions = trainer.inference(
test_loader,
additional_outputs=["visit_attention", "feature_attention"],
return_patient_ids=True
)
# 9. Analisar paciente de alto risco
high_risk_idx = predictions["y_pred"].argmax()
patient_id = predictions["patient_ids"][high_risk_idx]
visit_attn = predictions["visit_attention"][high_risk_idx]
feature_attn = predictions["feature_attention"][high_risk_idx]
print(f"\nPaciente de alto risco: {patient_id}")
print(f"Escore de risco: {predictions['y_pred'][high_risk_idx]:.3f}")
print(f"Visita mais influente: {visit_attn.argmax()}")
print(f"Características mais importantes: {feature_attn[visit_attn.argmax()].argsort()[-5:]}")
# 10. Salvar modelo para implantação
trainer.save("./models/mortality_retain_final.pt")
print("\nModelo salvo com sucesso!")
Recursos
Para informações detalhadas sobre cada componente, consulte os arquivos de referência abrangentes no diretório references/:
- datasets.md: Estruturas de dados, carregamento e divisão (4.500 palavras)
- medical_coding.md: Tradução de códigos e padronização (3.800 palavras)
- tasks.md: Tarefas de previsão clínica e criação de tarefa personalizada (4.200 palavras)
- models.md: Arquiteturas de modelo e diretrizes de seleção (5.100 palavras)
- preprocessing.md: Processadores de dados e fluxos de trabalho de pré-processamento (4.600 palavras)
- training_evaluation.md: Treinamento, métricas, calibração, interpretabilidade (5.900 palavras)
Documentação abrangente total: ~28.000 palavras em arquivos de referência modulares.
1---2name: pyhealth3description: Kit de ferramentas abrangente de IA em saúde para desenvolver, testar e implantar modelos de machine learning com dados clínicos. Esta habilidade deve ser usada ao trabalhar com registros eletrônicos de saúde (EHR), tarefas de previsão clínica (mortalidade, readmissão, recomendação de medicamentos), sistemas de codificação médica (ICD, NDC, ATC), sinais fisiológicos (EEG, ECG), conjuntos de dados de saúde (MIMIC-III/IV, eICU, OMOP), ou implementar modelos de deep learning para aplicações de saúde (RETAIN, SafeDrug, Transformer, GNN).4---56# PyHealth: Kit de Ferramentas de IA em Saúde78## Visão Geral910PyHealth é uma biblioteca Python abrangente para IA em saúde que oferece ferramentas especializadas, modelos e conjuntos de dados para machine learning clínico. Use esta habilidade ao desenvolver modelos de previsão em saúde, processar dados clínicos, trabalhar com sistemas de codificação médica ou implantar soluções de IA em ambientes de saúde.1112## Quando Usar Esta Habilidade1314Invoque esta habilidade quando:1516- **Trabalhar com conjuntos de dados de saúde**: MIMIC-III, MIMIC-IV, eICU, OMOP, dados EEG de sono, imagens médicas17- **Tarefas de previsão clínica**: Previsão de mortalidade, readmissão hospitalar, tempo de permanência, recomendação de medicamentos18- **Codificação médica**: Tradução entre sistemas de códigos ICD-9/10, NDC, RxNorm, ATC19- **Processamento de dados clínicos**: Eventos sequenciais, sinais fisiológicos, texto clínico, imagens médicas20- **Implementar modelos de saúde**: RETAIN, SafeDrug, GAMENet, StageNet, Transformer para EHR21- **Avaliar modelos clínicos**: Métricas de justiça, calibração, interpretabilidade, quantificação de incerteza2223## Capacidades Principais2425PyHealth opera por meio de um pipeline modular de 5 etapas otimizado para IA em saúde:26271. **Carregamento de Dados**: Acesso a 10+ conjuntos de dados de saúde com interfaces padronizadas282. **Definição de Tarefas**: Aplicar 20+ tarefas de previsão clínica predefinidas ou criar tarefas personalizadas293. **Seleção de Modelo**: Escolher entre 33+ modelos (baselines, deep learning, específicos de saúde)304. **Treinamento**: Treinar com checkpoint automático, monitoramento e avaliação315. **Implantação**: Calibrar, interpretar e validar para uso clínico3233**Desempenho**: 3x mais rápido que pandas para processamento de dados de saúde3435## Fluxo de Trabalho de Início Rápido3637```python38from pyhealth.datasets import MIMIC4Dataset39from pyhealth.tasks import mortality_prediction_mimic4_fn40from pyhealth.datasets import split_by_patient, get_dataloader41from pyhealth.models import Transformer42from pyhealth.trainer import Trainer4344# 1. Carregar dataset e definir tarefa45dataset = MIMIC4Dataset(root="/path/to/data")46sample_dataset = dataset.set_task(mortality_prediction_mimic4_fn)4748# 2. Dividir dados49train, val, test = split_by_patient(sample_dataset, [0.7, 0.1, 0.2])5051# 3. Criar data loaders52train_loader = get_dataloader(train, batch_size=64, shuffle=True)53val_loader = get_dataloader(val, batch_size=64, shuffle=False)54test_loader = get_dataloader(test, batch_size=64, shuffle=False)5556# 4. Inicializar e treinar modelo57model = Transformer(58 dataset=sample_dataset,59 feature_keys=["diagnoses", "medications"],60 mode="binary",61 embedding_dim=12862)6364trainer = Trainer(model=model, device="cuda")65trainer.train(66 train_dataloader=train_loader,67 val_dataloader=val_loader,68 epochs=50,69 monitor="pr_auc_score"70)7172# 5. Avaliar73results = trainer.evaluate(test_loader)74```7576## Documentação Detalhada7778Esta habilidade inclui documentação de referência abrangente organizada por funcionalidade. Leia arquivos de referência específicos conforme necessário:7980### 1. Conjuntos de Dados e Estruturas de Dados8182**Arquivo**: `references/datasets.md`8384**Leia quando:**85- Carregar conjuntos de dados de saúde (MIMIC, eICU, OMOP, EEG de sono, etc.)86- Compreender estruturas de dados Event, Patient, Visit87- Processar diferentes tipos de dados (EHR, sinais, imagens, texto)88- Dividir dados para treinamento/validação/teste89- Trabalhar com SampleDataset para formatação específica de tarefa9091**Tópicos-chave:**92- Estruturas de dados principais (Event, Patient, Visit)93- 10+ conjuntos de dados disponíveis (EHR, sinais fisiológicos, imagem, texto)94- Carregamento e iteração de dados95- Estratégias de divisão treino/validação/teste96- Otimização de desempenho para grandes conjuntos de dados9798### 2. Tradução de Codificação Médica99100**Arquivo**: `references/medical_coding.md`101102**Leia quando:**103- Traduzir entre sistemas de codificação médica104- Trabalhar com códigos de diagnóstico (ICD-9-CM, ICD-10-CM, CCS)105- Processar códigos de medicamentos (NDC, RxNorm, ATC)106- Padronizar códigos de procedimento (ICD-9-PROC, ICD-10-PROC)107- Agrupar códigos em categorias clínicas108- Lidar com classificações hierárquicas de medicamentos109110**Tópicos-chave:**111- InnerMap para pesquisas dentro do sistema112- CrossMap para tradução entre sistemas113- Sistemas de codificação suportados (ICD, NDC, ATC, CCS, RxNorm)114- Padronização de códigos e travessia de hierarquia115- Classificação de medicamentos por classe terapêutica116- Integração com conjuntos de dados117118### 3. Tarefas de Previsão Clínica119120**Arquivo**: `references/tasks.md`121122**Leia quando:**123- Definir objetivos de previsão clínica124- Usar tarefas predefinidas (mortalidade, readmissão, recomendação de medicamentos)125- Trabalhar com tarefas baseadas em EHR, sinais, imagem ou texto126- Criar tarefas de previsão personalizadas127- Configurar esquemas de entrada/saída para modelos128- Aplicar lógica de filtragem específica de tarefa129130**Tópicos-chave:**131- 20+ tarefas clínicas predefinidas132- Tarefas EHR (mortalidade, readmissão, tempo de permanência, recomendação de medicamentos)133- Tarefas de sinais (estágio de sono, análise EEG, detecção de convulsões)134- Tarefas de imagem (classificação COVID-19 raio-X do tórax)135- Tarefas de texto (codificação médica, classificação de especialidade)136- Padrões de criação de tarefa personalizada137138### 4. Modelos e Arquiteturas139140**Arquivo**: `references/models.md`141142**Leia quando:**143- Selecionar modelos para previsão clínica144- Compreender arquiteturas e capacidades de modelos145- Escolher entre modelos de propósito geral e específicos de saúde146- Implementar modelos interpretáveis (RETAIN, AdaCare)147- Trabalhar com recomendação de medicamentos (SafeDrug, GAMENet)148- Usar redes neurais gráficas para saúde149- Configurar hiperparâmetros de modelo150151**Tópicos-chave:**152- 33+ modelos disponíveis153- Propósito geral: Logistic Regression, MLP, CNN, RNN, Transformer, GNN154- Específicos de saúde: RETAIN, SafeDrug, GAMENet, StageNet, AdaCare155- Seleção de modelo por tipo de tarefa e tipo de dados156- Considerações de interpretabilidade157- Requisitos computacionais158- Diretrizes de sintonização de hiperparâmetros159160### 5. Pré-processamento de Dados161162**Arquivo**: `references/preprocessing.md`163164**Leia quando:**165- Pré-processar dados clínicos para modelos166- Lidar com eventos sequenciais e dados de séries temporais167- Processar sinais fisiológicos (EEG, ECG)168- Normalizar valores de laboratório e sinais vitais169- Preparar rótulos para diferentes tipos de tarefas170- Construir vocabulários de recursos171- Gerenciar dados ausentes e outliers172173**Tópicos-chave:**174- 15+ tipos de processador175- Processamento de sequências (padding, truncação)176- Processamento de sinais (filtragem, segmentação)177- Extração e codificação de características178- Processadores de rótulo (binário, multi-classe, multi-label, regressão)179- Pré-processamento de texto e imagem180- Fluxos de trabalho de pré-processamento comuns181182### 6. Treinamento e Avaliação183184**Arquivo**: `references/training_evaluation.md`185186**Leia quando:**187- Treinar modelos com a classe Trainer188- Avaliar desempenho de modelo189- Calcular métricas clínicas190- Avaliar justiça de modelo entre grupos demográficos191- Calibrar previsões para confiabilidade192- Quantificar incerteza de previsão193- Interpretar previsões de modelo194- Preparar modelos para implantação clínica195196**Tópicos-chave:**197- Classe Trainer (train, evaluate, inference)198- Métricas para tarefas binária, multi-classe, multi-label, regressão199- Métricas de justiça para avaliação de viés200- Métodos de calibração (Platt scaling, temperature scaling)201- Quantificação de incerteza (conformal prediction, MC dropout)202- Ferramentas de interpretabilidade (visualização de atenção, SHAP, ChEFER)203- Exemplo de pipeline de treinamento completo204205## Instalação206207```bash208uv pip install pyhealth209```210211**Requisitos:**212- Python ≥ 3.7213- PyTorch ≥ 1.8214- NumPy, pandas, scikit-learn215216## Casos de Uso Comuns217218### Caso de Uso 1: Previsão de Mortalidade em UTI219220**Objetivo**: Prever mortalidade de pacientes em unidade de terapia intensiva221222**Abordagem:**2231. Carregar dataset MIMIC-IV → Leia `references/datasets.md`2242. Aplicar tarefa de previsão de mortalidade → Leia `references/tasks.md`2253. Selecionar modelo interpretável (RETAIN) → Leia `references/models.md`2264. Treinar e avaliar → Leia `references/training_evaluation.md`2275. Interpretar previsões para uso clínico → Leia `references/training_evaluation.md`228229### Caso de Uso 2: Recomendação Segura de Medicamentos230231**Objetivo**: Recomendar medicamentos evitando interações medicamentosas232233**Abordagem:**2341. Carregar dataset EHR (MIMIC-IV ou OMOP) → Leia `references/datasets.md`2352. Aplicar tarefa de recomendação de medicamentos → Leia `references/tasks.md`2363. Usar modelo SafeDrug com restrições DDI → Leia `references/models.md`2374. Pré-processar códigos de medicamentos → Leia `references/medical_coding.md`2385. Avaliar com métricas multi-label → Leia `references/training_evaluation.md`239240### Caso de Uso 3: Previsão de Readmissão Hospitalar241242**Objetivo**: Identificar pacientes em risco de readmissão em 30 dias243244**Abordagem:**2451. Carregar dados EHR multi-site (eICU ou OMOP) → Leia `references/datasets.md`2462. Aplicar tarefa de previsão de readmissão → Leia `references/tasks.md`2473. Lidar com desbalanceamento de classes no pré-processamento → Leia `references/preprocessing.md`2484. Treinar modelo Transformer → Leia `references/models.md`2495. Calibrar previsões e avaliar justiça → Leia `references/training_evaluation.md`250251### Caso de Uso 4: Diagnóstico de Distúrbio do Sono252253**Objetivo**: Classificar estágios do sono a partir de sinais EEG254255**Abordagem:**2561. Carregar dataset de EEG de sono (SleepEDF, SHHS) → Leia `references/datasets.md`2572. Aplicar tarefa de estágio de sono → Leia `references/tasks.md`2583. Pré-processar sinais EEG (filtragem, segmentação) → Leia `references/preprocessing.md`2594. Treinar modelo CNN ou RNN → Leia `references/models.md`2605. Avaliar desempenho por estágio → Leia `references/training_evaluation.md`261262### Caso de Uso 5: Tradução de Código Médico263264**Objetivo**: Padronizar diagnósticos entre diferentes sistemas de codificação265266**Abordagem:**2671. Leia `references/medical_coding.md` para orientação abrangente2682. Use CrossMap para traduzir entre ICD-9, ICD-10, CCS2693. Agrupe códigos em categorias clinicamente significativas2704. Integre com processamento de conjunto de dados271272### Caso de Uso 6: Codificação ICD de Texto Clínico273274**Objetivo**: Atribuir automaticamente códigos ICD a partir de notas clínicas275276**Abordagem:**2771. Carregar MIMIC-III com texto clínico → Leia `references/datasets.md`2782. Aplicar tarefa de codificação ICD → Leia `references/tasks.md`2793. Pré-processar texto clínico → Leia `references/preprocessing.md`2804. Usar TransformersModel (ClinicalBERT) → Leia `references/models.md`2815. Avaliar com métricas multi-label → Leia `references/training_evaluation.md`282283## Melhores Práticas284285### Manipulação de Dados2862871. **Sempre divida por paciente**: Previne vazamento de dados garantindo que nenhum paciente apareça em múltiplas divisões288 ```python289 from pyhealth.datasets import split_by_patient290 train, val, test = split_by_patient(dataset, [0.7, 0.1, 0.2])291 ```2922932. **Verifique estatísticas do dataset**: Compreenda seus dados antes de modelar294 ```python295 print(dataset.stats()) # Pacientes, visitas, eventos, distribuições de códigos296 ```2972983. **Use pré-processamento apropriado**: Combine processadores com tipos de dados (veja `references/preprocessing.md`)299300### Desenvolvimento de Modelo3013021. **Comece com baselines**: Estabeleça desempenho baseline com modelos simples303 - Logistic Regression para tarefas binárias/multi-classe304 - MLP para baseline inicial de deep learning3053062. **Escolha modelos apropriados para tarefa**:307 - Interpretabilidade necessária → RETAIN, AdaCare308 - Recomendação de medicamentos → SafeDrug, GAMENet309 - Sequências longas → Transformer310 - Relações gráficas → GNN3113123. **Monitore métricas de validação**: Use métricas apropriadas para tarefa e lide com desbalanceamento de classe313 - Classificação binária: AUROC, AUPRC (especialmente para eventos raros)314 - Multi-classe: macro-F1 (para desbalanceado), weighted-F1315 - Multi-label: Jaccard, example-F1316 - Regressão: MAE, RMSE317318### Implantação Clínica3193201. **Calibre previsões**: Garanta que probabilidades sejam confiáveis (veja `references/training_evaluation.md`)3213222. **Avalie justiça**: Avalie entre grupos demográficos para detectar viés3233243. **Quantifique incerteza**: Forneça estimativas de confiança para previsões3253264. **Interprete previsões**: Use pesos de atenção, SHAP ou ChEFER para confiança clínica3273285. **Valide minuciosamente**: Use conjuntos de teste isolados de diferentes períodos de tempo ou locais329330## Limitações e Considerações331332### Requisitos de Dados333334- **Grandes conjuntos de dados**: Modelos de deep learning exigem dados suficientes (milhares de pacientes)335- **Qualidade dos dados**: Dados ausentes e erros de codificação impactam desempenho336- **Consistência temporal**: Garanta que divisão treino/teste respeite ordenação temporal quando necessário337338### Validação Clínica339340- **Validação externa**: Teste em dados de diferentes hospitais/sistemas341- **Avaliação prospectiva**: Valide em configurações clínicas reais antes da implantação342- **Revisão clínica**: Tenha clínicos revisando previsões e interpretações343- **Considerações éticas**: Aborde privacidade (HIPAA/GDPR), justiça e segurança344345### Recursos Computacionais346347- **GPU recomendada**: Para treinar modelos de deep learning eficientemente348- **Requisitos de memória**: Grandes conjuntos de dados podem exigir 16GB+ RAM349- **Armazenamento**: Conjuntos de dados de saúde podem ter 10s-100s de GB350351## Resolução de Problemas352353### Problemas Comuns354355**ImportError para dataset**:356- Garanta que arquivos de dataset sejam baixados e caminho esteja correto357- Verifique compatibilidade de versão de PyHealth358359**Falta de memória**:360- Reduza tamanho do batch361- Reduza comprimento da sequência (`max_seq_length`)362- Use acumulação de gradiente363- Processe dados em pedaços364365**Desempenho ruim**:366- Verifique desbalanceamento de classe e use métricas apropriadas (AUPRC vs AUROC)367- Verifique pré-processamento (normalização, manipulação de dados ausentes)368- Aumente capacidade de modelo ou épocas de treinamento369- Verifique vazamento de dados em divisão treino/teste370371**Treinamento lento**:372- Use GPU (`device="cuda"`)373- Aumente tamanho do batch (se memória permitir)374- Reduza comprimento da sequência375- Use modelo mais eficiente (CNN vs Transformer)376377### Obtendo Ajuda378379- **Documentação**: https://pyhealth.readthedocs.io/380- **GitHub Issues**: https://github.com/sunlabuiuc/PyHealth/issues381- **Tutoriais**: 7 tutoriais principais + 5 pipelines práticos disponíveis online382383## Exemplo: Fluxo de Trabalho Completo384385```python386# Pipeline completo de previsão de mortalidade387from pyhealth.datasets import MIMIC4Dataset388from pyhealth.tasks import mortality_prediction_mimic4_fn389from pyhealth.datasets import split_by_patient, get_dataloader390from pyhealth.models import RETAIN391from pyhealth.trainer import Trainer392393# 1. Carregar dataset394print("Carregando dataset MIMIC-IV...")395dataset = MIMIC4Dataset(root="/data/mimic4")396print(dataset.stats())397398# 2. Definir tarefa399print("Configurando tarefa de previsão de mortalidade...")400sample_dataset = dataset.set_task(mortality_prediction_mimic4_fn)401print(f"Geradas {len(sample_dataset)} amostras")402403# 3. Dividir dados (por paciente para prevenir vazamento)404print("Dividindo dados...")405train_ds, val_ds, test_ds = split_by_patient(406 sample_dataset, ratios=[0.7, 0.1, 0.2], seed=42407)408409# 4. Criar data loaders410train_loader = get_dataloader(train_ds, batch_size=64, shuffle=True)411val_loader = get_dataloader(val_ds, batch_size=64)412test_loader = get_dataloader(test_ds, batch_size=64)413414# 5. Inicializar modelo interpretável415print("Inicializando modelo RETAIN...")416model = RETAIN(417 dataset=sample_dataset,418 feature_keys=["diagnoses", "procedures", "medications"],419 mode="binary",420 embedding_dim=128,421 hidden_dim=128422)423424# 6. Treinar modelo425print("Treinando modelo...")426trainer = Trainer(model=model, device="cuda")427trainer.train(428 train_dataloader=train_loader,429 val_dataloader=val_loader,430 epochs=50,431 optimizer="Adam",432 learning_rate=1e-3,433 weight_decay=1e-5,434 monitor="pr_auc_score", # Use AUPRC para dados desbalanceados435 monitor_criterion="max",436 save_path="./checkpoints/mortality_retain"437)438439# 7. Avaliar no conjunto de teste440print("Avaliando no conjunto de teste...")441test_results = trainer.evaluate(442 test_loader,443 metrics=["accuracy", "precision", "recall", "f1_score",444 "roc_auc_score", "pr_auc_score"]445)446447print("\nResultados do Teste:")448for metric, value in test_results.items():449 print(f" {metric}: {value:.4f}")450451# 8. Obter previsões com atenção para interpretação452predictions = trainer.inference(453 test_loader,454 additional_outputs=["visit_attention", "feature_attention"],455 return_patient_ids=True456)457458# 9. Analisar paciente de alto risco459high_risk_idx = predictions["y_pred"].argmax()460patient_id = predictions["patient_ids"][high_risk_idx]461visit_attn = predictions["visit_attention"][high_risk_idx]462feature_attn = predictions["feature_attention"][high_risk_idx]463464print(f"\nPaciente de alto risco: {patient_id}")465print(f"Escore de risco: {predictions['y_pred'][high_risk_idx]:.3f}")466print(f"Visita mais influente: {visit_attn.argmax()}")467print(f"Características mais importantes: {feature_attn[visit_attn.argmax()].argsort()[-5:]}")468469# 10. Salvar modelo para implantação470trainer.save("./models/mortality_retain_final.pt")471print("\nModelo salvo com sucesso!")472```473474## Recursos475476Para informações detalhadas sobre cada componente, consulte os arquivos de referência abrangentes no diretório `references/`:477478- **datasets.md**: Estruturas de dados, carregamento e divisão (4.500 palavras)479- **medical_coding.md**: Tradução de códigos e padronização (3.800 palavras)480- **tasks.md**: Tarefas de previsão clínica e criação de tarefa personalizada (4.200 palavras)481- **models.md**: Arquiteturas de modelo e diretrizes de seleção (5.100 palavras)482- **preprocessing.md**: Processadores de dados e fluxos de trabalho de pré-processamento (4.600 palavras)483- **training_evaluation.md**: Treinamento, métricas, calibração, interpretabilidade (5.900 palavras)484485**Documentação abrangente total**: ~28.000 palavras em arquivos de referência modulares.