public static void SendUpdateDataRequest( LungCare.SupportPlatform.Models.CTDicomInfo ctDicomInfo, string filename, string status, Action <Models.GeneralWebAPIResponse> successCallback, Action <string> failureCallback, Action <Exception> errorCallback) { Models.UpdateDataRequest updateDicomDataRequest = new Models.UpdateDataRequest(); updateDicomDataRequest.Sender = "PC Client"; updateDicomDataRequest.Token = LungCare.SupportPlatform.Security.TokenManager.Token; updateDicomDataRequest.AcquisitionDate = DateTime.Now.ToLongDateString(); updateDicomDataRequest.AcquisitionTime = DateTime.Now.ToLongTimeString(); updateDicomDataRequest.AcquisitionDate = ctDicomInfo.AcquisitionDate; updateDicomDataRequest.AcquisitionTime = ctDicomInfo.AcquisitionTime; updateDicomDataRequest.DataID = MESPDownloadUpload.OrderId; updateDicomDataRequest.FileName = new FileInfo(filename).Name; updateDicomDataRequest.InstitutionName = ctDicomInfo.InstitutionName; updateDicomDataRequest.PatientAge = ctDicomInfo.PatientAge; updateDicomDataRequest.PatientName = ctDicomInfo.PatientName; updateDicomDataRequest.PatientSex = ctDicomInfo.PatientSex; updateDicomDataRequest.SeriesInstanceUID = ctDicomInfo.SeriesInstanceUID; updateDicomDataRequest.StudyInstanceUID = ctDicomInfo.StudyInstanceUID; updateDicomDataRequest.UploadTimestamp = ctDicomInfo.UploadTimestamp.ToString("yyyyMMdd HHmmss"); //updateDicomDataRequest.InstitutionName = "IN"; //updateDicomDataRequest.StudyInstanceUID = "SUID"; //updateDicomDataRequest.SeriesInstanceUID = "SUID"; updateDicomDataRequest.Status = "已上传"; updateDicomDataRequest.Status = status; updateDicomDataRequest.AdditionalData = ctDicomInfo.UploadTimestamp.ToString("yyyy年MM月dd日 HH时mm分ss秒") + " 上传数据。"; SendUpdateDataRequest(updateDicomDataRequest, successCallback, failureCallback, errorCallback); }
private void btnParseDicom_Click(object sender, RoutedEventArgs e) { var openFileDialog = new Microsoft.Win32.OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { string filename = openFileDialog.FileName; string ext = new FileInfo(filename).Extension.ToLower(); if (ext != ".rar" && ext != ".zip" && ext != ".7z" && ext != ".tar" && ext != ".iso") { MessageBox.Show("请选择压缩包。", "", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (new FileInfo(filename).Length > 1024 * 1024 * 1024) { MessageBox.Show(string.Format("您选择的压缩包过大,体积为{0},请选择1G以下的压缩包。", HumanReadableFilesize(new FileInfo(filename).Length)), "", MessageBoxButton.OK, MessageBoxImage.Error); return; } // haozipc x I:\AirwayCTZip\20150812\甘福明.rar -oi:/temp/20151005 string tmpFolder = System.IO.Path.Combine("i:/temp/" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + "_" + Guid.NewGuid().ToString("N")); string haozipExe = @"C:\Program Files\2345Soft\HaoZip\HaoZipC.exe"; string args = string.Format("x \"{0}\" -o\"{1}\"", filename, tmpFolder); Process.Start(haozipExe, args).WaitForExit(); //Process.Start(tmpFolder); string[] files = Directory.GetFiles(tmpFolder, "*.*", SearchOption.AllDirectories); foreach (var item in files) { if (!HasValidHeader(item)) { continue; } var file = DicomFile.Open(item); string patientName = file.Dataset.Get <string>(DicomTag.PatientName); string patientSex = file.Dataset.Get <string>(DicomTag.PatientSex); string patientAge = file.Dataset.Get <string>(DicomTag.PatientAge); string institutionName = file.Dataset.Get <string>(DicomTag.InstitutionName); string acquisitionDate = file.Dataset.Get <string>(DicomTag.AcquisitionDate); string acquisitionTime = file.Dataset.Get <string>(DicomTag.AcquisitionTime); string studyInstanceUID = file.Dataset.Get <string>(DicomTag.StudyInstanceUID); string seriesInstanceUID = file.Dataset.Get <string>(DicomTag.SeriesInstanceUID); LungCare.SupportPlatform.Models.CTDicomInfo CTDicomInfo = new LungCare.SupportPlatform.Models.CTDicomInfo(); CTDicomInfo.PatientName = patientName; CTDicomInfo.PatientSex = patientSex; CTDicomInfo.PatientAge = patientAge; CTDicomInfo.InstitutionName = institutionName; CTDicomInfo.AcquisitionDate = acquisitionDate; CTDicomInfo.AcquisitionTime = acquisitionTime; CTDicomInfo.StudyInstanceUID = studyInstanceUID; CTDicomInfo.SeriesInstanceUID = seriesInstanceUID; CTDicomInfo.FileName = item; //CTDicomInfo.FileName = new FileInfo(_fileName).Name; //CTDicomInfo.UserId = SessionManager.UserName; //CTDicomInfo.Token = SessionManager.UserName; CTDicomInfo.DataID = Guid.NewGuid().ToString("N"); CTDicomInfo.UploadTimestamp = DateTime.Now; CTDicomInfo.Status = "已上传"; CTDicomInfo.AdditionalData = string.Format("{0} 已上传", DateTime.Now.ToString("yyyyMMdd HHmm")); InstitutionName = institutionName; PatientAge = patientAge; PatientName = patientName; PatientSex = patientSex; SeriesInstanceUID = seriesInstanceUID; StudyInstanceUID = studyInstanceUID; this.acquisitionDate = acquisitionDate; this.acquisitionTime = acquisitionTime; Directory.Delete(tmpFolder, true); Console.WriteLine(patientName); break; } } }
public void Ask4PickFile() { // labelDownloadInfo // lbUploadError // uploadProgress // btnUploadFile // btn续传 var openFileDialog = new Microsoft.Win32.OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { filename = openFileDialog.FileName; string ext = new FileInfo(filename).Extension.ToLower(); if (ext != ".rar" && ext != ".zip" && ext != ".7z" && ext != ".tar" && ext != ".iso") { MessageBox.Show("请选择压缩包。", "", MessageBoxButton.OK, MessageBoxImage.Error); return; } if (new FileInfo(filename).Length > 500 * 1024 * 1024) { MessageBox.Show(string.Format("您选择的压缩包过大,体积为{0},请选择500M以下的压缩包。", HumanReadableFilesize(new FileInfo(filename).Length)), "", MessageBoxButton.OK, MessageBoxImage.Error); return; } StartParseDicom(); MainWindow.Instance.DisableAll(); Cursor = System.Windows.Input.Cursors.Wait; lbDicomError.Visibility = lbParsingDicom.Visibility = Visibility.Hidden; lbParsingDicom.Visibility = Visibility.Visible; btnUploadFile.IsEnabled = false; ThreadPool.QueueUserWorkItem(delegate { // haozipc x I:\AirwayCTZip\20150812\甘福明.rar -oi:/temp/20151005 //string tmpFolder = System.IO.Path.Combine("i:/temp/" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + "_" + Guid.NewGuid().ToString("N")); //string tmpFolder = System.IO.Path.Combine(Path.GetTempPath() + "/temp/" + DateTime.Now.ToString("yyyyMMdd-HHmmss") + "_" + Guid.NewGuid().ToString("N")); //string tmpFolder = Path.Combine(Path.GetTempPath(), DateTime.Now.ToString("yyyyMMdd-HHmmss")); string tmpFolder = Path.Combine("c:/lctmp/", DateTime.Now.ToString("yyyyMMdd-HHmmss")); string haozipExe = new FileInfo(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, @"HaoZipC.exe")).FullName; if (!File.Exists(haozipExe)) { MessageBox.Show("没有找到" + haozipExe + "。无法解压缩压缩包。"); DicomOnError(); Dispatcher.Invoke(new Action(delegate { MainWindow.Instance.EnableAll(); lbDicomError.Visibility = Visibility.Visible; lbParsingDicom.Visibility = Visibility.Hidden; btnUploadFile.IsEnabled = true; Cursor = System.Windows.Input.Cursors.Arrow; })); return; } //string haozipExe = @"C:\Program Files\2345Soft\HaoZip\HaoZipC.exe"; string args = string.Format("x \"{0}\" -o\"{1}\"", filename, tmpFolder); Console.WriteLine(haozipExe); Console.WriteLine(args); ProcessStartInfo psi = new ProcessStartInfo(haozipExe, args); psi.CreateNoWindow = true; psi.WindowStyle = ProcessWindowStyle.Hidden; Process process = Process.Start(psi); process.WaitForExit(); Console.WriteLine("ExitCode: " + process.ExitCode); //Process.Start(tmpFolder); string[] files = Directory.GetFiles(tmpFolder, "*.*", SearchOption.AllDirectories); bool foundDicom = false; foreach (var item in files) { Console.WriteLine(item); if (!HasValidHeader(item)) { FileInfo fi = new FileInfo(item); if (fi.Extension.ToString() == ".dcm" || (fi.Length > 500000 && fi.Length < 600000)) { } else { continue; } } try { Console.WriteLine("dicom " + item); var file = DicomFile.Open(item); string patientName = file.Dataset.Get <string>(DicomTag.PatientName); string patientSex = file.Dataset.Get <string>(DicomTag.PatientSex); string patientAge = file.Dataset.Get <string>(DicomTag.PatientAge); string institutionName = file.Dataset.Get <string>(DicomTag.InstitutionName); string acquisitionDate = file.Dataset.Get <string>(DicomTag.AcquisitionDate); string acquisitionTime = file.Dataset.Get <string>(DicomTag.AcquisitionTime); string studyInstanceUID = file.Dataset.Get <string>(DicomTag.StudyInstanceUID); string seriesInstanceUID = file.Dataset.Get <string>(DicomTag.SeriesInstanceUID); LungCare.SupportPlatform.Models.CTDicomInfo CTDicomInfo = new LungCare.SupportPlatform.Models.CTDicomInfo(); CTDicomInfo.PatientName = patientName; CTDicomInfo.PatientSex = patientSex; CTDicomInfo.PatientAge = patientAge; CTDicomInfo.InstitutionName = institutionName; CTDicomInfo.AcquisitionDate = acquisitionDate; CTDicomInfo.AcquisitionTime = acquisitionTime; CTDicomInfo.StudyInstanceUID = studyInstanceUID; CTDicomInfo.SeriesInstanceUID = seriesInstanceUID; CTDicomInfo.FileName = item; //CTDicomInfo.FileName = new FileInfo(_fileName).Name; //CTDicomInfo.UserId = SessionManager.UserName; //CTDicomInfo.Token = SessionManager.UserName; CTDicomInfo.DataID = Guid.NewGuid().ToString("N"); CTDicomInfo.UploadTimestamp = DateTime.Now; CTDicomInfo.Status = "已上传"; CTDicomInfo.AdditionalData = string.Format("{0} 已上传", DateTime.Now.ToString("yyyyMMdd HHmm")); InstitutionName = institutionName; PatientAge = patientAge; PatientName = patientName; PatientSex = patientSex; SeriesInstanceUID = seriesInstanceUID; StudyInstanceUID = studyInstanceUID; this.acquisitionDate = acquisitionDate; this.acquisitionTime = acquisitionTime; StringBuilder sb = new StringBuilder(); sb.AppendLine(PatientName); sb.AppendLine(PatientAge); sb.AppendLine(PatientSex); sb.AppendLine(acquisitionDate + " " + acquisitionTime); //this.Dispatcher.BeginInvoke(new Action(delegate () //{ // //lbDicomInfo.Content = sb.ToString(); //})); Console.WriteLine(patientName); if (!string.IsNullOrEmpty(patientName)) { foundDicom = true; break; } } catch (Exception exDicom) { Console.WriteLine(exDicom.Message); } } try { Directory.Delete(tmpFolder, true); } catch (Exception deleteEx) { Console.WriteLine(deleteEx.Message); } if (!foundDicom) { DicomOnError(); Dispatcher.Invoke(new Action(delegate { MainWindow.Instance.EnableAll(); lbDicomError.Visibility = Visibility.Visible; lbParsingDicom.Visibility = Visibility.Hidden; btnUploadFile.IsEnabled = true; Cursor = System.Windows.Input.Cursors.Arrow; })); return; } GC.Collect(); //ThreadPool.QueueUserWorkItem(delegate //{ StartUpload(); MainWindow.Instance.EnableAll(); Dispatcher.Invoke(new Action(delegate { Cursor = System.Windows.Input.Cursors.Arrow; lbDicomError.Visibility = lbParsingDicom.Visibility = Visibility.Hidden; btnUploadFile.IsEnabled = true; LungCare.SupportPlatform.UI.UploadProgressWnd upw = new LungCare.SupportPlatform.UI.UploadProgressWnd(); upw.Owner = MainWindow.Instance; upw.FileName = filename; upw.InstitutionName = InstitutionName; upw.PatientAge = PatientAge; upw.PatientName = PatientName; upw.PatientSex = PatientSex; upw.SeriesInstanceUID = SeriesInstanceUID; upw.StudyInstanceUID = StudyInstanceUID; upw.acquisitionDate = acquisitionDate; upw.acquisitionTime = acquisitionTime; upw.ShowDialog(); })); }); } }