Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/config.js =================================================================== diff -u -r28036 -r28048 --- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/config.js (.../config.js) (revision 28036) +++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/config.js (.../config.js) (revision 28048) @@ -209,5 +209,9 @@ overFulled : { "className" : "my_row_red" , "color" : "#ff0000"},//pc/pda超过待发数量的颜色(若pc和pda颜色一致,类名和颜色值必须对应一致) unsterilizedColor : { "className" : "my_row_yellow" , "color" : "#ffff00"},//未灭菌的颜色 sterilizedColor : { "className" : "my_row_blue" , "color" : "#00ffff"}//已灭菌的颜色 - } + }, + //提取住院号的正则表达式 + regExpForExtractingHospitalNumber:".{1,}[0-9]{10}$", + //提取诊疗号的正则表达式 + regExpForExtractingClinicNumber:".{1,}[0-9]{10}$" } \ No newline at end of file Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/FindPatientInfoByTreatmentNumDaoImpl.java =================================================================== diff -u -r27832 -r28048 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/FindPatientInfoByTreatmentNumDaoImpl.java (.../FindPatientInfoByTreatmentNumDaoImpl.java) (revision 27832) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/FindPatientInfoByTreatmentNumDaoImpl.java (.../FindPatientInfoByTreatmentNumDaoImpl.java) (revision 28048) @@ -27,6 +27,13 @@ @Override public PatientInfoVO[] findPatientInfoByTreatmentNum(String clinicNumber) { try { + // 提取诊疗号的正则表达式(SZSDSRMYY-17) + String regExpForExtractingClinicNumber = CssdUtils.getSystemSetConfigByName("regExpForExtractingClinicNumber"); + if(StringUtils.isNotBlank(regExpForExtractingClinicNumber) && clinicNumber.matches(regExpForExtractingClinicNumber)){ + // 以10位连续数字结尾,并且位数大于10的字符串,只取后面10位纯数字作为诊疗号 + clinicNumber = clinicNumber.substring(clinicNumber.length() - 10); + logger.info("去除前缀的诊疗号:" + clinicNumber); + } String inputXml = WebServiceClientHelper.buildInputString(DatasyncConstant.MethodName_ClinicNumber, clinicNumber); logger.info("诊疗号病人同步接口请求信息:" + inputXml); //String result = CssdUtils.callWebService(DatasyncConstant.WebserviceAddress, inputXml, Constants.CHARSET_UTF8); Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/FindPatientInfoByHospitalNumDaoImpl.java =================================================================== diff -u -r27832 -r28048 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/FindPatientInfoByHospitalNumDaoImpl.java (.../FindPatientInfoByHospitalNumDaoImpl.java) (revision 27832) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/FindPatientInfoByHospitalNumDaoImpl.java (.../FindPatientInfoByHospitalNumDaoImpl.java) (revision 28048) @@ -12,7 +12,6 @@ import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByHospitalNumDao; import com.forgon.disinfectsystem.datasynchronization.dao.szsdsrmyy.DatasyncConstant; import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO; -import com.forgon.tools.Constants; /** * 根据住院号查询病人信息(深圳市第三人民医院) @@ -28,6 +27,13 @@ @Override public PatientInfoVO[] findPatientInfoByHospitalNum(String hospitalNum) { try { + // 提取住院号的正则表达式(SZSDSRMYY-17) + String regExpForExtractingHospitalNumber = CssdUtils.getSystemSetConfigByName("regExpForExtractingHospitalNumber"); + if(StringUtils.isNotBlank(regExpForExtractingHospitalNumber) && hospitalNum.matches(regExpForExtractingHospitalNumber)){ + // 以10位连续数字结尾,并且位数大于10的字符串,只取后面10位纯数字作为住院号 + hospitalNum = hospitalNum.substring(hospitalNum.length() - 10); + logger.info("去除前缀的住院号:" + hospitalNum); + } String inputXml = WebServiceClientHelper.buildInputString(DatasyncConstant.MethodName_HospitalNumber, hospitalNum); logger.info("住院号病人同步接口请求信息:" + inputXml); String result = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.WebserviceAddress, inputXml, DatasyncConstant.MethodName_HospitalNumber); @@ -114,7 +120,7 @@ @Override public PatientInfoVO[] findPatientInfoByHospitalNumBeforeOperation( String clinicNumber) { - return null; + return findPatientInfoByHospitalNum(clinicNumber); } } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java =================================================================== diff -u -r27732 -r28048 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 27732) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 28048) @@ -269,7 +269,9 @@ logger.info("调用findPatientInfoByHospitalNum方法根据住院号查询病人信息.hospitalNum=" + hospitalNum + ",sourcePage=" + sourcePage); //条码腕带住院号前缀,扫描时去掉条码腕带住院号前缀(北京垂杨柳医院) String wristBandHospitalNumberPrefix = CssdUtils.getSystemSetConfigByName("wristBandHospitalNumberPrefix"); - if(StringUtils.isNotBlank(hospitalNum) && StringUtils.isNotBlank(wristBandHospitalNumberPrefix) + //如果配置文件中同时具有wristBandHospitalNumberPrefix配置项,优先采用本配置项的配置(SZSDSRMYY-17) + String regExpForExtractingHospitalNumber = CssdUtils.getSystemSetConfigByName("regExpForExtractingHospitalNumber"); + if(StringUtils.isBlank(regExpForExtractingHospitalNumber) && StringUtils.isNotBlank(hospitalNum) && StringUtils.isNotBlank(wristBandHospitalNumberPrefix) && hospitalNum.startsWith(wristBandHospitalNumberPrefix)){ hospitalNum = hospitalNum.replaceFirst(wristBandHospitalNumberPrefix, ""); } @@ -747,6 +749,7 @@ } long count = 0; + THTreeNode defaultParent = orgUnitManager.getOrgUnitByCode(默认父节点的编码); //循环his接口的科室数据集 for(OrgUnitVo vo : allVos){ if(vo == null){ @@ -787,7 +790,10 @@ orgUnit.setSource(Constants.SOURCE_SYNC); } orgUnit.setBarcodeDevice(newBarcodeOfOrgUnit()); - } + } else { + // 设置科室oldName为数据库中科室的名称,后面代码需要根据这个判断科室是否重命名,并执行更新相关表操作 + orgUnit.setOldName(orgUnit.getName()); + } // else { //不是新部门 // if (tempOrgUnit != null) { //如果此名称的部门已经存在了 // if (!vo.getCoding().equals(tempOrgUnit.getOrgUnitCoding())) { //修改过部门名称,则说明修改的部门名称已经存在了 @@ -816,7 +822,7 @@ THTreeNode parent = orgUnitManager.getOrgUnitByCode(vo.parentCoding); if(parent == null){ - parent = orgUnitManager.getOrgUnitByCode(默认父节点的编码); + parent = defaultParent; } orgUnit.setParent(parent); orgUnitManager.saveOrUpdata(orgUnit); //保存更新操作 Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/WebServiceClientHelper.java =================================================================== diff -u -r27832 -r28048 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 27832) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 28048) @@ -107,7 +107,7 @@ // message inputXmlSB.append(""); - inputXmlSB.append(""); + inputXmlSB.append(""); inputXmlSB.append(""); inputXmlSB.append(""); // receiver