Adatok másolása az FHIR szolgáltatásból a Azure Synapse Analyticsbe
Ebben a cikkben három módszert ismerhet meg arra, hogyan másolhat adatokat az Azure Health Data Services FHIR szolgáltatásából a Azure Synapse Analyticsbe, amely egy korlátlan elemzési szolgáltatás, amely egyesíti az adatintegrációt, a vállalati adattárházakat és a big data-elemzéseket.
- Az FHIR használata a Synapse Sync Agent OSS eszközhöz
- Az FHIR használata CDM-folyamatgenerátor OSS-eszközhöz
- Adatok $export és betöltése a Synapse-ba a T-SQL használatával
Az FHIR és a Synapse Sync Agent OSS eszköz használata
Megjegyzés
Az FHIR to Synapse Sync Agent egy nyílt forráskód eszköz, amely mit licenccel rendelkezik, és nem vonatkozik rá az Azure-szolgáltatásokhoz készült Microsoft SLA.
Az FHIR–Synapse Sync Agent egy Microsoft OSS-projekt, amely az MIT-licenc alatt érhető el. 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észletében , 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 egy 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–CDM folyamatgenerátor OSS-eszköz használata
Megjegyzés
Az FHIR–CDM-folyamatgenerátor egy MIT-licenc alatt kiadott nyílt forráskód eszköz, amelyre nem vonatkozik az Azure-szolgáltatásokhoz készült Microsoft SLA.
Az FHIR–CDM-folyamatgenerátor egy Microsoft OSS-projekt, amely az MIT-licenc alatt jelent meg. Ez egy olyan eszköz, amely 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átumra alakítva, majd a 2. generációs Azure Data Lake Storage CDM-mappába való íráshoz. Az eszközhöz egy felhasználó által létrehozott konfigurációs fájlra van szükség, amely utasításokat tartalmaz az FHIR-erőforrások és -mezők táblákba való kivetítéséhez és összesimításához. A Synapse-munkaterületen található alsóbb rétegbeli folyamatok létrehozására vonatkozó utasításokat követve adatokat helyezhet át a CDM-mappából a dedikált Synapse SQL-készletbe.
Ez a megoldás lehetővé teszi, hogy táblázatos formátumúvá alakítsa az adatokat a CDM-mappába való írás során. Ezt a megoldást akkor érdemes megfontolnia, 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 művelettel másolja az FHIR-erőforrásokat $export
egy Azure Data Lake Gen 2 (ADL Gen 2) blobtárolóbaNDJSON
formátumban. Ezt követően a tárolóból származó adatokat kiszolgáló nélküli vagy dedikált SQL-készletekbe tölti be a Synapse-ban a T-SQL használatával. Ezeket a lépéseket a Synapse-folyamatok használatával alakíthatja át robusztus adatátviteli folyamattá.
Adatok $export
másolása
$export
Konfigurálás az FHIR-kiszolgálón
Az Azure Health Data Services FHIR-kiszolgálója az $export
FHIR-specifikáció által meghatározott műveletet valósítja meg 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ást 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 Access Control, és adjon hozzá szerepkör-hozzárendelést, (3) válassza ki a tárfiókot a számára$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 a Synapse-hez való legjobb igazodás érdekében exportáljon az ADL Gen 2-be.
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 Csoport szinten. 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}}
A fenti hívás paraméterével $export
is _type
korlátozhatja az exportálni kívánt erőforrásokat. A következő hívás például csak Patient
a , MedicationRequest
és Observation
az erőforrásokat exportálja:
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 $export
a lekérdezési paraméterekről szóló lapszakaszt.
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. A Azure Portal létre fog hozni egy Azure Synapse Analytics-szolgáltatást. További részletes útmutató itt található. Munkaterület létrehozásához szüksége van egy ADLSGEN2
fiókra. A 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 Synapse Studio a munkaterületre https://web.azuresynapse.netvaló bejelentkezéssel vagy a Azure Portal Synapse Studio elindításával.
Társított szolgáltatás létrehozása az Azure Storage és a Synapse között
Ha az adatokat a Synapse-ba szeretné másolni, 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 Studio tallózással 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 Azure Data Lake Storage Gen2 a listából, majd válassza a Folytatás lehetőséget.
- Adja meg a hitelesítési hitelesítő adatokat. 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
Azure Synapse Analytics két különböző SQL-készletet, kiszolgáló nélküli SQL-készletet és dedikált SQL-készletet kínál. A kiszolgáló nélküli SQL-készlet rugalmasan lekérdezi 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észletről további információt az SQL-architektúra Synapse dokumentációs oldalán talál.
Kiszolgáló nélküli SQL-készlet használata
Mivel kiszolgáló nélküli, nincs szükség infrastruktúra beállítására vagy a fürtök karbantartására. A munkaterület létrehozása után azonnal megkezdheti az adatok lekérdezését Synapse Studio.
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',
...
)
A fenti 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 egy külső táblában , hogy jobb lekérdezési teljesítményt kapjon, 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. Importálhat big data-adatokat egyszerű T-SQL-lekérdezésekkel, 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 történő adatok betöltésének legegyszerűbb és leggyorsabb módja a COPY
T-SQL-ben található parancs használata, amely képes CSV-, Parquet- és ORC-fájlok olvasására. Az alábbi példaként szolgáló lekérdezéshez hasonlóan a COPY
paranccsal betöltheti a NDJSON
sorokat egy táblázatos struktúrába.
-- 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 a fenti táblázatban a JSON-sorok StagingPatient
meg lettek osztva, a függvény használatával különböző táblázatos formátumokat hozhat létre az OPENJSON
adatokból, és az eredményeket táblákba tárolhatja. Íme egy minta SQL-lekérdezés, amellyel táblázatot 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ához.
Ezután megtudhatja, hogyan azonosíthatja az FHIR-adatokat, miközben exportálja őket a Synapse-ba a PHI védelme érdekében.
Az FHIR® a HL7 bejegyzett védjegye, amelyet a HL7 engedélyével használnak.