def test_conversion_rq(self): """ Check conversion to a -RQ PDU produces the correct output """ primitive = C_FIND() primitive.MessageID = 7 primitive.AffectedSOPClassUID = '1.2.840.10008.5.1.4.1.1.2' primitive.Priority = 0x02 ref_identifier = Dataset() ref_identifier.PatientID = '*' ref_identifier.QueryRetrieveLevel = "PATIENT" primitive.Identifier = BytesIO(encode(ref_identifier, True, True)) dimse_msg = C_FIND_RQ() dimse_msg.primitive_to_message(primitive) pdvs = [] for fragment in dimse_msg.encode_msg(1, 16382): pdvs.append(fragment) cs_pdv = pdvs[0].presentation_data_value_list[0][1] ds_pdv = pdvs[1].presentation_data_value_list[0][1] assert cs_pdv == c_find_rq_cmd assert ds_pdv == c_find_rq_ds
def test_message_to_primitive_c_find(self): """Test converting C_FIND_RQ to C_FIND primitive.""" msg = C_FIND_RQ() for data in [c_find_rq_cmd, c_find_rq_ds]: p_data = P_DATA() p_data.presentation_data_value_list.append([0, data]) msg.decode_msg(p_data) primitive = msg.message_to_primitive() assert isinstance(primitive, C_FIND) assert isinstance(primitive.Identifier, BytesIO) assert primitive.AffectedSOPClassUID == UID( "1.2.840.10008.5.1.4.1.1.2") assert primitive.Priority == 2 assert primitive.MessageID == 7 ds = decode(primitive.Identifier, True, True) assert ds.QueryRetrieveLevel == "PATIENT" assert ds.PatientID == "*" msg = C_GET_RSP() for data in [c_find_rsp_cmd, c_find_rsp_ds]: p_data = P_DATA() p_data.presentation_data_value_list.append([0, data]) msg.decode_msg(p_data) primitive = msg.message_to_primitive() assert isinstance(primitive, C_FIND) assert isinstance(primitive.Identifier, BytesIO) assert primitive.AffectedSOPClassUID == UID( "1.2.840.10008.5.1.4.1.1.2") assert primitive.Status == 65280 ds = decode(primitive.Identifier, True, True) assert ds.QueryRetrieveLevel == "PATIENT" assert ds.RetrieveAETitle == "FINDSCP" assert ds.PatientName == "ANON^A^B^C^D"
def test_callback_receive_c_find(self): """Check callback for receiving DIMSE C-FIND messages.""" # C-FIND-RQ primitive = C_FIND() primitive.MessageID = 7 primitive.AffectedSOPClassUID = '1.2.840.10008.5.1.4.1.1.2' primitive.AffectedSOPInstanceUID = '1.2.392.200036.9116.2.6.1.48.' \ '1215709044.1459316254.522441' primitive.Priority = 0x02 primitive.MoveOriginatorApplicationEntityTitle = 'UNITTEST_SCP' primitive.MoveOriginatorMessageID = 3 primitive.Identifier = BytesIO() # No dataset msg = C_FIND_RQ() msg.primitive_to_message(primitive) self.dimse.debug_receive_c_find_rq(msg) # Dataset ref_ds = Dataset() ref_ds.PatientID = 'Test1101' ref_ds.PatientName = "Tube HeNe" primitive.Identifier = BytesIO(encode(ref_ds, True, True)) msg = C_FIND_RQ() msg.primitive_to_message(primitive) # Dataset self.dimse.debug_receive_c_find_rq(msg) # C-FIND-RSP primitive = C_FIND() primitive.MessageIDBeingRespondedTo = 7 primitive.AffectedSOPClassUID = '1.2.840.10008.5.1.4.1.1.2' primitive.AffectedSOPInstanceUID = '1.2.392.200036.9116.2.6.1.48.' \ '1215709044.1459316254.522441' primitive.MoveOriginatorApplicationEntityTitle = 'UNITTEST_SCP' primitive.MoveOriginatorMessageID = 3 primitive.Identifier = BytesIO() # No dataset primitive.Status = 0x0000 # Must be for pending msg = C_FIND_RSP() msg.primitive_to_message(primitive) self.dimse.debug_receive_c_find_rsp(msg) primitive.Identifier = BytesIO(encode(ref_ds, True, True)) msg = C_FIND_RSP() msg.primitive_to_message(primitive) # Dataset msg.data_set = BytesIO(encode(ref_ds, True, True)) self.dimse.debug_receive_c_find_rsp(msg) # Non-pending status msg.data_set.Status = 0x0001 self.dimse.debug_receive_c_find_rsp(msg) # C-CANCEL-FIND-RQ self.dimse.debug_receive_c_cancel_rq(msg)