Парень из дуба dicom C-Find ответ
У меня есть вопрос, касающийся операции c-find в том же дубе. Я разработал Службу, которая выполняет операцию c-find и должен отправить найденных пациентов обратно в ультразвуковое устройство. В настоящее время я тестирую с помощью "эмулятора" 4d view от GE.
Я реализовал код, который нашел на этом форуме, и получил запрос. Я отправляю обратно набор данных, но каждый раз, когда я получаю на ультразвуковом аппарате сообщение о том, что ничего не может быть найдено. L
Может кто-нибудь из вас может мне помочь?
заранее спасибо
Andreas
Public Function OnCFindRequest(request As Global.Dicom.Network.DicomCFindRequest) As IEnumerable(Of Global.Dicom.Network.DicomCFindResponse) Implements Global.Dicom.Network.IDicomCFindProvider.OnCFindRequest
Logging.Trace(CurrentLogger, "C-Find request")
Dim familyname As String = ""
Dim patientId As Integer?
If request.Dataset.Contains(PatientNumberTag) Then
Dim dicomLongStringItem As DicomLongString = request.Dataset.Get(Of DicomLongString)(PatientNumberTag)
If IsNumeric(dicomLongStringItem.Value) Then patientId = dicomLongStringItem.Value
End If
If request.Dataset.Contains(PatientNameTag) Then
Dim dicomPersonNameItem As DicomPersonName = request.Dataset.Get(Of DicomPersonName)(PatientNameTag)
If Not String.IsNullOrEmpty(dicomPersonNameItem.Last) AndAlso dicomPersonNameItem.Last <> "*" Then familyname = dicomPersonNameItem.Last
End If
Dim responses As New List(Of DicomCFindResponse)()
If request.Level = DicomQueryRetrieveLevel.Patient Then
For Each result As DicomDataset In getworklistresults(request)
Dim response As New DicomCFindResponse(request, DicomStatus.Pending)
response.Dataset = result
responses.Add(response)
Next
End If
responses.Add(New DicomCFindResponse(request, DicomStatus.Success))
Return responses
End Function
Private Function getworklistresults(request As Global.Dicom.Network.DicomCFindRequest) As List(Of DicomDataset)
Dim dicomdatasets As New DicomDataset()
dicomdatasets.Add(DicomTag.SpecificCharacterSet, "ISO_IR 100")
dicomdatasets.Add(DicomTag.AccessionNumber, "")
dicomdatasets.Add(DicomTag.ReferringPhysicianName, "")
Dim sequenceDatase0 = New DicomDataset
Dim sq0 As New DicomSequence(DicomTag.ReferencedStudySequence, sequenceDatase0)
dicomdatasets.Add(DicomTag.ReferencedStudySequence, sq0)
Dim sequenceDataset1 = New DicomDataset
Dim sq1 As New DicomSequence(DicomTag.ReferencedPatientSequence, sequenceDataset1)
dicomdatasets.Add(DicomTag.ReferencedPatientSequence, sq1)
dicomdatasets.Add(New DicomPersonName(DicomTag.PatientName, DicomEncoding.GetEncoding("ISO 2022 IR 100"), "name^surname"))
dicomdatasets.Add(DicomTag.PatientID, "12345")
dicomdatasets.Add(DicomTag.IssuerOfPatientID, "")
dicomdatasets.Add(DicomTag.PatientBirthDate, "")
dicomdatasets.Add(DicomTag.PatientSex, "F")
dicomdatasets.Add(DicomTag.PatientSize, "170")
dicomdatasets.Add(DicomTag.PatientWeight, "170")
dicomdatasets.Add(DicomTag.LastMenstrualDate, "")
dicomdatasets.Add(DicomTag.StudyInstanceUID, "")
dicomdatasets.Add(DicomTag.RequestingPhysician, "")
dicomdatasets.Add(DicomTag.RequestedProcedureDescription, "")
Dim sequenceDataset2 = New DicomDataset
Dim sq2 As New DicomSequence(DicomTag.RequestedProcedureCodeSequence, sequenceDataset2)
dicomdatasets.Add(DicomTag.RequestedProcedureCodeSequence, sq2)
dicomdatasets.Add(DicomTag.AdmissionID, "")
Dim sequenceDataset3 = New DicomDataset
Dim sq3 As New DicomSequence(DicomTag.ScheduledProcedureStepSequence, sequenceDataset3)
dicomdatasets.Add(DicomTag.ScheduledProcedureStepSequence, sq3)
dicomdatasets.Add(DicomTag.RequestedProcedureID, "")
dicomdatasets.Add(DicomTag.ReasonForTheRequestedProcedure, "")
Dim a As New List(Of DicomDataset)
a.Add(dicomdatasets)
Return a
End Function
1 ответ
Вам не хватает многих обязательных атрибутов ключа возврата в вашем ответе C-FIND. Пожалуйста, просмотрите "Таблицу K.6-1 - Атрибуты информационной модели рабочего списка модальностей" в PS 3.4 стандарта DICOM. Если значение в столбце "Тип ключа возврата" равно "1", вы должны включить атрибут с допустимым значением в ваш ответ C-Find. Как, например, название AE запланированной станции (0040,0001), дата начала шага запланированной процедуры (0040,0002), время начала шага запланированной процедуры (0040,0003), модальность (0008,0060) и т. Д. Являются ключом возврата типа 1 в разделе "Запланированное". Последовательность шагов процедуры (0040,0100).
Если значение для столбца "Тип ключа возврата" равно "2", вы должны включить атрибут в ответ C-Find, но он может быть пустым (если он не известен). Примером таких атрибутов является Имя врача, выполняющего запланированные операции, Имя станции, на которое выполняются запланированные операции, а также расположение шагов запланированной процедуры и т. Д.
Значение "1C" похоже на тип "1", когда условие выполнено. Такой пример - описание шага запланированной процедуры и последовательность кодов запланированного протокола. Также "2C" является условным типом "2". Тип "3" является необязательным, и вам не нужно включать их в свой ответ, если атрибут отсутствует в наборе данных запроса.