Rozszerzone tagi zapytań

Omówienie

Domyślnie usługa DICOM obsługuje wykonywanie zapytań dotyczących tagów DICOM określonych w instrukcji zgodności. Włączenie rozszerzonych tagów zapytań pozwala łatwo rozszerzyć listę tagów na podstawie potrzeb aplikacji.

Korzystając z poniższych interfejsów API, użytkownicy mogą indeksować swoje badania DICOM, serie i wystąpienia zarówno w standardowych, jak i prywatnych tagach DICOM, aby można je było określić w zapytaniach QIDO-RS.

Interfejsy API

Wersja: wersja 1

Aby ułatwić zarządzanie obsługiwanymi tagami w danym wystąpieniu usługi DICOM, dodano następujące punkty końcowe interfejsu API.

Interfejs API Opis
POST .../extendedquerytags Dodawanie tagów zapytań rozszerzonych
GET .../extendedquerytags Wyświetlanie listy tagów zapytań rozszerzonych
GET .../extendedquerytags/{tagPath} Uzyskiwanie tagu zapytania rozszerzonego
DELETE .../extendedquerytags/{tagPath} Usuwanie tagu rozszerzonego zapytania
PATCH .../extendedquerytags/{tagPath} Aktualizowanie tagu rozszerzonego zapytania
GET .../extendedquerytags/{tagPath}/errors Wyświetlanie listy błędów tagu rozszerzonego zapytania
GET .../operations/{operationId} Get Operation

Dodawanie tagów zapytań rozszerzonych

Dodaje co najmniej jeden rozszerzony tag zapytania i uruchamia długotrwałą operację, która ponownie indeksuje bieżące wystąpienia DICOM z określonymi tagami.

POST .../extendedquerytags

Nagłówek żądania

Nazwa Wymagany Typ Opis
Content-Type True ciąg application/json jest obsługiwana

Treść żądania

Nazwa Wymagany Typ Opis
body Rozszerzony tag zapytania do dodawania[]

Ograniczenia

Obsługiwane są następujące typy VR:

VR Opis Dopasowywanie pojedynczej wartości Dopasowywanie zakresu Dopasowywanie rozmyte
AE Jednostka aplikacji X
AS Ciąg wieku X
CS Ciąg kodu X
DA Date X X
DS Ciąg dziesiętny X
DT Data i godzina X X
FD Zmiennoprzecinkowa podwójna X
FL Zmiennoprzecinkowa pojedyncza X
IS Ciąg liczby całkowitej X
LO Długi ciąg X
PN Nazwisko osoby X X
SH Krótki ciąg X
SL Podpisano długo X
SS Podpisany krótki X
TM Godzina X X
Interfejs użytkownika Unikatowy identyfikator X
UL Niepodpisany długi X
USA Niepodpisane krótkie X

Uwaga

Tagi sekwencyjne, które są tagami pod tagiem typu Sekwencja elementów (SQ), nie są obecnie obsługiwane. Możesz dodać maksymalnie 128 rozszerzonych tagów zapytań.

Odpowiedzi

Nazwa Typ Opis
202 (zaakceptowane) Odwołanie do operacji Dodano rozszerzone tagi zapytania i rozpoczęto długotrwałą operację ponownego indeksowania istniejących wystąpień DICOM
400 (Nieprawidłowe żądanie) Treść żądania zawiera nieprawidłowe dane
409 (Konflikt) Co najmniej jeden żądany tag zapytania jest już obsługiwany

Wyświetlanie listy rozszerzonych tagów zapytań

Listy wszystkich rozszerzonych tagów zapytań.

GET .../extendedquerytags

Odpowiedzi

Nazwa Typ Opis
200 (OK) Rozszerzony tag zapytania[] Zwraca rozszerzone tagi zapytań

Uzyskiwanie rozszerzonego tagu zapytania

Uzyskiwanie rozszerzonego tagu zapytania.

GET .../extendedquerytags/{tagPath}

Parametry identyfikatora URI

Nazwa W Wymagany Typ Opis
tagPath path True ciąg tagPath to ścieżka tagu, który może być tagiem lub słowem kluczowym. Na przykład identyfikator pacjenta jest reprezentowany przez 00100020 lub PatientId

Odpowiedzi

Nazwa Typ Opis
200 (OK) Rozszerzony tag zapytania Rozszerzony tag zapytania z określonym tagiem tagPath
400 (Nieprawidłowe żądanie) Żądana ścieżka tagu jest nieprawidłowa
404 (nie znaleziono) Nie można odnaleźć rozszerzonego tagu zapytania z żądaną funkcją tagPath

Usuwanie rozszerzonego tagu zapytania

Usuń rozszerzony tag zapytania.

DELETE .../extendedquerytags/{tagPath}

Parametry identyfikatora URI

Nazwa W Wymagany Typ Opis
tagPath path True ciąg tagPath to ścieżka tagu, który może być tagiem lub słowem kluczowym. Na przykład identyfikator pacjenta jest reprezentowany przez 00100020 lub PatientId

Odpowiedzi

Nazwa Typ Opis
204 (brak zawartości) Rozszerzony tag zapytania z żądanym tagiem tagPath został pomyślnie usunięty.
400 (Nieprawidłowe żądanie) Żądana ścieżka tagu jest nieprawidłowa.
404 (nie znaleziono) Nie można odnaleźć rozszerzonego tagu zapytania z żądaną funkcją tagPath

Aktualizowanie rozszerzonego tagu zapytania

Aktualizowanie rozszerzonego tagu zapytania.

PATCH .../extendedquerytags/{tagPath}

Parametry identyfikatora URI

Nazwa W Wymagany Typ Opis
tagPath path True ciąg tagPath to ścieżka tagu, który może być tagiem lub słowem kluczowym. Na przykład identyfikator pacjenta jest reprezentowany przez 00100020 lub PatientId

Nagłówek żądania

Nazwa Wymagany Typ Opis
Content-Type True ciąg application/json jest obsługiwana.

Treść żądania

Nazwa Wymagany Typ Opis
body Rozszerzony tag zapytania do aktualizowania

Odpowiedzi

Nazwa Typ Opis
20 (OK) Rozszerzony tag zapytania Zaktualizowany tag rozszerzonego zapytania
400 (Nieprawidłowe żądanie) Żądana ścieżka lub treść tagu jest nieprawidłowa
404 (nie znaleziono) Nie można odnaleźć rozszerzonego tagu zapytania z żądaną ścieżką tagPath

Wyświetlanie listy rozszerzonych błędów tagów zapytań

Wyświetla listę błędów w tagu zapytania rozszerzonego.

GET .../extendedquerytags/{tagPath}/errors

Parametry identyfikatora URI

Nazwa W Wymagany Typ Opis
tagPath path True ciąg tagPath to ścieżka tagu, która może być tagiem lub słowem kluczowym. Na przykład identyfikator pacjenta jest reprezentowany przez 00100020 lub PatientId

Odpowiedzi

Nazwa Typ Opis
200 (OK) Błąd rozszerzonego tagu zapytania[] Lista rozszerzonych błędów tagów zapytań skojarzonych z tagiem
400 (Nieprawidłowe żądanie) Żądana ścieżka tagu jest nieprawidłowa
404 (nie znaleziono) Nie można odnaleźć rozszerzonego tagu zapytania z żądaną ścieżką tagPath

Pobieranie operacji

Uzyskaj długotrwałą operację.

GET .../operations/{operationId}

Parametry identyfikatora URI

Nazwa W Wymagany Typ Opis
operationId path True ciąg Identyfikator operacji

Odpowiedzi

Nazwa Typ Opis
200 (OK) Operacja Ukończona operacja dla określonego identyfikatora
202 (zaakceptowane) Operacja Uruchomiona operacja dla określonego identyfikatora
404 (nie znaleziono) Nie można odnaleźć operacji

QIDO z rozszerzonymi tagami zapytań

Stan tagu

Stan rozszerzonego tagu zapytania wskazuje bieżący stan. Po pierwszym dodaniu rozszerzonego tagu zapytania jego stan jest ustawiony na Adding, a długotrwała operacja jest uruchamiana w celu ponownego indeksowania istniejących wystąpień DICOM. Po zakończeniu operacji stan tagu zostanie zaktualizowany do Ready. Rozszerzony tag zapytania może być teraz używany w narzędziu QIDO.

Jeśli na przykład zostanie dodany tag Nazwa modelu producenta (0008 1090) i w Ready stanie, poniższe zapytania mogą służyć do filtrowania przechowywanych wystąpień według nazwy modelu producenta.

../instances?ManufacturerModelName=Microsoft

Mogą być one również używane z istniejącymi tagami. Na przykład:

../instances?00081090=Microsoft&PatientName=Jo&fuzzyMatching=true

Stan zapytania tagu

QueryStatus wskazuje, czy funkcja QIDO jest dozwolona dla tagu. Gdy operacja ponownego indeksowania nie może przetworzyć co najmniej jednego wystąpienia DICOM dla tagu, parametr QueryStatus tagu jest ustawiany automatycznie Disabled . Możesz zignorować błędy indeksowania i zezwolić na używanie tego tagu przez ustawienie QueryStatus wartości na Enabled wartość za pomocą interfejsu API tagu rozszerzonego zapytań aktualizacji . Wszystkie żądania QIDO odwołujące się do co najmniej jednego ręcznie włączonego tagu będą zawierać zestaw tagów z błędami indeksowania w nagłówku erroneous-dicom-attributesodpowiedzi .

Załóżmy na przykład, że rozszerzony tag PatientAge zapytania miał błędy podczas ponownego indeksowania, ale został włączony ręcznie. W przypadku następującego zapytania można zobaczyć PatientAge w nagłówku erroneous-dicom-attributes .

../instances?PatientAge=035Y

Definicje

Tag zapytania rozszerzonego

Tag DICOM, który będzie obsługiwany dla QIDO-RS.

Nazwa Typ Opis
Ścieżka ciąg Ścieżka tagu, zwykle składa się z identyfikatora grupy i identyfikatora elementu. Na przykład PatientId (0010 0020) ma ścieżkę 00100020
VR ciąg Reprezentacja wartości tego tagu
PrivateCreator ciąg Kod identyfikacyjny implementatora tego prywatnego tagu
Poziom Rozszerzony poziom tagu zapytania Poziom rozszerzonego tagu zapytania
Stan Stan rozszerzonego tagu zapytania Stan rozszerzonego tagu zapytania
Querystatus Stan zapytania rozszerzonego tagu zapytania Stan zapytania rozszerzonego tagu zapytania
błędy Odwołanie do rozszerzonych błędów tagów zapytania Odwołanie do błędów rozszerzonych tagów zapytań
Operacja Odwołanie do operacji Odwołanie do długotrwałej operacji

Przykładowy kod 1 to standardowy tag (0008 0070) w Ready stanie.

{
    "status": "Ready",
    "level": "Instance",
    "queryStatus": "Enabled",
    "path": "00080070",
    "vr": "LO"
}

Przykład kodu 2 to standardowy tag (0010 1010) w Adding stanie. Operacja z identyfikatorem 1a5d0306d9624f699929ee1a59ed57a0 jest uruchomiona na nim, a do tej pory wystąpiły 21 błędów.

{
    "status": "Adding",
    "level": "Study",
    "errors": {
        "count": 21,
        "href": "https://localhost:63838/extendedquerytags/00101010/errors"
    },
    "operation": {
        "id": "1a5d0306d9624f699929ee1a59ed57a0",
        "href": "https://localhost:63838/operations/1a5d0306d9624f699929ee1a59ed57a0"
    },
    "queryStatus": "Disabled",
    "path": "00101010",
    "vr": "AS"
}

Odwołanie do operacji

Odwołanie do długotrwałej operacji.

Nazwa Typ Opis
ID (Identyfikator) ciąg identyfikator operacji
Href ciąg Identyfikator URI operacji

Operacja

Reprezentuje długotrwałą operację.

Nazwa Typ Opis
Identyfikator operacji ciąg Identyfikator operacji
OperationType Typ operacji Typ długotrwałej operacji
CreatedTime ciąg Godzina utworzenia operacji
LastUpdatedTime ciąg Godzina ostatniej aktualizacji operacji
Stan Stan operacji Reprezentuje stan czasu wykonywania operacji
Percentcomplete Liczba całkowita Procent pracy wykonanej przez operację
Zasoby ciąg[] Kolekcja lokalizacji zasobów, które operacja tworzy lub manipuluje

Poniższy przykład kodu to uruchomiona operacja ponownego indeksowania.

{
    "resources": [
        "https://localhost:63838/extendedquerytags/00101010"
    ],
    "operationId": "a99a8b51-78d4-4fd9-b004-b6c0bcaccf1d",
    "type": "Reindex",
    "createdTime": "2021-10-06T16:40:02.5247083Z",
    "lastUpdatedTime": "2021-10-06T16:40:04.5152934Z",
    "status": "Running",
    "percentComplete": 10
}

Stan operacji

Reprezentuje stan czasu wykonywania długotrwałej operacji.

Nazwa Typ Opis
Niestartowane ciąg Operacja nie została uruchomiona
Uruchomienie ciąg Operacja jest wykonywana i nie została jeszcze zakończona
Ukończone ciąg Operacja została zakończona pomyślnie
Niepowodzenie ciąg Operacja została zatrzymana przedwcześnie po napotkaniu co najmniej jednego błędu

Błąd rozszerzonego tagu zapytania

Wystąpił błąd podczas rozszerzonej operacji indeksowania tagów zapytania.

Nazwa Typ Opis
Identyfikator StudyInstanceUid ciąg Identyfikator UID wystąpienia badania, w którym wystąpiły błędy indeksowania
Identyfikator SeriesInstanceUid ciąg Identyfikator UID wystąpienia serii, w którym wystąpiły błędy indeksowania
Identyfikator SopInstanceUid ciąg Identyfikator UID wystąpienia sop, w którym wystąpiły błędy indeksowania
CreatedTime ciąg Godzina wystąpienia błędu (UTC)
ErrorMessage ciąg Komunikat o błędzie

Poniższy przykład kodu zawiera nieoczekiwany błąd długości wartości w wystąpieniu DICOM. Wystąpił o godzinie 2021-10-06T16:41:44.4783136.

{
    "studyInstanceUid": "2.25.253658084841524753870559471415339023884",
    "seriesInstanceUid": "2.25.309809095970466602239093351963447277833",
    "sopInstanceUid": "2.25.225286918605419873651833906117051809629",
    "createdTime": "2021-10-06T16:41:44.4783136",
    "errorMessage": "Value length is not expected."
}

Odwołanie do rozszerzonych błędów tagów zapytania

Odwołanie do rozszerzonych błędów tagów zapytania.

Nazwa Typ Opis
Liczba Liczba całkowita Całkowita liczba błędów w tagu zapytania rozszerzonego
Href ciąg Identyfikator URI rozszerzonego tagu zapytania

Typ operacji

Typ długotrwałej operacji.

Nazwa Typ Opis
Ponowne indeksowanie ciąg Operacja ponownego indeksowania, która aktualizuje indeksy dla wcześniej dodanych danych na podstawie nowych tagów

Rozszerzony stan tagu zapytania

Stan rozszerzonego tagu zapytania.

Nazwa Typ Opis
Dodawanie ciąg Dodano tag rozszerzonego zapytania, a długotrwała operacja reindeksuje istniejące wystąpienia DICOM
Gotowy ciąg Rozszerzony tag zapytania jest gotowy do obsługi QIDO-RS
Usuwanie ciąg Tag rozszerzonego zapytania jest usuwany

Rozszerzony poziom tagu zapytania

Poziom hierarchii informacji DICOM, w którym ten tag ma zastosowanie.

Nazwa Typ Opis
Wystąpienie ciąg Tag rozszerzonego zapytania jest istotny na poziomie wystąpienia
Seria ciąg Tag rozszerzonego zapytania jest istotny na poziomie serii
Badania ciąg Tag rozszerzonego zapytania jest istotny na poziomie badania

Stan zapytania rozszerzonego tagu zapytania

Stan zapytania rozszerzonego tagu zapytania.

Nazwa Typ Opis
Disabled ciąg Rozszerzony tag zapytania nie może być odpytywane
Enabled (Włączony) ciąg Rozszerzony tag zapytania może być odpytywane

Uwaga

Błędy podczas operacji ponownego indeksowania wyłącza funkcję QIDO w tagu zapytania rozszerzonego. Aby ją włączyć, możesz wywołać interfejs API tagu rozszerzonego zapytania aktualizacji .

Rozszerzony tag zapytania na potrzeby aktualizowania

Reprezentuje rozszerzony tag zapytania do aktualizowania.

Nazwa Typ Opis
Querystatus Stan zapytania rozszerzonego tagu zapytania Stan zapytania rozszerzonego tagu zapytania

Rozszerzony tag zapytania do dodawania

Reprezentuje rozszerzony tag zapytania na potrzeby dodawania.

Nazwa Wymagany Typ Opis
Ścieżka True ciąg Ścieżka tagu, zwykle składająca się z identyfikatora grupy i identyfikatora elementu ( PatientId 0010 0020) ma ścieżkę 00100020
VR ciąg Reprezentacja wartości tego tagu. Jest ona opcjonalna dla tagu standardowego i wymagana dla tagu prywatnego
PrivateCreator ciąg Kod identyfikacyjny implementatora tego prywatnego tagu. Ustawiane tylko wtedy, gdy tag jest tagiem prywatnym
Poziom Prawda Rozszerzony poziom tagu zapytania Reprezentuje hierarchię, w której ten tag jest odpowiedni. Powinna być jedną z serii, serii lub wystąpień

Przykład kodu 1MicrosoftPC definiuje tag prywatny (0401 1001) z reprezentacją SS wartości na poziomie wystąpienia.

{
    "Path": "04011001",
    "VR": "SS",
    "PrivateCreator": "MicrosoftPC",
    "Level": "Instance"
}

Przykład kodu 2 używa tagu standardowego ze słowem kluczowym ManufacturerModelName z reprezentacją LO wartości zdefiniowaną na poziomie serii.

{
    "Path": "ManufacturerModelName",
    "VR": "LO",
    "Level": "Series"
}

Przykład kodu 3 używa tagu standardowego (0010 0040) i jest definiowany na badaniach. Reprezentacja wartości jest już zdefiniowana przez standard DICOM.

{
    "Path": "00100040",
    "Level": "Study"
}

Podsumowanie

Ten koncepcyjny artykuł zawiera omówienie funkcji tagu rozszerzonego zapytania w usłudze DICOM.

Następne kroki

Aby uzyskać więcej informacji na temat wdrażania usługi DICOM, zobacz