View a markdown version of this page

$questionnaire-packageOpération FHIR pour HealthLake - AWS HealthLake

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$questionnaire-packageOpération FHIR pour HealthLake

L'$questionnaire-packageopération récupère un ensemble complet contenant un questionnaire FHIR et toutes ses dépendances nécessaires au rendu et au traitement du questionnaire. Cette opération met en œuvre le guide de mise en œuvre des modèles et règles de documentation Da Vinci (DTR), permettant le rendu dynamique des formulaires pour les exigences en matière de documentation dans les flux de travail du secteur de la santé.

Comment ça marche

  • Demande : vous envoyez des paramètres identifiant le ou les questionnaires nécessaires, ainsi que la couverture et le contexte de la commande

  • Récupérer : HealthLake rassemble le questionnaire et toutes les dépendances (ValueSetsbibliothèques CQL, etc.)

  • Package : Toutes les ressources sont regroupées dans un format standardisé

  • Répondre : vous recevez un package complet prêt pour le rendu et la collecte de données

Cas d'utilisation

  • Documentation d'autorisation préalable : Collectez les informations cliniques requises pour les demandes d'autorisation préalable

  • Exigences de couverture : Rassemblez la documentation nécessaire pour satisfaire aux exigences de couverture du payeur

  • Clinical Data Exchange : structurez les données cliniques pour les soumettre aux payeurs

  • Formulaires dynamiques : créez des questionnaires avec des données préremplies sur les patients et une logique conditionnelle

Point de terminaison d’API

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

Paramètres de demande

Paramètres d’entrée

Le corps de la demande doit contenir une ressource de paramètres FHIR avec les paramètres suivants :

Paramètre Type Cardinalité Description
coverage Couverture 1.. * (Obligatoire) Ressource (s) de couverture pour établir le membre et couverture pour la documentation
questionnaire canonial 0.. * URL (s) canoniques pour un ou plusieurs questionnaires spécifiques à renvoyer (peut inclure la version)
order Ressource 0.. * Commandez des ressources (DeviceRequest, ServiceRequest, MedicationRequest, Encounter, Appointment) pour établir le contexte
changedSince dateTime 0,1 Le cas échéant, ne renvoie que les ressources modifiées après cet horodatage

Règles de validation des paramètres

Au moins UN des éléments suivants doit être fourni (en plus de ce qui est obligatoirecoverage) :

  • Un ou plusieurs questionnaire canoniques URLs

  • Une ou plusieurs order ressources

Combinaisons de demandes valides :

  • coverage + questionnaire

  • coverage + order

  • coverage + questionnaire + order

Exemple de demande

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" } ] }

Format de la réponse

Réponse positive (200 OK)

L'opération renvoie une ressource de paramètres FHIR contenant un ou plusieurs Package Bundles. Chaque Package Bundle inclut :

Type d'entrée Cardinalité Description
Questionnaire 1 Le questionnaire à rendre
QuestionnaireResponse 0,1 Réponse préremplie ou partiellement complétée (le cas échéant)
d'outils 0.. * Bibliothèques CQL contenant une logique de pré-peuplement et une logique conditionnelle
ValueSet 0.. * Étendu ValueSets (pour les choix de réponses avec moins de 40 extensions)
Exemple Exemple de réponse
{ "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" } }] } } ] }

Flux de travail des opérations

Comment HealthLake traite-t-on votre demande

Lorsque vous appelez$questionnaire-package, HealthLake exécute les étapes suivantes :

  1. Identifier le patient et le payeur : extrait le patient et l'organisme d'assurance de vos coverage paramètres.

  2. Trouvez le bon questionnaire :

    • Avec questionnaire paramètre : utilise l'URL canonique que vous avez fournie

    • Avec order paramètre : fait correspondre le code de commande (CPT/HCPCS/LOINC) et le payeur pour trouver le questionnaire approprié

  3. Collecter les dépendances : récupère automatiquement tout ce qui est nécessaire pour afficher le questionnaire :

    • Bibliothèques CQL - Logique pour les questions de prépopulation et les questions conditionnelles

    • ValueSets- Choix de réponses (automatiquement étendus si <40 options)

    • QuestionnaireResponse- Toutes les réponses existantes en cours ou terminées

  4. Emballez le tout ensemble :

    • Regroupe toutes les ressources (chaque ressource n'est incluse qu'une seule fois)

    • Filtre par changedSince horodatage s'il est fourni

    • Ajoute des avertissements Outcome si des ressources sont manquantes

Résultat : un package complet et autonome prêt pour le rendu.

Réponses d'erreur

400 Requête erronée

Renvoyé en cas d'échec de la validation de la demande.

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

424 Dépendance défaillante

Renvoyé lorsqu'une ressource dépendante ne peut pas être récupérée.

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

401 Accès non autorisé

Renvoyé lorsque les informations d'authentification sont manquantes ou non valides.

403 Forbidden

Renvoyé lorsque l'utilisateur authentifié n'est pas autorisé à accéder aux ressources demandées.

406 Non acceptable

Renvoyé lorsque le type de contenu demandé ne peut pas être fourni.

409 – Conflit

Renvoyé en cas de conflit de version ou de simultanéité.

410 Disparus

Renvoyé lorsque la ressource demandée a été définitivement supprimée.

429 Trop de demandes

Renvoyé lorsque les limites de débit sont dépassées.

500 Erreur de serveur interne

Renvoyé lorsqu'une erreur de serveur inattendue se produit.

501 Non implémenté

Renvoyé lorsque l'opération demandée n'est pas encore implémentée.

Règles de validation

Validation des entrées

  • coveragele paramètre est obligatoire (1.. * cardinalité)

  • Au moins l'un questionnaire des éléments order suivants doit être fourni

  • Toutes les ressources de couverture doivent être des ressources FHIR valides

  • Toutes les ressources de la commande doivent être des ressources FHIR valides

  • Canonical URLs doit être correctement formaté

  • changedSincedoit être un DateTime ISO 8601 valide

QuestionnaireResponse validation

  • statusdoit être approprié (in-progress,completed,amended)

  • La structure doit correspondre au questionnaire référencé

  • basedOndoit faire référence à des ressources de commande valides

  • subjectdoit faire référence à des ressources valides pour les patients

Déduplication des ressources

  • Chaque ressource n'apparaît qu'une seule fois dans le bundle

  • Exception : différentes versions de la même ressource peuvent toutes deux être incluses

  • Les ressources sont identifiées par leur URL canonique et leur version

Spécifications de performance

Métrique Spécification de 
Limite du nombre de ressources 500 ressources par bundle
Limite de taille du bundle 5 Mo maximum

Autorisations requises

Pour utiliser l'$questionnaire-packageopération, assurez-vous que votre rôle IAM possède les éléments suivants :

  • healthlake:QuestionnairePackage- Pour appeler l'opération

  • healthlake:ReadResource- Pour récupérer le questionnaire et les ressources dépendantes

  • healthlake:SearchWithPost- Pour rechercher QuestionnaireResponse des ressources connexes

SMART sur les oscilloscopes FHIR

Étendue minimale requise :

  • SMART version 1 : 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

Remarques de mise en œuvre importantes

Stratégie de récupération des ressources

Priorité d'identification du questionnaire :

  • URL canonique (si le questionnaire paramètre est fourni) - Priorité la plus élevée

  • Analyse de la commande (si order le paramètre est fourni) :

    • Associez les codes de commande (CPT, HCPCS, LOINC) aux politiques médicales du payeur

    • Utilisez le payeur de couverture pour filtrer les questionnaires spécifiques au payeur

    • Tenez compte des codes de motif pour un contexte supplémentaire

Résolution des dépendances

Bibliothèques CQL :

  • Récupéré via l'cqf-libraryextension sur les ressources du questionnaire

  • Récupère récursivement les bibliothèques dépendantes via le type Library.relatedArtifact depends-on

  • Toutes les dépendances de bibliothèque sont incluses dans le package

ValueSets:

  • Développé automatiquement s'ils contiennent moins de 40 concepts

  • ValueSets Les plus grands sont inclus sans extension

  • ValueSets référencées à la fois dans le questionnaire et les ressources de la bibliothèque sont incluses

QuestionnaireResponse pré-population

L'opération peut renvoyer un fichier QuestionnaireResponse avec des données préremplies lorsque :

  • Une réponse existante en cours ou terminée est trouvée

  • La logique CQL des bibliothèques associées peut extraire des données des dossiers des patients

  • La réponse est liée à la commande et à la couverture pertinentes

Critères de recherche pour QuestionnaireResponse :

Paramètre de recherche Parcours FHIR Description
based-on QuestionnaireResponse.basedOn Liens vers ServiceRequest ou CarePlan
patient QuestionnaireResponse.subject Le patient qui est le sujet
questionnaire QuestionnaireResponse.questionnaire Le questionnaire auquel il est répondu

Filtrage des ressources modifié

Lorsque le changedSince paramètre est fourni :

  • Seules les ressources modifiées après l'horodatage spécifié sont incluses

  • Si aucune ressource n'a changé, retourne 200 OK avec un package vide

  • Utile pour les mises à jour incrémentielles et les stratégies de mise en cache

  • La comparaison des horodatages utilise le champ de ressources meta.lastUpdated

Forfaits groupés multiples

L'opération peut renvoyer plusieurs Package Bundles lorsque :

  • Plusieurs questionnaires sont demandés via Canonical URLs

  • Les commandes multiples nécessitent des questionnaires différents

  • Différentes versions du même questionnaire sont applicables

Chaque Package Bundle est autonome avec toutes les dépendances nécessaires.

Cas d’utilisation courants

Cas d'utilisation 1 : documentation relative à l'autorisation préalable

Scénario : Un fournisseur doit recueillir de la documentation pour une autorisation préalable d'oxygénothérapie à domicile.

{ "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" }] } } } ] }

Résultat : renvoie un colis contenant le questionnaire d'oxygénothérapie, prérempli avec les données vitales du patient et les codes de diagnostic du dossier médical électronique.

Cas d'utilisation 2 : récupérer une version spécifique du questionnaire

Scénario : un fournisseur a besoin d'une version spécifique d'un questionnaire pour se conformer.

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

Résultat : renvoie exactement la version 3.1.0 du questionnaire de demande DME avec toutes les dépendances.

Cas d'utilisation 3 : Vérifier les mises à jour

Scénario : un fournisseur souhaite vérifier si des ressources du questionnaire ont été mises à jour depuis la dernière extraction.

{ "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" } ] }

Résultat : renvoie uniquement les ressources qui ont été modifiées après le 1er mars 2024, ou un package vide si rien n'a changé.

Cas d'utilisation 4 : commandes multiples

Scénario : un fournisseur soumet plusieurs demandes de service qui peuvent nécessiter différents questionnaires.

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

Résultat : renvoie plusieurs Packages groupés, un pour chaque questionnaire applicable.

Intégration avec d'autres Da Vinci IGs

Découverte des exigences de couverture (CRD)

Intégration du flux de travail :

  • Le fournisseur commande un service dans son dossier électronique

  • Feux à l'hameçon CRD, vérification des exigences de couverture

  • Le payeur répond en indiquant que la documentation est nécessaire

  • Le fournisseur appelle $questionnaire-package pour récupérer le formulaire de documentation

  • Le fournisseur remplit le questionnaire

  • La documentation est soumise via PAS ou CDex

Support d'autorisation préalable (PAS)

Intégration du flux de travail :

  • $questionnaire-packageÀ utiliser pour récupérer les exigences en matière de documentation

  • Complétez le QuestionnaireResponse avec les données cliniques requises

  • Soumettez l'autorisation préalable Claim/$submit en utilisant le QuestionnaireResponse

  • Vérifiez le statut à l'aide de Claim/$inquire

Échange de données cliniques (CDex)

Intégration du flux de travail :

  • Le payeur demande des documents supplémentaires pour une réclamation

  • Le fournisseur utilise $questionnaire-package pour récupérer le formulaire de collecte de données structuré

  • Le fournisseur complète le QuestionnaireResponse

  • La documentation est soumise au payeur via un flux de travail de CDex pièces jointes

Guide de dépannage

Problème : aucun questionnaire n'a été renvoyé

Causes possibles :

  • L'URL canonique ne correspond à aucun questionnaire du magasin de données

  • Le code de commande ne correspond à aucun questionnaire de la police médicale du payeur

  • Le payeur de couverture n'a pas de questionnaires associés

Solutions :

  • Vérifiez que l'URL canonique est correcte et que le questionnaire existe

  • Vérifiez que les codes de commande (CPT/HCPCS) sont correctement spécifiés

  • Vérifiez que l'organisation payeuse a configuré des questionnaires

Problème : dépendances manquantes dans le package

Causes possibles :

  • Bibliothèque référencée ou ValueSet n'existe pas dans le magasin de données

  • Les références de bibliothèque sont cassées ou incorrectes

  • ValueSet échec de l'extension

Solutions :

  • Vérifiez le Outcome paramètre pour les avertissements concernant les ressources manquantes

  • Vérifiez que toutes les ressources référencées existent dans votre magasin de données

  • Assurez-vous qu' ValueSet URLs ils sont corrects et résolvables

Problème : Package vide avec ChangedSince

Causes possibles :

  • Ce comportement est attendu : aucune ressource n'a été modifiée depuis l'horodatage spécifié

Solutions :

  • Utiliser la version mise en cache du package

  • Supprimer changedSince le paramètre pour récupérer le package complet

Problème : QuestionnaireResponse Non prérempli

Causes possibles :

  • Aucun objet existant n' QuestionnaireResponse a été trouvé

  • La logique de la bibliothèque CQL n'a pas pu extraire les données requises

  • Les données du patient sont manquantes ou incomplètes

Solutions :

  • On peut s'y attendre, car tous les questionnaires ne reposent pas sur une logique de pré-population

  • Vérifiez que les données du patient existent dans le magasin de données

  • Vérifiez la logique de la bibliothèque CQL pour connaître les exigences en matière d'extraction de données

Bonnes pratiques

1. Utiliser Canonical URLs avec les versions

Spécifiez toujours les numéros de version lorsque vous demandez des questionnaires spécifiques :

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

Pourquoi : Garantit la cohérence et empêche les changements inattendus lors de la mise à jour des questionnaires.

2. Tirez parti de ChangedSince pour améliorer les performances

Pour les questionnaires fréquemment consultés, utilisez changedSince pour minimiser le transfert de données :

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

Pourquoi : réduit la latence et l'utilisation de la bande passante en ne récupérant que les ressources mises à jour.

3. Incluez des informations complètes sur la couverture

Fournissez des informations complètes sur la couverture afin de garantir une sélection correcte du questionnaire :

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

Pourquoi : aide à HealthLake identifier les questionnaires et les exigences spécifiques au payeur.

  • Claim/$submit- Soumettre les demandes d'autorisation préalable avec la documentation complète

  • Claim/$inquire- Vérifier l'état des autorisations antérieures soumises

  • ValueSet/$expand- Élargir ValueSets pour les choix de réponses