Share via


FHIR lekérdezés összecsukása

A Power Query-összecsukás az a mechanizmus, amelyet a Power Query-összekötő használ az adatátalakítások adatforrásnak küldött lekérdezésekké alakításához. Ez az összecsukási mechanizmus lehetővé teszi, hogy a Power Query a lehető legtöbb adatkijelölést kitöltődjön az adatforrásba ahelyett, hogy nagy mennyiségű szükségtelen adatot szeretne beolvasni, hogy azokat csak az ügyfélben dobja el. Az FHIR Power Query-összekötője magában foglalja a lekérdezések összecsukási képességeit, de az FHIR-keresés jellegéből adódóan különös figyelmet kell fordítani a Power Query-kifejezésekre, hogy a lekérdezések összecsukása lehetőség szerint történjen. Ez a cikk az FHIR Power Query összecsukásának alapjait ismerteti, és irányelveket és példákat tartalmaz.

FHIR és lekérdezés összecsukása

Tegyük fel, hogy létrehoz egy lekérdezést, amely lekéri a "Patient" erőforrásokat egy FHIR-kiszolgálóról, és érdeklik az 1980 előtt született betegek. Az ilyen lekérdezések a következőképpen nézhetnek ki:

let
    Source = Fhir.Contents("https://myfhirserver.azurehealthcareapis.com", null),
    Patient1 = Source{[Name="Patient"]}[Data],
    #"Filtered Rows" = Table.SelectRows(Patient1, each [birthDate] < #date(1980, 1, 1))
in
    #"Filtered Rows"

Ahelyett, hogy lekérte volna az összes betegerőforrást az FHIR-kiszolgálóról, és szűrte volna őket az ügyfélben (Power BI), hatékonyabb egy keresési paraméterrel rendelkező lekérdezést küldeni az FHIR-kiszolgálóra:

GET https://myfhirserver.azurehealthcareapis.com/Patient?birthdate=lt1980-01-01

Egy ilyen lekérdezéssel az ügyfél csak az érdeklődésre számot tartó betegeket fogadná, és nem kellene elvetnie az ügyfél adatait.

A születési dátum példájában a lekérdezés összecsukása egyszerű. Az FHIR-ben azonban ez általában kihívást jelent, mivel a keresési paraméterek nevei nem mindig felelnek meg az adatmezők nevének, és gyakran több adatmező is hozzájárul egyetlen keresési paraméterhez.

Vegyük például az erőforrást és a Observationcategory mezőt. A Observation.category mező egy CodeableConcept FHIR-ben megadott mezősystem, amely tartalmaz coding és code mezőket is tartalmaz (többek között). Tegyük fel, hogy csak az életjelek érdeklik. Érdeklik a megfigyelések, ahol Observation.category.coding.code = "vital-signs", de az FHIR keresés hasonlítana https://myfhirserver.azurehealthcareapis.com/Observation?category=vital-signs.

Ha összetettebb esetekben szeretné elérni a lekérdezések összecsukását, az FHIR Power Query-összekötője megfelel a Power Query-kifejezéseknek a kifejezésminták listájával, és lefordítja őket a megfelelő keresési paraméterekre. A kifejezésminták az FHIR specifikációból jönnek létre.

Ez a kifejezésmintákkal való egyeztetés akkor működik a legjobban, ha a kijelölési kifejezések (szűrés) a lehető leghamarabb befejeződnek az adatátalakítási lépések során, mielőtt bármilyen más formázást végeznénk az adatokon.

Feljegyzés

Annak érdekében, hogy a Power Query-motor a lehető legnagyobb eséllyel hajtsa végre a lekérdezések összecsukását, minden adatkijelölési kifejezést el kell végeznie az adatok bármilyen formázása előtt.

Lekérdezés-összecsukási példa

A lekérdezések hatékony összecsukásának szemléltetéséhez végigvezetjük a példát arra, hogy az összes alapvető jelet lekértük a megfigyelési erőforrásból. Ennek intuitív módja a mező kibontása, majd a Observation.category szűrés Observation.category.coding . A lekérdezés a következőképpen nézne ki:

// Inefficient Power Query
let
    Source = Fhir.Contents("https://myfhirserver.azurehealthcareapis.com", null),
    Observation = Source{[Name="Observation"]}[Data],
    ExpandCategory = Table.ExpandTableColumn(Observation, "category", {"coding"}, {"category.coding"}),
    ExpandCoding = Table.ExpandTableColumn(ExpandCategory, "category.coding", {"system", "code"}, {"category.coding.system", "category.coding.code"}),
    FilteredRows = Table.SelectRows(ExpandCoding, each ([category.coding.code] = "vital-signs"))
in
    FilteredRows

Sajnos a Power Query motor már nem ismerte fel ezt a category keresési paraméterhez leképezett kiválasztási mintaként, de ha a lekérdezést a következőre strukturálja:

// Efficient Power Query allowing folding
let
    Source = Fhir.Contents("https://myfhirserver.azurehealthcareapis.com", null),
    Observation = Source{[Name="Observation"]}[Data],
    FilteredObservations = Table.SelectRows(Observation, each Table.MatchesAnyRows([category], each Table.MatchesAnyRows([coding], each [code] = "vital-signs"))),
    ExpandCategory = Table.ExpandTableColumn(FilteredObservations, "category", {"coding"}, {"category.coding"}),
    ExpandCoding = Table.ExpandTableColumn(ExpandCategory, "category.coding", {"system", "code"}, {"category.coding.system", "category.coding.code"})
in
    ExpandCoding

A rendszer elküldi a keresési lekérdezést /Observation?category=vital-signs az FHIR-kiszolgálónak, ami csökkenti az ügyfél által a kiszolgálótól kapott adatok mennyiségét.

Míg az első és a második Power Query-kifejezés ugyanazt az adatkészletet eredményezi, az utóbbi általában jobb lekérdezési teljesítményt eredményez. Fontos megjegyezni, hogy a lekérdezés második, hatékonyabb verziója nem kérhető le pusztán a grafikus felhasználói felülettel (GUI) végzett adatalakítással. A lekérdezést a Power Query speciális szerkesztőjében kell megírni.

A kezdeti adatfeltárást a grafikus felhasználói felület lekérdezésszerkesztőjével végezheti el, de javasoljuk, hogy a lekérdezést a lekérdezés összecsukásával újrabontással hajtsa végre. A szelektív lekérdezéseket (szűrést) a lehető leghamarabb el kell végezni.

Összecsukható minták keresése

Az FHIR Power Query-összekötője csak akkor hajthat végre lekérdezés-összecsukást, ha a Power Query-kifejezések az FHIR-specifikációban meghatározott ismert keresési paraméterekre lesznek megfeleltetve. Ha kíváncsi arra, hogy lehetséges-e a lekérdezések összecsukása, javasoljuk, hogy tekintse meg az FHIR specifikációját. Minden erőforrás a specifikációs oldal alján található keresési paramétereket sorolja fel. Az összecsukható lekérdezési minták oldalán példákat is találhat az összecsukható Power Query-kifejezések írására az FHIR-hez.

Lekérdezés-összecsukás hibakeresése

Ha meg szeretné állapítani, hogy egy adott Power Query-kifejezés van-e hajtva, és hogy mi az eredményül kapott FHIR keresési kifejezés, elindíthatja a Fiddlert a lekérdezések alakítása közben a Power BI Desktopban.

Összegzés

A lekérdezések összecsukása hatékonyabb Power Query-kifejezéseket biztosít. A megfelelően kialakított Power Query lehetővé teszi a lekérdezések összecsukását, és így az adatszűrési terhek nagy részét kiterheli az adatforrásba.

Következő lépések

Ebből a cikkből megtudhatja, hogyan használhatja a lekérdezés-összecsukást az FHIR Power Query-összekötőjében. Ezután ismerkedjen meg az FHIR Power Query összecsukási mintáinak listájával.