SMART on FHIR
Substitutable Medical Applications and Reusable Technologies (SMART on FHIR) (applications médicales substituables et les technologies réutilisables) est une norme de santé grâce à laquelle les applications peuvent accéder aux informations cliniques via un magasin de données. Il ajoute une couche de sécurité basée sur des normes ouvertes, notamment OAuth2 et OpenID Connect, aux interfaces FHIR® pour permettre l’intégration avec les systèmes EHR. L’utilisation de SMART on FHIR offre au moins trois avantages importants :
- Les applications ont une méthode connue pour obtenir l’authentification/l’autorisation sur un référentiel FHIR.
- Les utilisateurs accédant à un référentiel FHIR avec SMART on FHIR sont limités aux ressources associées à l’utilisateur, au lieu d’avoir accès à toutes les données du référentiel.
- Les utilisateurs ont la possibilité d’accorder aux applications l’accès à un ensemble limité de leurs données à l’aide d’étendues cliniques SMART.
Les didacticiels suivants fournissent des étapes pour activer SMART sur les applications FHIR avec le service FHIR.
Prérequis
- Instance du service FHIR
- SDK .NET 6.0
- Activer CORS (Partage des ressources cross-origin)
- Inscrire une application cliente publique dans Microsoft Entra ID
- Après l’inscription de l’application, notez les
applicationId
pour l’application cliente.
- Après l’inscription de l’application, notez les
- Vérifiez que vous avez accès à un abonnement Azure du service FHIR, pour créer des ressources et ajouter des attributions de rôles.
SMART on FHIR à l’aide d’exemples de Services de données de santé Azure (SMART on FHIR (amélioré))
Étape 1 : configurer le rôle d’utilisateur SMART FHIR
Suivez les étapes répertoriées dans la section Gérer les utilisateurs : Affecter des utilisateurs au rôle. Tout utilisateur ajouté à ce rôle pourra accéder au service FHIR, à condition que ses demandes soient conformes au guide d’implémentation SMART on FHIR. L’accès accordé aux utilisateurs dans ce rôle sera ensuite limité par les ressources associées à leur compartiment fhirUser et les restrictions dans les étendues cliniques.
Remarque
Le guide d’implémentation SMART on FHIR définit l’accès aux types de ressources FHIR avec des étendues. Ces étendues ont un impact sur l’accès qu’une application peut avoir aux ressources FHIR. Un utilisateur disposant du rôle d’utilisateur SMART a accès pour effectuer des interactions d’API de lecture sur le service FHIR. Le rôle d’utilisateur SMART n’accorde pas l’accès en écriture au service FHIR.
Étape 2 : intégration du serveur FHIR à des exemples
Cliquez sur ce lien pour accéder à la solution open source Azure Health Données et IA Exemples. Les étapes répertoriées dans le document permettent l’intégration du serveur FHIR à d’autres services Azure (tels que APIM, Fonctions Azure et bien plus encore).
Remarque
Les exemples sont du code open source et vous devez passer en revue les informations et les conditions de licence sur GitHub avant de les utiliser. Ils ne font pas partie du service de données de santé Azure et ne sont pas pris en charge par le Support Microsoft. Ces exemples sont utilisés pour montrer comment Services de données de santé Azure (AHDS) et d’autres outils open source peuvent être utilisés ensemble pour illustrer §170.315(g)(10) API standardisée pour les critères de services patients et de population conformité, à l’aide de Microsoft Entra ID comme flux de travail du fournisseur d’identité.
Proxy SMART on FHIR
Cliquez pour développer
Remarque
Il s’agit d’une autre option pour SMART sur FHIR(Enhanced) à l’aide des exemples AHDS mentionnés précédemment. Nous vous suggérons d’adopter SMART on FHIR (amélioré). L’option SMART sur FHIR Proxy est une option héritée. SMART on FHIR(Enhanced) fournit des fonctionnalités ajoutées au proxy SMART sur FHIR. SMART on FHIR(Enhanced) répond aux exigences de SMART on FHIR Implementation Guide (v 1.0.0) et §170.315(g)(10) API standardisée pour les critères de services de patients et de population.
Étape 1 : définir le consentement administrateur pour votre application cliente
Pour utiliser SMART on FHIR, vous devez d’abord authentifier et autoriser l’application. La première fois que vous utilisez SMART sur FHIR, vous devez également obtenir le consentement administratif pour permettre à l’application d’accéder à vos ressources FHIR.
Si vous n’avez pas de rôle de propriété dans l’application, contactez le propriétaire de l’application et demandez-lui de vous accorder le consentement administrateur dans l’application.
Si vous disposez de privilèges administratifs, effectuez les étapes suivantes pour accorder le consentement administrateur à vous-même directement. (Vous pouvez également accorder le consentement de l’administrateur à vous-même ultérieurement lorsque vous y êtes invité.) Vous pouvez utiliser ces mêmes étapes pour ajouter d’autres utilisateurs en tant que propriétaires, afin qu’ils puissent afficher et modifier l’inscription de l’application.
Pour vous ajouter vous-même ou un autre utilisateur en tant que propriétaire d’une application :
- Dans le portail Azure, accédez à Microsoft Entra ID.
- Dans le menu de gauche, sélectionnez Inscription de l’application.
- Recherchez l’inscription de l’application que vous avez créée, puis sélectionnez-la.
- Dans le menu de gauche, sous Gérer, sélectionnez Propriétaires.
- Sélectionnez Ajouter des propriétaires, puis ajoutez-vous ou ajoutez l’utilisateur pour lequel vous souhaitez obtenir le consentement administrateur.
- Cliquez sur Enregistrer
Étape 2 : activer le proxy SMART on FHIR
SMART on FHIR exige que Audience
possède un URI d’identificateur égal à l’URI du service FHIR. La configuration standard du service FHIR utilise une valeur Audience
de https://fhir.azurehealthcareapis.com
. Cependant, vous pouvez aussi définir une valeur correspondant à l’URL spécifique de votre service FHIR (par exemple https://MYFHIRAPI.fhir.azurehealthcareapis.com
). Cela est nécessaire quand le proxy SMART on FHIR est utilisé.
Pour activer le proxy SMART on FHIR dans les paramètres d’authentification de votre instance FHIR, cochez la case proxy SMART on FHIR.
Le proxy SMART on FHIR joue le rôle d’intermédiaire entre l’application SMART on FHIR et Microsoft Entra ID. La réponse d’authentification (code d’authentification) doit accéder au proxy SMART on FHIR à la place de l’application proprement dite. Le proxy transmet ensuite la réponse à l’application.
Du fait de ce relais en deux étapes du code d’authentification, vous devez définir l’URL de réponse (rappel) de votre application cliente Microsoft Entra sur une URL qui combine l’URL de réponse du proxy SMART on FHIR et l’URL de réponse de l’application SMART on FHIR. L’URL de réponse combinée prend la forme suivante.
https://MYFHIRAPI.azurehealthcareapis.com/AadSmartOnFhirProxy/callback/aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
Dans la réponse, aHR0cHM6Ly9sb2NhbGhvc3Q6NTAwMS9zYW1wbGVhcHAvaW5kZXguaHRtbA
est une version codée en URL et en base64 de l’URL de réponse de l’application SMART on FHIR. Pour le lanceur d’application SMART on FHIR, quand l’application s’exécute localement, l’URL de réponse est https://localhost:5001/sampleapp/index.html
.
Vous pouvez générer l’URL de réponse combinée à l’aide d’un script comme suit.
$replyUrl = "https://localhost:5001/sampleapp/index.html"
$fhirServerUrl = "https://MYFHIRAPI.fhir.azurewebsites.net"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($ReplyUrl)
$encodedText = [Convert]::ToBase64String($bytes)
$encodedText = $encodedText.TrimEnd('=');
$encodedText = $encodedText.Replace('/','_');
$encodedText = $encodedText.Replace('+','-');
$newReplyUrl = $FhirServerUrl.TrimEnd('/') + "/AadSmartOnFhirProxy/callback/" + $encodedText
Ajoutez l’URL de réponse à l’application cliente publique que vous avez créée précédemment pour Microsoft Entra ID.
Étape 3 : obtenir un patient test
Pour tester le service FHIR et le proxy SMART on FHIR, la base de données doit avoir au moins un patient. Si vous n’avez pas encore utilisé l’API et que vous n’avez pas encore de données dans la base de données, consultez Accéder au service FHIR à l’aide de Postman pour charger un patient. Notez l’ID d’un patient spécifique.
Étape 4 : télécharger le lanceur d’applications SMART on FHIR
Le dépôt FHIR Server pour Azure open source comporte un lanceur d’application SMART on FHIR simple et un exemple d’application SMART on FHIR. Dans ce tutoriel, utilisez ce lanceur d’applications SMART sur FHIR localement pour tester l’installation.
Vous pouvez cloner le référentiel GitHub et accéder à l’application à l’aide des commandes suivantes.
git clone https://github.com/Microsoft/fhir-server
cd fhir-server/samples/apps/SmartLauncher
L’application a besoin de quelques paramètres de configuration, que vous pouvez définir dans appsettings.json
:
{
"FhirServerUrl": "https://MYFHIRAPI.fhir.azurehealthcareapis.com",
"ClientId": "APP-ID",
"DefaultSmartAppUrl": "/sampleapp/launch.html"
}
Nous vous recommandons d’utiliser la fonctionnalité dotnet user-secrets
:
dotnet user-secrets set FhirServerUrl https://MYFHIRAPI.fhir.azurehealthcareapis.com
dotnet user-secrets set ClientId <APP-ID>
Utilisez la commande suivante pour exécuter l’application :
dotnet run
Étape 5 : tester le proxy SMART on FHIR
Une fois que vous avez démarré le lanceur d’applications SMART sur FHIR, vous pouvez pointer votre navigateur vers https://localhost:5001
, où vous devez voir les éléments suivants :
Lorsque vous renseignez les champs Patient, Consultation ou Médecin, vous constatez que le contenu de Contexte de lancement est mis à jour. Lorsque vous utilisez le service FHIR, le contexte de lancement est simplement un document JSON qui contient des informations concernant le patient, le médecin, etc. Ce contexte de lancement est encodé en base64 et transmis à l’application SMART on FHIR en tant que paramètre de requête launch
. Conformément à la spécification SMART on FHIR, cette variable est inintelligible pour l’application SMART on FHIR et est transmise au fournisseur d’identité.
Le proxy SMART on FHIR se sert de ces informations pour compléter les champs de la réponse de jeton. L’application SMART on FHIR peut utiliser ces champs pour contrôler sur quel patient porte la demande de données et sur la façon dont l’application s’affiche à l’écran. Le proxy SMART on FHIR prend en charge les champs suivants.
patient
encounter
practitioner
need_patient_banner
smart_style_url
Ces champs visent à fournir des indications à l’application, mais ils ne véhiculent pas d’information de sécurité. Une application SMART on FHIR peut les ignorer.
Notez que le lanceur d’application SMART on FHIR met à jour l’information Launch URL (URL de lancement) au bas de la page. Sélectionnez Lancer pour démarrer l’exemple d’application. Vous devriez voir ce qui suit.
Inspectez la réponse du jeton pour voir comment les champs de contexte de lancement sont transmis à l’application.
Migrer du proxy SMART on FHIR vers SMART on FHIR (amélioré)
Important
Le proxy SMART on FHIR sera mis hors service en septembre 2026, transitionnant à SMART on FHIR (amélioré) à cette date. À compter de septembre 2026, les applications qui s’appuient sur le proxy SMART on FHIR signaleront des erreurs lors de l’accès au service FHIR.
SMART on FHIR (amélioré) fournit plus de capacités par rapport au proxy SMART on FHIR. SMART on FHIR (amélioré) peut être considéré comme répondant aux exigences du Guide d’implémentation SMART on FHIR (v 1.0.0) et de l’API standardisée §170.315(g)(10) pour les critères des services de patients et de population. Le tableau suivant répertorie la différence entre le proxy SMART on FHIR et SMART on FHIR (amélioré).
Fonctionnalité | SMART on FHIR (amélioré) | SMART sur le proxy FHIR |
---|---|---|
Prend en charge le lancement autonome | Oui | Non |
Prend en charge le lancement EHR | Oui | Oui |
Prend en charge les restrictions d’étendue | Oui | Non |
S’appuie sur des produits Azure de premiers tiers | Oui, les produits Azure tels que Gestion des API Azure (APIM) doivent être intégrés | Non |
Support Microsoft | Pris en charge pour le service FHIR. La prise en charge de l’exemple open source doit être signalé et surveillé via GitHub | Pris en charge pour le service FHIR |
Étapes de migration
- Étape 1 : configurer le rôle d’utilisateur SMART FHIR. Suivez les étapes répertoriées dans la section Gérer les utilisateurs : attribuer des utilisateurs au rôle. Tout utilisateur ajouté au rôle d'utilisateur SMART peut accéder au service FHIR, à condition que ses requêtes soient conformes au guide d’implémentation SMART on FHIR.
- Étape 2 : déployer l’exemple SMART on FHIR sous les exemples OSS Données et IA de santé Azure
- Étape 3 : mettre à jour le point de terminaison de l’URL du service FHIR sur « {{BASEURL_FROM_APIM}}/smart ».
- Étape 4 : décochez le paramètre du proxy SMART on FHIR sous le panneau Authentification du service FHIR.
Si vous avez des questions, vous pouvez les poser aux experts de la communauté dans Microsoft Q&A. Pour le support technique, vous pouvez également créer une demande de support.
Étapes suivantes
Maintenant que vous avez découvert comment activez les fonctionnalité de SMART on FHIR, consultez la page d’exemples de recherche pour plus d’informations sur la façon de rechercher à l’aide de paramètres de recherche, de modificateurs et d’autres méthodes de recherche FHIR.
Remarque
FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.