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)
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
questionnairecanoniques URLs -
Une ou plusieurs
orderressources
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 :
-
Identifier le patient et le payeur : extrait le patient et l'organisme d'assurance de vos
coverageparamètres. -
Trouvez le bon questionnaire :
-
Avec
questionnaireparamètre : utilise l'URL canonique que vous avez fournie -
Avec
orderparamètre : fait correspondre le code de commande (CPT/HCPCS/LOINC) et le payeur pour trouver le questionnaire approprié
-
-
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
-
-
Emballez le tout ensemble :
-
Regroupe toutes les ressources (chaque ressource n'est incluse qu'une seule fois)
-
Filtre par
changedSincehorodatage s'il est fourni -
Ajoute des avertissements
Outcomesi 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
questionnairedes élémentsordersuivants 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
questionnaireparamètre est fourni) - Priorité la plus élevée -
Analyse de la commande (si
orderle 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.relatedArtifactdepends-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 OKavec 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-packagepour 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/$submiten 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-packagepour 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
Outcomeparamè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
changedSincele 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.
Opérations liées
-
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