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; }
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); }
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(); }