View a markdown version of this page

Operação FHIR para $questionnaire-package HealthLake - AWS HealthLake

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Operação FHIR para $questionnaire-package HealthLake

A $questionnaire-package operação recupera um pacote abrangente contendo um questionário FHIR e todas as dependências necessárias para renderizar e processar o questionário. Essa operação implementa o Guia de Implementação de Modelos e Regras de Documentação Da Vinci (DTR), permitindo a renderização dinâmica de formulários para requisitos de documentação em fluxos de trabalho de saúde.

Como funciona

  • Solicitação: você envia parâmetros identificando o (s) questionário (s) necessário (s), juntamente com a cobertura e o contexto do pedido

  • Recuperar: HealthLake reúne o questionário e todas as dependências (bibliotecas CQLValueSets, etc.)

  • Package: Todos os recursos são agrupados em um formato padronizado

  • Responder: Você recebe um pacote completo pronto para renderização e coleta de dados

Casos de uso

  • Documentação de autorização prévia: colete as informações clínicas necessárias para solicitações de autorização prévia

  • Requisitos de cobertura: reúna a documentação necessária para satisfazer os requisitos de cobertura do pagador

  • Clinical Data Exchange: Estruture os dados clínicos para envio aos pagadores

  • Formulários dinâmicos: renderize questionários com dados pré-preenchidos do paciente e lógica condicional

Ponto final da API

POST /datastore/{datastoreId}/r4/Questionnaire/$questionnaire-package Content-Type: application/fhir+json

Parâmetros de solicitação

Parâmetros de entrada

O corpo da solicitação deve conter um recurso de parâmetros FHIR com os seguintes parâmetros:

Parâmetro Tipo Cardinalidade Description
coverage Cobertura 1.. * (Obrigatório) Recurso (s) de cobertura para estabelecer o membro e cobertura para documentação
questionnaire canônico 0.. * URL (s) canônica (s) para que questionários específicos retornem (podem incluir a versão)
order Recurso 0.. * Solicite recursos (DeviceRequest,, ServiceRequest MedicationRequest, Encontro, Nomeação) para estabelecer o contexto
changedSince dateTime 0,1 Se estiver presente, retorne somente os recursos alterados após esse registro de data e hora

Regras de validação de parâmetros

Pelo menos UM dos seguintes itens deve ser fornecido (além do obrigatóriocoverage):

  • Um ou mais questionnaire canônicos URLs

  • Um ou mais order recursos

Combinações de solicitações válidas:

  • coverage + questionnaire

  • coverage + order

  • coverage + questionnaire + order

Exemplo de solicitação

POST /datastore/example-datastore/r4/Questionnaire/$questionnaire-package Content-Type: application/fhir+json Authorization: Bearer <your-token> { "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { "resourceType": "Coverage", "id": "example-coverage", "status": "active", "beneficiary": { "reference": "Patient/example-patient" }, "payor": [{ "reference": "Organization/example-payer" }], "class": [{ "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/coverage-class", "code": "group" }] }, "value": "12345" }] } }, { "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0" }, { "name": "order", "resource": { "resourceType": "ServiceRequest", "id": "example-service-request", "status": "active", "intent": "order", "code": { "coding": [{ "system": "http://www.ama-assn.org/go/cpt", "code": "94660", "display": "Continuous positive airway pressure ventilation (CPAP)" }] }, "subject": { "reference": "Patient/example-patient" } } }, { "name": "changedSince", "valueDateTime": "2024-01-01T00:00:00Z" } ] }

Formato de resposta

Resposta de sucesso (200 OK)

A operação retorna um recurso FHIR Parameters contendo um ou mais Package Bundles. Cada pacote Package inclui:

Tipo de entrada Cardinalidade Description
Questionário 1 O questionário a ser entregue
QuestionnaireResponse 0,1 Resposta pré-preenchida ou parcialmente preenchida (se aplicável)
Ferramentas 0.. * Bibliotecas CQL contendo pré-população e lógica condicional
ValueSet 0.. * Expandido ValueSets (para opções de resposta com menos de 40 expansões)
exemplo Exemplo de resposta
{ "resourceType": "Parameters", "parameter": [ { "name": "PackageBundle", "resource": { "resourceType": "Bundle", "id": "questionnaire-package-example", "meta": { "profile": ["http://hl7.org/fhir/us/davinci-dtr/StructureDefinition/DTR-QPackageBundle"] }, "type": "collection", "timestamp": "2024-03-15T10:30:00Z", "entry": [ { "fullUrl": "http://example.org/fhir/Questionnaire/home-oxygen-therapy", "resource": { "resourceType": "Questionnaire", "id": "home-oxygen-therapy", "url": "http://example.org/fhir/Questionnaire/home-oxygen-therapy", "version": "2.0", "status": "active", "title": "Home Oxygen Therapy Documentation", "item": [ { "linkId": "1", "text": "Patient diagnosis", "type": "choice", "answerValueSet": "http://example.org/fhir/ValueSet/oxygen-diagnoses" } ] } }, { "fullUrl": "http://example.org/fhir/Library/oxygen-prepopulation", "resource": { "resourceType": "Library", "id": "oxygen-prepopulation", "url": "http://example.org/fhir/Library/oxygen-prepopulation", "version": "1.0", "type": { "coding": [{ "system": "http://terminology.hl7.org/CodeSystem/library-type", "code": "logic-library" }] }, "content": [{ "contentType": "text/cql", "data": "bGlicmFyeSBPeHlnZW5QcmVwb3B1bGF0aW9u..." }] } }, { "fullUrl": "http://example.org/fhir/ValueSet/oxygen-diagnoses", "resource": { "resourceType": "ValueSet", "id": "oxygen-diagnoses", "url": "http://example.org/fhir/ValueSet/oxygen-diagnoses", "status": "active", "expansion": { "timestamp": "2024-03-15T10:30:00Z", "contains": [ { "system": "http://hl7.org/fhir/sid/icd-10", "code": "J44.0", "display": "COPD with acute lower respiratory infection" }, { "system": "http://hl7.org/fhir/sid/icd-10", "code": "J96.01", "display": "Acute respiratory failure with hypoxia" } ] } } }, { "fullUrl": "http://example.org/fhir/QuestionnaireResponse/example-prepopulated", "resource": { "resourceType": "QuestionnaireResponse", "id": "example-prepopulated", "questionnaire": "http://example.org/fhir/Questionnaire/home-oxygen-therapy|2.0", "status": "in-progress", "subject": { "reference": "Patient/example-patient" }, "basedOn": [{ "reference": "ServiceRequest/example-service-request" }], "item": [ { "linkId": "1", "text": "Patient diagnosis", "answer": [{ "valueCoding": { "system": "http://hl7.org/fhir/sid/icd-10", "code": "J44.0", "display": "COPD with acute lower respiratory infection" } }] } ] } } ] } }, { "name": "Outcome", "resource": { "resourceType": "OperationOutcome", "issue": [{ "severity": "information", "code": "informational", "details": { "text": "Successfully retrieved questionnaire package" } }] } } ] }

Fluxo de trabalho operacional

Como HealthLake processa sua solicitação

Quando você liga$questionnaire-package, HealthLake executa as seguintes etapas:

  1. Identifique o paciente e o pagador: extrai o paciente e a organização de seguros do seu coverage parâmetro.

  2. Encontre o questionário certo:

    • Com questionnaire parâmetro: usa o URL canônico que você forneceu

    • Com order parâmetro: combina o código do pedido (CPT/HCPCS/LOINC) e o pagador para encontrar o questionário apropriado

  3. Coletar dependências: recupera automaticamente tudo o que é necessário para renderizar o questionário:

    • Bibliotecas CQL - Lógica para questões pré-populacionais e condicionais

    • ValueSets- Opções de resposta (expandidas automaticamente se <40 opções)

    • QuestionnaireResponse- Qualquer resposta existente em andamento ou concluída

  4. Package tudo junto:

    • Agrupa todos os recursos (cada recurso incluído apenas uma vez)

    • Filtra por changedSince data e hora, se fornecido

    • Adiciona avisos Outcome se algum recurso estiver faltando

Resultado: um pacote completo e independente pronto para renderização.

Respostas de erro

400 solicitação inválida

Retornado quando a validação da solicitação falha.

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "error", "code": "required", "details": { "text": "At least one of 'questionnaire' or 'order' must be provided along with 'coverage'" } }] }

424 Dependência falhada

Retornado quando um recurso dependente não pode ser recuperado.

{ "resourceType": "OperationOutcome", "issue": [{ "severity": "warning", "code": "not-found", "details": { "text": "Referenced Library 'http://example.org/fhir/Library/missing-library' could not be retrieved" } }] }

401 Não autorizado

Retornado quando as credenciais de autenticação estão ausentes ou são inválidas.

403 proibido

Retornado quando o usuário autenticado não tem permissão para acessar os recursos solicitados.

406 Não aceitável

Retornado quando o tipo de conteúdo solicitado não pode ser fornecido.

409 Conflito

Retornado quando há um conflito de versão ou simultaneidade.

410 Desaparecido

Retornado quando o recurso solicitado foi excluído permanentemente.

429, muitas solicitações

Retornado quando os limites de taxa são excedidos.

500 Internal Server Error

Retornado quando ocorre um erro inesperado no servidor.

501 Não implementado

Retornado quando a operação solicitada ainda não foi implementada.

Regras de validação

Validação de entrada

  • coverageparâmetro é obrigatório (1.. * cardinalidade)

  • Pelo menos um dos questionnaire ou order deve ser fornecido

  • Todos os recursos de cobertura devem ser recursos FHIR válidos

  • Todos os recursos do Pedido devem ser recursos FHIR válidos

  • O canônico URLs deve ser formatado corretamente

  • changedSincedeve ser um ISO 8601 DateTime válido

QuestionnaireResponse validação

  • statusdeve ser apropriado (in-progress,completed,amended)

  • A estrutura deve corresponder ao questionário referenciado

  • basedOndeve fazer referência a recursos válidos do Pedido

  • subjectdeve referenciar recursos válidos para pacientes

Desduplicação de recursos

  • Cada recurso aparece somente uma vez no pacote

  • Exceção: versões diferentes do mesmo recurso podem ser incluídas

  • Os recursos são identificados por seu URL e versão canônicos

Especificações de performance

Métrica Especificação
Limite de contagem de recursos 500 recursos por pacote
Limite de tamanho do pacote Máximo de 5 MB

Permissões obrigatórias

Para usar a $questionnaire-package operação, certifique-se de que sua função do IAM tenha:

  • healthlake:QuestionnairePackage- Para chamar a operação

  • healthlake:ReadResource- Para recuperar o questionário e os recursos dependentes

  • healthlake:SearchWithPost- Para pesquisar QuestionnaireResponse e recursos relacionados

SMART em escopos FHIR

Escopos mínimos exigidos:

  • SMART v1: user/Questionnaire.read user/Library.read user/ValueSet.read user/QuestionnaireResponse.read

  • SMART v2: user/Questionnaire.rs user/Library.rs user/ValueSet.rs user/QuestionnaireResponse.rs

Notas de implementação importantes

Estratégia de recuperação de recursos

Prioridade de identificação do questionário:

  • URL canônica (se o questionnaire parâmetro for fornecido) - Prioridade mais alta

  • Análise do pedido (se o order parâmetro for fornecido):

    • Combine os códigos de pedido (CPT, HCPCS, LOINC) com as políticas médicas do pagador

    • Use o pagador de cobertura para filtrar questionários específicos do pagador

    • Considere os códigos de motivo para um contexto adicional

Resolução de dependências

Bibliotecas CQL:

  • Recuperado por meio da cqf-library extensão nos recursos do questionário

  • Busca recursivamente bibliotecas dependentes por meio de tipo Library.relatedArtifact depends-on

  • Todas as dependências da biblioteca estão incluídas no pacote

ValueSets:

  • Expandido automaticamente se eles contiverem menos de 40 conceitos

  • Maiores ValueSets estão incluídos sem expansão

  • ValueSets referenciados no questionário e nos recursos da biblioteca estão incluídos

QuestionnaireResponse pré-população

A operação pode retornar um QuestionnaireResponse com dados pré-preenchidos quando:

  • Uma resposta existente em andamento ou concluída foi encontrada

  • A lógica CQL nas bibliotecas associadas pode extrair dados dos registros dos pacientes

  • A resposta está vinculada ao pedido e à cobertura relevantes

Critérios de pesquisa para QuestionnaireResponse:

Parâmetro de pesquisa Caminho FHIR Description
based-on QuestionnaireResponse.basedOn Links para ServiceRequest ou CarePlan
patient QuestionnaireResponse.subject O paciente que é o sujeito
questionnaire QuestionnaireResponse.questionnaire O questionário que está sendo respondido

Filtragem de recursos alterada

Quando o changedSince parâmetro é fornecido:

  • Somente os recursos modificados após o registro de data e hora especificado são incluídos

  • Se nenhum recurso tiver sido alterado, retorna 200 OK com um pacote vazio

  • Útil para atualizações incrementais e estratégias de armazenamento em cache

  • A comparação de timestamp usa o campo de recurso meta.lastUpdated

Vários pacotes

A operação pode retornar vários Package Bundles quando:

  • Vários questionários são solicitados via canonical URLs

  • Vários pedidos exigem questionários diferentes

  • Versões diferentes do mesmo questionário são aplicáveis

Cada Package Bundle é independente com todas as dependências necessárias.

Casos de uso comuns

Caso de uso 1: documentação de autorização prévia

Cenário: Um provedor precisa coletar a documentação para uma autorização prévia de oxigenoterapia domiciliar.

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Patient's insurance coverage */ } }, { "name": "order", "resource": { "resourceType": "ServiceRequest", "code": { "coding": [{ "system": "http://www.ama-assn.org/go/cpt", "code": "94660" }] } } } ] }

Resultado: Retorna um pacote com o questionário de oxigenoterapia, pré-preenchido com os sinais vitais do paciente e os códigos de diagnóstico do EHR.

Caso de uso 2: Recuperar a versão específica do questionário

Cenário: um provedor precisa de uma versão específica de um questionário para fins de conformidade.

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Coverage resource */ } }, { "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/dme-request|3.1.0" } ] }

Resultado: retorna exatamente a versão 3.1.0 do questionário de solicitação do DME com todas as dependências.

Caso de uso 3: verifique se há atualizações

Cenário: um provedor deseja verificar se algum recurso do questionário foi atualizado desde a última recuperação.

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Coverage resource */ } }, { "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/medication-request" }, { "name": "changedSince", "valueDateTime": "2024-03-01T00:00:00Z" } ] }

Resultado: retorna somente recursos que foram modificados após 1º de março de 2024 ou um pacote vazio se nada tiver sido alterado.

Caso de uso 4: vários pedidos

Cenário: um provedor envia várias solicitações de serviço que podem exigir questionários diferentes.

{ "resourceType": "Parameters", "parameter": [ { "name": "coverage", "resource": { /* Coverage resource */ } }, { "name": "order", "resource": { /* ServiceRequest for imaging */ } }, { "name": "order", "resource": { /* ServiceRequest for DME */ } } ] }

Resultado: retorna vários Package Bundles, um para cada questionário aplicável.

Integração com outros Da Vinci IGs

Descoberta de requisitos de cobertura (CRD)

Integração do fluxo de trabalho:

  • O provedor solicita um serviço em seu EHR

  • O gancho do CRD dispara, verificando os requisitos de cobertura

  • O pagador responde indicando que a documentação é necessária

  • O provedor liga $questionnaire-package para recuperar o formulário de documentação

  • O provedor preenche o questionário

  • A documentação é enviada via PAS ou CDex

Suporte de autorização prévia (PAS)

Integração do fluxo de trabalho:

  • Use $questionnaire-package para recuperar os requisitos de documentação

  • Preencha o QuestionnaireResponse com os dados clínicos necessários

  • Envie a autorização prévia usando Claim/$submit com o preenchido QuestionnaireResponse

  • Verifique o status usando Claim/$inquire

Troca de dados clínicos (CDex)

Integração do fluxo de trabalho:

  • O pagador solicita documentação adicional para uma reclamação

  • O provedor usa $questionnaire-package para recuperar o formulário estruturado de coleta de dados

  • O provedor conclui o QuestionnaireResponse

  • A documentação é enviada ao pagador por meio do fluxo de trabalho de CDex anexos

Guia de solução de problemas

Problema: Nenhum questionário foi devolvido

Causas possíveis:

  • O URL canônico não corresponde a nenhum questionário no armazenamento de dados

  • O código do pedido não é mapeado para nenhum questionário na política médica do pagador

  • O pagador da cobertura não tem questionários associados

Soluções:

  • Verifique se o URL canônico está correto e se o questionário existe

  • Verifique se os códigos de pedido (CPT/HCPCS) estão especificados corretamente

  • Confirme se a organização pagadora tem questionários configurados

Problema: dependências ausentes no Package

Causas possíveis:

  • Biblioteca referenciada ou ValueSet não existe no armazenamento de dados

  • As referências da biblioteca estão quebradas ou incorretas

  • ValueSet a expansão falhou

Soluções:

  • Verifique o Outcome parâmetro para ver se há avisos sobre recursos ausentes

  • Verifique se todos os recursos referenciados existem em seu armazenamento de dados

  • Certifique-se de que ValueSet URLs estão corretos e solucionáveis

Problema: Empty Package com ChangedSince

Causas possíveis:

  • Esse é o comportamento esperado - nenhum recurso foi modificado desde o timestamp especificado

Soluções:

  • Use a versão em cache do pacote

  • Remova o changedSince parâmetro para recuperar o pacote completo

Problema: QuestionnaireResponse Não pré-preenchido

Causas possíveis:

  • Não foi QuestionnaireResponse encontrado nenhum existente

  • A lógica da biblioteca CQL não conseguiu extrair os dados necessários

  • Os dados do paciente estão ausentes ou incompletos

Soluções:

  • Isso pode ser esperado - nem todos os questionários têm lógica pré-populacional

  • Verifique se os dados do paciente existem no armazenamento de dados

  • Revise a lógica da Biblioteca CQL para requisitos de extração de dados

Práticas recomendadas

1. Use Canonical com versões URLs

Sempre especifique os números das versões ao solicitar questionários específicos:

{ "name": "questionnaire", "valueCanonical": "http://example.org/fhir/Questionnaire/dme|2.1.0" }

Por quê: Garante a consistência e evita alterações inesperadas quando os questionários são atualizados.

2. Aproveite o ChangedSince para desempenho

Para questionários acessados com frequência, use changedSince para minimizar a transferência de dados:

{ "name": "changedSince", "valueDateTime": "2024-03-10T15:30:00Z" }

Por quê: Reduz a latência e o uso da largura de banda recuperando somente recursos atualizados.

3. Inclua informações completas de cobertura

Forneça detalhes abrangentes da cobertura para garantir a seleção correta do questionário:

{ "name": "coverage", "resource": { "resourceType": "Coverage", "beneficiary": { "reference": "Patient/123" }, "payor": [{ "reference": "Organization/payer-abc" }], "class": [{ /* Group/plan information */ }] } }

Por quê: Ajuda a HealthLake identificar questionários e requisitos específicos do pagador.

  • Claim/$submit- Envie solicitações de autorização prévia com a documentação completa

  • Claim/$inquire- Verifique o status das autorizações anteriores enviadas

  • ValueSet/$expand- Expandir ValueSets para opções de resposta