Worklist and Kodak CR950

All other questions regarding DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
art
Posts: 19
Joined: Sat, 2005-04-02, 17:05
Location: Schweiz

Worklist and Kodak CR950

#1 Post by art »

Hi,

Connecting to a new Kodak CR950 was successful. Unfortunately I never got a record back (0 record does match criteria) even I had created dozens of *.wl files with all the necessary tags:

(0010,0010)Tester^Hans
(0010,0020)007
(0010,0040)M
(0008,0050)939692
(0008,0020)20050121
(0008,0024)105400
(0008,0069)CR
(0040,0020)20050402

Does anybody has experiences with Kodak CRs and how they control worklists?

BTW: wlmscpfs.exe works fine together with another WorklistSCU.

Kind regards

Beat

Thomas Wilkens
DCMTK Developer
Posts: 117
Joined: Tue, 2004-11-02, 17:21
Location: Oldenburg, Germany
Contact:

#2 Post by Thomas Wilkens »

You should use wlmscpfs.exe's "-v" option, then the modality's query (C-Find-RQ message) is dumped on the command line and you can find out what kind of records the modality is looking for. After adjusting your .wl files accordingly it should be possible to have matches.

art
Posts: 19
Joined: Sat, 2005-04-02, 17:05
Location: Schweiz

Worklist -v Verbose

#3 Post by art »

We worked with -v statment and everything seemed to be ok. The session is always terminated with status "Success" but "0 records matched the criteria".
When I start the wlmspfs.exe I always get the message "Autocorrection is disabled". Could this be a reason?

Thomas Wilkens
DCMTK Developer
Posts: 117
Joined: Tue, 2004-11-02, 17:21
Location: Oldenburg, Germany
Contact:

#4 Post by Thomas Wilkens »

The message "0 records matched the criteria" does not have __anything__ to do with the message "Autocorrection is disabled". It simply means that none of the .wl files contains information which matches the query that is passed by the modality.

If e.g. the modality queries all examinations which are scheduled for __today__ and at the same time all examinations in the .wl files have a scheduled examination date of "20040101" then there will be no matches and no information from the .wl files will be sent back to the modality.

This is what you have to do:

- run wlmscpfs.exe in verbose mode (-v)
- look for query that is sent by the modality; you will find the query below the message "Expanded C-Find RQ message" (or similar)
- analyse the query: what kind of exams are queried by the modality?
- analyse the information in the .wl files (use dcmdump to display the contents of the .wl files)
- adjust the information in the .wl files so that the modality's search criteria will be met (modify the dcmdump'ed information from one or more .wl files using a texteditor, then use dump2dcm to convert the textinformation to a dicom file)
- try communication between modality and wlmscpfs.exe again

Make sure you have understood what the DICOM worklist management service is about, then all this should be no problem at all.

art
Posts: 19
Joined: Sat, 2005-04-02, 17:05
Location: Schweiz

Worklist and CR 950

#5 Post by art »

Thanks for your help. You described what we tried the last few days (without any success).
I only wondered why all the conditions in brackets have a space character after the condition (e.g. Patient's Name [* ] or Date [20050404-20050404 ]). Is the Space character added by wlmscpfs.exe or included in the query of the Kodak CR950? If the second would be true I could imagine why always 0 records are given back.

Thomas Wilkens
DCMTK Developer
Posts: 117
Joined: Tue, 2004-11-02, 17:21
Location: Oldenburg, Germany
Contact:

#6 Post by Thomas Wilkens »

In DICOM, all attribute values must have an even length. If an attribute value has an odd length by itself, a padding character - in this case a space character - will be added to the value. This padding character does not have any significance, not even during the matching process.

In case you cant get any matches, please provide me with wlmscp's output (verbose mode) and I will specify the contents of a .wl file that will lead to a match.

art
Posts: 19
Joined: Sat, 2005-04-02, 17:05
Location: Schweiz

Worklist and CR 950: Log

#7 Post by art »

Below you will find the log generated by "wlmscpfs.exe -v -dfp C:\Radiologie\Worklist 104":

------------------------

$dcmtk: wlmscpfs v3.5.3 2004-05-27 $


(notice: dcmdata auto correction disabled.)

Association Received (CR950:CR950 -> Hipax)

Association Acknowledged (Max Send PDV: 65524)

Received C-FIND Request, MessageID 0.

Find SCP Request Identifiers:

# Dicom-Data-Set
# Used TransferSyntax: LittleEndianImplicit
(0008,0050) SH (no value available) # 0, 0 AccessionNumber
(0008,0090) PN (no value available) # 0, 0 ReferringPhysiciansName
(0008,1110) SQ (Sequence with explicit length #=1) # 24, 1 ReferencedStudySequence
(fffe,e000) na (Item with explicit length #=2) # 16, 1 Item
(0008,1150) UI (no value available) # 0, 0 ReferencedSOPClassUID
(0008,1155) UI (no value available) # 0, 0 ReferencedSOPInstanceUID
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0010,0010) PN [* ] # 2, 1 PatientsName
(0010,0020) LO (no value available) # 0, 0 PatientID
(0010,0030) DA (no value available) # 0, 0 PatientsBirthDate
(0010,0032) TM (no value available) # 0, 0 PatientsBirthTime
(0010,0040) CS (no value available) # 0, 0 PatientsSex
(0010,1000) LO (no value available) # 0, 0 OtherPatientIDs
(0010,1001) PN (no value available) # 0, 0 OtherPatientNames
(0010,1010) AS (no value available) # 0, 0 PatientsAge
(0010,1020) DS (no value available) # 0, 0 PatientsSize
(0010,1030) DS (no value available) # 0, 0 PatientsWeight
(0010,2160) SH (no value available) # 0, 0 EthnicGroup
(0010,2180) SH (no value available) # 0, 0 Occupation
(0010,4000) LT (no value available) # 0, 0 PatientComments
(0020,000d) UI (no value available) # 0, 0 StudyInstanceUID
(0032,1033) LO (no value available) # 0, 0 RequestingService
(0032,1060) LO (no value available) # 0, 0 RequestedProcedureDescription
(0032,1064) SQ (Sequence with explicit length #=1) # 40, 1 RequestedProcedureCodeSequence
(fffe,e000) na (Item with explicit length #=4) # 32, 1 Item
(0008,0100) SH (no value available) # 0, 0 CodeValue
(0008,0102) SH (no value available) # 0, 0 CodingSchemeDesignator
(0008,0103) SH (no value available) # 0, 0 CodingSchemeVersion
(0008,0104) LO (no value available) # 0, 0 CodeMeaning
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0038,0008) CS (no value available) # 0, 0 VisitStatusID
(0038,0400) LO (no value available) # 0, 0 PatientsInstitutionResidence
(0040,0100) SQ (Sequence with explicit length #=1) # 124, 1 ScheduledProcedureStepSequence
(fffe,e000) na (Item with explicit length #=7) # 116, 1 Item
(0008,0060) CS [* ] # 2, 1 Modality
(0032,1070) LO (no value available) # 0, 0 RequestedContrastAgent
(0040,0002) DA [20050404-20050405 ] # 18, 1 ScheduledProcedureStepStartDate
(0040,0003) TM (no value available) # 0, 0 ScheduledProcedureStepStartTime
(0040,0007) LO (no value available) # 0, 0 ScheduledProcedureStepDescription
(0040,0008) SQ (Sequence with explicit length #=1) # 40, 1 ScheduledProtocolCodeSequence
(fffe,e000) na (Item with explicit length #=4) # 32, 1 Item
(0008,0100) SH (no value available) # 0, 0 CodeValue
(0008,0102) SH (no value available) # 0, 0 CodingSchemeDesignator
(0008,0103) SH (no value available) # 0, 0 CodingSchemeVersion
(0008,0104) LO (no value available) # 0, 0 CodeMeaning
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0040,0009) SH (no value available) # 0, 0 ScheduledProcedureStepID
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0040,1001) SH (no value available) # 0, 0 RequestedProcedureID
(0040,1003) SH (no value available) # 0, 0 RequestedProcedurePriority
(0040,1005) LO (no value available) # 0, 0 RequestedProcedureLocation
=============================
Checking the search mask.
- Unsupported (non-sequence) attribute encountered in the search mask.
This attribute will not be existent in any result dataset.
- Unsupported (non-sequence) attribute encountered in the search mask.
This attribute will not be existent in any result dataset.
- Unsupported (non-sequence) attribute encountered in the search mask.
This attribute will not be existent in any result dataset.
- Unsupported (non-sequence) attribute encountered in the search mask.
This attribute will not be existent in any result dataset.
- Unsupported (non-sequence) attribute encountered in the search mask.
This attribute will not be existent in any result dataset.
Expanded Find SCP Request Identifiers:

# Dicom-Data-Set
# Used TransferSyntax: LittleEndianImplicit
(0008,0050) SH (no value available) # 0, 0 AccessionNumber
(0008,0090) PN (no value available) # 0, 0 ReferringPhysiciansName
(0008,1110) SQ (Sequence with explicit length #=1) # 24, 1 ReferencedStudySequence
(fffe,e000) na (Item with explicit length #=2) # 16, 1 Item
(0008,1150) UI (no value available) # 0, 0 ReferencedSOPClassUID
(0008,1155) UI (no value available) # 0, 0 ReferencedSOPInstanceUID
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0010,0010) PN [* ] # 2, 1 PatientsName
(0010,0020) LO (no value available) # 0, 0 PatientID
(0010,0030) DA (no value available) # 0, 0 PatientsBirthDate
(0010,0040) CS (no value available) # 0, 0 PatientsSex
(0010,1000) LO (no value available) # 0, 0 OtherPatientIDs
(0010,1001) PN (no value available) # 0, 0 OtherPatientNames
(0010,1020) DS (no value available) # 0, 0 PatientsSize
(0010,1030) DS (no value available) # 0, 0 PatientsWeight
(0010,2160) SH (no value available) # 0, 0 EthnicGroup
(0010,4000) LT (no value available) # 0, 0 PatientComments
(0020,000d) UI (no value available) # 0, 0 StudyInstanceUID
(0032,1033) LO (no value available) # 0, 0 RequestingService
(0032,1060) LO (no value available) # 0, 0 RequestedProcedureDescription
(0032,1064) SQ (Sequence with explicit length #=1) # 40, 1 RequestedProcedureCodeSequence
(fffe,e000) na (Item with explicit length #=4) # 32, 1 Item
(0008,0100) SH (no value available) # 0, 0 CodeValue
(0008,0102) SH (no value available) # 0, 0 CodingSchemeDesignator
(0008,0103) SH (no value available) # 0, 0 CodingSchemeVersion
(0008,0104) LO (no value available) # 0, 0 CodeMeaning
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0040,0100) SQ (Sequence with explicit length #=1) # 124, 1 ScheduledProcedureStepSequence
(fffe,e000) na (Item with explicit length #=7) # 116, 1 Item
(0008,0060) CS [* ] # 2, 1 Modality
(0032,1070) LO (no value available) # 0, 0 RequestedContrastAgent
(0040,0002) DA [20050404-20050405 ] # 18, 1 ScheduledProcedureStepStartDate
(0040,0003) TM (no value available) # 0, 0 ScheduledProcedureStepStartTime
(0040,0007) LO (no value available) # 0, 0 ScheduledProcedureStepDescription
(0040,0008) SQ (Sequence with explicit length #=1) # 40, 1 ScheduledProtocolCodeSequence
(fffe,e000) na (Item with explicit length #=4) # 32, 1 Item
(0008,0100) SH (no value available) # 0, 0 CodeValue
(0008,0102) SH (no value available) # 0, 0 CodingSchemeDesignator
(0008,0103) SH (no value available) # 0, 0 CodingSchemeVersion
(0008,0104) LO (no value available) # 0, 0 CodeMeaning
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0040,0009) SH (no value available) # 0, 0 ScheduledProcedureStepID
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem
(0040,1001) SH (no value available) # 0, 0 RequestedProcedureID
(0040,1003) SH (no value available) # 0, 0 RequestedProcedurePriority
(0040,1005) LO (no value available) # 0, 0 RequestedProcedureLocation
=============================
Determining matching records from worklist files.
=============================
Worklist Database Files:
C:\Radiologie\Worklist\Hipax\1.wl
=============================
Information from worklist file C:\Radiologie\Worklist\Hipax\1.wl does not match query.
Matching results: 0 matching records found in worklist files.
=============================
Worklist Find SCP Response 1 [status: Success]
Association Release

+++++++++++++++++++++++++++++

We tried differerent worklist files like the one below:

(0010,0010) Master^Hannes
(0010,0020) 50645991
(0010,0040) M
(0010,0030) 19510101
(0008,0050) 2000000057
(0008,0020) 20050403
(0008,0030) 095000
(0000,1030) HIPAX
(0008,0060) CR
(0008,0090) Dr.Sommer

The file above was transformed into a *.wl file with "dumpdcm" and saved within the subdirectory HIPAX.

I look forward to receive a text-file which fulfills the demands of the CR950.

Kind regards and thanks in advance

Beat

Thomas Wilkens
DCMTK Developer
Posts: 117
Joined: Tue, 2004-11-02, 17:21
Location: Oldenburg, Germany
Contact:

#8 Post by Thomas Wilkens »

From your example, it is obvious that you have not quite understood what the DICOM worklist management service is about. Read part 4 of the DICOM standard, Annex K, the DICOM worklist management is explained in detail here. You would have found the solution to your problem yourself if you had read the standard.

Two Facts from your example:
- the call to wlmscpfs is correct
- your worklist file example has problems: firstly, the tags should be sorted in an ascending way, and secondly the attributes (0000,1030), (0008,0020), and (0008,0030) are meaningless in a worklist file, since they will never occur in any query (Who told you to include these attributes in a query? If you had read Annex K, you would have known about table K.6-1 (ATTRIBUTES FOR THE MODALITY WORKLIST INFORMATION MODEL) in the standard that shows all possible attributes in a worklist query).

Here is a worklist file that would lead to a match if there was not one more problem (see below):

(0010,0010) PN [Master^Hannes] # 2, 1 PatientsName
(0010,0020) LO [9876543210] # 0, 0 PatientID
(0010,0030) DA [19530627] # 0, 0 PatientsBirthDate
(0010,0040) CS [M] # 0, 0 PatientsSex
(0040,0100) SQ (Sequence with explicit length #=1) # 124, 1 ScheduledProcedureStepSequence
(fffe,e000) na (Item with explicit length #=7) # 116, 1 Item
(0008,0060) CS [CR] # 2, 1 Modality
(0040,0002) DA [20050405] # 18, 1 ScheduledProcedureStepStartDate
(0040,0003) TM [1000] # 0, 0 ScheduledProcedureStepStartTime
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem

Unfortunately in your case, this worklist file will not lead to a match, because there is one more problem: The Kodak CR950 sends a query with attribute (0008,0060) Modality set to "* ". In other words, the Kodak modality tries to use wildcard matching with this attribute. The problem is, that wildcard matching is not allowed with attribute Modality. This is a violation of the DICOM standard. See Table K.6-1 "The Modality shall be retrieved with Single Value Matching." (Again: if you had read the standard, you would have found the solution yourself!!) Since Single Value Matching is the correct matching process, wlmscpfs will try to match the string "CR" to "*" which will (on a character-by-character comparison) never lead to a match. So its not your fault there is no match, Kodak violates the standard and hence no match can be found.

What can you do now? Firstly, you should let Kodak know about this violation. Secondly, you could try to re-configure the Kodak modality, so that it wont send a "* " value in attribute Modality; then matching should work. If that doesnt help, you could modify the source code of wlmscpfs.exe and add an option to filter out the "*" symbol in attribute Modality from a corresponding incoming query, and treat such a value as a (in this case correct) empty value.

art
Posts: 19
Joined: Sat, 2005-04-02, 17:05
Location: Schweiz

Worklist and Kodak CR950

#9 Post by art »

Together with the example above and many more hours trying and hoping, the worklist is now installed and works. We had to add one more line:

(0008,0050) SH [135577]
(0010,0010) PN [Muster^Christine] # 2, 1 PatientsName
(0010,0020) LO [560921] # 0, 0 PatientID
(0010,0030) DA [19530215] # 0, 0 PatientsBirthDate
(0010,0040) CS [W] # 0, 0 PatientsSex
(0020,000d) UI [123.456.789.1.2] # Study Sequence ID
(0040,0100) SQ (Sequence with explicit length #=1) # 124, 1 ScheduledProcedureStepSequence
(fffe,e000) na (Item with explicit length #=7) # 116, 1 Item
(0008,0060) CS [CR] # 2, 1 Modality
(0040,0002) DA [20050407] # 18, 1 ScheduledProcedureStepStartDate
(fffe,e00d) na (ItemDelimitationItem for re-encoding) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) # 0, 0 SequenceDelimitationItem

The Study Sequence ID has to be delivered else an error is generated on the CR950 (and CR850 too).

Thanks very much for your help.

jmartens
Posts: 15
Joined: Wed, 2005-02-02, 10:36

Re: Worklist and Kodak CR950

#10 Post by jmartens »

art wrote:The Study Sequence ID has to be delivered else an error is generated on the CR950 (and CR850 too).

Thanks very much for your help.
I have the same problem and like to adapt the dump2dcm tool to automatically input a unique Study Sequence UID that can be generated using the function in DCMTK. However where do I have to put that in the code of dump2dcm or should I do it some other way?

Jörg Riesmeier
ICSMED DICOM Services
ICSMED DICOM Services
Posts: 2217
Joined: Fri, 2004-10-29, 21:38
Location: Oldenburg, Germany

#11 Post by Jörg Riesmeier »

Maybe it's better to add this feature (generation of new UIDs) to "dcmodify". This should be rather simple.

Btw, there is neither a "Study Sequence ID" nor a "Study Sequence UID" in the DICOM standard ;-)

jmartens
Posts: 15
Joined: Wed, 2005-02-02, 10:36

#12 Post by jmartens »

Jörg Riesmeier wrote:Btw, there is neither a "Study Sequence ID" nor a "Study Sequence UID" in the DICOM standard ;-)
You are right... it should have been (0020, 000d) and that is the Study Instance UID.

Post Reply

Who is online

Users browsing this forum: Baidu [Spider], Bing [Bot], Semrush [Bot] and 1 guest