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)
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
questionnairecanônicos URLs -
Um ou mais
orderrecursos
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:
-
Identifique o paciente e o pagador: extrai o paciente e a organização de seguros do seu
coverageparâmetro. -
Encontre o questionário certo:
-
Com
questionnaireparâmetro: usa o URL canônico que você forneceu -
Com
orderparâmetro: combina o código do pedido (CPT/HCPCS/LOINC) e o pagador para encontrar o questionário apropriado
-
-
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
-
-
Package tudo junto:
-
Agrupa todos os recursos (cada recurso incluído apenas uma vez)
-
Filtra por
changedSincedata e hora, se fornecido -
Adiciona avisos
Outcomese 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
questionnaireouorderdeve 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
questionnaireparâmetro for fornecido) - Prioridade mais alta -
Análise do pedido (se o
orderparâ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-libraryextensão nos recursos do questionário -
Busca recursivamente bibliotecas dependentes por meio de tipo
Library.relatedArtifactdepends-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 OKcom 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-packagepara 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-packagepara recuperar os requisitos de documentação -
Preencha o QuestionnaireResponse com os dados clínicos necessários
-
Envie a autorização prévia usando
Claim/$submitcom 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-packagepara 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
Outcomeparâ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
changedSinceparâ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.
Operações do relacionadas
-
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