Hi
I am implementing a MPPS SCU N_Create. I use JDICOM RIS server as SCP. I am using dcmtk libraries for implementation of SCU. SOP Instance UID of the object created by JDICOM SCP is not matching with what I am providing from SCU side in the dataset. In short JDICOM RIS Server SCP is creating its own MPPS SOP Instance UID's and files with same name irrespective of whatever SOP Instance UID I am giving from the MPPS SCU side. Can anybody help me in resolving this problem.
I tried sending it in dataset in following tags:
(0008,1111) SQ -- PPS Seq
(0000,0002) 1.2.840.10008.3.1.2.3.3 ReferencedSOPClassUID
(0000,1000)1.2.40.0.13.0.3.235.116.24.32519825.1134026010000.40003
and also tried as given in JDICOM Modality SCU -mpps
(0002,0002) MediaStorageSOPClassUID UI 1.2.840.10008.3.1.2.3.3
(0002,0003) MediaStorageSOPInstanceUID UI 1.2.40.0.13.0.3.235.116.24.368691285.1136182952701.32779
In all these cases result is success for N_Create, but JDICOM SCP is not accepting UID given from SCU throgh DATASET and it creates its own Mpps UID(also file name same as uid in JDICOM) and return the created UID back to SCU.
how can mpps SCU provide MPPS SOP Instance UID to JDICOM SCP
Moderator: Moderator Team
-
- Posts: 19
- Joined: Wed, 2005-02-09, 08:44
-
- OFFIS DICOM Team
- Posts: 1459
- Joined: Tue, 2004-11-02, 17:22
- Location: Oldenburg, Germany
- Contact:
Attributes of group (0000,xxxx) never belong in the dataset. These are only ever sent as part of the command set. Since you already successful assemble a command struct using the functions from dcmtk/dcmnet/dimse.h, it should be fairly easy to update your code to also set the SOP instance UID there. There is also a binary flag reflecting the fact that the optional SOP instance UID should be included in the command set.
-
- Posts: 19
- Joined: Wed, 2005-02-09, 08:44
how can we add elements to commandset
Hi
As DCMTK doesn't have funtion for N_Create, I have used the function from /dcmtk/dcmnet/include/dimse.h
DIMSE_sendMessageUsingMemoryData(T_ASC_Association *association,
T_ASC_PresentationContextID presID,
T_DIMSE_Message *msg, DcmDataset *statusDetail,
DcmDataset *dataObject,
DIMSE_ProgressCallback callback,
void *callbackContext,
DcmDataset **commandSet=NULL);
How can i send a command set using this function? Is there any other function for sending Command set using DCMTK?
Also please note that i am getting tags from a DICOM Part5 file into the Dataset (Similer to findscu from a query file) before seding N_Create req structure variable in the above function to JDICOM SCP.
Also I have put values to elements of structure variable
in my code for the following case.
struct T_DIMSE_N_CreateRQ {
DIC_US MessageID; /* M */
DIC_UI AffectedSOPClassUID; /* M */
DIC_UI AffectedSOPInstanceUID; /* U */
T_DIMSE_DataSetType DataSetType; /* M */
/* AttributeList provided as argument to DIMSE functions *//* M */
unsigned int opts; /* which optional items are set */
#define O_NCREATE_AFFECTEDSOPINSTANCEUID 0x0002
} ;
But the value set to AffectedSOPInstanceUID is not used by JDICOM SCP for creating SOP Instance. SCP is creating it own UID for this.
With this context could you please explain how can I create a command set with tags (0000,0002) and (0000,1000) and send it to SCP along with thedataset.
Is it possible to set the binary flag (you told in the reply) for SOPInstanceUID from SCU side using DCMTK?
As DCMTK doesn't have funtion for N_Create, I have used the function from /dcmtk/dcmnet/include/dimse.h
DIMSE_sendMessageUsingMemoryData(T_ASC_Association *association,
T_ASC_PresentationContextID presID,
T_DIMSE_Message *msg, DcmDataset *statusDetail,
DcmDataset *dataObject,
DIMSE_ProgressCallback callback,
void *callbackContext,
DcmDataset **commandSet=NULL);
How can i send a command set using this function? Is there any other function for sending Command set using DCMTK?
Also please note that i am getting tags from a DICOM Part5 file into the Dataset (Similer to findscu from a query file) before seding N_Create req structure variable in the above function to JDICOM SCP.
Also I have put values to elements of structure variable
in my code for the following case.
struct T_DIMSE_N_CreateRQ {
DIC_US MessageID; /* M */
DIC_UI AffectedSOPClassUID; /* M */
DIC_UI AffectedSOPInstanceUID; /* U */
T_DIMSE_DataSetType DataSetType; /* M */
/* AttributeList provided as argument to DIMSE functions *//* M */
unsigned int opts; /* which optional items are set */
#define O_NCREATE_AFFECTEDSOPINSTANCEUID 0x0002
} ;
But the value set to AffectedSOPInstanceUID is not used by JDICOM SCP for creating SOP Instance. SCP is creating it own UID for this.
With this context could you please explain how can I create a command set with tags (0000,0002) and (0000,1000) and send it to SCP along with thedataset.
Is it possible to set the binary flag (you told in the reply) for SOPInstanceUID from SCU side using DCMTK?
-
- OFFIS DICOM Team
- Posts: 1459
- Joined: Tue, 2004-11-02, 17:22
- Location: Oldenburg, Germany
- Contact:
DIMSE_sendMessageUsingMemoryData() is the right approach, and the SOP instance UID should be specified in the AffectedSOPInstanceUID field of struct T_DIMSE_N_CreateRQ. Flag O_NCREATE_AFFECTEDSOPINSTANCEUID should be set in opts. This should cause the correct command set to be generated. If JDICOM still ignores the SOP instance UID, this might as well be a bug in JDICOM.
-
- Posts: 19
- Joined: Wed, 2005-02-09, 08:44
thanks for your help
Hi
I got it all right. I have given value >10 to opts. Its working fine. But if you give value 1 or 0 to it, it wont accept it. Sorry I was confused with the term command set in the previous question. nice to know that we have to assaign O_NCREATE_AFFECTEDSOPINSTANCEUID to opts.
I got it all right. I have given value >10 to opts. Its working fine. But if you give value 1 or 0 to it, it wont accept it. Sorry I was confused with the term command set in the previous question. nice to know that we have to assaign O_NCREATE_AFFECTEDSOPINSTANCEUID to opts.
Who is online
Users browsing this forum: No registered users and 1 guest