Adatok másolása az Azure API for FHIR-ből a Azure Synapse Analyticsbe

Ebben a cikkben három módszert ismerhet meg az adatok másolására az Azure API for FHIR-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 Synapse Sync Agent OSS-eszközhöz

Megjegyzés

Az FHIR to Synapse Sync Agent egy nyílt forráskód eszköz, amely mit licenccel érhető el, és az Azure-szolgáltatásokhoz készült Microsoft SLA nem fedi le.

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 írja azokat az Azure Data Lake-be. 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 az összes FHIR-adathoz közel valós időben szeretne hozzáférni, és halasztani szeretné az egyéni átalakítást az alárendelt rendszerekre.

A telepítési és használati utasításokért kövesse az OSS dokumentációját .

Az FHIR használata a CDM-folyamatgenerátor OSS-eszközéhez

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 MIT-licenc alatt kiadott Microsoft OSS-projekt. Ez egy olyan eszköz, amely ADF-folyamatot hoz létre az adatok pillanatképének egy FHIR-kiszolgálóról történő másolásához $export API-val, csv formátumra alakítja át, és a 2. generációs Azure Data Lake Storage CDM-mappába ír. 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ület alsóbb rétegbeli folyamatának 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.

Ezzel a megoldással táblázatos formátumba alakíthatja 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é átalakí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-be a T-SQL használatával

Ebben a megközelítésben az FHIR művelettel FHIR-erőforrásokat $export másol egy Azure Data Lake Gen 2 (ADL Gen 2) blobtárolóbaNDJSON formátumban. Ezt követően a T-SQL használatával betölti a tárolóból származó adatokat a Synapse kiszolgáló nélküli vagy dedikált SQL-készleteibe . Ezeket a lépéseket synapse-folyamatokkal robusztus adatáthelyezési folyamattá alakíthatja.

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

Adatok másolása a használatával $export

$export Konfigurálás az FHIR-kiszolgálón

Az FHIR-hez készült Azure API 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ást , hogy anonimizálja az FHIR-adatokat 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ókban található Access Control, és adjon hozzá szerepkör-hozzárendelést, (3) válassza ki a tárfiókját a számára$export. További lépésről lépésre itt talál.

Konfigurálhatja úgy a kiszolgálót, hogy bármilyen Azure-tárfiókba exportálja az adatokat, de a Synapse-hez való legjobb igazítás érdekében javasoljuk, hogy exportáljon az ADL Gen 2-be.

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 Csoport szinten. Exportálhatja például a betegekhez kapcsolódó ö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 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éterek oldalszakaszát.

A Synapse használata elemzéshez

Synapse-munkaterület létrehozása

A Synapse használata előtt szüksége lesz egy Synapse-munkaterületre. Létre fog hozni egy Azure Synapse Analytics-szolgáltatást a Azure Portal. További részletes útmutatót itt talál. A munkaterület létrehozásához fiókra van szükség ADLSGEN2 . A Azure Synapse-munkaterület ezt a tárfiókot fogja használni a Synapse-munkaterület adatainak tárolására.

Miután létrehozott egy munkaterületet, megtekintheti a munkaterületet Synapse Studio, ha bejelentkezik a munkaterületre a webhelyenhttps://web.azuresynapse.net, vagy elindítja a Synapse Studio a Azure Portal.

Társított szolgáltatás létrehozása az Azure Storage és a Synapse között

Ha az adatokat a Synapse-be 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 lépjen a Kezelés lapra, és a Külső kapcsolatok területen válassza a Társított 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 lehetőséget a listából, és válassza a Folytatás lehetőséget.
  4. 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 a kiszolgáló nélküli és a 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 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-funkciókhoz 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 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 szerkezetűvé 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, elemzi a JSON-szöveget, OPENJSON é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ában , hogy jobb lekérdezési teljesítményt nyújtson, ahogy az alább látható:

-- 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 való adatbetöltés legegyszerűbb és leggyorsabb módja a COPY T-SQL parancsának használata, amely képes CSV-, Parquet- és ORC-fájlok olvasására. Az alábbi példa lekérdezéshez hasonlóan az COPY paranccsal töltse be 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 vannak osztva, a függvény használatával OPENJSON különböző táblázatos formátumokat hozhat létre az adatokból, és az eredményeket táblákba tárolhatja. Íme egy minta SQL-lekérdezés, amellyel táblát 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 megismerhette az FHIR-adatok Synapse-ba másolásának három különböző módját.

Ezután megtudhatja, hogyan azonosíthatja az FHIR-adatokat a Synapse-ba való exportálás során a PHI védelme érdekében.

Az FHIR® a HL7 bejegyzett védjegye, és a HL7 engedélyével használják.