private static EMRFileItemDto CreateDCMEMRFileItem(EMRFileItemDto emrFileItemDto, StudyDto studyDto)
        {
            EMRFileItemDto newItemDto = new EMRFileItemDto();

            newItemDto.UniqueID      = Guid.NewGuid().ToString();
            newItemDto.ParentID      = emrFileItemDto.ParentID;
            newItemDto.ItemType      = 0;
            newItemDto.FileType      = (int)FileType.DICOM;
            newItemDto.FileSize      = 0;
            newItemDto.DestFilePath  = studyDto.UniqueID;
            newItemDto.DicomPrefix   = emrFileItemDto.DicomPrefix;
            newItemDto.FileStatus    = 1;
            newItemDto.FileName      = studyDto.AccessionNo;
            newItemDto.SrcFilePath   = emrFileItemDto.SrcFilePath;
            newItemDto.SrcInfo       = emrFileItemDto.SrcInfo;
            newItemDto.CreatorID     = emrFileItemDto.CreatorID;
            newItemDto.CreateTime    = emrFileItemDto.CreateTime;
            newItemDto.UploadedTime  = emrFileItemDto.UploadedTime;
            newItemDto.Progress      = emrFileItemDto.Progress;
            newItemDto.Description   = emrFileItemDto.Description;
            newItemDto.ExtraConfigID = emrFileItemDto.ExtraConfigID;
            newItemDto.Visible       = emrFileItemDto.Visible;
            newItemDto.LastEditUser  = emrFileItemDto.LastEditUser;
            newItemDto.LastEditTime  = emrFileItemDto.LastEditTime;

            return(newItemDto);
        }
        private static bool ProcessEMRItemByType(EMRFileItemDto emrFileItemDto, List <RegEMRFileItemDto> regEMRFileItemList, List <string> files, string file)
        {
            int type = GetFileType(file);

            //non dcm
            if (type != (int)FileType.Unknown && type != (int)FileType.DICOM)
            {
                RegEMRFileItemDto regEMRFileItemDto = new RegEMRFileItemDto();
                regEMRFileItemDto.UniqueID    = Guid.NewGuid().ToString();
                regEMRFileItemDto.ParentID    = emrFileItemDto.ParentID;
                regEMRFileItemDto.DicomPrefix = emrFileItemDto.DicomPrefix;
                regEMRFileItemDto.CreatorID   = emrFileItemDto.CreatorID;
                regEMRFileItemDto.Description = emrFileItemDto.Description;
                regEMRFileItemDto.ItemType    = 0;
                regEMRFileItemDto.SrcFilePath = file;
                regEMRFileItemDto.SrcInfo     = emrFileItemDto.SrcInfo;
                try
                {
                    FileInfo fileInfo = new FileInfo(file);
                    regEMRFileItemDto.FileSize = fileInfo.Length;
                }
                catch
                {
                    return(false);
                }

                regEMRFileItemList.Add(regEMRFileItemDto);
            }
            else
            {
                files.Add(file);
            }

            return(true);
        }
        private static bool RegisterFolder(DamDetail dam, HttpClient client, EMRFileItemDto emrFileItemDto)
        {
            string[] filePaths = GetFiles(emrFileItemDto);
            if (filePaths == null || filePaths.Length == 0)
            {
                var parametersFail = String.Format("/api/v1/registration/setstatus?id={0}&status={1}&description={2}", emrFileItemDto.UniqueID, 10, "SendFTPError004");
                HttpResponseMessage responseFail = client.GetAsync(dam.WebApiurl + parametersFail).Result;
                return(false);
            }

            List <RegEMRFileItemDto> regEMRFileItemList = new List <RegEMRFileItemDto>();
            List <string>            files = new List <string>();

            foreach (string file in filePaths)
            {
                if (!ProcessEMRItemByType(emrFileItemDto, regEMRFileItemList, files, file))
                {
                    return(false);
                }
            }

            //Non dcm
            if (regEMRFileItemList.Count > 0)
            {
                HttpResponseMessage response3 = client.PostAsync <List <RegEMRFileItemDto> >(dam.WebApiurl + "/api/v1/registration/newitemlistfolder", regEMRFileItemList, new JsonMediaTypeFormatter()).Result;
            }

            //dcm
            if (files.Count > 0)
            {
                RegisterDCMEMRFileItems(emrFileItemDto, files, dam);
            }

            return(true);
        }
        private static void RegisterDCMEMRFileItems(EMRFileItemDto emrFileItemDto, List <string> files, DamDetail dam)
        {
            List <DCMInfo> dcmInfoList = new List <DCMInfo>();

            try
            {
                DCMParser.GetDcmInfo(files, out dcmInfoList);
            }
            catch (Exception ex)
            {
                _logger.Error("DCMParser error:" + ex.ToString());
            }
            if (dcmInfoList.Count > 0)
            {
                //dcm list
                List <DCMDto> dcmList = new List <DCMDto>();
                foreach (DCMInfo dcmInfo in dcmInfoList)
                {
                    DCMDto dcmDto = new DCMDto();
                    dcmDto.StudyDto             = dcmInfo.StudyDto;
                    dcmDto.StudyDto.AccessionNo = emrFileItemDto.DicomPrefix + dcmDto.StudyDto.AccessionNo;
                    dcmDto.StudyDto.PatientID   = emrFileItemDto.DicomPrefix + dcmDto.StudyDto.PatientID;

                    dcmDto.SeriesDto = dcmInfo.SeriesDto;

                    dcmDto.ImageDto = dcmInfo.ImageDto;
                    dcmDto.ImageDto.ExtraConfigID = emrFileItemDto.ExtraConfigID;
                    dcmDto.ImageDto.SrcInfo       = emrFileItemDto.SrcInfo;
                    dcmDto.ImageDto.CreatorID     = emrFileItemDto.CreatorID;
                    dcmDto.ImageDto.CreateTime    = emrFileItemDto.CreateTime;
                    dcmDto.ImageDto.ObjectFile    = System.DateTime.Now.ToString("yyyy-MM-dd") + "\\" + dcmDto.StudyDto.AccessionNo + "\\" + dcmDto.ImageDto.UniqueID + ".dcm";
                    dcmDto.EMRFileItemDto         = CreateDCMEMRFileItem(emrFileItemDto, dcmInfo.StudyDto);
                    dcmList.Add(dcmDto);
                }
                if (dcmList.Count > 0)
                {
                    try
                    {
                        using (var client = new HttpClient())
                        {
                            var parameters = "/api/v1/registration/dcmitems";
                            HttpResponseMessage response = client.PostAsync <List <DCMDto> >(dam.WebApiurl + parameters, dcmList, new JsonMediaTypeFormatter()).Result;
                        }
                    }
                    catch (Exception ex)
                    {
                        _logger.Error("dcmitems error:" + ex.ToString());
                    }
                }
            }
        }
        private static string[] GetFiles(EMRFileItemDto emrFileItemDto)
        {
            string[] filePaths = null;
            try
            {
                filePaths = Directory.GetFiles(emrFileItemDto.SrcFilePath, "*.*",
                                               SearchOption.AllDirectories);
            }
            catch (Exception ex)
            {
                _logger.Error("RegisterERMFile error:" + ex.ToString());
            }

            return(filePaths);
        }