/// <summary> /// Dicomdir 정보를 화면에 보여준다. /// </summary> private void GetPatientDicomImages(PatientList patList) { try { if (patList == null) { return; } if (patList.Base != null) { DataTable dt = DicomDirReader.GetImageList(patList.Base); this.DisplayPatientDicomInfo(dt); } } catch (Exception ex) { throw ex; } }
/// <summary> /// 환자정보 가져오기 /// </summary> /// <param name="srcFolder"></param> /// <param name="imgFiles"></param> /// <param name="patInfor"></param> /// <param name="patList"></param> /// <returns></returns> public static Dictionary <string, string> GetPatient(string srcFolder, string disableMultiPatient, out List <string> imgFiles, out PatientList patInfor, out Dictionary <string, string> patList) { imgFiles = null; patList = null; Dictionary <string, string> dicResult = null; string DicomDirFile = Path.Combine(srcFolder, "DICOMDIR"); FileInfo fi = new FileInfo(DicomDirFile); bool isDicomRead = false; patInfor = null; try { if (fi.Exists) { dicResult = new Dictionary <string, string>(); dicResult.Add("ID", ""); dicResult.Add("Name", ""); dicResult.Add("Sex", ""); dicResult.Add("SexKr", ""); dicResult.Add("BirthDay", ""); dicResult.Add("Age", ""); dicResult.Add("StudyDesc", ""); dicResult.Add("Modality", ""); dicResult.Add("ImageCount", ""); dicResult.Add("ImagePath", ""); dicResult.Add("DicomDesc", ""); dicResult.Add("StudyModality", ""); dicResult.Add("PatientCount", "0"); //먼저 원래것으로.. patInfor = DicomDirReader.GetPatientrFromDicomNet(DicomDirFile); if (patInfor == null || patInfor.Base.Count == 0) { //EvilDicom으로 patInfor = DicomDirReader.GetPatientrFromEvil(DicomDirFile); } //DICOMDIR에서 정보를 읽을 수 없을 경우 image file에서.. if (patInfor == null || patInfor.Base.Count == 0) { //환자 폴더 내에서 이미지 파일을 찾아 정보를 가져오도록 하자. DicomInfomation di = new DicomInfomation(); //이미지 파일 목록 가져오기 - .dcm List <string> lstFiles = FileControl.GetDicomImageFiles(new DirectoryInfo(srcFolder)); if (lstFiles != null && lstFiles.Count > 0) { foreach (string dcm in lstFiles) { di._DicomFilePath = dcm; fi = new FileInfo(dcm); di._DicomFileName = fi.Name; dicResult = di.PatientInfo(); if (dicResult != null) { isDicomRead = true; patList = di.PatientLST; dicResult["PatientCount"] = di.PatientCount.ToString(); dicResult.Add("DcmFilePath", dcm); dicResult.Add("DcmFileName", fi.Name); break; } } imgFiles = lstFiles; } } else { isDicomRead = true; dicResult["ID"] = patInfor.Base[0].Patient.ID; dicResult["Name"] = patInfor.Base[0].Patient.Name; dicResult["Sex"] = Utils.CheckNull(patInfor.Base[0].Patient.Gender); dicResult["SexKr"] = Utils.CheckNull(patInfor.Base[0].Patient.GenderKR); dicResult["BirthDay"] = Utils.CheckNull(patInfor.Base[0].Patient.BirthDate); dicResult["Age"] = Utils.CheckNull(patInfor.Base[0].Patient.Age); dicResult["StudyDesc"] = patInfor.Base[0].StudyDescArray; dicResult["Modality"] = patInfor.Base[0].ModalityArray; dicResult["ImageCount"] = patInfor.Base[0].RecordList.Count.ToString(); dicResult["StudyModality"] = patInfor.Base[0].StudyModalityArray; //// 다중환자굽기 사용안함 설정 + 다중환자인 경우 if (disableMultiPatient == "Y" && patInfor.Base.Count > 1) { List <string> lstStdy = new List <string>(); foreach (PatientInfoEntity pInfo in patInfor.Base) { lstStdy.Add(pInfo.StudyModalityArray); } dicResult["StudyModality"] = string.Join("^^", lstStdy); } if (null != patInfor.Base[0].RecordList && patInfor.Base[0].RecordList.Count > 0) { dicResult["ImagePath"] = patInfor.Base[0].RecordList[0].ImageFilePath; } //생일 또는 성별을 못 가져왔을 때 이미지 파일에서 가져오도록.. if (string.IsNullOrEmpty(patInfor.Base[0].Patient.BirthDate) || string.IsNullOrEmpty(patInfor.Base[0].Patient.Gender)) { DicomInfomation di = new DicomInfomation(); di._DicomFilePath = DicomDirFile; Dictionary <string, string> dicImgInfo = di.PatientInfoFromDCM(dicResult["ImagePath"]); if (dicImgInfo != null) { dicResult["Sex"] = dicImgInfo["Sex"]; dicResult["SexKr"] = dicImgInfo["SexKr"]; dicResult["BirthDay"] = dicImgInfo["BirthDay"]; dicResult["Age"] = dicImgInfo["Age"]; } } dicResult["DicomDesc"] = patInfor.AllDesc; patList = patInfor.SimpleList; dicResult["PatientCount"] = patInfor.Base.Count.ToString(); dicResult.Add("DcmFilePath", DicomDirFile); dicResult.Add("DcmFileName", "DICOMDIR"); } if (isDicomRead == false) { dicResult = new Dictionary <string, string>(); dicResult.Add("Result", "NotFound"); } else { dicResult.Add("Result", ""); } } else { ////this.ErrMsgShow("DICOMDIR 파일을 찾을 수 없습니다.\r\n", "Rimage Message : Not Exists DICOMDIR file"); dicResult.Add("Result", "NotFound"); } } catch { } return(dicResult); }