예제 #1
0
        public List<SeriesResult> GetSeriesUids(List<StudyResult> studies)
        {
            List<SeriesResult> results = new List<SeriesResult>();

            foreach (var study in studies)
            {
                var query = new CFindIOD(QueryLevel.SERIES)
                {
                    PatientId = study.PatientId,
                    StudyInstanceUID = study.StudyUid
                };
                var req = new CFindRequest(query, Root.STUDY);
                var seriesUids = _scu.GetResponse(req, _scp)
                    .Where(r => r.Status == (ushort)Status.PENDING)
                    .Where(r => r.HasData)
                    .Select(r =>
                        new SeriesResult()
                        {
                            PatientId = study.PatientId,
                            StudyUid = study.StudyUid,
                            SeriesUid = r.Data.GetSelector().SeriesInstanceUID.Data,
                            Modality = r.Data.GetSelector().Modality.Data
                        }
                    )
                    .ToList();
                results.AddRange(seriesUids);
            }
            return results;
        }
예제 #2
0
 public CFindRequest(CFindIOD query, Root root, ushort priority = (ushort) Core.Enums.Priority.MEDIUM, ushort messageId = 1)
 {
     Query = query;
     MessageID = messageId;
     switch (root)
     {
         case Root.PATIENT:
             AffectedSOPClassUID = AbstractSyntax.PATIENT_FIND;
             break;
         case Root.STUDY:
             AffectedSOPClassUID = AbstractSyntax.STUDY_FIND;
             break;
     }
     Priority = priority;
     CommandField = (ushort) C.C_FIND_RQ;
     Data = new DICOMObject(query.Elements);
 }
예제 #3
0
        public List<StudyResult> GetStudyUids(string patientId)
        {
            var query = new CFindIOD(QueryLevel.STUDY)
            {
                PatientId = patientId
            };
            var req = new CFindRequest(query, Root.STUDY);
            var studyUids = _scu.GetResponse(req, _scp) // Studies
                .Where(r => r.Status == (ushort)Status.PENDING)
                .Where(r => r.HasData)
                .ToList();

            return studyUids.Select(r => new StudyResult()
                {
                    PatientId = query.PatientId,
                    StudyUid = r.Data.GetSelector().StudyInstanceUID.Data
                })
                .ToList();
        }