Парень из дуба 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" является необязательным, и вам не нужно включать их в свой ответ, если атрибут отсутствует в наборе данных запроса.

Другие вопросы по тегам