DICOM @ OFFIS

Discussion Forum for OFFIS DICOM Tools - For registration, send email with desired user name to the OFFIS DICOM team
It is currently Wed, 2018-11-21, 10:36

All times are UTC + 1 hour




Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: Sat, 2018-08-25, 10:25 
Offline

Joined: Mon, 2016-09-26, 14:08
Posts: 18
HI,

We are implementing MPPS DICOM workflow for C-Arm. Is it possible to send Multiple Affected SOP ID's in a single N set command. In C-Arm usually a single surgery might contain multiple images to be captured to complete a surgery. So we wish to send all the acquired images as affected SOP in a single N-Set command.

Is it possible to point us to a general workflow of MPPS in case of C-Arm.

Regards.
Arun


Top
 Profile  
 
PostPosted: Mon, 2018-08-27, 08:26 
Offline
DCMTK Developer

Joined: Fri, 2004-11-05, 13:47
Posts: 1703
Location: Oldenburg, Germany
Hi,

I have the feeling that you are interpreting the standard in a wrong way. So just to be sure, this is what happens according to the standard: Via MPPS you create a status object (Modality Performed Procedure Step - PPS) about the current examination. It does not reflect the status of a single image, but instead the whole examination (or a clearly identifiable part of it). During this PPS, multiple images can be created, and besides other examination parameters, those images must be documented within that PPS object. The PPS object itself is identified by a SOP Instance UID (that is created during N-CREATE) and referred to as Affected SOP Instance UID. The PPS object links to the images within the Performed Series Sequence.

So the answer to your question is:

In a single N-SET-RQ you can only send data related to a single (PPS), identified by it's (Affected) SOP Instance UID.

If you want to update multiple PPS, you must send one PPS message for each of them. You can do this on one or many DICOM network associations.

You can document the created images for one of the PPS with a single N-SET, or with multiple.

I hope this helps. Best regards,
Michael


Top
 Profile  
 
PostPosted: Thu, 2018-10-25, 17:16 
Offline

Joined: Mon, 2016-09-26, 14:08
Posts: 18
Hi,

Thanks for guiding us. Which tag has to be used to document the created images in the pps object? In our case we are creating a sop instance uid for each new image created. So We were under the assumption that affected sop instance id tag will hold all the sop instances.

Thank you for the support.


Top
 Profile  
 
PostPosted: Fri, 2018-10-26, 09:05 
Offline
DCMTK Developer

Joined: Tue, 2011-05-03, 14:38
Posts: 2004
Location: Oldenburg, Germany
No, Affected SOP Instance UID holds the value of the SOP Instance UID of the respective MPPS status object. The SOP Instance UID values of the created DICOM images/objects are stored in the Image Acquisition Results Module of the MPPS IOD, or to be more precise: in the Referenced Image Sequence within the Performed Series Sequence.

By the way, all technical details are described in the relevant sections of the DICOM standard (especially, part 3 and 4).


Top
 Profile  
 
PostPosted: Sat, 2018-11-10, 16:16 
Offline

Joined: Mon, 2016-09-26, 14:08
Posts: 18
Hi,

Thanks. We have one more query.

If we add the sequence "Performed Series Sequence", then we will have to add the tag "Referenced Non-Image Composite SOP Instance Sequence" because it is of type 2, which can be of zero length.

However the sequence "Referenced Non-Image Composite SOP Instance Sequence" has two more tags which are of type 1 (Referenced SOP Class UID & Referenced SOP Instance UID) also has to be added with some values.

In our case we do not have anything other than images created. So what do we add in Referenced SOP Class UID & Referenced SOP Instance UID under "Referenced Non-Image Composite SOP Instance Sequence"??? Can we use the same value used under Performed Series Sequence ?


Top
 Profile  
 
PostPosted: Sun, 2018-11-11, 13:17 
Offline
DCMTK Developer

Joined: Tue, 2011-05-03, 14:38
Posts: 2004
Location: Oldenburg, Germany
If a sequence is of Type 2 and you have no information to provide, leave the sequence empty (i.e. no item at all).


Top
 Profile  
 
PostPosted: Mon, 2018-11-12, 09:49 
Offline

Joined: Mon, 2016-09-26, 14:08
Posts: 18
Hi,

We tried doing that, but the following error throws up.

We are using MPPS SCU from DCMTK version 3.6.3 on MINGW platform.

C:\Program Files>mppsscu_e.exe -v -d 172.16.10.142 5678 -aet DVTK -nc D://Vault//SCRATCH//Wlm_Response.dcm
I: --MPPSSCU: $dcmtk: mppsscu_e v3.6.3 2018-02-05 $
I: --Copyright (C)2008-2011, OFFIS e.V.
I: --Licensed to: "" (Removed for not reveling identity)
I:
D: $dcmtk: mppsscu_e v3.6.3 2018-02-05 $
D:
I: Initializing network ...
D: DcmMetaInfo::checkAndReadPreamble() TransferSyntax="Little Endian Explicit"
D: DcmDataset::read() TransferSyntax="Little Endian Implicit"
W: PpsDatasetChecker::checkAttributePresenceAndLength : attribute (0018,1030) is missing in sequence (0040,0340).
F: Invalid request dataset for assembling MPPS message

C:\Program Files>

Where the sequence (0040,0340) is Performed Series Sequence which is of type 2.

& the missing attribute is (0018,1030) is Protocol Name which is of type 1.

Here is how our Response file for N create looks.

C:\Program Files>dcmdump D://Vault//SCRATCH//Wlm_Response.dcm

# Dicom-File-Format

# Dicom-Meta-Information-Header
# Used TransferSyntax: Little Endian Explicit
(0002,0000) UL 204 # 4, 1 FileMetaInformationGroupLength
(0002,0001) OB 00\01 # 2, 1 FileMetaInformationVersion
(0002,0002) UI [1.2.276.0.7230010.3.1.0.1] # 26, 1 MediaStorageSOPClassUID
(0002,0003) UI [1.2.826.0.1.3680043.9.3558.1.4.1260066605.2804.1542007608.146] # 62, 1 MediaStorageSOPInstanceUID
(0002,0010) UI =LittleEndianImplicit # 18, 1 TransferSyntaxUID
(0002,0012) UI [1.2.276.0.7230010.3.0.3.6.1] # 28, 1 ImplementationClassUID
(0002,0013) SH [OFFIS_DCMTK_361] # 16, 1 ImplementationVersionName

# Dicom-Data-Set
# Used TransferSyntax: Little Endian Implicit
(0008,0018) UI [1.2.826.0.1.3680043.9.3558.1.4.1260066605.2804.1542007608.146] # 62, 1 SOPInstanceUID
(0008,0060) CS [RF] # 2, 1 Modality
(0008,1032) SQ (Sequence with undefined length #=1) # u/l, 1 ProcedureCodeSequence
(fffe,e000) na (Item with undefined length #=2) # u/l, 1 Item
(0008,0100) SH [0] # 2, 1 CodeValue
(0008,0102) SH [0] # 2, 1 CodingSchemeDesignator
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
(0008,1120) SQ (Sequence with undefined length #=1) # u/l, 1 ReferencedPatientSequence
(fffe,e000) na (Item with undefined length #=2) # u/l, 1 Item
(0008,1150) UI =ModalityPerformedProcedureStepSOPClass # 24, 1 ReferencedSOPClassUID
(0008,1155) UI [1.2.826.0.1.3680043.9.3558.1.4.1260066605.2804.1542007608.107.7] # 64, 1 ReferencedSOPInstanceUID
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
(0010,0010) PN [1] # 2, 1 PatientName
(0010,0020) LO [pidP645] # 8, 1 PatientID
(0010,0030) DA [19800716] # 8, 1 PatientBirthDate
(0010,0040) CS [M] # 2, 1 PatientSex
(0020,0010) SH [1] # 2, 1 StudyID
(0040,0241) AE [asdf] # 6, 1 PerformedStationAETitle
(0040,0242) SH [asdf] # 6, 1 PerformedStationName
(0040,0243) SH (no value available) # 0, 0 PerformedLocation
(0040,0244) DA [20181112] # 8, 1 PerformedProcedureStepStartDate
(0040,0245) TM [125648] # 6, 1 PerformedProcedureStepStartTime
(0040,0250) DA (no value available) # 0, 0 PerformedProcedureStepEndDate
(0040,0251) TM (no value available) # 0, 0 PerformedProcedureStepEndTime
(0040,0252) CS [IN PROGRESS] # 12, 1 PerformedProcedureStepStatus
(0040,0253) SH [0000018706] # 10, 1 PerformedProcedureStepID
(0040,0254) LO [Urology] # 8, 1 PerformedProcedureStepDescription
(0040,0255) LO [Retrograde Pyelogram] # 20, 1 PerformedProcedureTypeDescription
(0040,0260) SQ (Sequence with undefined length #=1) # u/l, 1 PerformedProtocolCodeSequence
(fffe,e000) na (Item with undefined length #=2) # u/l, 1 Item
(0008,0100) SH [0] # 2, 1 CodeValue
(0008,0102) SH [0] # 2, 1 CodingSchemeDesignator
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
(0040,0270) SQ (Sequence with undefined length #=1) # u/l, 1 ScheduledStepAttributesSequence
(fffe,e000) na (Item with undefined length #=8) # u/l, 1 Item
(0008,0050) SH [unknown] # 8, 1 AccessionNumber
(0008,1110) SQ (Sequence with undefined length #=1) # u/l, 1 ReferencedStudySequence
(fffe,e000) na (Item with undefined length #=2) # u/l, 1 Item
(0008,1150) UI =ModalityPerformedProcedureStepSOPClass # 24, 1 ReferencedSOPClassUID
(0008,1155) UI [1.2.826.0.1.3680043.9.3558.1.4.1260066605.2804.1542007608.107.7] # 64, 1 ReferencedSOPInstanceUID
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
(0020,000d) UI [1.2.826.0.1.3680043.9.3558.1.2.1260066605.2084.1542006118.627] # 62, 1 StudyInstanceUID
(0032,1060) LO (no value available) # 0, 0 RequestedProcedureDescription
(0040,0007) LO (no value available) # 0, 0 ScheduledProcedureStepDescription
(0040,0008) SQ (Sequence with undefined length #=1) # u/l, 1 ScheduledProtocolCodeSequence
(fffe,e000) na (Item with undefined length #=2) # u/l, 1 Item
(0008,0100) SH [0] # 2, 1 CodeValue
(0008,0102) SH [0] # 2, 1 CodingSchemeDesignator
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
(0040,0009) SH (no value available) # 0, 0 ScheduledProcedureStepID
(0040,1001) SH (no value available) # 0, 0 RequestedProcedureID
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem
(0040,0340) SQ (Sequence with undefined length #=1) # u/l, 1 PerformedSeriesSequence
(fffe,e000) na (Item with undefined length #=0) # u/l, 1 Item
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem

C:\Program Files>


Top
 Profile  
 
PostPosted: Mon, 2018-11-12, 10:00 
Offline
DCMTK Developer

Joined: Tue, 2011-05-03, 14:38
Posts: 2004
Location: Oldenburg, Germany
Code:
(0040,0340) SQ (Sequence with undefined length #=1) # u/l, 1 PerformedSeriesSequence
(fffe,e000) na (Item with undefined length #=0) # u/l, 1 Item
(fffe,e00d) na (ItemDelimitationItem) # 0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem) # 0, 0 SequenceDelimitationItem

Your sequence is not empty but contains an empty item.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group