Exemple #1
0
        private static string AddPrefix(String strAccPrefix, MElementList elmlist, String accNoOrg, String patIDOrg, int PrefixLength)
        {
            AddPrefixForAccNo(strAccPrefix, elmlist, accNoOrg);
            //Modify PatientID
            if (patIDOrg.Length > PrefixLength)
            {
                patIDOrg = patIDOrg.Remove(PrefixLength);
            }
            using (MElementRef element = elmlist.get_Element(tag_t.kPatientID))
            {
                string patIDNew = strAccPrefix + patIDOrg;

                //delete special char
                string          patIDNew_temp = "";
                Regex           re            = new Regex(@"[a-zA-Z0-9-_]+", RegexOptions.None);
                MatchCollection collection    = re.Matches(patIDNew);
                foreach (Match ma in collection)
                {
                    patIDNew_temp += ma.ToString();
                }
                patIDNew = patIDNew_temp;

                if (element == null || (element != null && element.value_count <= 0))
                {
                    MElement ele = new MElement(tag_t.kPatientID, vr_t.LO);
                    ele.set_string(0, patIDNew);
                    elmlist.addElement(ele);
                }
                else
                {
                    element.set_string(0, patIDNew);
                }
            }
            return(patIDOrg);
        }
        private string GetStringTagValue(MElementList elmlist, tag_t tag)
        {
            var strValue = string.Empty;

            try
            {
                using (MElementRef eref = elmlist.get_Element(tag))
                {
                    if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                    {
                        strValue = eref.get_string(0);
                    }
                    else
                    {
                        strValue = "";
                    }
                    return(strValue);
                }
            }
            catch (Exception e)
            {
                _logger.Error("DicomHeader.GetStringTagValue(): " + "get string for tag " + tag.ToString() + " pop up an exception--" + e.Message + ".");
                return(strValue);
            }
        }
Exemple #3
0
        private static void SetTSN(MElementList elmlist)
        {
            string str_tsn = "";

            using (MElementRef element = elmlist.get_Element(tag_t.kTransferSyntaxUID))
            {
                if (element != null && element.value_count > 0)
                {
                    str_tsn = element.get_string(0);
                    if (str_tsn == "")
                    {
                        str_tsn = "1.2.840.10008.1.2";
                        kdt_managed.UID tsn = new kdt_managed.UID(str_tsn);
                        element.set_uid(0, tsn);
                    }
                }
            }

            if (str_tsn == "")
            {
                MElement        tsnUid = new MElement(tag_t.kTransferSyntaxUID, vr_t.UI);
                kdt_managed.UID tsn    = new kdt_managed.UID("1.2.840.10008.1.2");
                tsnUid.set_uid(0, tsn);
                elmlist.addElement(tsnUid);
            }
        }
        private string GetDateTimeTagValue(MElementList elmlist, tag_t tag)
        {
            var strValue = string.Empty;
            var strRet   = string.Empty;

            try
            {
                using (MElementRef eref = elmlist.get_Element(tag))
                {
                    if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                    {
                        strValue = eref.get_string(0);
                    }
                    if (!string.IsNullOrEmpty((strValue)))
                    {
                        strRet = System.DateTime.ParseExact(strValue, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-MM-dd");
                    }
                    return(strRet);
                }
            }
            catch (Exception e)
            {
                _logger.Error("DCMHeader.GetDateTimeTagValue(): " + "get datetime for tag " + tag.ToString() + " pop up an exception--" + e.Message + ".");
                strRet = System.DateTime.ParseExact(strValue, "yyyy.MM.dd", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-MM-dd");
                return(strRet);
            }
        }
Exemple #5
0
        private static void AddPrefixForAccNo(String strAccPrefix, MElementList elmlist, String accNoOrg)
        {
            using (MElementRef element = elmlist.get_Element(tag_t.kAccessionNumber))
            {
                string accNoNew = strAccPrefix + accNoOrg;

                //delete special char
                string          accNoNew_temp = "";
                Regex           re            = new Regex(@"[a-zA-Z0-9-_]+", RegexOptions.None);
                MatchCollection collection    = re.Matches(accNoNew);
                foreach (Match ma in collection)
                {
                    accNoNew_temp += ma.ToString();
                }
                accNoNew = accNoNew_temp;

                if (element == null || (element != null && element.value_count <= 0))
                {
                    MElement ele = new MElement(tag_t.kAccessionNumber, vr_t.LO);
                    ele.set_string(0, accNoNew);
                    elmlist.addElement(ele);
                }
                else
                {
                    element.set_string(0, accNoNew);
                }
            }
        }
Exemple #6
0
        public static void GetDcmInfo(List <string> PrcFileList, out List <DCMInfo> dcmInfoList)
        {
            dcmInfoList = new List <DCMInfo>();
            try
            {
                foreach (String prcFilePath in PrcFileList)
                {
                    FileInfo file = new FileInfo(prcFilePath);

                    MElementList elmlist = new MElementList();
                    using (DicomHeader dicomHeader = new DicomHeader())
                    {
                        if (!MDecoder.read_pt10_file(prcFilePath, ref elmlist, null, -1))
                        {
                            _logger.Error("Archiver.ProcessDcmFile(): " + "read dicom file " + prcFilePath + " error.");
                            continue;
                        }
                        bool bRet = dicomHeader.BuildDicomInfo(elmlist);
                        elmlist.Dispose();
                        if (bRet)
                        {
                            DCMInfo dcmInfo = dicomHeader.GetDCMInfo();
                            dcmInfo.ImageDto.SrcFilePath = prcFilePath;
                            dcmInfo.ImageDto.FileSize    = file.Length;
                            dcmInfoList.Add(dcmInfo);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Archiver.ProcessDcmFile(): " + "archive file failed " +
                              ex.Message);
            }
        }
        /// <summary>
        /// For some tag with local language, e.g PatientName
        /// ISO_IR 192: use UTF8 encoding local string
        /// ISO_IR 100: use GB2312 encoding local string
        /// </summary>
        /// <param name="strValue"></param>
        /// <param name="elmlist"></param>
        /// <param name="tag"></param>
        private string GetLocalStringTagValue(MElementList elmlist, tag_t tag)
        {
            var strValue = string.Empty;

            try
            {
                String str_speccharacter = "";
                using (MElementRef intereref = elmlist.get_Element(tag_t.kSpecificCharacterSet))
                {
                    if (intereref != null && intereref.value_count != 0 && intereref.value_count != -1)
                    {
                        str_speccharacter = intereref.get_string(0);
                    }
                    else
                    {
                        str_speccharacter = "";
                    }
                }
                using (MElementRef eref = elmlist.get_Element(tag))
                {
                    Byte[] byte_patName = null;
                    if (str_speccharacter.Trim() == "ISO_IR 192")
                    {
                        if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                        {
                            byte_patName = eref.get_blob(0);
                        }
                        strValue = Encoding.UTF8.GetString(byte_patName);
                    }
                    else if (str_speccharacter.Trim() == "ISO_IR 100")
                    {
                        if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                        {
                            byte_patName = eref.get_blob(0);
                        }
                        strValue = Encoding.GetEncoding("GB2312").GetString(byte_patName);
                    }
                    else
                    {
                        if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                        {
                            strValue = eref.get_string(0);
                        }
                        else
                        {
                            strValue = " ";
                        }
                    }
                    return(strValue);
                }
            }
            catch (Exception e)
            {
                _logger.Error("DCMHeader.GetStringTagValue(): " + "get string for tag " + tag.ToString() + " pop up an exception--" + e.Message + ".");
                return(strValue);
            }
        }
        private bool SaveFile(MElementList dataset)
        {
            string       rootPath  = m_theStore.StoragePath + Convert.ToString(System.IO.Path.DirectorySeparatorChar);
            DAPBussiness bussiness = new DAPBussiness();
            var          result    = bussiness.SaveDICOMInfo(dataset, base.getNegotiatedTsn(), m_theObserver.getImplClassUid(),
                                                             m_theObserver.getImplVersionName(), rootPath);

            return(result);
        }
Exemple #9
0
        public static bool BuildDICOMInfo(MElementList elmlist, ref DICOMInfoDto dicomDto)
        {
            try
            {
                var dicom = Mapper.Map <DICOMInfo>(elmlist);
                dicomDto.StudyInstanceUID  = dicom.StudyInstanceUID;
                dicomDto.SeriesInstanceUID = dicom.SeriesInstanceUID;
                dicomDto.SOPInstanceUID    = dicom.SOPInstanceUID;
                dicomDto.PatientID         = dicom.PatientID;
                dicomDto.PatientName       = dicom.PatientName;
                dicomDto.PatientDOB        = dicom.PatientDOB;
                dicomDto.PatientAge        = dicom.PatientAge;
                dicomDto.PatientSex        = dicom.PatientSex;
                dicomDto.AccessionNo       = dicom.AccessionNo;
                dicomDto.BodyPart          = dicom.BodyPart;
                dicomDto.Modality          = dicom.Modality;
                dicomDto.ExamCode          = string.Empty;
                dicomDto.StudyDate         = dicom.StudyDate;
                dicomDto.StudyTime         = dicom.StudyTime;
                dicomDto.StudyDescription  = dicom.StudyDescription;
                dicomDto.ReferPhysician    = dicom.ReferPhysician;
                dicomDto.SeriesNo          = dicom.SeriesNo;
                int parseNo;
                int.TryParse(dicom.ImageNo, out parseNo);
                dicomDto.ImageNo = parseNo;

                if (dicom.PatientID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "PatientID is empty.");
                    return(false);
                }
                if (dicom.StudyInstanceUID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "StudyInstanceUID is empty.");
                    return(false);
                }
                //Series Group
                if (dicom.SeriesInstanceUID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "SeriesInstanceUID is empty.");
                    return(false);
                }
                if (dicom.SOPInstanceUID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "SOPInstanceUID is empty.");
                    return(false);
                }
                _logger.Error("DicomHeader.BuildDcmInfo(): " + "build dicom info successfully.");
                return(true);
            }
            catch (Exception e)
            {
                _logger.Error("DicomHeader.BuildDcmInfo(): " + "pop up an exception--" + e.Message + ".");
                return(false);
            }
        }
        private string GetUIDTagValue(MElementList elmlist, tag_t tag)
        {
            var strUID = string.Empty;

            using (MElementRef eref = elmlist.get_Element(tag))
            {
                if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                {
                    strUID = eref.get_uid(0);
                }
                return(strUID);
            }
        }
Exemple #11
0
 private void GetUIDTagValue(ref string strUID, MElementList elmlist, tag_t tag)
 {
     using (MElementRef eref = elmlist.get_Element(tag))
     {
         if (eref != null && eref.value_count != 0 && eref.value_count != -1)
         {
             strUID = eref.get_uid(0);
         }
         else
         {
             strUID = "";
         }
     }
 }
Exemple #12
0
 private static void GetDICOMInfo(MElementList elmlist, ref String accNoOrg, ref String patIDOrg)
 {
     using (MElementRef element = elmlist.get_Element(tag_t.kAccessionNumber))
     {
         if (element != null && element.value_count > 0)
         {
             accNoOrg = element.get_string(0);
         }
     }
     using (MElementRef element = elmlist.get_Element(tag_t.kPatientID))
     {
         if (element != null && element.value_count > 0)
         {
             patIDOrg = element.get_string(0);
         }
     }
 }
        /// <summary>
        /// indicate receiving over of an image
        /// </summary>
        /// <param name="ind">all the information about the received image</param>
        /// <param name="status">status that returned to the SCU</param>
        public override void indication(MElementList ind, MElementList status)
        {
            using (MElementRef eref = ind.get_Element(tag_t.kSOPInstanceUID))
            {
                if (eref != null)
                {
                    m_fileName = eref.get_string(0);
                }
            }

            MElementList pt10file = ind.getDataset();

            // save image and update case information
            if (!SaveFile(pt10file))
            {
                try
                {
                    using (MElementRef statusRef = status.get_Element(tag_t.kStatus))
                    {
                        // notify the client that image processing failed and cancel the whole association
                        statusRef.set_ushort(0, (ushort)MDTService.status_t.PROCESSING_FAILURE);
                        statusRef.set_ushort(1, (ushort)MDTService.status_t.CANCEL);
                    }

                    // file saving failed,the case should not be submitted
                    m_theObserver.m_OK = false;
                }
                catch (Exception e)
                {
                    m_theObserver.m_OK = false;
                    _logger.Info("DAPStoreService.indication(): " + "set response status error " + e.Message);
                }
            }

            // release the memory used by MElementList
            pt10file.Dispose();
            ind.Dispose();

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Exemple #14
0
        /// <summary>
        /// Save DICOM data and file
        /// </summary>
        public bool SaveDICOMInfo(MElementList dataset, ts_t baseTsn, string implClassUid, string versionName, string rootPath)
        {
            var dicom = new DICOMInfoDto();

            DICOMUtility.BuildDICOMInfo(dataset, ref dicom);
            var path = rootPath + dicom.AccessionNo + Convert.ToString(Path.DirectorySeparatorChar);

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            var filePath = path + dicom.SOPInstanceUID + ".dcm";
            var result1  = SaveDICOMFile(dataset, baseTsn, implClassUid, versionName, filePath);
            var result2  = false;

            if (result1)
            {
                result2 = SaveDICOMData(dicom, filePath);
            }
            return(result1 && result2);
        }
        private int GetIntTagValue(MElementList elmlist, tag_t tag)
        {
            var nValue = 0;

            try
            {
                using (MElementRef eref = elmlist.get_Element(tag))
                {
                    if (eref != null && eref.value_count != 0 && eref.value_count != -1)
                    {
                        nValue = eref.get_sint(0);
                    }
                    return(nValue);
                }
            }
            catch (Exception e)
            {
                _logger.Error("DCMHeader.GetIntTagValue(): " + "get int for tag " + tag.ToString() + " pop up an exception--" + e.Message + ".");
                return(nValue);
            }
        }
Exemple #16
0
 private void GetDateTimeTagValue(ref string strValue, MElementList elmlist, tag_t tag)
 {
     try
     {
         using (MElementRef eref = elmlist.get_Element(tag))
         {
             if (eref != null && eref.value_count != 0 && eref.value_count != -1)
             {
                 strValue = eref.get_string(0);
             }
             else
             {
                 strValue = " ";
             }
         }
     }
     catch (Exception e)
     {
         strValue = " ";
         _logger.Error("DCMHeader.GetDateTimeTagValue(): " + "get datetime for tag " + tag.ToString() + " pop up an exception--" + e.Message + ".");
     }
 }
Exemple #17
0
        public bool BuildDicomInfo(MElementList elmlist)
        {
            bool bRet = false;

            try
            {
                //Patient Group
                //PK Verify
                GetStringTagValue(ref PatientID, elmlist, tag_t.kPatientID);
                if (PatientID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "PatientID is empty.");
                    return(false);
                }
                GetLocalStringTagValue(ref PatientName, elmlist, tag_t.kPatientsName);
                GetDateTimeTagValue(ref PatientDOB, elmlist, tag_t.kPatientsBirthDate);
                //yyyy-MM-dd
                if (PatientDOB != " ")
                {
                    PatientDOB = ParseDateTime(PatientDOB);
                }
                GetStringTagValue(ref PatientAge, elmlist, tag_t.kPatientsAge);
                GetStringTagValue(ref PatientSex, elmlist, tag_t.kPatientsSex);
                //Study Group
                GetUIDTagValue(ref StudyInstanceUID, elmlist, tag_t.kStudyInstanceUID);
                if (StudyInstanceUID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "StudyInstanceUID is empty.");
                    return(false);
                }
                GetStringTagValue(ref AccessionNo, elmlist, tag_t.kAccessionNumber);
                GetStringTagValue(ref BodyPart, elmlist, tag_t.kBodyPartExamined);
                GetStringTagValue(ref Modality, elmlist, tag_t.kModality);
                GetDateTimeTagValue(ref StudyDate, elmlist, tag_t.kStudyDate);
                if (StudyDate != " ")
                {
                    StudyDate = ParseDateTime(StudyDate);
                }
                GetDateTimeTagValue(ref StudyTime, elmlist, tag_t.kStudyTime);
                GetStringTagValue(ref StudyDescription, elmlist, tag_t.kStudyDescription);
                GetStringTagValue(ref ReferPhysician, elmlist, tag_t.kReferringPhysiciansName);
                GetStringTagValue(ref Manufacture, elmlist, tag_t.kManufacturer);
                GetStringTagValue(ref InstitutionName, elmlist, tag_t.kInstitutionName);
                GetStringTagValue(ref StationName, elmlist, tag_t.kStationName);
                //Series Group
                GetUIDTagValue(ref SeriesInstanceUID, elmlist, tag_t.kSeriesInstanceUID);
                if (SeriesInstanceUID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "SeriesInstanceUID is empty.");
                    return(false);
                }
                GetIntTagValue(ref SeriesNo, elmlist, tag_t.kSeriesNumber);
                GetStringTagValue(ref PatientPosition, elmlist, tag_t.kPatientPosition);
                GetStringTagValue(ref ViewPosition, elmlist, tag_t.kViewPosition);
                GetDateTimeTagValue(ref SeriesDate, elmlist, tag_t.kSeriesDate);
                if (SeriesDate != " ")
                {
                    SeriesDate = ParseDateTime(SeriesDate);
                }
                GetDateTimeTagValue(ref SeriesTime, elmlist, tag_t.kSeriesTime);
                GetStringTagValue(ref SeriesDescription, elmlist, tag_t.kSeriesDescription);
                //Image Group
                GetUIDTagValue(ref SOPInstanceUID, elmlist, tag_t.kSOPInstanceUID);
                if (SOPInstanceUID == "")
                {
                    _logger.Error("DicomHeader.BuildDcmInfo(): " + "SOPInstanceUID is empty.");
                    return(false);
                }
                GetStringTagValue(ref ImageNo, elmlist, tag_t.kInstanceNumber);
                //InstanceNumber of some dicom is ""
                if (string.IsNullOrEmpty(ImageNo))
                {
                    ImageNo = "0";
                }

                GetStringTagValue(ref ImageType, elmlist, tag_t.kImageType);
                GetIntTagValue(ref NumberOfFrames, elmlist, tag_t.kNumberOfFrames);
                GetDateTimeTagValue(ref ImageDate, elmlist, tag_t.kAcquisitionDate);
                if (ImageDate != " ")
                {
                    ImageDate = ParseDateTime(ImageDate);
                }
                GetDateTimeTagValue(ref ImageTime, elmlist, tag_t.kAcquisitionTime);
                GetIntTagValue(ref SamplesPerPixel, elmlist, tag_t.kSamplesPerPixel);
                GetIntTagValue(ref ImageRows, elmlist, tag_t.kRows);
                GetIntTagValue(ref ImageColumns, elmlist, tag_t.kColumns);
                GetIntTagValue(ref BitsAllocated, elmlist, tag_t.kBitsAllocated);
                GetIntTagValue(ref BitsStored, elmlist, tag_t.kBitsStored);
                GetStringTagValue(ref PixelSpacing, elmlist, tag_t.kPixelSpacing);
                GetStringTagValue(ref PhotometricIntr, elmlist, tag_t.kPhotometricInterpretation);
                GetIntTagValue(ref KVP, elmlist, tag_t.kKVP);
                GetIntTagValue(ref Exposure, elmlist, tag_t.kExposureTime);

                _logger.Error("DicomHeader.BuildDcmInfo(): " + "build dicom info successfully.");
            }
            catch (Exception e)
            {
                _logger.Error("DicomHeader.BuildDcmInfo(): " + "pop up an exception--" + e.Message + ".");
            }

            return(true);
        }
 /// <summary>
 /// used by SCU
 /// </summary>
 /// <param name="con">confirm information from SCP</param>
 public override void confirmation(MElementList con)
 {
 }
Exemple #19
0
        /// <summary>
        /// Save DICOM file
        /// </summary>
        /// <param name="dataset"></param>
        /// <param name="baseTsn"></param>
        /// <param name="implClassUid"></param>
        /// <param name="versionName"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        private bool SaveDICOMFile(MElementList dataset, ts_t baseTsn, string implClassUid, string versionName, string filePath)
        {
            try
            {
                // add the following group 2 element for writing pt10 files
                string str_tsn = "1.2.840.10008.1.2";
                switch (baseTsn)
                {
                case ts_t.ImplicitVRLittleEndian: str_tsn = "1.2.840.10008.1.2"; break;

                case ts_t.ExplicitVRBigEndian: str_tsn = "1.2.840.10008.1.2.2"; break;

                case ts_t.ExplicitVRLittleEndian: str_tsn = "1.2.840.10008.1.2.1"; break;

                case ts_t.JPEGLosslessNonHierarchical_14: str_tsn = "1.2.840.10008.1.2.4.57"; break;

                case ts_t.JPEGLosslessNonHierarchicalFirstOrderPrediction: str_tsn = "1.2.840.10008.1.2.4.70"; break;

                default: str_tsn = "1.2.840.10008.1.2"; break;
                }
                MElement tsnUid = new MElement(tag_t.kTransferSyntaxUID, vr_t.UI);
                UID      tsn    = new UID(str_tsn);
                tsnUid.set_uid(0, tsn);
                dataset.addElement(tsnUid);

                MElement implUid = new MElement(tag_t.kImplementationClassUID, vr_t.UI);
                UID      uid     = new UID(implClassUid);
                implUid.set_uid(0, uid);
                dataset.addElement(implUid);

                MElement implVer = new MElement(tag_t.kImplementationVersionName, vr_t.SH);
                string   version = versionName;
                implVer.set_string(0, version);
                dataset.addElement(implVer);

                // Note: in the current version,saving file will use a large size of memory,this is a limitation
                // of the managed class in KDT,in the later version,if the limitation is resolved,we will use
                // the MDecoder to save files,not the MEncoder.wirte_pt10_file
                if (MEncoder.write_pt10_file
                    (
                        filePath,
                        dataset,
                        true, // item length is explicit
                        false // do not check group 2 items
                    ))
                {
                    _logger.Info("DAPStoreService.SaveFile(): " + "save file:" + filePath + "OK.");
                    return(true);
                }
                else
                {
                    _logger.Info("DAPStoreService.SaveFile(): " + "save file:" + filePath + "failed.");
                    return(false);
                }
            }
            catch (Exception e)
            {
                _logger.Info("DAPStoreService.SaveFile(): " + "error occurred while trying to write part-10 file " + e.Message);
                return(false);
            }
        }
Exemple #20
0
        public static bool ModifyAccNoAndPatientID(string filePath, string tempFilePath, string prefix, out string message)
        {
            Boolean ret = false;

            message = "";
            //String strAccPrefix = @"-" + m_infoDAP.HospitalID.ToString();
            String strAccPrefix = prefix;

            try
            {
                MElementList elmlist = new MElementList();
                if (!MDecoder.read_pt10_file(filePath, ref elmlist, null, -1))
                {
                    _logger.Error("ImageSubmitService.ModifyAccNoAndPatientID(): " + "read dicom file " + filePath + " error.");
                    message = "SendFTPError002";
                    return(ret);
                }

                //Modify AccessionNumber
                String accNoOrg = "";
                String patIDOrg = "";
                GetDICOMInfo(elmlist, ref accNoOrg, ref patIDOrg);

                #region process Num
                //PID,AccNo为空时拒绝接受该图像
                if (patIDOrg.Length == 0 || accNoOrg.Length == 0)
                {
                    IDEmptyProcess(patIDOrg);

                    elmlist.Dispose();
                    message = "SendFTPError003";
                    return(false);
                }

                #endregion

                int PrefixLength = 32 - strAccPrefix.Length;
                if (accNoOrg.Length > PrefixLength)
                {
                    accNoOrg = accNoOrg.Remove(PrefixLength);
                }

                patIDOrg = AddPrefix(strAccPrefix, elmlist, accNoOrg, patIDOrg, PrefixLength);

                //judge TransferSyntax
                SetTSN(elmlist);

                if (MEncoder.write_pt10_file
                    (
                        tempFilePath,
                        elmlist,
                        true,   // item length is explicit
                        false   // do not check group 2 items
                    ))
                {
                    elmlist.Dispose();
                    _logger.Debug("ImageSubmitService.ModifyAccNoAndPatientID(): " + "save dicom file " + tempFilePath + " ok.");
                    return(true);
                }
                else
                {
                    elmlist.Dispose();
                    _logger.Error("ImageSubmitService.ModifyAccNoAndPatientID(): " + "save dicom file " + tempFilePath + " error.");
                    message = "SendFTPError002";
                    return(false);
                }
            }
            catch (Exception e)
            {
                _logger.Error("ImageSubmitService.ModifyAccNoAndPatientID(): " + "pop up an exception--" + e.Message);
            }
            return(ret);
        }