Adatok másolása az FHIR szolgáltatásból az Azure Synapse Analyticsbe
Ebben a cikkben megismerheti, hogyan másolhat adatokat az Azure Health Data Services FHIR® szolgáltatásából az Azure Synapse Analyticsbe, amely egy korlátlan elemzési szolgáltatás, amely egyesíti az adatintegrációt, a vállalati adatraktározást és a big data-elemzést.
- Az FHIR használata a Synapse Sync Agent OSS eszközhöz
- Az FHIR használata CDM-folyamatgeneráló OSS-eszközhöz
- $export használata és adatok betöltése a Synapse-ba a T-SQL használatával
Az FHIR használata a Synapse Sync Agent OSS eszközhöz
Feljegyzés
Az FHIR to Synapse Sync Agent egy nyílt forráskód eszköz, amely mit licenccel érhető el, és nem vonatkozik az Azure-szolgáltatásokhoz készült Microsoft SLA-ra.
Az FHIR to Synapse Sync Agent egy Microsoft OSS-projekt, amely az MIT Licenc alatt jelent meg. Ez egy Azure-függvény, amely adatokat nyer ki egy FHIR-kiszolgálóról FHIR-erőforrás API-k használatával, hierarchikus Parquet-fájlokká alakítja, és közel valós időben az Azure Data Lake-be írja. Ez egy szkriptet is tartalmaz, amely külső táblákat és nézeteket hoz létre a Synapse Kiszolgáló nélküli SQL-készletben, amely a Parquet-fájlokra mutat.
Ez a megoldás lehetővé teszi a teljes FHIR-adatok lekérdezését olyan eszközökkel, mint a Synapse Studio, az SSMS és a Power BI. A Parquet-fájlokat közvetlenül a Synapse Spark-készletből is elérheti. Ezt a megoldást akkor érdemes megfontolnia, ha közel valós időben szeretné elérni az összes FHIR-adatot, és halasztani szeretné az egyéni átalakítást az alsóbb rétegbeli rendszerekre.
A telepítési és használati utasításokért kövesse az OSS dokumentációját .
Az FHIR használata CDM-folyamatgeneráló OSS-eszközhöz
Feljegyzés
Az FHIR–CDM-folyamatgenerátor egy nyílt forráskód eszköz, amely mit licenccel rendelkezik, és nem vonatkozik az Azure-szolgáltatásokhoz készült Microsoft SLA-ra.
Az FHIR–CDM-folyamatgenerátor egy Microsoft OSS-projekt, amely az MIT Licenc alatt jelent meg. Ez az eszköz egy ADF-folyamatot hoz létre az adatok pillanatképének másolásához egy FHIR-kiszolgálóról $export API használatával, csv formátumba alakítva, és az Azure Data Lake Storage Gen 2 CDM-mappájába való íráshoz. Az eszközhöz egy felhasználó által létrehozott konfigurációs fájlra van szükség, amely útmutatást tartalmaz az FHIR-erőforrások és mezők táblákba való összesimításához és összesimításához. Az alárendelt folyamatok Synapse-munkaterületen történő létrehozására vonatkozó utasításokat is követve áthelyezheti az adatokat EGY CDM-mappából egy dedikált Synapse SQL-készletbe.
Ez a megoldás lehetővé teszi az adatok táblázatos formátumba való átalakítását a CDM-mappába való írás során. Ezt a megoldást akkor érdemes megfontolni, ha az FHIR-adatokat egyéni sémává szeretné alakítani az FHIR-kiszolgálóból való kinyerés után.
A telepítési és használati utasításokért kövesse az OSS dokumentációját .
Exportált adatok betöltése a Synapse-ba a T-SQL használatával
Ebben a megközelítésben az FHIR $export
művelettel FHIR-erőforrásokat másolhat egy Azure Data Lake Gen 2 (ADL Gen 2) blobtárolóba NDJSON
formátumban. Ezután betölti az adatokat a tárolóból kiszolgáló nélküli vagy dedikált SQL-készletekbe a Synapse-ban a T-SQL használatával. Ezeket a lépéseket a Synapse-folyamatok használatával robusztus adatáthelyezési folyamattá alakíthatja.
Adatok $export
másolása
Konfigurálás $export
az FHIR-kiszolgálón
Az Azure Health Data Services FHIR-kiszolgálója implementálja az $export
FHIR-specifikáció által meghatározott műveletet az FHIR-adatok teljes vagy szűrt részhalmazának formátumba NDJSON
való exportálásához. Emellett támogatja az azonosított exportálás törlését az FHIR-adatok anonimizálásához az exportálás során.
Az FHIR-adatok Azure Blob Storage-ba való exportálásához először konfigurálnia kell az FHIR-kiszolgálót, hogy adatokat exportáljon a tárfiókba. Engedélyeznie kell (1) a felügyelt identitást, (2) lépjen a tárfiók hozzáférés-vezérlésére, és adjon hozzá szerepkör-hozzárendelést, (3) válassza ki a tárfiókot $export
. További lépésenkénti információk itt találhatók.
Konfigurálhatja a kiszolgálót úgy, hogy bármilyen Azure-tárfiókba exportálja az adatokat, de javasoljuk, hogy exportáljon az ADL Gen 2-be a Synapse-hez való legjobb igazítás érdekében.
A parancs használata $export
Az FHIR-kiszolgáló konfigurálása után a dokumentációt követve exportálhatja az FHIR-erőforrásokat rendszer-, beteg- vagy csoportszinten. Exportálhatja például a betegekkel kapcsolatos összes FHIR-adatot a Group
következő $export
paranccsal, amelyben megadhatja az ADL Gen 2 blobtároló nevét a mezőben {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
Az előző $export
hívásban paramétert is használhat _type
az exportálni kívánt erőforrások korlátozásához. A következő hívás például csak Patient
exportál, MedicationRequest
és Observation
erőforrásokat:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
A különböző támogatott paraméterekkel kapcsolatos további információkért tekintse meg a lekérdezési paraméterekről szóló oldalszakaszt.$export
A Synapse for Analytics használata
Synapse-munkaterület létrehozása
A Synapse használata előtt Szüksége lesz egy Synapse-munkaterületre. Azure Synapse Analytics-szolgáltatás létrehozása az Azure Portalon. További részletes útmutatást itt talál. Munkaterület létrehozásához szüksége van egy ADLSGEN2
fiókra. Az Azure Synapse-munkaterület ezt a tárfiókot fogja használni a Synapse-munkaterület adatainak tárolására.
A munkaterület létrehozása után megtekintheti a munkaterületet a Synapse Studióban, ha bejelentkezik a munkaterületre https://web.azuresynapse.net, vagy elindítja a Synapse Studiót az Azure Portalon.
Társított szolgáltatás létrehozása az Azure Storage és a Synapse között
Az adatok Synapse-ba másolásához létre kell hoznia egy társított szolgáltatást, amely összekapcsolja az Azure Storage-fiókját, ahol exportálta az adatokat a Synapse-nal. További részletes útmutatást itt talál.
- A Synapse Studióban keresse meg a Kezelés lapot, és a Külső kapcsolatok területen válassza a Csatolt szolgáltatások lehetőséget.
- Új társított szolgáltatás hozzáadásához válassza az Új lehetőséget.
- Válassza az Azure Data Lake Storage Gen2 elemet a listából, és válassza a Folytatás lehetőséget.
- Adja meg a hitelesítési hitelesítő adatait. Miután végzett, válassza a Létrehozás lehetőséget.
Most, hogy társított szolgáltatással rendelkezik az ADL Gen 2-tároló és a Synapse között, készen áll a Synapse SQL-készletek használatára az FHIR-adatok betöltéséhez és elemzéséhez.
Döntés kiszolgáló nélküli és dedikált SQL-készlet között
Az Azure Synapse Analytics két különböző SQL-készletet kínál: kiszolgáló nélküli SQL-készletet és dedikált SQL-készletet. A kiszolgáló nélküli SQL-készlet rugalmasan kérdezi le az adatokat közvetlenül a blobtárolóban a kiszolgáló nélküli SQL-végpont használatával, erőforrás-kiépítés nélkül. A dedikált SQL-készlet nagy teljesítményű és egyidejű feldolgozási képességgel rendelkezik, és nagyvállalati szintű adattárház-képességekhez ajánlott. A két SQL-készlet további részleteiért tekintse meg az SQL-architektúra Synapse dokumentációs oldalát .
Kiszolgáló nélküli SQL-készlet használata
Mivel kiszolgáló nélküli, nincs infrastruktúra a telepítéshez vagy a fürtök karbantartásához. A munkaterület létrehozása után azonnal megkezdheti az adatok lekérdezését a Synapse Studióból.
A következő lekérdezéssel például táblázatos szerkezetté alakíthatja a kijelölt mezőket Patient.ndjson
:
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',
...
)
Az előző lekérdezésben a függvény hozzáfér az OPENROWSET
Azure Storage fájljaihoz, és OPENJSON
elemzi a JSON-szöveget, és sorként és oszlopként adja vissza a JSON bemeneti tulajdonságait. A lekérdezés minden végrehajtásakor a kiszolgáló nélküli SQL-készlet beolvassa a fájlt a blobtárolóból, elemzi a JSON-t, és kinyeri a mezőket.
Az eredményeket parquet formátumban is létrehozhatja külső táblákban , hogy jobb lekérdezési teljesítményt nyújtsunk az alábbiak szerint.
-- 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 --
Dedikált SQL-készlet használata
A dedikált SQL-készlet támogatja a felügyelt táblákat és a memóriabeli teljesítmény hierarchikus gyorsítótárát. A big data-adatokat egyszerű T-SQL-lekérdezésekkel importálhatja, majd az elosztott lekérdezési motor segítségével nagy teljesítményű elemzéseket futtathat.
A tárolóból egy dedikált SQL-készletbe való adatok betöltésének legegyszerűbb és leggyorsabb módja a COPY
T-SQL parancs használata, amely CSV-, Parquet- és ORC-fájlokat tud olvasni. A következő példa lekérdezéshez hasonlóan a COPY
parancs használatával is betöltheti a NDJSON
sorokat táblázatos szerkezetbe.
-- 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
Miután az előző táblában a JSON-sorok meg lettek osztva StagingPatient
, különböző táblázatos formátumokat hozhat létre az adatokból a OPENJSON
függvény használatával, és az eredményeket táblákba tárolhatja. Íme egy minta SQL-lekérdezés, amellyel táblákat Patient
hozhat létre az erőforrás néhány mezőjének Patient
kinyerésével:
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
Következő lépések
Ebben a cikkben három különböző módszert ismert meg az FHIR-adatok Synapse-ba való másolására.
Ezután megtudhatja, hogyan azonosíthatja az FHIR-adatokat, miközben exportálja őket a Synapse-ba a PHI védelme érdekében.
Feljegyzés
Az FHIR® a HL7 bejegyzett védjegye, amelyet a HL7 engedélyével használnak.