findscu ID Study Problems
Moderator: Moderator Team
findscu ID Study Problems
Hello!
I have some problems with de findscu, I define that I want to search the next fields
(0008,0052) CS [STUDY] # QueryRetrieveLevel
(0020,0010) SH [] # Study ID
(0008,0060) VR [] # Study Modality
The problems is when I define that I want to search the Study Modality, when I execute findscu It gets me the next message
(0000,0902) LO [Query was formatted improperly. Check required keys] # 52, 1 ErrorComment
findscu: Association Release Failed:
0006:0316 DUL P-Data PDU arrived
I supose that I'm doing something wrong when I define the study modality! Which is the mistake ? How can I get the study modality without errors?
Thanks for you help in advance
I have some problems with de findscu, I define that I want to search the next fields
(0008,0052) CS [STUDY] # QueryRetrieveLevel
(0020,0010) SH [] # Study ID
(0008,0060) VR [] # Study Modality
The problems is when I define that I want to search the Study Modality, when I execute findscu It gets me the next message
(0000,0902) LO [Query was formatted improperly. Check required keys] # 52, 1 ErrorComment
findscu: Association Release Failed:
0006:0316 DUL P-Data PDU arrived
I supose that I'm doing something wrong when I define the study modality! Which is the mistake ? How can I get the study modality without errors?
Thanks for you help in advance
-
- DCMTK Developer
- Posts: 117
- Joined: Tue, 2004-11-02, 17:21
- Location: Oldenburg, Germany
- Contact:
I suppose you are using the patient root information model (option -P in findscu)? If that is the case, here is my answer:
The patient root information model has 4 hierarchy levels: Patient (highest level) - Study - Series - Image (lowest level). In order to be able to query on a certain lower level, you need to specify the unique keys of all higher levels. I.e. if you are querying on study level, you will have to provide a certain PatientID (0010,0020), if you are querying on series level, you will have to provide a certain PatientID (0010,0020) and a certain StudyInstanceUID (0020,000d), and if you are querying on image level, you will have to provide a certain PatientID (0010,0020), a certain StudyInstanceUID (0020,000d) and a certain SeriesInstanceUID (0020,000e) in your query.
The patient root information model has 4 hierarchy levels: Patient (highest level) - Study - Series - Image (lowest level). In order to be able to query on a certain lower level, you need to specify the unique keys of all higher levels. I.e. if you are querying on study level, you will have to provide a certain PatientID (0010,0020), if you are querying on series level, you will have to provide a certain PatientID (0010,0020) and a certain StudyInstanceUID (0020,000d), and if you are querying on image level, you will have to provide a certain PatientID (0010,0020), a certain StudyInstanceUID (0020,000d) and a certain SeriesInstanceUID (0020,000e) in your query.
[quote="Thomas Wilkens"]I suppose you are using the patient root information model (option -P in findscu)? If that is the case, here is my answer:
No I'm using the -S option for a study, here you have an example code that I use for a specific pateint. Of coure the patient exists
(0008,0052) CS [STUDY] # QueryRetrieveLevel
(0010,0020) LO [682706]
(0020,0010) SH [] # Study ID
(0008,0060) CS [] # Study Modality
When I put the Study Modality I get the Message Error
# Dicom-Data-Set
# Used TransferSyntax: LittleEndianImplicit
(0000,0902) LO [Query was formatted improperly. Check required keys] # 52, 1 ErrorComment
findscu: Association Release Failed:
0006:0316 DUL P-Data PDU arrived
No I'm using the -S option for a study, here you have an example code that I use for a specific pateint. Of coure the patient exists
(0008,0052) CS [STUDY] # QueryRetrieveLevel
(0010,0020) LO [682706]
(0020,0010) SH [] # Study ID
(0008,0060) CS [] # Study Modality
When I put the Study Modality I get the Message Error
# Dicom-Data-Set
# Used TransferSyntax: LittleEndianImplicit
(0000,0902) LO [Query was formatted improperly. Check required keys] # 52, 1 ErrorComment
findscu: Association Release Failed:
0006:0316 DUL P-Data PDU arrived
I have seen that I get the same error if i try to retrieve the SerieInstanceUID, I supose that I'm doing something wrong .
(0008,0052) CS [STUDY] # QueryRetrieveLevel
(0010,0020) LO [682706]
(0020,0010) SH [] # Study ID
(0020,000d) UI [] # Study UID
(0020,000e) UI [] # Series UID
And I execute findscu :
findscu -S 127.0.0.1 10004 -aet PACS -aec PACS busca2.dcm
(0008,0052) CS [STUDY] # QueryRetrieveLevel
(0010,0020) LO [682706]
(0020,0010) SH [] # Study ID
(0020,000d) UI [] # Study UID
(0020,000e) UI [] # Series UID
And I execute findscu :
findscu -S 127.0.0.1 10004 -aet PACS -aec PACS busca2.dcm
-
- DCMTK Developer
- Posts: 117
- Joined: Tue, 2004-11-02, 17:21
- Location: Oldenburg, Germany
- Contact:
Look in the DICOM standard part 4, table C.6-5. The table shows all attributes which can be used for a query on the study level in the study root information model. One of the is the unique key (U) for this level, some of them are required keys (R) and some of them are optional (O). Unique and required keys have to be supported by an archive, optional keys may be supported by an archive. The problem is that attribute Modality (0008,0060) does not appear in this table, so it cannot be used in your query.
Section C.6.2.1.3 in this document says that the attributes on the series level in the study root information model are the same as the attributes on the series level in the patient root information model. The attributes on the series level in the patient root information model are shown in table C.6-3. Attribute Modality (0008,0060) is included in this table, so you can use this attribute for a query on the series level.
So the answer to your problem is: If you want to query attribute Modality, you have to query on the series level, not on the study level.
Section C.6.2.1.3 in this document says that the attributes on the series level in the study root information model are the same as the attributes on the series level in the patient root information model. The attributes on the series level in the patient root information model are shown in table C.6-3. Attribute Modality (0008,0060) is included in this table, so you can use this attribute for a query on the series level.
So the answer to your problem is: If you want to query attribute Modality, you have to query on the series level, not on the study level.
Another doubt
Thomas I have try to do this in the series level
With the series level I can retrieve the modality, but when I try to retrieve the study date, gets a me a an error, gets "check required keys" message. I can't understand why with the series level I can't retrive the Date of the study, I have tried too with the time study, study ID, and I can't retrieve them, If I use the study level I can retrieve them, but then I can't retrieve the Modality.
And example code is this
(0008,0052) CS [SERIES]
(0008,0020) DA[]
(0010,0010) PN []
(0010,0020) LO []
(0020,000D) UI[]
(0020,0011) IS[]
(0008,0060) CS []
I use the findscu with -S option,
Another question is that if I use with the -P option i get the same message check required keys. With the patient level I can't access to series fields ?
Thanks for your help
With the series level I can retrieve the modality, but when I try to retrieve the study date, gets a me a an error, gets "check required keys" message. I can't understand why with the series level I can't retrive the Date of the study, I have tried too with the time study, study ID, and I can't retrieve them, If I use the study level I can retrieve them, but then I can't retrieve the Modality.
And example code is this
(0008,0052) CS [SERIES]
(0008,0020) DA[]
(0010,0010) PN []
(0010,0020) LO []
(0020,000D) UI[]
(0020,0011) IS[]
(0008,0060) CS []
I use the findscu with -S option,
Another question is that if I use with the -P option i get the same message check required keys. With the patient level I can't access to series fields ?
Thanks for your help
-
- DCMTK Developer
- Posts: 117
- Joined: Tue, 2004-11-02, 17:21
- Location: Oldenburg, Germany
- Contact:
I am sorry but that is exactly the way the "traditional" query/retrieve is defined in the DICOM standard: on the patient level you can query for all attributes which DICOM specifies to be on the patient level (and no other attributes), on the study level you can query for all attributes which DICOM specifies to be on the study level (and no other attributes), on the series level you can query for all attributes which DICOM specifies to be on the series level (and no other attributes), and on the image level you can query for all attributes which DICOM specifies to be on the image level (and no other attributes). That's just the way it is in DICOM. In case you need to query for information from more than one level, you need to do multiple queries.
If you are not happy with this "traditional" query/retrieve, there is something called "relational queries" in DICOM. Look in part 4 of the DICOM standard and you will find it. Relational queries allow any combination of keys at any level in the hierarchy (patient-study-series-image). The problem is that hardly any PACS system supports relational queries, probably because such queries are more difficult to implement.
If you are not happy with this "traditional" query/retrieve, there is something called "relational queries" in DICOM. Look in part 4 of the DICOM standard and you will find it. Relational queries allow any combination of keys at any level in the hierarchy (patient-study-series-image). The problem is that hardly any PACS system supports relational queries, probably because such queries are more difficult to implement.
Hello Thomas!
First of all thanks for your help to you and all dcmtk's team. We are a group of person from the Udg (university of Girona) in catalonia. That we are developing a open source software for linux, to allow the doctors to connect to the PACS and visualisate the images. We are starting a nobody has idea how PACS works and it's is making that the beginning has been hard We don't have any reference code except your exemples like findscu o movescu, Your help is very helpfull.
Now I have two doubts to improve the efficiency in the querys for search patients.
Firts of all. For example if I want to search all the patients that patient's name begin for P. For every patient in the SCU i use the pogress Callback for retrieve the information, for every patient I have to do the progress Callback, but PACS's server sends the information of all the patients together, or after read a patient in the pogres Callback in the SCU and then PACS sends me the information of the next patient ? PACS waits that I have read one patient to send another, or send all together ?
An another I supose that the majority of people if needs information that are in distinct level make two queries,no ?. For example firts search the patient name, and then another query for the modality,no?
In the progress callback i save the information in a STL List is a good method this ??
Thanks for your help! I supose that we are doing basic questions but we are in our begginings. Thanks for All!
First of all thanks for your help to you and all dcmtk's team. We are a group of person from the Udg (university of Girona) in catalonia. That we are developing a open source software for linux, to allow the doctors to connect to the PACS and visualisate the images. We are starting a nobody has idea how PACS works and it's is making that the beginning has been hard We don't have any reference code except your exemples like findscu o movescu, Your help is very helpfull.
Now I have two doubts to improve the efficiency in the querys for search patients.
Firts of all. For example if I want to search all the patients that patient's name begin for P. For every patient in the SCU i use the pogress Callback for retrieve the information, for every patient I have to do the progress Callback, but PACS's server sends the information of all the patients together, or after read a patient in the pogres Callback in the SCU and then PACS sends me the information of the next patient ? PACS waits that I have read one patient to send another, or send all together ?
An another I supose that the majority of people if needs information that are in distinct level make two queries,no ?. For example firts search the patient name, and then another query for the modality,no?
In the progress callback i save the information in a STL List is a good method this ??
Thanks for your help! I supose that we are doing basic questions but we are in our begginings. Thanks for All!
-
- Posts: 49
- Joined: Wed, 2005-02-16, 16:27
What you can try to do is query for (0008,0061) "Modalities in Study" on Study Level. This is an optional key and might be supported by your PACS. CONQUEST for instance does support it. Look at the SQL table of CONQEST (dicom.sql file) to see how you can design your database to represent the levels.
A study can consist of different modalities (e.g. CT,SC and SR) and therefore it makes sence to put the attribute (0008,0061) on Series Level altough I would call it "Series Modality" instead of "Study Modality"
regards
Andreas
A study can consist of different modalities (e.g. CT,SC and SR) and therefore it makes sence to put the attribute (0008,0061) on Series Level altough I would call it "Series Modality" instead of "Study Modality"
regards
Andreas
-
- DCMTK Developer
- Posts: 117
- Joined: Tue, 2004-11-02, 17:21
- Location: Oldenburg, Germany
- Contact:
I did not really understand your question about "querying patients whose name starts with a P", I am sorry. But with regard to this topic, have you heard about "wildcard matching"? You can actually tell the PACS to return only patients whose name starts with a P by specifying "P*" in the (0010,0010) PatientsName attribute in your query. Look in the DICOM standard, part 4, section C.2.2.2.
Also, I would like to tell you to please note that this is a forum on DCMTK. In case you have general questions about DICOM, you should post your questions to the comp.protocols.dicom newsgroup. You can also search this newsgroup with google, this may already answer a lot of your questions.
Also, I would like to tell you to please note that this is a forum on DCMTK. In case you have general questions about DICOM, you should post your questions to the comp.protocols.dicom newsgroup. You can also search this newsgroup with google, this may already answer a lot of your questions.
Who is online
Users browsing this forum: Ahrefs [Bot], Bing [Bot], Google [Bot] and 0 guests