Gegevens kopiëren van de FHIR-service naar Azure Synapse Analytics
In dit artikel leert u drie manieren om gegevens van de FHIR-service® in Azure Health Data Services te kopiëren naar Azure Synapse Analytics. Dit is een onbeperkte analyseservice die gegevensintegratie, datawarehousing voor ondernemingen en big data-analyses combineert.
- Het OSS-hulpprogramma FHIR gebruiken voor Synapse Sync Agent
- Het OSS-hulpprogramma FHIR gebruiken voor CDM-pijplijngenerator
- Gebruik $export en laad gegevens naar Synapse met behulp van T-SQL
Het OSS-hulpprogramma FHIR gebruiken voor Synapse Sync Agent
Notitie
FHIR naar Synapse Sync Agent is een opensource-hulpprogramma dat is uitgebracht onder MIT-licentie en wordt niet gedekt door de Microsoft SLA voor Azure-services.
De FHIR naar Synapse Sync Agent is een Microsoft OSS-project dat is uitgebracht onder MIT-licentie. Het is een Azure-functie die gegevens uit een FHIR-server extraheert met behulp van FHIR-resource-API's, deze converteert naar hiërarchische Parquet-bestanden en deze in bijna realtime naar Azure Data Lake schrijft. Dit bevat ook een script voor het maken van externe tabellen en weergaven in synapse serverloze SQL-pool die verwijst naar de Parquet-bestanden.
Met deze oplossing kunt u query's uitvoeren op de volledige FHIR-gegevens met hulpprogramma's zoals Synapse Studio, SSMS en Power BI. U kunt de Parquet-bestanden ook rechtstreeks openen vanuit een Synapse Spark-pool. U moet deze oplossing overwegen als u bijna in realtime toegang wilt krijgen tot al uw FHIR-gegevens en aangepaste transformatie naar downstreamsystemen wilt uitstellen.
Volg de OSS-documentatie voor installatie- en gebruiksinstructies.
Het OSS-hulpprogramma FHIR naar CDM-pijplijngenerator gebruiken
Notitie
FHIR naar CDM-pijplijngenerator is een opensource-hulpprogramma dat is uitgebracht onder DE MIT-licentie en wordt niet gedekt door de Microsoft SLA voor Azure-services.
De FHIR naar CDM-pijplijngenerator is een Microsoft OSS-project dat is uitgebracht onder MIT-licentie. Het is een hulpprogramma voor het genereren van een ADF-pijplijn voor het kopiëren van een momentopname van gegevens van een FHIR-server met behulp van $export-API, het transformeren ervan naar csv-indeling en het schrijven naar een CDM-map in Azure Data Lake Storage Gen 2. Het hulpprogramma vereist een door de gebruiker gemaakt configuratiebestand met instructies voor het projecteren en plat maken van FHIR-resources en -velden in tabellen. U kunt ook de instructies volgen voor het maken van een downstream-pijplijn in de Synapse-werkruimte om gegevens te verplaatsen van een CDM-map naar een toegewezen SQL-pool van Synapse.
Met deze oplossing kunt u de gegevens transformeren in tabelvorm, omdat deze naar de CDM-map worden geschreven. U moet deze oplossing overwegen als u FHIR-gegevens wilt transformeren naar een aangepast schema nadat deze zijn geëxtraheerd van de FHIR-server.
Volg de OSS-documentatie voor installatie- en gebruiksinstructies.
Geëxporteerde gegevens laden naar Synapse met behulp van T-SQL
In deze benadering gebruikt u de FHIR-bewerking $export
om FHIR-resources te kopiëren naar een Azure Data Lake Gen 2-blobopslag (ADL Gen 2) in NDJSON
indeling. Vervolgens laadt u de gegevens uit de opslag in serverloze of toegewezen SQL-pools in Synapse met behulp van T-SQL. U kunt deze stappen converteren naar een robuuste pijplijn voor gegevensverplaatsing met behulp van Synapse-pijplijnen.
Gegevens $export
kopiëren
$export
Configureren op de FHIR-server
De FHIR-server in Azure Health Data Services implementeert de $export
bewerking die is gedefinieerd door de FHIR-specificatie voor het exporteren van alle of een gefilterde subset van FHIR-gegevens in NDJSON
indeling. Daarnaast biedt het ondersteuning voor niet-geïdentificeerde export om FHIR-gegevens tijdens de export anoniem te maken.
Als u FHIR-gegevens wilt exporteren naar Azure Blob Storage, moet u eerst uw FHIR-server configureren om gegevens naar het opslagaccount te exporteren. U moet (1) Beheerde identiteit inschakelen, (2) ga naar Toegangsbeheer in het opslagaccount en voeg roltoewijzing toe, (3) selecteer uw opslagaccount voor $export
. Meer stapsgewijze instructies vindt u hier.
U kunt de server configureren voor het exporteren van de gegevens naar elk type Azure-opslagaccount, maar we raden u aan om te exporteren naar ADL Gen 2 voor de beste afstemming met Synapse.
Opdracht gebruiken $export
Nadat u de FHIR-server hebt geconfigureerd, kunt u de documentatie volgen om uw FHIR-resources te exporteren op systeem-, patiënt- of groepsniveau. U kunt bijvoorbeeld al uw FHIR-gegevens met betrekking tot de patiënten exporteren in een Group
met de volgende $export
opdracht, waarin u de naam van uw ADL Gen 2-blobopslag in het veld {{BlobContainer}}
opgeeft:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
U kunt ook de parameter in de voorgaande $export
aanroep gebruiken _type
om de resources te beperken die u wilt exporteren. De volgende aanroep exporteert bijvoorbeeld alleen Patient
, MedicationRequest
en Observation
resources:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
Raadpleeg de $export
paginasectie over de queryparameters voor meer informatie over de verschillende ondersteunde parameters.
Synapse for Analytics gebruiken
Een Synapse-werkruimte maken
Voordat u Synapse gebruikt, hebt u een Synapse-werkruimte nodig. Maak een Azure Synapse Analytics-service in Azure Portal. Hier vindt u meer stapsgewijze instructies. U hebt een ADLSGEN2
account nodig om een werkruimte te maken. Uw Azure Synapse-werkruimte gebruikt dit opslagaccount om uw Synapse-werkruimtegegevens op te slaan.
Nadat u een werkruimte hebt gemaakt, kunt u uw werkruimte weergeven in Synapse Studio door u aan te melden bij uw werkruimte in https://web.azuresynapse.netof Synapse Studio te starten in Azure Portal.
Een gekoppelde service maken tussen Azure Storage en Synapse
Als u uw gegevens naar Synapse wilt kopiëren, moet u een gekoppelde service maken die uw Azure Storage-account verbindt, waar u uw gegevens hebt geëxporteerd, met Synapse. Meer stapsgewijze instructies vindt u hier.
- Blader in Synapse Studio naar het tabblad Beheren en selecteer onder Externe verbindingen gekoppelde services.
- Selecteer Nieuw om een nieuwe gekoppelde service toe te voegen.
- Selecteer Azure Data Lake Storage Gen2 in de lijst en selecteer Doorgaan.
- Voer uw verificatiereferenties in. Selecteer Maken nadat dit is voltooid.
Nu u een gekoppelde service hebt tussen uw ADL Gen 2-opslag en Synapse, kunt u Synapse SQL-pools gebruiken om uw FHIR-gegevens te laden en te analyseren.
Kiezen tussen serverloze en toegewezen SQL-pool
Azure Synapse Analytics biedt twee verschillende SQL-pools: serverloze SQL-pool en toegewezen SQL-pool. Serverloze SQL-pool biedt de flexibiliteit om rechtstreeks query's uit te voeren op gegevens in de blobopslag met behulp van het serverloze SQL-eindpunt zonder resourceinrichting. Toegewezen SQL-pool heeft de verwerkingskracht voor hoge prestaties en gelijktijdigheid en wordt aanbevolen voor datawarehousingmogelijkheden op ondernemingsniveau. Raadpleeg de synapse-documentatiepagina over de SQL-architectuur voor meer informatie over de twee SQL-pools.
Serverloze SQL-pool gebruiken
Omdat het serverloos is, is er geen infrastructuur voor het instellen of onderhouden van clusters. U kunt gegevens opvragen vanuit Synapse Studio zodra de werkruimte is gemaakt.
De volgende query kan bijvoorbeeld worden gebruikt om geselecteerde velden Patient.ndjson
te transformeren in een tabellaire structuur:
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',
...
)
In de voorgaande query opent de OPENROWSET
functie bestanden in Azure Storage en parseert de JSON-tekst en OPENJSON
retourneert de JSON-invoereigenschappen als rijen en kolommen. Telkens wanneer deze query wordt uitgevoerd, leest de serverloze SQL-pool het bestand uit de blobopslag, parseert de JSON en extraheert de velden.
U kunt de resultaten ook materialiseren in Parquet-indeling in een externe tabel om de queryprestaties als volgt te verbeteren.
-- 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 --
Toegewezen SQL-pool gebruiken
Toegewezen SQL-pool ondersteunt beheerde tabellen en een hiërarchische cache voor prestaties in het geheugen. U kunt big data importeren met eenvoudige T-SQL-query's en vervolgens de kracht van de gedistribueerde query-engine gebruiken om krachtige analyses uit te voeren.
De eenvoudigste en snelste manier om gegevens van uw opslag naar een toegewezen SQL-pool te laden, is door de COPY
opdracht in T-SQL te gebruiken, die CSV-, Parquet- en ORC-bestanden kan lezen. Net als in de volgende voorbeeldquery gebruikt u de COPY
opdracht om de NDJSON
rijen in een tabellaire structuur te laden.
-- 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
Zodra u de JSON-rijen in de voorgaande StagingPatient
tabel hebt, kunt u verschillende tabellaire indelingen van de gegevens maken met behulp van de OPENJSON
functie en de resultaten opslaan in tabellen. Hier volgt een SQL-voorbeeldquery om een Patient
tabel te maken door een paar velden uit de Patient
resource te extraheren:
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
Volgende stappen
In dit artikel hebt u drie verschillende manieren geleerd om uw FHIR-gegevens naar Synapse te kopiëren.
Vervolgens leert u hoe u de identificatie van uw FHIR-gegevens ongedaan kunt maken tijdens het exporteren naar Synapse om PHI te beschermen.
Notitie
FHIR® is een geregistreerd handelsmerk van HL7 en wordt gebruikt met de machtiging HL7.