Udostępnij za pośrednictwem


Kopiowanie danych z usługi Azure API for FHIR do usługi Azure Synapse Analytics

Ważne

Usługa Azure API for FHIR zostanie wycofana 30 września 2026 r. Postępuj zgodnie ze strategiami migracji, aby przejść do usługi Azure Health Data Services FHIR® do tej daty. Ze względu na wycofanie usługi Azure API for FHIR nowe wdrożenia nie będą możliwe od 1 kwietnia 2025 r. Usługa FHIR usług Azure Health Data Services to rozwinięta wersja usługi Azure API for FHIR, która umożliwia klientom zarządzanie usługami FHIR, DICOM i MedTech z integracją z innymi usługami platformy Azure.

W tym artykule przedstawiono trzy sposoby kopiowania danych z usługi Azure API for FHIR® do usługi Azure Synapse Analytics, która jest nieograniczoną usługą analizy, która łączy integrację danych, magazynowanie danych przedsiębiorstwa i analizę danych big data. Są one następujące.

Korzystanie z narzędzia systemu operacyjnego agenta synchronizacji FHIR do usługi Synapse

Uwaga

FHIR to Synapse Sync Agent to narzędzie typu open source wydane na podstawie licencji MIT i nie jest objęte umową SLA firmy Microsoft dla usług platformy Azure.

FHIR to Synapse Sync Agent to projekt systemu operacyjnego Microsoft wydany w ramach licencji MIT. Jest to funkcja platformy Azure, która wyodrębnia dane z serwera FHIR przy użyciu interfejsów API zasobów FHIR, konwertuje je na hierarchiczne pliki Parquet i zapisuje je w usłudze Azure Data Lake niemal w czasie rzeczywistym. Zawiera również skrypt służący do tworzenia tabel i widoków zewnętrznych w bezserwerowej puli SQL usługi Synapse wskazującej pliki Parquet.

To rozwiązanie umożliwia wykonywanie zapytań dotyczących całych danych FHIR za pomocą narzędzi, takich jak Synapse Studio, SSMS i Power BI. Dostęp do plików Parquet można również uzyskać bezpośrednio z puli platformy Synapse Spark. Należy rozważyć to rozwiązanie, jeśli chcesz uzyskać dostęp do wszystkich danych FHIR niemal w czasie rzeczywistym i chcesz odroczyć transformację niestandardową do systemów podrzędnych.

Postępuj zgodnie z dokumentacją systemu operacyjnego, aby uzyskać instrukcje dotyczące instalacji i użycia.

Korzystanie z narzędzia systemu operacyjnego generatora potoków FHIR do usługi CDM

Uwaga

Generator potoków FHIR to CDM to narzędzie typu open source wydane na podstawie licencji MIT i nie jest objęte umową SLA firmy Microsoft dla usług platformy Azure.

Generator potoków FHIR to CDM to projekt systemu operacyjnego firmy Microsoft wydany w ramach licencji MIT. Jest to narzędzie do generowania potoku usługi ADF do kopiowania migawki danych z serwera FHIR przy użyciu interfejsu $export API, przekształcania go w format csv i zapisywania w folderze CDM w usłudze Azure Data Lake Storage Gen 2. Narzędzie wymaga utworzonego przez użytkownika pliku konfiguracji zawierającego instrukcje dotyczące projekcji i spłaszczania zasobów FHIR oraz pól w tabelach. Możesz również postępować zgodnie z instrukcjami dotyczącymi tworzenia potoku podrzędnego w obszarze roboczym usługi Synapse, aby przenieść dane z folderu CDM do dedykowanej puli SQL usługi Synapse.

To rozwiązanie umożliwia przekształcanie danych w format tabelaryczny, ponieważ jest on zapisywany w folderze CDM. Należy rozważyć to rozwiązanie, jeśli chcesz przekształcić dane FHIR w niestandardowy schemat po wyodrębnieniu go z serwera FHIR.

Postępuj zgodnie z dokumentacją systemu operacyjnego, aby uzyskać instrukcje dotyczące instalacji i użycia.

Ładowanie wyeksportowanych danych do usługi Synapse przy użyciu języka T-SQL

W tym podejściu użyjesz operacji FHIR, aby skopiować zasoby FHIR $export do magazynu obiektów blob usługi Azure Data Lake Gen 2 (ADL Gen 2) w NDJSON formacie. Następnie dane z magazynu są ładowane do bezserwerowych lub dedykowanych pul SQL w usłudze Synapse przy użyciu języka T-SQL. Te kroki można przekonwertować na niezawodny potok przenoszenia danych przy użyciu potoków usługi Synapse.

Usługa Azure Storage do usługi Synapse przy użyciu $export.

Używanie $export do kopiowania danych

Konfigurowanie $export na serwerze FHIR

Interfejs API platformy Azure for FHIR implementuje $export operację zdefiniowaną przez specyfikację FHIR w celu wyeksportowania wszystkich lub filtrowanego podzestawu danych FHIR w NDJSON formacie. Ponadto obsługuje de-zidentyfikowane eksportowanie do anonimizowania danych FHIR podczas eksportowania.

Aby wyeksportować dane FHIR do usługi Azure Blob Storage, należy najpierw skonfigurować serwer FHIR w celu wyeksportowania danych na konto magazynu. Musisz (1) włączyć tożsamość zarządzaną, (2) przejdź do pozycji Kontrola dostępu na koncie magazynu i dodaj przypisanie roli, (3) wybierz swoje konto magazynu.$export Więcej instrukcji krok po kroku można znaleźć tutaj.

Serwer można skonfigurować tak, aby eksportował dane do dowolnego rodzaju konta usługi Azure Storage, ale zalecamy eksportowanie do usługi ADL Gen 2 w celu uzyskania najlepszego dopasowania do usługi Synapse.

Za pomocą $export polecenia

Po skonfigurowaniu serwera FHIR możesz postępować zgodnie z dokumentacją, aby wyeksportować zasoby FHIR na poziomie systemowym, cierpliwym lub grupowym. Na przykład możesz wyeksportować wszystkie dane FHIR powiązane z pacjentami w Group za pomocą następującego $export polecenia, w którym określisz nazwę magazynu obiektów blob usługi ADL Gen 2 w polu {{BlobContainer}}:

https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}  

Możesz również użyć parametru _type w poprzednim wywołaniu $export , aby ograniczyć zasoby, które chcesz wyeksportować. Na przykład następujące wywołanie eksportuje tylko Patient, MedicationRequesti Observation zasoby:

https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition

Aby uzyskać więcej informacji na temat różnych obsługiwanych parametrów, zapoznaj się z sekcją naszej $export strony na temat parametrów zapytania.

Korzystanie z usługi Synapse for Analytics

Tworzenie obszaru roboczego usługi Synapse

Przed rozpoczęciem korzystania z usługi Synapse potrzebny jest obszar roboczy usługi Synapse. Musisz utworzyć usługę Azure Synapse Analytics w witrynie Azure Portal. Więcej wskazówek krok po kroku można znaleźć tutaj. Potrzebujesz ADLSGEN2 konta do utworzenia obszaru roboczego. Obszar roboczy usługi Azure Synapse używa tego konta magazynu do przechowywania danych obszaru roboczego usługi Synapse.

Po utworzeniu obszaru roboczego możesz wyświetlić swój obszar roboczy w programie Synapse Studio, logując się do obszaru roboczego w witrynie https://web.azuresynapse.net, lub uruchamiając program Synapse Studio w witrynie Azure Portal.

Tworzenie połączonej usługi między usługą Azure Storage i usługą Synapse

Aby skopiować dane do usługi Synapse, musisz utworzyć połączoną usługę łączącą się z kontem usługi Azure Storage, w której wyeksportowano dane za pomocą usługi Synapse. Więcej instrukcji krok po kroku można znaleźć tutaj.

  1. W programie Synapse Studio przejdź do karty Zarządzanie . W obszarze Połączenia zewnętrzne wybierz pozycję Połączone usługi.
  2. Wybierz pozycję Nowy , aby dodać nową połączoną usługę.
  3. Z listy wybierz pozycję Azure Data Lake Storage Gen2 , a następnie wybierz pozycję Kontynuuj.
  4. Wprowadź poświadczenia uwierzytelniania. Po zakończeniu wybierz pozycję Utwórz.

Teraz, gdy masz połączoną usługę między magazynem usługi ADL Gen 2 i usługą Synapse, możesz przystąpić do ładowania i analizowania danych FHIR przy użyciu pul sql usługi Synapse.

Wybieranie między bezserwerową i dedykowaną pulą SQL

Usługa Azure Synapse Analytics oferuje dwie różne pule SQL: bezserwerową pulę SQL i dedykowaną pulę SQL. Bezserwerowa pula SQL zapewnia elastyczność wykonywania zapytań dotyczących danych bezpośrednio w magazynie obiektów blob przy użyciu bezserwerowego punktu końcowego SQL bez konieczności aprowizacji zasobów. Dedykowana pula SQL ma moc obliczeniową w celu zapewnienia wysokiej wydajności i współbieżności oraz jest zalecana w przypadku funkcji magazynowania danych w skali przedsiębiorstwa. Aby uzyskać więcej informacji na temat dwóch pul SQL, zapoznaj się ze stroną dokumentacji usługi Synapse dotyczącą architektury SQL.

Korzystanie z bezserwerowej puli SQL

Ponieważ nie jest ona bezserwerowa, nie ma infrastruktury do skonfigurowania ani obsługi klastrów. Możesz rozpocząć wykonywanie zapytań o dane z programu Synapse Studio zaraz po utworzeniu obszaru roboczego.

Na przykład następujące zapytanie może służyć do przekształcania wybranych pól z Patient.ndjson w strukturę tabelaryczny.

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', 
       ...
) 

W poprzednim zapytaniu OPENROWSET funkcja uzyskuje dostęp do plików w usłudze Azure Storage i OPENJSON analizuje tekst JSON i zwraca właściwości wejściowe JSON jako wiersze i kolumny. Za każdym razem, gdy to zapytanie jest wykonywane, bezserwerowa pula SQL odczytuje plik z magazynu obiektów blob, analizuje dane JSON i wyodrębnia pola.

Możesz również zmaterializować wyniki w formacie Parquet w tabeli zewnętrznej, aby uzyskać lepszą wydajność zapytań w następujący sposób.

-- 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 --

Korzystanie z dedykowanej puli SQL

Dedykowana pula SQL obsługuje tabele zarządzane i hierarchiczną pamięć podręczną na potrzeby wydajności w pamięci. Dane big data można importować za pomocą prostych zapytań T-SQL, a następnie używać możliwości aparatu zapytań rozproszonych do uruchamiania analizy o wysokiej wydajności.

Najprostszym i najszybszym sposobem ładowania danych z magazynu do dedykowanej puli SQL jest użycie COPY polecenia w języku T-SQL, które może odczytywać pliki CSV, Parquet i ORC. Podobnie jak w poniższym przykładowym zapytaniu. Użyj polecenia , COPY aby załadować NDJSON wiersze do struktury tabelarycznej.

-- 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

Po utworzeniu wierszy JSON w wygenerowanej StagingPatient tabeli można utworzyć różne formaty tabelaryczne danych przy użyciu OPENJSON funkcji i przechowywać wyniki w tabelach. Poniżej przedstawiono przykładowe zapytanie SQL w celu utworzenia Patient tabeli przez wyodrębnienie kilku pól z Patient zasobu.

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

Następne kroki

W tym artykule przedstawiono trzy różne sposoby kopiowania danych FHIR do usługi Synapse.

Następnie możesz dowiedzieć się, jak można usunąć identyfikację danych FHIR podczas eksportowania ich do usługi Synapse w celu ochrony danych osobowych (PHI).

Uwaga

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7.