Code snippet within sample application (VB.NET 2010):
Private Sub OnReceiveRequestMessage(ByVal server As DicomServer, ByVal association As ServerAssociationParameters, ByVal presentationID As Byte, ByVal message As DicomMessage) Implements IDicomServerHandler.OnReceiveRequestMessage
Select Case message.CommandField
Case DicomCommandField.CEchoRequest
......
Case DicomCommandField.CFindRequest
server.SendCFindResponse(presentationID, message.MessageId, message, DicomStatuses.Success)
Dim level As [String] = message.DataSet(DicomTags.QueryRetrieveLevel).GetString(0, "").Trim()
If message.AffectedSopClassUid.Equals(SopClass.StudyRootQueryRetrieveInformationModelFindUid) Then
Dim response As New DicomMessage()
'Faked answer. Will be replaced with datas out of a database
response.DataSet(DicomTags.StudyDate).SetStringValue("20120107")
response.DataSet(DicomTags.StudyTime).SetStringValue("16:00:00")
response.DataSet(DicomTags.Modality).SetStringValue("MR")
response.DataSet(DicomTags.StudyDescription).SetStringValue("Test")
response.DataSet(DicomTags.StudyId).SetStringValue("1000000001")
response.DataSet(DicomTags.StudyInstanceUid).SetStringValue("1.2.840.113680.1.103.61237.1079337801.832066")
response.DataSet(DicomTags.AccessionNumber).SetStringValue("1234567")
response.DataSet(DicomTags.PatientId).SetStringValue("121212")
response.DataSet(DicomTags.PatientsName).SetStringValue("Doe^Joe")
response.DataSet(DicomTags.PatientsBirthDate).SetStringValue("19600101")
response.DataSet(DicomTags.PatientsSex).SetStringValue("M")
response.DataSet(DicomTags.ReferringPhysiciansName).SetStringValue("Mueller")
message.DataSet(DicomTags.RetrieveAeTitle).SetStringValue(My.Settings.SCPAETitle.ToString)
message.DataSet(DicomTags.InstanceAvailability).SetStringValue("ONLINE")
response.DataSet(DicomTags.QueryRetrieveLevel).SetStringValue(level)
server.SendCFindResponse(presentationID, message.MessageId, response, DicomStatuses.Pending)
Dim finalResponse As New DicomMessage()
server.SendCFindResponse(presentationID, message.MessageId, finalResponse, DicomStatuses.Success)
Endif
End Select
End Sub
-----------------
Log within sample application:
(15) 07.01.2012 20:47:13 (Info) LogQueryReceived. CallingAE: KPServer, RemoteHostName: T500-ART, Success: ClearCanvas.ImageViewer.Services.Auditing.EventResult, AffectedSOPClassUID: 1.2.840.10008.5.1.4.1.2.2.1, MessageID ClearCanvas.Dicom.DicomAttributeCollection
(15) 07.01.2012 20:47:13 (Error) Unexpected network error over association from KPServer.
-----------------
Log within KPacs:
*******************************************************
07.01.2012 20:47:12 ThreadID[0] : C-Find request on STUDY level with StorageSCP initiated.
*******************************************************
[DICOM SCU] >> : Connected to: localhost:105
[DICOM SCU] >> : Item Type: 2
[DICOM SCU] >> : Association Accept::ReadDynamic
[DICOM SCU] >> : Presentation Context Accept, Transfer Syntax: 1.2.840.10008.1.2
[0] >> : c-Find association with StorageSCP opened
[0] >> : c-Find request processed
[0] >> : STATUS: $0000
*******************************************************
07.01.2012 20:47:13 ThreadID[0] : Closed.
Task processed with errors
*******************************************************
What did I wrong?