Guide de mise en œuvre de SMART on FHIR

Information utile sur la mise en œuvre de SMART avec Ocean

Cette vidéo offre un aperçu de la manière dont HL7 SMART on FHIR peut être utilisé pour se lancer dans Ocean, ainsi que des conseils pour commencer une implémentation sur un serveur SMART. Cet article accélérera davantage vos activités de mise en œuvre en partageant des conseils et des considérations recueillis auprès d'autres implémenteurs. Il est divisé en sections suivantes :

  • Considérations de configuration - Éléments importants à prendre en compte pour préparer la 'poignée de main' entre les systèmes.
  • Plongée plus profonde dans le flux de séquence - Détails supplémentaires sur les données échangées entre les systèmes et comment elles sont utilisées.
  • Conseils pour l'opération $everything - Détail des avantages de la nouvelle opération /Patient/[id]/$everything et conseils pour les configurations d'intégration du lancement SMART.
  • Contexte FHIR - Informations supplémentaires sur le contexte FHIR avec le lancement SMART.
  • Réception automatique d'une copie de la référence - Utilisation des API et des configurations Ocean pour recevoir automatiquement une copie de la référence qui vient d'être envoyée depuis le lancement SMART.
  • Partage de l'identifiant de référence POS avec Ocean - Détails concernant l'identifiant de référence interne du serveur POS/FHIR et comment Ocean peut le renvoyer au système POS.
  • Paramètres d''action' de lancement SMART - Liste de tous les paramètres d''action' pour le lancement SMART dans Ocean.

Cet article de support sera 'vivant' à mesure que des conseils supplémentaires seront recueillis. Il est recommandé de le 'suivre' afin de recevoir une notification lorsqu'il est mis à jour.

Définitions utilisées dans cet article

  • Demandeur - l'individu (fournisseur ou patient) qui soumet une demande de référence.
  • Fournisseur de services - le service/l'organisation/fournisseur clinique ou communautaire qui reçoit une demande de référence pour fournir un service au patient.
  • Point de service (POS) - le système de gestion des dossiers des patients utilisé par le demandeur (par ex. DMÉ, DME, système de gestion de cas, CRM).
  • Serveur SMART - le composant logiciel utilisé par le POS pour permettre le lancement contextuel dans Ocean.
  • Authentification unique (SSO) - la capacité d'accéder à son compte utilisateur Ocean sans avoir à saisir manuellement son nom d'utilisateur et son mot de passe.
  • Lancement contextuel - la capacité d'accéder à Ocean en utilisant SSO, ainsi que d'avoir le patient qui est 'en contexte' dans le POS être 'mis en contexte' dans Ocean sans que le fournisseur ait à rechercher manuellement ce patient et/ou à saisir les données de ce patient.
  • ID client - un identificateur émis par le serveur SMART à Ocean pour le reconnaître en tant qu'application SMART.
  • ID site - l'identificateur d'Ocean pour le site configuré par le fournisseur de services dans Ocean pour envoyer et/ou recevoir (et gérer) des eRéférences.

Liste de vérification de configuration

  • Fournir à l'équipe Ocean les points de terminaison du serveur SMART afin qu'ils puissent être ajoutés à la liste blanche Ocean (voir la section Liste blanche ici).
  • L'identifiant du client (utilisé aux étapes 3, 4, 11) est fourni par le serveur SMART à Ocean lors de la configuration de l'intégration. Ocean le stocke et le renvoie lors de son lancement.
    • Ocean a seulement besoin d'un identifiant de client par URL de serveur SMART. Le même identifiant de client peut être utilisé pour plusieurs organisations avec des sites Ocean, tant qu'ils sont hébergés dans le même environnement (par exemple, un système de point de vente SaaS).
  • S'assurer que le cadre de développement permet la personnalisation du jeton d'accès et des jetons d'identifiant. Certains cadres, tels que Javaspring et .NET, permettent de contrôler les flux, mais d'autres sont moins personnalisables.

Approfondissement de la séquence de flux

  • L'identifiant du patient (étapes 8, 9, 15, 16) est l'identificateur utilisé pour identifier de manière unique le patient dans le point de vente. Il n'est pas nécessaire de suivre un format d'identifiant prescrit (par exemple, le GUID à l'étape 16 est un exemple).
    • Ocean utilise uniquement l'identifiant du patient comme clé au point de terminaison FHIR Patient.read pour récupérer la ressource Patient.
  • Idéalement, la ressource Patient.read du point de vente/serveur SMART fournira toutes les données requises pour pré-remplir la section Information du patient de l'eRéférence Ocean. Cependant, Ocean ne rejettera pas une ressource Patient peu renseignée ; il exploitera les données disponibles (et le demandeur de la référence devra remplir manuellement les champs manquants).
  • À l'inverse, Ocean ignorera toute donnée démographique supplémentaire reçue dans la ressource Patient qui n'est pas nécessaire pour compléter la section Information du patient de l'eRéférence.
  • Le champ sub dans la charge utile du jeton d'identifiant JWT (étape 9) contient l'identifiant unique du point de vente/serveur SMART pour l'utilisateur. Ocean effectuera une recherche basée sur les champs démographiques dans le jeton d'identifiant pour identifier un utilisateur Ocean correspondant, puis stockera un lien dans le compte Ocean de l'utilisateur vers l'ID utilisateur du point de vente pour permettre la connexion unique.
  • Le lien ID utilisateur du point de vente-ID utilisateur Ocean n'est pas affecté si l'utilisateur modifie son mot de passe du point de vente ou toute autre donnée démographique autre que l'ID utilisateur lui-même.
  • Ocean ne peut être lancé que via SMART dans un nouvel onglet de navigateur ; il ne se lancera pas dans un iFrame.

Conseils pour l'opération $everything

  • Ocean analyse tous les pièces jointes qu'il reçoit via le point de terminaison $everything.
  • L'opération /Patient/[id]/$everything est une nouvelle alternative au point de terminaison Patient.read. Elle fournit à Ocean des informations supplémentaires importantes pour le lancement contextuel.
  • Les implémenteurs peuvent configurer dans leur intégration de lancement SMART si Ocean doit utiliser Patient.read ou l'opération plus complète $everything lors du lancement contextuel.
  • En particulier, l'opération $everything permet à Ocean de lire les informations du patient suivantes dans le but de pré-remplir les formulaires Ocean :
    • Médicaments
    • Allergies
      • Liste des problèmes
    • Antécédents médicaux passés
    • Antécédents médicaux de sa famille
    • Pièces jointes du dossier (présélectionnées)
    • Observations/Vitales/Valeurs de laboratoire
    • Immunisations
  • Ocean traitera les ressources FHIR suivantes lorsqu'elles sont incluses dans le bundle $everything :
    • Déclaration de médication
    • Intolérance aux allergies
    • Conditions (pour les vitales et les valeurs de laboratoire)
    • Rendez-vous
    • Observation
    • Référence de document (pour les pièces jointes du dossier pré-sélectionnées)
    • Immunisation
  • Veuillez consulter ce guide pour des informations supplémentaires.

Spécification des valeurs de NIP et d'assurance maladie à pré-remplir

  • Dans un scénario où la ressource Patient a plusieurs propriétés d'identificateur correspondant à différents numéros de dossier médical (NIP), Ocean a introduit un paramètre de requête de lancement SMART pour indiquer à Ocean quelle valeur de NIP pré-remplir :
    • mrnText correspond au Identifier.type.text que Ocean recherchera pour obtenir la valeur de NIP correspondante.
  • De même, les serveurs SMART utilisent différents systèmes pour spécifier l'identificateur correspondant au numéro de carte d'assurance maladie (NAM). Afin d'indiquer à Ocean quel identificateur utiliser pour pré-remplir le champ NAM Ocean :
    • jhnSystem équivaut à la valeur du système de la propriété d'identificateur que Ocean recherchera pour obtenir la valeur de NAM correspondante. Par exemple, les sites Epic ajouteraient ce qui suit à leur chaîne de lancement : &jhnSystem=https%3A%2F%2Fopen%2Eepic%2Ecom%2FFHIR%2FStructureDefinition%2FPayerMemberId
  • Ocean effectuera une correspondance exacte (en excluant les "guillemets") et reviendra à la valeur par défaut si aucune correspondance n'est trouvée. Les caractères spéciaux peuvent être encodés.

Contexte FHIR

  • Lors de l'initiation d'un lancement SMART pour une demande de service (par exemple, eRéférence, eCommande ou eConseil), les implémenteurs peuvent inclure l'identifiant de l'enregistrement de demande de service préliminaire de leur système de lancement dans le fhirContext SMART.
  • Si fourni, Ocean stocke cet identifiant avec la demande de service et l'inclut dans la liste des identifiants pour les messages FHIR ultérieurs liés à la demande de service.
  • Cette fonctionnalité facilite le lien entre l'enregistrement de demande de service préliminaire dans le DSÉ (communément appelé "référence ou consultation en attente") et la messagerie FHIR en backend de la demande de service.
  • Le fhirContext est inclus dans le jeton de réponse, aux côtés de l'access_token.
  • Il doit faire partie du JSON du jeton, formaté comme un tableau, comme ceci : [{"reference": "ServiceRequest/{serviceRequestId}"}].
  • Pour plus d'informations sur le contexte FHIR, consultez l'article officiel sur les scopes et le contexte de lancement SMART.
  • Exemple d'un jeton de contexte de lancement
    {
      "access_token": "{access_token à utiliser pour les appels API FHIR ultérieurs}",
      "token_type": "Bearer",
      "expires_in": 3600,
      "refresh_token": "{refresh_token ; ignoré par Ocean}",
      "scope": "{scopes accordés ; devrait généralement correspondre à la demande ",
      "patient": "{identifiant du patient, ou omis s'il n'y a pas de patient dans le contexte}",
      "encounter": "{identifiant de l'interaction, ignoré par Ocean}"
      "id_token": {
        %% JWT valide signé avec des valeurs encodées compatibles OIDC 
        "sub": "{uuid de l'utilisateur}",
        "iss": "{URL de l'émetteur du jeton}",
        "aud": "{client_id}",
        "exp": {date/heure d'expiration par exemple, 1679028255},
        "iat": {date/heure d'émission par exemple, 1679024655},
        "nonce": "{GUID de nonce ; facultatif ; doit correspondre à celui d'Ocean s'il est fourni}"
      },
      "intent": "action={oceanAction}&resource={oceanResource}", %% facultatif
      "tenant": "UUID opaque de l'organisation ; ignoré par Ocean", %% facultatif
      "fhirContext": "[{"reference": "ServiceRequest/{serviceRequestId}"}]"
    }
    

Le diagramme de séquence ci-dessous illustre les interactions en backend entre les systèmes qui se produisent pour permettre la connexion unique SMART d'Ocean et le lancement contextuel. (un fichier PDF est disponible en bas de cet article).

Recevoir une copie de la référence automatiquement

  • Le demandeur peut vouloir une copie de la référence dans le dossier du patient dans le DSÉ. Ce processus de copie peut être effectué manuellement en copiant et collant depuis Ocean.
  • Alternativement, l'automatisation est possible si le système serveur POS/SMART implémente soit l'API FHIR eRéférence d'Ocean pour recevoir de nouvelles eRéférences, soit l'API Open eRéférence d'Ocean pour récupérer des eRéférences. Dans ce cas, Ocean enverra une notification webhook au point de terminaison spécifié, avec un événement de message FHIR de notify-add-service-request (pour l'API FHIR eRéférence) ou notify-upstream-service-request (pour l'API Open).

Partager l'identifiant de la référence POS avec Ocean

  • Il est possible d'envoyer à Ocean l'identifiant de référence interne du serveur POS/FHIR afin qu'il puisse être inclus dans la charge utile de l'eRéférence FHIR renvoyée par Ocean. Ceci est utile pour les systèmes POS qui créent une référence interne avant de se lancer dans Ocean et qui souhaitent fusionner la charge utile avec cette référence interne.
  • L'identifiant de référence interne peut être envoyé dans le paramètre fhirContext de l'access token pour transmettre la référence de substitution du lanceur SMART (par exemple [{reference: “ServiceRequest/123”}]).  Ocean utilisera l'URL iss initiale du serveur fournie par le DMÉ au lancement et la combinera avec le fhirContext.
    En concaténant les deux valeurs ci-dessus, cela produira un URI globalement unique pour ServiceRequest.identifier.value = https://chr.telus.com/fhir/ServiceRequest/123
  • En plus de l'identifiant de référence d'Ocean, cet identifiant de référence POS apparaîtra dans la propriété d'identifiant de ServiceRequest avec la valeur ServiceRequest.identifier.system = urn:ietf:rfc:3986

Paramètres d'Action de Lancement SMART / Intention FHIR

Le tableau ci-dessous décrit la liste de tous les paramètres d'Action pour le lancement SMART dans Ocean.

Paramètre action Paramètre resource (si utilisé) Description
viewMap S.O. Lance l'utilisateur dans Healthmap Ocean
viewHealthServices La Catégorie de Service de Santé pertinente (par ex. SERVICES DE CARDIOLOGIE) Lance l'utilisateur dans Healthmap Ocean filtré pour un service de santé spécifique
searchHealthMap Un mot-clé ou une phrase de recherche simple (par ex. "pression artérielle"). Les caractères non alphanumériques doivent être encodés en URL (par ex. avec un "%20" à la place d'un espace). Lance l'utilisateur dans Healthmap Ocean et effectue une recherche pour le mot-clé pertinent
referDirect La valeur de référence de l'inscription dans l'annuaire Lance l'utilisateur directement dans Healthmap Ocean à l'inscription dans l'annuaire spécifiée comme la 'resource'
portal S.O. Lance l'utilisateur dans le Portail Ocean
sendMessage Optionnel - L'identificateur du modèle de message Initie un nouveau message au patient avec le modèle de message spécifié ou celui par défaut s'il n'y en a pas de spécifié
addForm S.O. Permet à l'utilisateur de rechercher et mettre en file d'attente des eFormulaires Ocean pour que le patient les complète
viewServiceRequest La valeur de référence pour la demande de service pertinente (eRéférence/eConseil/eCommande) Lance l'utilisateur directement dans une demande de service spécifique.
viewReferralFavourite L'identificateur de l'élément favori. Lance l'utilisateur directement dans une référence pour l'Offre de l'inscription dans l'annuaire dans la liste des favoris spécifiée comme la 'resource'
debug S.O. Reste sur la page de lancement à des fins de dépannage. Peut également être de la forme debug:[action] (comme debug:addForm) pour des informations plus spécifiques.
[vide] S.O.

Lorsque le paramètre Action est laissé vide ou omis, l'utilisateur est lancé dans la Vue Résumé du Patient pour le patient DMÉ actuel par défaut.

Si aucun patient n'est fourni dans le contexte de lancement, l'utilisateur est simplement redirigé vers le Portail Ocean.

Vous avez d’autres questions ? Envoyer une demande