public List <ImageResult> GetImageUids(List <SeriesResult> series) { List <ImageResult> results = new List <ImageResult>(); foreach (var ser in series) { var query = new CFindIOD(QueryLevel.IMAGE) { PatientId = ser.PatientId, StudyInstanceUID = ser.StudyUid, SeriesInstanceUID = ser.SeriesUid }; 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 ImageResult() { PatientId = ser.PatientId, StudyUid = ser.StudyUid, SeriesUid = ser.SeriesUid, Modality = ser.Modality, SopInstanceUid = r.Data.GetSelector().SOPInstanceUID.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()); }