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 é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á.

Azure Storage a Synapse-ba $export használatával.

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 Patienta , 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.

  1. 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.
  2. Új társított szolgáltatás hozzáadásához válassza az Új lehetőséget.
  3. Válassza Azure Data Lake Storage Gen2 a listából, majd válassza a Folytatás lehetőséget.
  4. 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.