Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
 /// <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());
     }
 }
Ejemplo n.º 3
0
 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());
         }
     }
 }
Ejemplo n.º 4
0
        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();
                }
            }
        }
Ejemplo n.º 5
0
        /// <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);
            }
        }