/// <summary> /// Search DICOM data for list in RisPro /// </summary> public SearchResult SearchDICOMData(string patientName, string patientId, string accessionNo, int pageSize, int pageIndex) { using (var db = new DAPContext()) { var query = db.Studies.AsQueryable(); var lastTime = db.Studies.Max(p => p.ReceiveTime); if (!string.IsNullOrEmpty(patientName)) { query = query.Where(p => p.PatientName.Contains(patientName)); } if (!string.IsNullOrEmpty(patientId)) { query = query.Where(p => p.PatientID.Contains(patientId)); } if (!string.IsNullOrEmpty(accessionNo)) { query = query.Where(p => p.AccessionNo.Contains(accessionNo)); } int count = query.Count(); var queryVal = query.OrderByDescending(p => p.ReceiveTime).ToList().Skip((pageIndex - 1) * pageSize).Take(pageSize); var path = ConfigurationManager.AppSettings["DICOMFilePath"]; var result = new SearchResult() { Result = queryVal.ToList(), Count = count, DICOMPath = path, LastTime = lastTime.HasValue?lastTime.Value.ToString("yyyy-MM-dd HH:mm:ss"):string.Empty }; return(result); } }
/// <summary> /// Search DICOM Image file path list /// </summary> public List <string> SearchDICOMFile(string studyInstanceUid) { using (var db = new DAPContext()) { var query = from s in db.Studies join c in db.Series on s.StudyInstanceUID equals c.StudyInstanceUID join m in db.Images on c.SeriesInstanceUID equals m.SeriesInstanceUID where s.StudyInstanceUID == studyInstanceUid orderby c.SeriesNo, m.ImageNo select m.FilePath; return(query.ToList()); } }
public bool CheckDICOMData(string time) { using (var db = new DAPContext()) { DateTime timeVal; if (DateTime.TryParse(time, out timeVal)) { return(db.Studies.Any(p => p.ReceiveTime.Value > timeVal)); } else { return(db.Studies.Any()); } } }
private void DeleteDICOMFile(string accessionNo) { var path = Path.Combine(ConfigurationManager.AppSettings["DICOMFilePath"], accessionNo); DleteFile(path); using (var db = new DAPContext()) { var existStudy = db.Studies.FirstOrDefault(p => p.AccessionNo.Equals(accessionNo)); if (existStudy != null) { db.Studies.Remove(existStudy); var existSeries = db.Series.Where(p => p.StudyInstanceUID.Equals(existStudy.StudyInstanceUID)); db.Series.RemoveRange(existSeries); var seriesUids = existSeries.Select(p => p.SeriesInstanceUID); var existImages = db.Images.Where(p => seriesUids.Contains(p.SeriesInstanceUID)); db.Images.RemoveRange(existImages); db.SaveChanges(); } } }
/// <summary> /// Save DICOM data in SQLCompact /// </summary> public bool SaveDICOMData(DICOMInfoDto dicom, string filePath) { try { var study = new Study(); var series = new Series(); var image = new Image(); // Study study.StudyInstanceUID = dicom.StudyInstanceUID; study.PatientID = dicom.PatientID; study.PatientName = dicom.PatientName; study.PatientDOB = dicom.PatientDOB; study.PatientAge = dicom.PatientAge; study.PatientSex = dicom.PatientSex; study.AccessionNo = dicom.AccessionNo; study.BodyPart = dicom.BodyPart; study.Modality = dicom.Modality; study.ExamCode = string.Empty; study.StudyDate = dicom.StudyDate; study.StudyTime = dicom.StudyTime; study.StudyDescription = dicom.StudyDescription; study.ReferPhysician = dicom.ReferPhysician; study.ReceiveTime = DateTime.Now.AddTicks(-(DateTime.Now.Ticks % TimeSpan.TicksPerSecond)); // Series series.SeriesInstanceUID = dicom.SeriesInstanceUID; series.StudyInstanceUID = dicom.StudyInstanceUID; series.BodyPart = dicom.BodyPart; series.Modality = dicom.Modality; //Image image.SOPInstanceUID = dicom.SOPInstanceUID; image.SeriesInstanceUID = dicom.SeriesInstanceUID; image.FilePath = filePath; image.CreateTime = DateTime.Now; // Retrieve the ConnectionString from App.config string connectString = ConfigurationManager.ConnectionStrings["DAPContext"].ToString(); SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectString); // Retrieve the DataSource property. string dbPath = builder.DataSource.Substring(0, builder.DataSource.LastIndexOf('\\')); if (!Directory.Exists(dbPath)) { Directory.CreateDirectory(dbPath); } using (var db = new DAPContext()) { var studyToUpdate = db.Studies.FirstOrDefault(s => s.StudyInstanceUID.Equals(study.StudyInstanceUID)); var seriesToUpdate = db.Series.FirstOrDefault(s => s.SeriesInstanceUID.Equals(series.SeriesInstanceUID)); var imageToUpdate = db.Images.FirstOrDefault(i => i.SOPInstanceUID.Equals(image.SOPInstanceUID)); if (studyToUpdate != null) { db.Entry(studyToUpdate).CurrentValues.SetValues(study); } else { db.Studies.Add(study); } if (seriesToUpdate != null) { db.Entry(seriesToUpdate).CurrentValues.SetValues(seriesToUpdate); } else { db.Series.Add(series); } if (imageToUpdate != null) { db.Entry(imageToUpdate).CurrentValues.SetValues(imageToUpdate); } else { db.Images.Add(image); } db.SaveChanges(); return(true); } } catch (Exception ex) { _logger.Error(ex.Message, ex); return(false); } }