Delen via


Gegevens kopiëren van Azure API for FHIR naar Azure Synapse Analytics

Belangrijk

Azure API for FHIR wordt op 30 september 2026 buiten gebruik gesteld. Volg de migratiestrategieën om op die datum over te stappen naar de FHIR-service® van Azure Health Data Services. Vanwege de buitengebruikstelling van Azure API for FHIR zijn nieuwe implementaties vanaf 1 april 2025 niet toegestaan. De FHIR-service van Azure Health Data Services is de ontwikkelde versie van Azure API for FHIR waarmee klanten FHIR-, DICOM- en MedTech-services kunnen beheren met integraties in andere Azure-services.

In dit artikel leert u drie manieren om gegevens van Azure API for FHIR® te kopiëren naar Azure Synapse Analytics. Dit is een onbeperkte analyseservice die gegevensintegratie, zakelijke datawarehousing en big data-analyses combineert. Dit zijn als volgt.

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. Het 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 de $export API, het transformeren 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 een Synapse-werkruimte om gegevens van de CDM-map te verplaatsen naar een toegewezen SQL-pool van Synapse.

Met deze oplossing kunt u de gegevens transformeren in tabelvorm, omdat deze naar een 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.

Azure Storage naar Synapse met behulp van $export.

Gegevens $export kopiëren

$export Configureren op de FHIR-server

Azure API for FHIR 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 een 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 _type parameter in de voorgaande $export aanroep gebruiken om de resources te beperken die u wilt exporteren. De volgende aanroep exporteert bijvoorbeeld alleen Patient, MedicationRequesten 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. U moet een Azure Synapse Analytics-service maken 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 verbinding maakt met het Azure Storage-account, waar u uw gegevens hebt geëxporteerd met Synapse. Meer stapsgewijze instructies vindt u hier.

  1. Blader in Synapse Studio naar het tabblad Beheren. Selecteer Gekoppelde services onder Externe verbindingen.
  2. Selecteer Nieuw om een nieuwe gekoppelde service toe te voegen.
  3. Selecteer Azure Data Lake Storage Gen2 in de lijst en selecteer Doorgaan.
  4. 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. Zoals in de volgende voorbeeldquery. Gebruik 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 StagingPatient tabel hebt gegenereerd, kunt u verschillende tabellaire indelingen van de gegevens maken met behulp van de OPENJSON functie en de resultaten opslaan in tabellen. Hieronder volgt een SQL-voorbeeldquery voor het maken van een Patient tabel door een aantal 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 uw FHIR-gegevens kunt de identificeren tijdens het exporteren naar Synapse om persoonlijke gezondheidsinformatie (PHI) te beschermen.

Notitie

FHIR® is een geregistreerd handelsmerk van HL7 en wordt gebruikt met de machtiging HL7.