Copier des données du service FHIR vers Azure Synapse Analytics
Dans cet article, vous allez découvrir trois façons de copier des données du service FHIR dans Azure Health Data Services vers Azure Synapse Analytics, qui est un service d’analytique illimité qui regroupe l’intégration de données, l’entreposage de données d’entreprise et l’analytique du Big Data.
- Utiliser l’outil OSS de l’agent de synchronisation FHIR vers Synapse Sync
- Utiliser l’outil OSS du générateur de pipeline FHIR vers CDM
- Utiliser $export et charger des données dans Synapse à l’aide de T-SQL
Utilisation de l’outil OSS de l’agent de synchronisation FHIR vers Synapse Sync
Notes
FHIR vers Synapse Sync Agent est un outil open source publié sous licence MIT et n’est pas couvert par le contrat SLA Microsoft pour les services Azure.
L’agent de synchronisation FHIR vers Synapse est un projet MICROSOFT OSS publié sous licence MIT. Il s’agit d’une fonction Azure qui extrait des données d’un serveur FHIR à l’aide des API de ressources FHIR, les convertit en fichiers Parquet hiérarchiques et les écrit dans Azure Data Lake en quasi-temps réel. Il contient également un script pour créer des tables et des vues externes dans un pool SQL Serverless Synapse pointant vers les fichiers Parquet.
Cette solution vous permet d’interroger l’ensemble des données FHIR avec des outils tels que Synapse Studio, SSMS et Power BI. Vous pouvez également accéder aux fichiers Parquet directement à partir d’un pool Synapse Spark. Vous devez envisager cette solution si vous souhaitez accéder à toutes vos données FHIR en quasi-temps réel et que vous souhaitez différer la transformation personnalisée vers les systèmes en aval.
Suivez la documentation OSS pour obtenir des instructions d’installation et d’utilisation.
Utilisation de l’outil OSS du générateur de pipeline FHIR vers CDM
Notes
Le générateur de pipeline FHIR vers CDM est un outil open source publié sous licence MIT et n’est pas couvert par le contrat SLA Microsoft pour les services Azure.
Le générateur de pipeline FHIR vers CDM est un projet OSS Microsoft publié sous licence MIT. Il s’agit d’un outil permettant de générer un pipeline ADF permettant de copier un instantané de données à partir d’un serveur FHIR à l’aide de $export’API, de les transformer au format csv et d’écrire dans un dossier CDM dans Azure Data Lake Storage Gen 2. L’outil nécessite un fichier de configuration créé par l’utilisateur contenant des instructions pour projeter et aplatir des ressources et des champs FHIR dans des tables. Vous pouvez également suivre les instructions de création d’un pipeline en aval dans l’espace de travail Synapse pour déplacer des données du dossier CDM vers un pool SQL dédié Synapse.
Cette solution vous permet de transformer les données au format tabulaire à mesure qu’elles sont écrites dans le dossier CDM. Vous devez envisager cette solution si vous souhaitez transformer des données FHIR en schéma personnalisé après leur extraction du serveur FHIR.
Suivez la documentation OSS pour obtenir des instructions d’installation et d’utilisation.
Chargement des données exportées vers Synapse à l’aide de T-SQL
Dans cette approche, vous utilisez l’opération FHIR $export
pour copier des ressources FHIR dans un stockage d’objets blob Azure Data Lake Gen 2 (ADL Gen 2) au NDJSON
format. Ensuite, vous chargez les données du stockage dans des pools SQL serverless ou dédiés dans Synapse à l’aide de T-SQL. Vous pouvez convertir ces étapes en un pipeline de déplacement de données robuste à l’aide de pipelines Synapse.
Utilisation $export
de pour copier des données
Configuration $export
dans le serveur FHIR
Le serveur FHIR dans Azure Health Data Services implémente l’opération $export
définie par la spécification FHIR pour exporter tout ou un sous-ensemble filtré de données FHIR au NDJSON
format. En outre, il prend en charge l’exportation dés-identifiée pour anonymiser les données FHIR pendant l’exportation.
Pour exporter des données FHIR vers le stockage Blob Azure, vous devez d’abord configurer votre serveur FHIR afin qu’il exporte les données vers le compte de stockage. Vous devez (1) activer l’identité managée, (2) accéder à Access Control dans le compte de stockage et ajouter une attribution de rôle, (3) sélectionner votre compte de stockage pour $export
. Vous trouverez plus d’informations pas à pas ici.
Vous pouvez configurer le serveur pour exporter les données vers n’importe quel type de compte de stockage Azure, mais nous vous recommandons d’exporter vers ADL Gen 2 pour un alignement optimal avec Synapse.
Utilisation de la $export
commande
Après avoir configuré votre serveur FHIR, vous pouvez suivre la documentation pour exporter vos ressources FHIR au niveau du système, du patient ou du groupe. Par exemple, vous pouvez exporter toutes vos données FHIR relatives aux patients dans un Group
avec la commande suivante $export
, dans laquelle vous spécifiez le nom de stockage de votre objet blob ADL Gen 2 dans le champ {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
Vous pouvez également utiliser _type
le paramètre dans l’appel $export
ci-dessus pour restreindre les ressources que vous souhaitez exporter. Par exemple, l’appel suivant exporte uniquement Patient
les ressources , MedicationRequest
et Observation
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
Pour plus d’informations sur les différents paramètres pris en charge, consultez notre $export
section de page sur les paramètres de requête.
Utilisation de Synapse for Analytics
Création d’un espace de travail Synapse
Avant d’utiliser Synapse, vous avez besoin d’un espace de travail Synapse. Vous allez créer un service Azure Synapse Analytics sur Portail Azure. Vous trouverez plus d’informations détaillées ici. Vous avez besoin d’un ADLSGEN2
compte pour créer un espace de travail. Votre espace de travail Azure Synapse utilisera ce compte de stockage pour stocker vos données d’espace de travail Synapse.
Après avoir créé un espace de travail, vous pouvez afficher votre espace de travail dans Synapse Studio en vous connectant à votre espace de travail sur https://web.azuresynapse.netou en lançant Synapse Studio dans le Portail Azure.
Création d’un service lié entre stockage Azure et Synapse
Pour copier vos données vers Synapse, vous devez créer un service lié qui connecte votre compte stockage Azure, où vous avez exporté vos données, avec Synapse. Vous trouverez d’autres instructions détaillées ici.
- Dans Synapse Studio, accédez à l’onglet Gérer et sous Connexions externes, sélectionnez Services liés.
- Sélectionnez Nouveau pour ajouter un nouveau service lié.
- Sélectionnez Azure Data Lake Storage Gen2 dans la liste, puis sélectionnez Continuer.
- Entrez vos informations d’identification d’authentification. Lorsque vous avez terminé, sélectionnez Créer.
Maintenant que vous disposez d’un service lié entre votre stockage ADL Gen 2 et Synapse, vous êtes prêt à utiliser des pools Sql Synapse pour charger et analyser vos données FHIR.
Choisir entre un pool SQL serverless et un pool SQL dédié
Azure Synapse Analytics propose deux pools SQL différents, le pool SQL serverless et le pool SQL dédié. Le pool SQL serverless offre la flexibilité d’interroger des données directement dans le stockage d’objets blob à l’aide du point de terminaison SQL serverless sans provisionnement de ressources. Le pool SQL dédié a la puissance de traitement pour des performances et une concurrence élevées, et est recommandé pour les fonctionnalités d’entreposage de données à l’échelle de l’entreprise. Pour plus d’informations sur les deux pools SQL, consultez la page de documentation Synapse sur l’architecture SQL.
Utilisation d’un pool SQL serverless
Étant donné qu’il est serverless, il n’y a pas d’infrastructure à configurer ou de clusters à gérer. Vous pouvez commencer à interroger des données à partir de Synapse Studio dès que l’espace de travail est créé.
Par exemple, la requête suivante peut être utilisée pour transformer les champs sélectionnés à partir d’une Patient.ndjson
structure tabulaire :
SELECT * FROM
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson',
FORMAT = 'csv',
FIELDTERMINATOR ='0x0b',
FIELDQUOTE = '0x0b')
WITH (doc NVARCHAR(MAX)) AS rows
CROSS APPLY OPENJSON(doc)
WITH (
ResourceId VARCHAR(64) '$.id',
Active VARCHAR(10) '$.active',
FullName VARCHAR(100) '$.name[0].text',
Gender VARCHAR(20) '$.gender',
...
)
Dans la requête ci-dessus, la OPENROWSET
fonction accède aux fichiers dans stockage Azure, analyse le OPENJSON
texte JSON et retourne les propriétés d’entrée JSON sous forme de lignes et de colonnes. Chaque fois que cette requête est exécutée, le pool SQL serverless lit le fichier à partir du stockage d’objets blob, analyse le JSON et extrait les champs.
Vous pouvez également matérialiser les résultats au format Parquet dans une table externe pour obtenir de meilleures performances de requête, comme indiqué ci-dessous :
-- Create External data source where the parquet file will be written
CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
LOCATION = 'https://{{youraccount}}.blob.core.windows.net/{{exttblcontainer}}'
);
GO
-- Create External File Format
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO
CREATE EXTERNAL TABLE [dbo].[Patient] WITH (
LOCATION = 'PatientParquet/',
DATA_SOURCE = [MyDataSource],
FILE_FORMAT = [ParquetFF]
) AS
SELECT * FROM
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson'
-- Use rest of the SQL statement from the previous example --
Utilisation d’un pool SQL dédié
Le pool SQL dédié prend en charge les tables managées et un cache hiérarchique pour les performances en mémoire. Vous pouvez importer du Big Data avec des requêtes T-SQL simples, puis utiliser la puissance du moteur de requête distribuée pour exécuter des analyses hautes performances.
Le moyen le plus simple et le plus rapide de charger des données de votre stockage vers un pool SQL dédié consiste à utiliser la COPY
commande dans T-SQL, qui peut lire des fichiers CSV, Parquet et ORC. Comme dans l’exemple de requête ci-dessous, utilisez la COPY
commande pour charger les NDJSON
lignes dans une structure tabulaire.
-- Create table with HEAP, which is not indexed and does not have a column width limitation of NVARCHAR(4000)
CREATE TABLE StagingPatient (
Resource NVARCHAR(MAX)
) WITH (HEAP)
COPY INTO StagingPatient
FROM 'https://{{yourblobaccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson'
WITH (
FILE_TYPE = 'CSV',
ROWTERMINATOR='0x0a',
FIELDQUOTE = '',
FIELDTERMINATOR = '0x00'
)
GO
Une fois que vous avez les lignes JSON dans le StagingPatient
tableau ci-dessus, vous pouvez créer différents formats tabulaires des données à l’aide de la OPENJSON
fonction et stocker les résultats dans des tables. Voici un exemple de requête SQL pour créer une Patient
table en extrayant quelques champs de la Patient
ressource :
SELECT RES.*
INTO Patient
FROM StagingPatient
CROSS APPLY OPENJSON(Resource)
WITH (
ResourceId VARCHAR(64) '$.id',
FullName VARCHAR(100) '$.name[0].text',
FamilyName VARCHAR(50) '$.name[0].family',
GivenName VARCHAR(50) '$.name[0].given[0]',
Gender VARCHAR(20) '$.gender',
DOB DATETIME2 '$.birthDate',
MaritalStatus VARCHAR(20) '$.maritalStatus.coding[0].display',
LanguageOfCommunication VARCHAR(20) '$.communication[0].language.text'
) AS RES
GO
Étapes suivantes
Dans cet article, vous avez appris trois façons différentes de copier vos données FHIR dans Synapse.
Ensuite, vous pouvez découvrir comment dés-identifier vos données FHIR tout en les exportant vers Synapse afin de protéger les données PHI.
FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour