Gegevens van de FHIR-service kopiëren 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 naar Synapse Sync Agent gebruiken
- Het OSS-hulpprogramma FHIR naar CDM-pijplijngenerator gebruiken
- Gebruik $export en laad gegevens in Synapse met behulp van T-SQL
Het OSS-hulpprogramma FHIR naar Synapse Sync Agent gebruiken
Notitie
FHIR to Synapse Sync Agent is een open source hulpprogramma dat is uitgebracht onder MIT-licentie en wordt niet gedekt door de Microsoft SLA voor Azure-services.
De FHIR to Synapse Sync Agent is een Microsoft OSS-project dat is uitgebracht onder mit-licentie. Het is een Azure-functie waarmee gegevens van een FHIR-server worden geëxtraheerd met behulp van FHIR-resource-API's, deze converteert naar hiërarchische Parquet-bestanden en deze bijna in 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 wilt uitstellen naar downstreamsystemen.
Volg de OSS-documentatie voor installatie- en gebruiksinstructies.
Het OSS-hulpprogramma FHIR-naar-CDM-pijplijngenerator gebruiken
Notitie
FHIR naar CDM-pijplijngenerator is een open source hulpprogramma dat is uitgebracht onder 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 project 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 de CDM-map naar de toegewezen SQL-pool van Synapse.
Met deze oplossing kunt u de gegevens transformeren in tabelvorm wanneer 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 in indeling te kopiëren naar een Azure Data Lake Gen 2-blobopslagNDJSON
(ADL Gen 2). 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.
Gebruiken $export
om gegevens te kopiëren
$export
Configureren in de FHIR-server
De FHIR-server in Azure Health Data Services implementeert de $export
bewerking die is gedefinieerd door de FHIR-specificatie om alle of een gefilterde subset van FHIR-gegevens in NDJSON
indeling te exporteren. 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 voor het exporteren van gegevens naar het opslagaccount. U moet (1) Beheerde identiteit inschakelen, (2) naar Access Control in het opslagaccount gaan en roltoewijzing toevoegen, (3) uw opslagaccount selecteren voor $export
. Meer stapsgewijze informatie vindt u hier.
U kunt de server configureren om de gegevens te exporteren naar elk type Azure-opslagaccount, maar we raden u aan te exporteren naar ADL Gen 2 voor optimale afstemming met Synapse.
Opdracht gebruiken $export
Nadat u uw 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 in een Group
exporteren met de volgende $export
opdracht, waarin u de naam van uw ADL Gen 2-blobopslag opgeeft in het veld {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
U kunt de parameter in de $export
bovenstaande aanroep ook gebruiken _type
om de resources te beperken die u wilt exporteren. Met de volgende aanroep worden bijvoorbeeld alleen Patient
, MedicationRequest
en Observation
resources geëxporteerd:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
Raadpleeg onze $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 maakt een Azure Synapse Analytics-service op Azure Portal. Meer stapsgewijze handleiding vindt u hier. 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 in Synapse Studio weergeven door u aan te melden bij uw werkruimte op https://web.azuresynapse.netof door Synapse Studio te starten in de 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, waar u uw gegevens hebt geëxporteerd, verbindt met Synapse. Meer stapsgewijze instructies vindt u hier.
- Blader in Synapse Studio naar het tabblad Beheren en selecteer onder Externe verbindingende optie 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, een serverloze SQL-pool en een toegewezen SQL-pool. Serverloze SQL-pool biedt de flexibiliteit om gegevens rechtstreeks in de blobopslag op te vragen met behulp van het serverloze SQL-eindpunt zonder resourceinrichting. Een toegewezen SQL-pool heeft de verwerkingskracht voor hoge prestaties en gelijktijdigheid en wordt aanbevolen voor datawarehousingmogelijkheden op ondernemingsniveau. Raadpleeg de Synapse-documentatiepagina over SQL-architectuur voor meer informatie over de twee SQL-pools.
Serverloze SQL-pool gebruiken
Omdat het serverloos is, hoeft u geen infrastructuur in te stellen of clusters te onderhouden. Zodra de werkruimte is gemaakt, kunt u beginnen met het uitvoeren van query's op gegevens uit Synapse Studio.
De volgende query kan bijvoorbeeld worden gebruikt om geselecteerde velden te transformeren naar Patient.ndjson
een tabelstructuur:
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 bovenstaande query verwijst de OPENROWSET
functie naar bestanden in Azure Storage, OPENJSON
parseert de JSON-tekst en 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 voor betere queryprestaties, zoals hieronder wordt weergegeven:
-- 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 analyses met hoge prestaties uit te voeren.
De eenvoudigste en snelste manier om gegevens uit uw opslag naar een toegewezen SQL-pool te laden, is door de COPY
opdracht in T-SQL te gebruiken, waarmee CSV-, Parquet- en ORC-bestanden kunnen worden gelezen. Net als in de onderstaande voorbeeldquery gebruikt u de COPY
opdracht om de NDJSON
rijen in een tabelstructuur 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
bovenstaande 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 voorbeeld van een SQL-query om een Patient
tabel te maken door enkele 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 verwijderen tijdens het exporteren naar Synapse om PHI te beschermen.
FHIR® is een gedeponeerd handelsmerk van HL7 en wordt gebruikt met toestemming van HL7.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor