Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Suporte a decisões clínicas para detecção de lacunas de atendimento

Casos de uso: Saúde conectada, modernização, visualização única

Setores: Assistência médica, Ciências da Vida

Produtos: MongoDB Atlas, MongoDB Atlas Charts, MongoDB Time Series, MongoDB Queryable Encryption

Os provedores de assistência médica operam sob rigorosos requisitos de qualidade. Agências federais e seguradoras, incluindo o CMS e os principais planos de saúde, exigem que os provedores meçam, acompanhem e relatem a qualidade do atendimento que oferecem aos pacientes. O compliance com esses mandatos acarreta consequências financeiras, como reembolsos mais altos para organizações que atendem a esses padrões e penalidades para aquelas que não o fazem.

HEDIS define os requisitos de qualidade. Este conjunto de medições especifica as atividades clínicas que os provedores devem concluir para cada paciente, por exemplo, um HbA1c, uma avaliação renal e um exame oftalmológico diabético para pacientes diabéticos. Quando um paciente não recebe uma atividade necessária dentro do período de medição, uma lacuna de cuidado se abre.

As lacunas de atendimento não são apenas um problema de compliance. Se não forem detectadas, elas levam a piores resultados para o paciente, maiores taxas de readmissão hospitalar, progressão da doença e complicações evitáveis. Eles também resultam em classificações de estrelas CMS mais baixas e perdas de reembolsos sob contratos em que os provedores são pagos com base nos resultados do paciente, em vez do volume de serviços entregues.

A maioria das organizações sabe que existem lacunas nos cuidados. No entanto, eles enfrentam um desafio operacional. Embora os armazenamentos de dados FHIR permitam que softwares médicos e sistemas EHR se comuniquem e compartilhem dados com segurança, eles não são otimizados para querys clínicas operacionais em tempo real. Sob carga de trabalho ativas, eles encontram gargalos previsíveis, como alta latência de query, baixo desempenho em agregações de recurso aninhados, falta de suporte nativo a série temporal e custo crescentes com o aumento do volume de query. Como resultado, os coordenadores de cuidados não conseguem obter dados desses sistemas com rapidez suficiente para acompanhar a compliance do HEDIS, fechar lacunas de pacientes e intervir a tempo.

Para superar esses gargalos de desempenho, esta solução apresenta um sistema CDS criado em uma base de dados FHIR e alimentado pelo MongoDB Atlas como a camada operacional. Nessa arquitetura, o FHIR lida com a interoperabilidade e a troca de dados, enquanto o MongoDB Atlas alimenta o monitoramento de sinais vitais em tempo real, o cálculo de lacunas de atendimento HEDIS e os fluxos de trabalho clínicos. Com esse framework, os coordenadores de atendimento obtêm acesso aos dados de baixa latência e suporte à decisão em tempo real no ponto de atendimento.

Benefícios do suporte à decisão clínica em tempo real com o MongoDB

Figura 1. Benefícios do suporte à decisão clínica em tempo real com o MongoDB

Esta solução ingere dados clínicos de dispositivos vestíveis e sistemas de saúde, os roteia por meio de um armazenamento de dados e uma camada operacional e fornece suporte à decisão em tempo real aos coordenadores de cuidados, conforme mostrado no diagrama de arquitetura abaixo.

Arquitetura de alto nível

Figura 2. Arquitetura de alto nível

A camada de armazenamento de dados FHIR contém os recursos FHIR R4 brutos, que incluem:

  • Patient

  • Condition

  • MedicationRequest

  • Observation

  • Encounter

  • AllergyIntolerance

Essa camada lida com a validação de conformidade e a normalização R4, servindo como a fonte canônica da verdade para interoperabilidade sob os requisitos de compliance HIPAA e HITRUST.

O MongoDB Atlas fornece a camada operacional. Ele armazena documentos desnormalizados e dados de série temporal otimizados para as querys, agregações e fluxos de trabalho em tempo real necessários para o suporte à decisão clínica.

Para transformar esses dados clínicos armazenados em ações em tempo real, a plataforma orquestra os seguintes componentes:

  • O MongoDB Atlas serve como base operacional para armazenar todos os dados clínicos em um esquema polimórfico flexível.

  • O pipeline de geração de dados lê do armazenamento de dados FHIR e preenche o MongoDB Atlas com registros de pacientes, sinais vitais e regras CDS.

  • O sistema incorpora os módulos Python AlertEngine e QualityEngine para oferecer suporte a decisões clínicas. O AlertEngine monitora os sinais vitais ao vivo para risco clínico imediato, e o QualityEngine avalia o histórico clínico para lacunas de compliance do HEDIS. Ambos os mecanismos gravam seus resultados no documento patient_360 no MongoDB Atlas.

  • Por fim, o fluxo de trabalho de lacunas de cuidados entrega os resultados do mecanismo diretamente aos coordenadores de cuidados. Por exemplo, quando o AlertEngine dispara um alerta crítico, o fluxo de trabalho de lacunas de cuidados prioriza as lacunas abertas para que os coordenadores possam ver os casos urgentes primeiro.

As seções a seguir descrevem cada parte desse fluxo.

Projetado para cargas de trabalho complexas de saúde, o MongoDB Atlas substitui sistemas legados por um ecossistema de dados nativo e altamente otimizado. Abaixo está uma visão geral das funcionalidades principais que permitem que a plataforma forneça suporte à decisão em tempo real.

Atlas Principais funcionalidades

Figura 3. Principais funcionalidades do Atlas

Document model flexível: o patient_360 collection armazena um registro completo do paciente em um único documento, incluindo dados demográficos, condições, medicamentos, exames, resumos de sinais vitais, lacunas de cuidados, alertas, limites personalizados e proveniência de dados. Um único documento responde a perguntas que exigiriam junções de vários recursos em um armazenamento FHIR.

Coleções de séries temporais: A coleção synthetic_vitals armazena dados de dispositivos vestíveis usando as coleções de séries temporais nativas do MongoDB. Essas coleções fornecem agrupamento automático de dados, queries de faixa eficientes e armazenamento criado especificamente para dados de alta frequência e ordenados por tempo.

Fluxos de alteração: A plataforma usa fluxos de alteração para React a novos sinais vitais em tempo real. Quando uma leitura chega, o sistema avalia as regras do CDS e gera alertas clínicos sem pesquisa.

Queryable Encryption: O MongoDB Queryable Encryption protege os campos confidenciais do paciente em repouso. O aplicativo query campos criptografados PHI sem expor texto simples, atendendo aos requisitos da HIPAA e eliminando a necessidade de uma camada de criptografia separada.

Pipeline de agregação: este framework lida com agregações de dashboard, cálculo de lacunas de cuidado, análise de tendência de sinais vitais e pontuação HEDIS, resolvendo query clínicas complexas em milissegundos.

Estrutura para IA e análise: o documento patient_360 fornece fatos clínicos normalizados, evidências estruturadas e proveniência de metadados para pipelines de IA e análise downstream sem transformação adicional.

Após a inicialização, esta solução usa um pipeline de várias etapas para semear e ativar o sistema CDS, ilustrado abaixo.

Pipeline de geração de dados

Figura 4. Pipeline de geração de dados

O pipeline de geração de dados impulsiona a sequência de inicialização que cria dados clínicos sintéticos e materializados, calcula limites personalizados e lacunas de atendimento e inicia o monitoramento em tempo real. O pipeline funciona da seguinte forma:

  1. Gera pacotes de pacientes FHIR: Cria pacotes de transações FHIR R4 incluindo condições, medicamentos, observações de laboratório, encontros e alergias. Ele armazena esses pacotes no armazenamento de dados FHIR, que serve como camada de interoperabilidade.

  2. Gera históricos de sinais vitais: produz uma série temporal de 24horas de sinais vitais por paciente, representando padrões fisiológicos normais, deteriorados ou agudos. Ele armazena os dados na coleção de séries temporais synthetic_vitals.

  3. Materializa documentos patient_360: transforma cada pacote FHIR em um documento patient_360 desnormalizado no MongoDB Atlas. A transformação inclui um bloco data_provenance que se vincula ao registro FHIR de origem.

  4. Regras de CDS de sementes: Insere definições de regras de suporte à decisão clínica na coleção cds_rules.

  5. Calcula limites personalizados: calcula limites de sinais vitais por paciente com base em medicamentos e condições ativas. Ele armazena esses resultados no documento patient_360.

  6. Avalia as regras de CDS: Executa o AlertEngine em relação aos sinais vitais atuais e grava alertas gerados na coleção alerts.

  7. Calcula lacunas de cuidados HEDIS: executa o QualityEngine em relação ao histórico clínico de cada paciente e grava os resultados estruturados da lacuna de cuidados no documento patient_360.

  8. Atribuições do provedor de sementes: Gera relacionamentos de atribuição provedor-paciente na coleção attributions, determinando quais provedores recebem resultados e alertas de lacunas.

  9. Inicia o monitoramento em tempo real: ativa o worker de simulação de sinais vitais e começa a fazer streaming de dados de sinais vitais ao vivo para a plataforma clínica por meio de eventos enviados pelo servidor.

Os mecanismos CDS analisam os dados do paciente para fornecer perspicácia acionável para as equipes de atendimento. Esta solução separa o monitoramento clínico do cálculo da medida de qualidade em dois mecanismos independentes. Este padrão arquitetônico adere à iniciativa Da Vinci, um programa acelerador HL7 FHIR para interoperabilidade de atendimento, que recomenda a dissociação de alertas em tempo real e lógica de lacunas HEDIS.

O AlertEngine avalia os sinais vitais de entrada em relação às regras do CDS e gera alertas clínicos. Ele verifica as seguintes regras do CDS:

  • Taquicardia com bloqueador beta: avalia a frequência cardíaca acima do limite personalizado.

  • Hipoglicemia multifatorial: Verifica as condições agregadas para pico de frequência cardíaca, diabetes tipo 2, insulina, idade 65 ou mais e baixa atividade.

  • Acidose metabólica da doença renal crônica: monitora a frequência respiratória acima de 22 sustentada por 30 minutos.

  • Aviso de sepse: controla a presença de três ou mais dos critérios SIRS modificados, com diabetes como amplificador de risco.

  • Contexto comparativo: avalia o perfil de medicação e condição do paciente para produzir diferentes avisos de gravidade.

O AlertEngine verifica violações sustentadas, não leituras únicas. Ele usa uma janela de linha de base de 2horas para detecção de picos e uma janela de tendência de 4horas para deterioração. O mecanismo aplica contexto a cada alerta, o que significa que a mesma leitura de frequência cardíaca gera um alerta crítico para um paciente com betabloqueador e um sinalizador de baixa gravidade para um paciente saudável.

O QualityEngine determina se cada paciente recebeu o atendimento clínico necessário dentro de um período de medição HEDIS. O mecanismo visa pacientes com diabetes tipo 2 e DRC, e avalia seus históricos clínicos em relação às medidas HEDIS designadas.

A tabela a seguir mostra essas medidas HEDIS:

medir
Código
Evidência Necessária

Cuidados abrangentes com diabetes — Teste de HbA1c

CDC-HBA

Resultado do laboratório HbA1c

Avaliação da saúde renal para diabetes

KED

Resultados de laboratório de eGFR e uACR

Controlando a pressão alta

CBP

Encontro de qualificação

Terapia com estatina para pacientes com diabetes

SPD

Resultado do laboratório de colesterol total

Exame oftalmológico para pacientes com diabetes

EED

Encontro de qualificação

Os coordenadores de cuidados usam os resultados QualityEngine para identificar quais pacientes precisam de intervenção e priorizar o alcance antes que as lacunas afetem as pontuações de qualidade e os reembolsos. Cada resultado inclui status de lacuna, evidência encontrada, evidência ausente, ação recomendada, pontuação de prioridade e uma data de recálculo. Além disso, o mecanismo expõe um ponto de extremidade compatível com FHIR que retorna um pacote MeasureReport para garantir a interoperabilidade com os sistemas pagadores.

O fluxo de trabalho de lacunas de cuidado serve como o processo sistemático que as organizações de saúde usam para identificar, acompanhar e resolver discrepâncias entre o cuidado clínico real de um paciente e as diretrizes médicas estabelecidas. A detecção de lacunas de cuidado segue um caminho estruturado da identificação ao fechamento, consistindo nestas ações:

  • Avaliar: O QualityEngine avalia o histórico clínico de cada paciente em relação aos critérios de medida HEDIS.

  • Gravar: O sistema grava lacunas abertas no documento patient_360, juntamente com suas evidências de suporte, ação recomendada e prioridade.

  • Revisar: os coordenadores de cuidados revisam as lacunas abertas na plataforma clínica, classificadas por prioridade e período de atraso.

  • Intervir: Para lacunas acionáveis, como KED e CDC-HBA, a plataforma abre um espaço de trabalho de intervenção estruturado onde o coordenador solicita laboratórios, registra a conclusão ou agenda o acompanhamento.

  • Fechar: Quando a intervenção for concluída, o status da lacuna será atualizado no documento patient_360 e o QualityEngine será reavaliado no próximo ciclo.

  • Escalar: quando o AlertEngine detecta um alerta clínico, ele eleva a prioridade das lacunas abertas relacionadas e notifica a equipe de atendimento. Alertas sem uma lacuna relacionada, como um aviso de sepse, são encaminhados diretamente para a equipe de atendimento como notificações clínicas independentes.

Um pacote de transações FHIR R4 para um único paciente contém mais de 20 recursos individuais. Para determinar se um paciente com mais de 65 anos com diabetes tipo 2 que toma insulina corre o risco de hipoglicemia, o sistema deve:

  • query o armazenar FHIR para recuperar um recurso Patient.

  • Correlacione esse recurso com vários recursos Condition e MedicationRequest.

  • Aplicar lógica de regra em todo o resultado combinado.

Em cargas de trabalho de produção ao vivo, essa travessia adiciona latência e produz tempos de query imprevisíveis. Por exemplo, os pacientes nesta solução podem ter até cinco condições ativas, seis recursos de medicação, oito recursos de observação de laboratório, um encontro e uma nota clínica, todos os quais uma regra CDS deve avaliar.

Para ignorar essa sobrecarga, o documento patient_360 consolida esses dados fragmentados em um único documento, eliminando completamente a travessia. Todos os dados clínicos de um único paciente estão em um documento estruturado da seguinte forma:

  • patient_id: Identificador exclusivo do paciente vinculado ao registro FHIR de origem.

  • demographics: Idade, sexo e campos PHI criptografados (nome, MRN, data de nascimento).

  • conditions: diagnósticos ativos com códigos SNOMED e datas de início.

  • medications: Prescrições ativas com dose, via e frequência.

  • labs: Resultados com valores, unidades e faixas de referência.

  • flags: Booleans computados derivados de condições e medicamentos.

  • personalized_thresholds: Limites de sinais vitais por paciente com base em medicamentos ativos.

  • vitals_summary: Leituras mais recentes, médias de 4horas e tendências de 24horas.

  • active_alerts: Alertas CDS gerados pelo AlertEngine.

  • care_gapsResultados da medição HEDIS calculados pelo QualityEngine.

  • data_provenance: coleção de origem FHIR, ID do paciente e metadados de materialização.

No documento patient_360, cada condição representa uma entrada no array conditions, enquanto cada medicação representa uma entrada no array medications. Conforme mostrado abaixo, o documento armazena entidades clínicas na forma como são usadas, em vez de dividir em tabelas separadas:

{
"conditions": [
{
"code": "44054006",
"display": "Type 2 diabetes mellitus",
"clinical_status": "active",
"onset_date": "2017-10-21T21:29:59.716351+00:00"
},
{
"code": "433144002",
"display": "Chronic kidney disease stage 3",
"clinical_status": "active",
"onset_date": "2023-09-12T21:29:59.716372+00:00"
}
],
"medications": [
{
"display": "Insulin glargine 100 units/mL injection",
"dose": "20.0 units",
"route": "subcutaneous",
"frequency": "once daily at bedtime",
"status": "active"
},
{
"display": "Atenolol 50 mg oral tablet",
"dose": "50.0 mg",
"route": "oral",
"frequency": "once daily",
"status": "active"
}
]
}

O pacote FHIR contém dados de interoperabilidade padrão, enquanto o documento patient_360 incorpora campos operacionais que o FHIR não define, incluindo sinalizadores clínicos, resultados de lacunas de atendimento, limites personalizados e alerta ativos.

Por exemplo, o pipeline de materialização, incorporado ao pipeline de geração de dados mais amplo, calcula sinalizadores clínicos do pacote FHIR e os grava diretamente no documento patient_360. O AlertEngine lê esses sinalizadores para determinar quais regras CDS se aplicam a um paciente, incluindo:

  • flags.has_beta_blocker: Ativa a regra de frequência cardíaca do betabloqueador.

  • flags.has_insulin: Ativa a regra de hipoglicemia multifatorial.

  • flags.has_ckd: Ativa as regras de acidose metabólica e respiratória da DRC.

  • flags.condition_codes: Códigos SNOMED para todas as condições ativas.

Os resultados da lacuna de cuidado usam a mesma abordagem. O pipeline de materialização calcula os resultados da lacuna de cuidado e os anexa diretamente ao documento patient_360. Cada medida HEDIS calculada é armazenada no array care_gaps junto com seus status, priority, evidence e recommended_action associados. Ao contrário do FHIR padrão, o document model armazena essas informações junto com o registro clínico do paciente. Um exemplo dessa estrutura é mostrado abaixo:

{
"care_gaps": [
{
"hedis_measure": "CDC-HBA",
"measure_name": "Comprehensive Diabetes Care — HbA1c Testing",
"status": "open",
"days_overdue": 34,
"priority": "high",
"evidence": {
"found": ["HbA1c 5.13% (2025-10-07)"],
"missing": []
},
"recommended_action": "Schedule or order an HbA1c follow-up"
}
]
}

Essa abordagem oferece flexibilidade adicional; quando os requisitos clínicos mudam, você pode estender o documento. As novas regras do CDS gravam novos campos no mesmo documento sem afetar os existentes.

O documento patient_360 constitui uma visualização operacional derivada, não uma substituição para o registro FHIR. O pipeline de materialização produz esta visualização a partir dos recursos FHIR. Para auditar qualquer decisão clínica ou resultado de lacuna de cuidado, cada documento inclui um bloco data_provenance:

{
"data_provenance": {
"layer": "cds_operational",
"source_fhir_collection": "synthetic_patients",
"source_patient_id": "1b3bbaec-def8-4b55-8e87-9d04b55d6890",
"materialization_version": "1.0",
"last_materialized_at": "2026-05-09T21:30:04.873754+00:00",
"fhir_resource_count": 22
}
}

O armazenamento de dados FHIR permanece a fonte canônica da verdade para interoperabilidade, enquanto o MongoDB Atlas mantém a visão operacional, mantendo um link direto de volta aos seus dados de origem.

Os regulamentos de assistência médica exigem que os aplicativos criptografem o PHI. Uma abordagem comum envolve armazenar o PHI criptografado em um sistema separado e recuperá-lo somente quando necessário. No entanto, esse framework introduz um segundo armazenamento de dados, uma camada separada de gerenciamento de chaves e maior latência para cada busca de registro do paciente.

O MongoDB Queryable Encryption elimina essa sobrecarga, mantendo o PHI no mesmo documento. Ele protege campos altamente confidenciais, como o nome do paciente, MRN e data de nascimento, tornando-os legíveis apenas para aplicativos cliente autorizados com a chave de criptografia. O restante do documento permanece consultável para uso operacional:

{
"demographics": {
"name": { "$binary": { "base64": "EAXZmoXjO0re...", "subType": "06" } },
"given": { "$binary": { "base64": "EF1RChFVFEJC...", "subType": "06" } },
"family": { "$binary": { "base64": "EK18iT8qVki8...", "subType": "06" } },
"birth_date": { "$binary": { "base64": "EJOsqgLJPEjI...", "subType": "06" } },
"gender": "female",
"age": 77
}
}

Por exemplo, microsserviços como o AlertEngine e o QualityEngine lêem sinalizadores, limites e campos de lacunas de cuidados, nenhum lê os campos demográficos criptografados.

Encontre instruções detalhadas de instalação no repositório do GitHub. O repositório inclui etapas para obter uma string de conexão do MongoDB Atlas, configurações do Docker para implantação em contêineres e instruções para implantação local.

1
  • Instale o Docker Desktop para executar a plataforma como contêineres.

  • Crie um cluster MongoDB Atlas M10 e configure o acesso à rede.

  • Conecte-se ao seu cluster Atlas e copie a string de conexão.

  • [Opcional] Crie uma conta Amazon Web Services com acesso ao serviço HealthLake se quiser persistir pacotes FHIR em um armazenamento de dados FHIR externo.

2
  • Execute o seguinte comando a partir da raiz do projeto:

    docker compose up --build
  • Este comando inicia o backend do FastAPI na porta 8000 e o frontend do Next.js na porta 8080.

3
  • Abra http://localhost:8080 no seu navegador. No login, escolha a persona que corresponde ao seu cenário de demonstração:

    • Frida (modo de simulação): selecione Frida para configurar as definições de simulação antes de semear. A plataforma executa um pipeline de várias etapas que gera e carrega todos os dados automaticamente. Use este modo para uma demonstração ao vivo com streaming de sinais vitais em tempo real.

    • Diego (modo de dados existente): selecione Diego para conectar-se a um conjunto de dados previamente semeado sem simulação em execução. Use esta opção quando quiser demonstrar a plataforma em relação a dados estáveis ou quando o pipeline de semeadura já tiver sido executado.

  • Explore o dashboard do paciente, revise as lacunas de atendimento abertas e monitore os sinais vitais em tempo real.

  • Use o MongoDB Atlas como a camada operacional para fluxos de trabalho FHIR: estenda a base de dados FHIR do aplicativo com uma camada operacional desnormalizada no MongoDB Atlas para potencializar query clínicas em tempo real, cálculo de lacunas de atendimento e monitoramento de sinais vitais.

  • Dados do paciente modelo como um único documento: Armazene condições, medicamentos, laboratórios, alerta, lacunas de cuidado e limites de sinais vitais juntos em um documento, permitindo que seu aplicativo recupere tudo o que precisa em uma leitura, sem unir vários recurso.

  • Pré-calcular sinalizadores e limites clínicos na ingestão de dados: extraia os principais fatos clínicos dos pacotes FHIR e armazene-os como campos computados no MongoDB Atlas no momento da ingestão, permitindo que os mecanismos CDS avaliem as regras sem reler os registros de origem.

  • Grave lacunas de cuidado e resultados de alerta diretamente no documento do paciente: use campos de array como care_gaps e active_alerts para armazenar resultados de medição HEDIS e alertas clínicos junto com o registro clínico, fornecendo aos coordenadores de cuidados informações completas e acionáveis em uma query.

  • Proteja o PHI com o MongoDB Queryable Encryption: aplique a criptografia consultável a campos de pacientes confidenciais para proteger o PHI, evitando a exposição de texto simples, atendendo aos requisitos da HIPAA sem uma camada de criptografia separada.

  • Giovanni Rodríguez Fragoso, MongoDB

  • Francesc Mateu Amengual, MongoDB

  • Diego Canales, MongoDB