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 QueryStatus
de 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-attributes
de 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