Partager via


Balises de requête étendues

Vue d’ensemble

Par défaut, le service DICOM prend en charge l’interrogation sur les balises DICOM spécifiées dans l’instruction de conformité. En activant les balises de requête étendues, la liste des balises peut facilement être développée en fonction des besoins de l’application.

À l’aide des API répertoriées ci-dessous, les utilisateurs peuvent indexer leurs études, séries et instances DICOM sur des balises DICOM standard et privées afin qu’elles puissent être spécifiées dans des requêtes QIDO-RS.

API

Version : v1

Pour vous aider à gérer les balises prises en charge dans un instance de service DICOM donné, les points de terminaison d’API suivants ont été ajoutés.

API Description
POST .../extendedquerytags Ajouter des balises de requête étendue
GET .../extendedquerytags Répertorier les balises de requête étendue
GET .../extendedquerytags/{tagPath} Obtenir une balise de requête étendue
DELETE .../extendedquerytags/{tagPath} Supprimer une balise de requête étendue
PATCH .../extendedquerytags/{tagPath} Mettre à jour la balise de requête étendue
GET .../extendedquerytags/{tagPath}/errors Répertorier les erreurs de balise de requête étendue
GET .../operations/{operationId} Opération GET

Ajouter des balises de requête étendues

Ajoute une ou plusieurs balises de requête étendues et démarre une opération de longue durée qui réindexe les instances DICOM actuelles avec la ou les balises spécifiées.

POST .../extendedquerytags

En-tête de requête

Nom Obligatoire Type Description
Content-Type True string application/json est pris en charge

Corps de la demande

Nom Obligatoire Type Description
body Balise de requête étendue pour l’ajout[]

Limites

Les types de réalité virtuelle suivants sont pris en charge :

VR Description Correspondance de valeur unique Correspondance de plage Correspondance floue
AE Entité d’application X
AS Chaîne d’âge X
CS Chaîne de code X
DA Date X X
Source de données Chaîne décimale X
DT Date Heure X X
FD Double virgule flottante X
FL Virgule flottante unique X
IS Chaîne entière X
LO Chaîne longue X
PN Nom de la personne X X
SH Chaîne courte X
SL Long signé X
SS Short signé X
TM Temps X X
Interface utilisateur du service Identificateur unique X
UL Long non signé X
US Court non signé X

Notes

Les balises séquentielles, qui sont des balises sous une balise de type Séquence d’éléments (SQ), ne sont actuellement pas prises en charge. Vous pouvez ajouter jusqu’à 128 balises de requête étendues.

Réponses

Nom Type Description
202 (accepté) Informations de référence sur les opérations Des balises de requête étendues ont été ajoutées et une opération de longue durée a été démarrée pour réindexer des instances DICOM existantes
400 (Demande incorrecte) Le corps de la demande contient des données non valides
409 (Conflit) Une ou plusieurs balises de requête demandées sont déjà prises en charge

Répertorier les balises de requête étendue

Liste de toutes les balises de requête étendues.

GET .../extendedquerytags

Réponses

Nom Type Description
200 (OK) Balise de requête étendue[] Retourne des balises de requête étendues

Obtenir une balise de requête étendue

Obtenir une balise de requête étendue.

GET .../extendedquerytags/{tagPath}

Paramètres URI

Nom Dans Obligatoire Type Description
tagPath path True string tagPath est le chemin d’accès de la balise, qui peut être une balise ou mot clé. Par exemple, l’ID du patient est représenté par 00100020 ou PatientId

Réponses

Nom Type Description
200 (OK) Balise de requête étendue Balise de requête étendue avec le spécifié tagPath
400 (Demande incorrecte) Le chemin d’accès de la balise demandée n’est pas valide
404 (introuvable) La balise de requête étendue avec tagPath demandé est introuvable

Supprimer une balise de requête étendue

Supprimer une balise de requête étendue.

DELETE .../extendedquerytags/{tagPath}

Paramètres URI

Nom Dans Obligatoire Type Description
tagPath path True string tagPath est le chemin d’accès de la balise, qui peut être une balise ou mot clé. Par exemple, l’ID du patient est représenté par 00100020 ou PatientId

Réponses

Nom Type Description
204 (Pas de contenu) La balise de requête étendue avec tagPath demandé a été supprimée avec succès.
400 (Demande incorrecte) Le chemin d’accès de balise demandé n’est pas valide.
404 (introuvable) La balise de requête étendue avec tagPath demandé est introuvable

Mettre à jour la balise de requête étendue

Mettez à jour une balise de requête étendue.

PATCH .../extendedquerytags/{tagPath}

Paramètres URI

Nom Dans Obligatoire Type Description
tagPath path True string tagPath est le chemin d’accès de la balise, qui peut être une balise ou mot clé. Par exemple, l’ID du patient est représenté par 00100020 ou PatientId

En-tête de requête

Nom Obligatoire Type Description
Content-Type True string application/json est pris en charge.

Corps de la demande

Nom Obligatoire Type Description
body Balise de requête étendue pour la mise à jour

Réponses

Nom Type Description
20 (OK) Balise de requête étendue Balise de requête étendue mise à jour
400 (Demande incorrecte) Le chemin d’accès ou le corps de la balise demandé n’est pas valide
404 (introuvable) La balise de requête étendue avec tagPath demandée est introuvable

Répertorier les erreurs de balise de requête étendue

Répertorie les erreurs sur une balise de requête étendue.

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

Paramètres URI

Nom Dans Obligatoire Type Description
tagPath path True string tagPath est le chemin d’accès de la balise, qui peut être une balise ou mot clé. Par exemple, l’ID de patient est représenté par 00100020 ou PatientId

Réponses

Nom Type Description
200 (OK) Erreur de balise de requête étendue[] Liste des erreurs de balise de requête étendue associées à la balise
400 (Demande incorrecte) Le chemin d’accès de balise demandé n’est pas valide
404 (introuvable) La balise de requête étendue avec tagPath demandée est introuvable

Opération d’obtention

Obtenez une opération de longue durée.

GET .../operations/{operationId}

Paramètres URI

Nom Dans Obligatoire Type Description
operationId path True string ID d’opération

Réponses

Nom Type Description
200 (OK) opération Opération terminée pour l’ID spécifié
202 (accepté) opération Opération en cours d’exécution pour l’ID spécifié
404 (introuvable) L’opération est introuvable

QIDO avec des balises de requête étendues

Tag status

L’état de la balise de requête étendue indique la status actuelle. Lorsqu’une balise de requête étendue est ajoutée pour la première fois, son status est défini sur Adding, et une opération de longue durée est lancée pour réindexer des instances DICOM existantes. Une fois l’opération terminée, la balise status est mise à jour vers Ready. La balise de requête étendue peut désormais être utilisée dans QIDO.

Par exemple, si la balise Manufacturer Model Name (0008,1090) est ajoutée, et dans Ready status, les requêtes suivantes peuvent être utilisées pour filtrer les instances stockées par nom du modèle fabricant.

../instances?ManufacturerModelName=Microsoft

Ils peuvent également être utilisés avec des balises existantes. Par exemple :

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

Status de requête de balise

QueryStatus indique si QIDO est autorisé pour la balise. Lorsqu’une opération de réindexation ne parvient pas à traiter une ou plusieurs instances DICOM pour une balise, la valeur QueryStatus de cette balise est automatique Disabled . Vous pouvez choisir d’ignorer les erreurs d’indexation et d’autoriser les requêtes à utiliser cette balise en définissant sur via mettre à Enabled jour l’API QueryStatusde balise de requête étendue. Toutes les requêtes QIDO qui font référence à au moins une balise activée manuellement incluent l’ensemble de balises avec des erreurs d’indexation dans l’en-tête erroneous-dicom-attributesde réponse .

Par exemple, supposons que la balise PatientAge de requête étendue a rencontré des erreurs lors de la réindexation, mais qu’elle a été activée manuellement. Pour la requête suivante, vous pouvez voir PatientAge dans l’en-tête erroneous-dicom-attributes .

../instances?PatientAge=035Y

Définitions

Balise de requête étendue

Balise DICOM qui sera prise en charge pour QIDO-RS.

Nom Type Description
Path string Chemin d’accès de la balise, normalement composé de l’ID de groupe et de l’ID d’élément. Par exemple, PatientId (0010,0020) a le chemin d’accès 00100020
VR string Représentation de valeur de cette balise
PrivateCreator string Code d’identification de l’implémenteur de cette balise privée
Level Niveau de balise de requête étendue Niveau de balise de requête étendue
Statut État de la balise de requête étendue État de la balise de requête étendue
QueryStatus État de la requête de balise de requête étendue Status de requête de la balise de requête étendue
Erreurs Informations de référence sur les erreurs de balise de requête étendue Référence aux erreurs de balise de requête étendue
Opération Informations de référence sur les opérations Référence à une opération de longue durée

L’exemple de code 1 est une balise standard (0008 0070) dans Ready status.

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

L’exemple de code 2 est une balise standard (0010,1010) dans Adding status. Une opération avec ID 1a5d0306d9624f699929ee1a59ed57a0 est en cours d’exécution, et 21 erreurs se sont produites jusqu’à présent.

{
    "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"
}

Informations de référence sur les opérations

Référence à une opération de longue durée.

Nom Type Description
id string ID d’opération
Href string Uri vers l’opération

Opération

Représente une opération de longue durée.

Nom Type Description
OperationId string ID d’opération
OperationType Type d’opération Type de l’opération de longue durée
CreatedTime string Heure de création de l’opération
LastUpdatedTime string Heure de la dernière mise à jour de l’opération
Statut État de l’opération Représente la status d’exécution de l’opération
PercentComplete Integer Pourcentage de travail effectué par l’opération
Ressources string[] Collection d’emplacements de ressources que l’opération crée ou manipule

L’exemple de code suivant est une opération de réindexation en cours d’exécution.

{
    "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
}

État de l’opération

Représente une status d’exécution d’une opération de longue durée.

Nom Type Description
NotStarted string L’opération n’est pas démarrée
Exécution en cours string L’opération est en cours d’exécution et n’est pas encore terminée
Effectué string L’opération s’est terminée avec succès
Échec string L’opération s’est arrêtée prématurément après avoir rencontré une ou plusieurs erreurs

Erreur de balise de requête étendue

Erreur qui s’est produite lors d’une opération d’indexation de balise de requête étendue.

Nom Type Description
StudyInstanceUid string Étudier instance UID où des erreurs d’indexation se sont produites
SeriesInstanceUid string Série instance UID où des erreurs d’indexation se sont produites
SopInstanceUid string Sop instance UID où des erreurs d’indexation se sont produites
CreatedTime string Heure à laquelle l’erreur s’est produite (UTC)
ErrorMessage string Message d’erreur

L’exemple de code suivant contient une erreur de longueur de valeur inattendue sur un instance DICOM. Elle s’est produite à 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."
}

Informations de référence sur les erreurs de balise de requête étendue

Référence aux erreurs de balise de requête étendue.

Nom Type Description
Count Integer Nombre total d’erreurs sur la balise de requête étendue
Href string URI vers les erreurs de balise de requête étendue

Type d'opération

Type d’une opération de longue durée.

Nom Type Description
Réindexer string Opération de réindexation qui met à jour les index des données précédemment ajoutées en fonction de nouvelles balises

Status de balise de requête étendue

Status de la balise de requête étendue.

Nom Type Description
Ajout string La balise de requête étendue a été ajoutée et une opération de longue durée réindexe des instances DICOM existantes
Ready string La balise de requête étendue est prête pour QIDO-RS
Suppression string La balise de requête étendue est en cours de suppression

Niveau de balise de requête étendue

Niveau de la hiérarchie d’informations DICOM où cette balise s’applique.

Nom Type Description
Instance string La balise de requête étendue est pertinente au niveau instance
Série string La balise de requête étendue est pertinente au niveau de la série
Étude string La balise de requête étendue est pertinente au niveau de l’étude

Status de requête de balise de requête étendue

La requête status de la balise de requête étendue.

Nom Type Description
Désactivé string La balise de requête étendue n’est pas autorisée à être interrogée
activé string La balise de requête étendue est autorisée à être interrogée

Notes

Les erreurs au cours de l’opération de réindexation désactivent QIDO sur la balise de requête étendue. Vous pouvez appeler l’API Mettre à jour l’étiquette de requête étendue pour l’activer.

Balise de requête étendue pour la mise à jour

Représente une balise de requête étendue pour la mise à jour.

Nom Type Description
QueryStatus État de la requête de balise de requête étendue La status de requête de la balise de requête étendue

Balise de requête étendue pour l’ajout

Représente une balise de requête étendue pour l’ajout.

Nom Obligatoire Type Description
Path True string Le chemin d’accès de la balise, normalement composé de l’ID de groupe et de l’ID d’élément qui correspond au PatientId (0010,0020) a le chemin d’accès 00100020
VR string Représentation de valeur de cette balise. Il est facultatif pour la balise standard et obligatoire pour la balise privée
PrivateCreator string Code d’identification de l’implémenteur de cette balise privée. Défini uniquement lorsque la balise est une balise privée
Level True Niveau de balise de requête étendue Représente la hiérarchie au niveau de laquelle cette balise est pertinente. Doit être de l’étude, de la série ou de l’instance

L’exemple de code 1MicrosoftPC définit la balise privée (0401,1001) avec la représentation de valeur SS au niveau instance.

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

L’exemple de code 2 utilise la balise standard avec mot clé ManufacturerModelName avec la LO représentation de valeur définie au niveau de la série.

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

L’exemple de code 3 utilise la balise standard (0010 0040) et est défini sur les études. La représentation de valeur est déjà définie par la norme DICOM.

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

Résumé

Cet article conceptuel vous a fourni une vue d’ensemble de la fonctionnalité d’étiquette de requête étendue dans le service DICOM.

Étapes suivantes

Pour plus d’informations sur le déploiement du service DICOM, consultez