public static void InsertPatientStudiesData(PatientStudyModel patData, DicomDbContext dcmdbContext) { //dcmWrapObj.FileInfo.FileName = dcmWrapObj.FileInfo.SOPInstanceUID; ///dcmWrapObj.FileInfo.FilePath = path; patData.CreatedOn = DateTime.Now; dcmdbContext.PatientStudies.Add(patData); dcmdbContext.SaveChanges(); }
public FileStreamResult GetDicomImage(Int64 dicomFileId) { DicomDbContext dbContext = new DicomDbContext(connStringPACSServer); var fileBytes = (from fil in dbContext.DicomFiles where fil.DicomFileId == dicomFileId select fil.FileBinaryData).FirstOrDefault(); Stream stream = new MemoryStream(fileBytes); return(new FileStreamResult(stream, "plain/text")); }
public string Put() { DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>(); DicomDbContext dbContextDicom = new DicomDbContext(connStringPACSServer); RbacUser currentUser = HttpContext.Session.Get <RbacUser>("currentuser"); string inputSting = this.ReadPostData(); try { //if(inputSting !=null && reqType="putToolData") //{ object clientData = DanpheJSONConvert.DeserializeObject <object>(inputSting); JObject obj = JObject.Parse(inputSting); var FileToolData = obj["FileToolData"].ToString(); var DicomFileId = int.Parse(obj["DicomFileId"]["dicomFileId"].ToString()); DicomFileInfoModel getDataForUpdate = dbContextDicom.DicomFiles.Where(d => d.DicomFileId == DicomFileId).FirstOrDefault <DicomFileInfoModel>(); getDataForUpdate.FileToolData = FileToolData; getDataForUpdate.ModifiedBy = currentUser.UserId; getDataForUpdate.ModifiedOn = DateTime.Now; dbContextDicom.DicomFiles.Attach(getDataForUpdate); dbContextDicom.Entry(getDataForUpdate).Property(u => u.CreatedOn).IsModified = true; dbContextDicom.Entry(getDataForUpdate).State = EntityState.Modified; dbContextDicom.SaveChanges(); responseData.Results = getDataForUpdate.DicomFileId; responseData.Status = "OK"; //} //else{ // responseData.Status = "Failed"; // responseData.Results = "input data is not available"; // } } catch (Exception ex) { responseData.Status = "Failed"; } return(DanpheJSONConvert.SerializeObject(responseData)); }
public static void InsertFileInfoData(DicomFileInfoModel fileInfo, DicomDbContext dcmdbContext) { //dcmWrapObj.FileInfo.FileName = dcmWrapObj.FileInfo.SOPInstanceUID; ///dcmWrapObj.FileInfo.FilePath = path; try { fileInfo.CreatedOn = DateTime.Now; dcmdbContext.DicomFiles.Add(fileInfo); dcmdbContext.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } } }
public string Get(string reqType, string status, string studyInstanceUID, string sopInstanceUID, string patStudyId, Int64 dicomFileId) { DicomDbContext dbContext = new DicomDbContext(connStringPACSServer); DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>(); try { //return distinct studies information. if (reqType == "getStudies")//For Geting a List of StudyId's { var distPatStudies = (from pat in dbContext.PatientStudies where pat.PatientName != null && pat.StudyInstanceUID != null select new { StudyId = pat.PatientStudyId, PatientName = pat.PatientName, PatientId = pat.PatientId, StudyDate = pat.StudyDate, StudyInstanceUID = pat.StudyInstanceUID, StudyDescription = pat.StudyDescription }).Distinct().ToList(); responseData.Results = distPatStudies; } else if (reqType == "getStudiesByPatStudyId") { if (patStudyId != null) { List <string> allPatientStudyId = new List <string>(patStudyId.Split(',')); // var gg = patStudyId.Split(';').Select(Convert.ToInt32).ToList(); var res = (from patStudy in dbContext.PatientStudies.AsEnumerable() where patStudy.PatientName != null && patStudy.StudyInstanceUID != null && allPatientStudyId.Contains(Convert.ToString(patStudy.PatientStudyId)) select new { StudyId = patStudy.PatientStudyId, PatientName = patStudy.PatientName, PatientId = patStudy.PatientId, StudyDate = patStudy.StudyDate, StudyInstanceUID = patStudy.StudyInstanceUID, StudyDescription = patStudy.StudyDescription }).Distinct().ToList(); responseData.Results = res; } //var distPatStudies = (from pat in dbContext.PatientStudies.AsEnumerable() // where pat.PatientName != null && pat.StudyInstanceUID != null // && pat.PatientStudyId == patStudyId // select new // { // StudyId = pat.PatientStudyId, // PatientName = pat.PatientName, // PatientId = pat.PatientId, // StudyDate = pat.StudyDate, // StudyInstanceUID = pat.StudyInstanceUID, // StudyDescription = pat.StudyDescription // }).Distinct().ToList(); } else if (reqType == "getSeriesImageInfo")//For Acquiring a list of SoapId's { var rest = (from pat in dbContext.PatientStudies where pat.StudyInstanceUID == studyInstanceUID select new { pat.PatientId, pat.PatientName, pat.PatientStudyId, pat.Modality, pat.StudyDescription, pat.StudyDate, SeriesList = from sers in dbContext.Series where sers.PatientStudyId == pat.PatientStudyId select new { SeriesInstanceUID = sers.SeriesInstanceUID, SeriesDescription = sers.SeriesDescription, //FrameRate = 1,//check if we can get this from image property. ImageList = from img in dbContext.DicomFiles where img.SeriesId == sers.SeriesId select new { DicomFileId = img.DicomFileId, SOPInstanceUID = img.SOPInstanceUID, //img.SOPInstanceUID //img.FileBinaryData } } }).FirstOrDefault(); responseData.Results = rest; responseData.Status = "OK"; } else if (reqType == "loadImagesByDicomFileId") { var fileBytes = (from fil in dbContext.DicomFiles where fil.DicomFileId == dicomFileId select fil.FileBinaryData).FirstOrDefault(); Stream stream = new MemoryStream(fileBytes); responseData.Results = stream; responseData.Status = "OK"; return(new FileStreamResult(stream, "plain/text").ToString()); } else if (reqType == "getByteArray")//For Ajax Call Made in Javascript Index.cshtml Page { //var soapIdList = (from dic in dbContext.DicomFiles // join pat in dbContext.PatientStudies on dic.PatientStudyId equals pat.PatientStudyId // where pat.PatientId != null && pat.PatientName != null && pat.SeriesInstanceUID != null // && dic.SOPInstanceUID == sopInstanceUID // select new // { // SOPInstanceUID = dic.SOPInstanceUID, // FileData = Convert.ToBase64String(dic.FileBinaryData) // }).ToList(); //responseData.Results = soapIdList; } else if (reqType == "getAllData") { var alldatas = (from pat in dbContext.PatientStudies join series in dbContext.Series on pat.PatientStudyId equals series.PatientStudyId join dcm in dbContext.DicomFiles on series.SeriesId equals dcm.SeriesId where pat.StudyInstanceUID == studyInstanceUID select new { StudyId = pat.PatientStudyId, PatientName = pat.PatientName, PatientId = pat.PatientId, PatientStudyIdm = pat.PatientStudyId, StudyDate = pat.StudyDate, StudyInstanceUID = pat.StudyInstanceUID, StudyDescription = pat.StudyDescription, SeriesId = series.SeriesId, DicomFileId = dcm.DicomFileId, ROWGUID = dcm.ROWGUID, FileBinaryData = dcm.FileBinaryData, FileToolData = dcm.FileToolData }).Distinct().ToList(); responseData.Results = alldatas; } else if (reqType == "dicomFileToolData") { var fileToolData = (from toolData in dbContext.DicomFiles where toolData.DicomFileId == dicomFileId select new { FileToolData = toolData.FileToolData }).ToList(); responseData.Results = fileToolData; } responseData.Status = "OK"; } catch (Exception ex) { responseData.Status = "Failed"; responseData.ErrorMessage = ex.Message + " exception details:" + ex.ToString(); } return(DanpheJSONConvert.SerializeObject(responseData, true)); }
public static void InsertPatientSeriesData(SeriesInfoModel serData, DicomDbContext dcmdbContext) { serData.CreatedOn = DateTime.Now; dcmdbContext.Series.Add(serData); dcmdbContext.SaveChanges(); }
public string Post() { DanpheHTTPResponse <object> responseData = new DanpheHTTPResponse <object>(); responseData.Status = "OK"; try { string basepath = ConfigurationManager.AppSettings["DestinationPathAPI"]; string ipDataString = this.ReadPostData(); JObject obj = JObject.Parse(ipDataString); string data = (string)obj["fileData"]; // ImageQueueModel ImgQObj = JsonConvert.DeserializeObject<ImageQueueModel>(imgData); //string jsonString = Encoding.ASCII.GetString(data.ToArray()); byte[] byteArray = Encoding.ASCII.GetBytes(data); //Stream reqStream = Request.Body; MemoryStream inMemoryStream = new MemoryStream(byteArray); Request.Body.CopyTo(inMemoryStream); string jsonString = Encoding.ASCII.GetString(inMemoryStream.ToArray()); DicomWrapperVM dcmWrapObj = JsonConvert.DeserializeObject <DicomWrapperVM>(jsonString); DicomFileInfoModel fileInfo = dcmWrapObj.FileInfo; int patstudyId = 0; int seriesId = 0; DicomDbContext dbContext = new DicomDbContext(connStringPACSServer); //check if particular SeriesInstanceUID is present or not.. if not present then only insert in PatientStudies table var StudyCheck = (from patstudy in dbContext.PatientStudies where patstudy.StudyInstanceUID == dcmWrapObj.PatientStudy.StudyInstanceUID select patstudy).FirstOrDefault(); if (StudyCheck == null) { InsertPatientStudiesData(dcmWrapObj.PatientStudy, dbContext); patstudyId = dcmWrapObj.PatientStudy.PatientStudyId; } else { patstudyId = StudyCheck.PatientStudyId; } //check if particular SeriesInstanceUID is present or not.. if not present then only insert in PatientStudies table var SeriesCheck = (from patSeries in dbContext.Series where patSeries.SeriesInstanceUID == dcmWrapObj.SeriesInfo.SeriesInstanceUID select patSeries).FirstOrDefault(); if (SeriesCheck == null) { dcmWrapObj.SeriesInfo.PatientStudyId = patstudyId; InsertPatientSeriesData(dcmWrapObj.SeriesInfo, dbContext); seriesId = dcmWrapObj.SeriesInfo.SeriesId; } else { seriesId = SeriesCheck.SeriesId; } //can comment out below code of creating folders and saving file //folderpath format: apistoragelocation\patname-studyid\seriesname-seriesid\sopinstanceid of file string studyFolderName = "", seriesFolderName = ""; if (string.IsNullOrEmpty(dcmWrapObj.PatientStudy.PatientName)) { studyFolderName = "NA-" + patstudyId; } else { studyFolderName = dcmWrapObj.PatientStudy.PatientName + "-" + patstudyId; } if (string.IsNullOrEmpty(dcmWrapObj.SeriesInfo.SeriesDescription)) { seriesFolderName = "NA-" + seriesId; } else { seriesFolderName = dcmWrapObj.SeriesInfo.SeriesDescription + "-" + seriesId; } //! ? dcmWrapObj.PatientStudy.PatientName + "-" + patstudyId; string path = basepath + @"\" + studyFolderName + @"\" + seriesFolderName; string fileName = path + @"\" + Path.GetFileName(dcmWrapObj.FileInfo.SOPInstanceUID); if (!(Directory.Exists(path))) { Directory.CreateDirectory(path); } //Save the File to the Directory (Folder). System.IO.File.WriteAllBytes(fileName, dcmWrapObj.FileBytes); //get from table if data present... if not found then insert data in table DicomFiles var dicomfileCheck = (from f in dbContext.DicomFiles where f.SOPInstanceUID == dcmWrapObj.FileInfo.SOPInstanceUID select f).FirstOrDefault(); responseData.Status = "OK"; if (dicomfileCheck == null) { DicomFileInfoModel dcmFile = new DicomFileInfoModel(); dcmFile.SeriesId = seriesId; dcmFile.FileBinaryData = dcmWrapObj.FileBytes; dcmFile.FilePath = fileName; dcmFile.ROWGUID = dcmWrapObj.FileInfo.ROWGUID; dcmFile.SOPInstanceUID = dcmWrapObj.FileInfo.SOPInstanceUID; dcmFile.CreatedOn = DateTime.Now; dbContext.DicomFiles.Add(dcmFile); dbContext.SaveChanges(); } } catch (Exception ex) { responseData.Status = "Failed"; responseData.ErrorMessage = ex.Message + "exception details:" + ex.ToString(); } return(DanpheJSONConvert.SerializeObject(responseData, true)); }