예제 #1
0
        /// <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;
            }
        }
예제 #2
0
        /// <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);
        }