From c462811cd33e81a80bc089e3677975c069d9cda5 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期六, 09 五月 2026 17:50:06 +0800
Subject: [PATCH] 代码提交
---
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java | 320 ++++++++++++++++++++++++++++++++++++----------------
1 files changed, 219 insertions(+), 101 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 65ce765..fe2ceb1 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -40,7 +40,6 @@
public class ServiceSLTDHealthcareRecordServiceImpl implements IServiceSLTDHealthcareRecordService {
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
- public static final String APP_KEY = "ak-zUMiOWhqXiJQWPB1pCbz0pjr";
@Autowired
private IPatArchiveService patArchiveService;
@@ -72,12 +71,16 @@
@Value("${userPwd}")
private String userPwd;
+ @Value("${lwl_app_key}")
+ private String APP_KEY;
+
@Override
public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
try {
Map<String, Object> requestParams = buildRequestParams(reqVO);
Map<String, String> headers = buildRequestHeaders();
- String result = HttpUtils.sendPostByHeader(sltdPubPath + "osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
+ log.info("璇锋眰鍙傛暟鍑洪櫌鏁版嵁鍦板潃锛歿},appKey:{}", sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", APP_KEY);
+ String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
String cry = determineCry(reqVO);
log.info("cry鐨勫�间负锛歿}", cry);
@@ -86,7 +89,7 @@
return serviceSLTDInhospResDTOS;
} catch (Exception e) {
log.error("銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
- throw new RuntimeException("璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触", e);
+ throw new RuntimeException("璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触:" + e.getMessage());
}
}
@@ -164,10 +167,15 @@
sysDept.setUpdateTime(new Date());
sysDept.setUpdateBy(null);
- SysDept sysDept1 = sysDeptMapper.selectDeptByCode(sysDept.getDeptCode(), sysDept.getOrgid());
+ // 鎸� deptCode + orgid + campusid 鏌ラ噸锛岄伩鍏嶈法闄㈠尯绉戝閲嶅
+ SysDept sysDept1 = sysDeptMapper.selectDeptByCodeAndCampus(sysDept.getDeptCode(), sysDept.getOrgid(), sysDept.getCampusid());
if (Objects.isNull(sysDept1)) {
- int i = sysDeptMapper.insertDept(sysDept);
- log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁鏂板鎴愬姛锛歿}", i);
+ try {
+ int i = sysDeptMapper.insertDept(sysDept);
+ log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁鏂板鎴愬姛锛歿}", i);
+ } catch (org.springframework.dao.DuplicateKeyException e) {
+ log.warn("銆恞ueryDeptWardAreaInfoList銆戠瀹ゅ凡瀛樺湪(骞跺彂鎻掑叆)锛岃烦杩囷細deptCode={}, orgid={}, campusid={}", sysDept.getDeptCode(), sysDept.getOrgid(), sysDept.getCampusid());
+ }
} else {
sysDept.setDeptId(sysDept1.getDeptId());
int i = sysDeptMapper.updateDept(sysDept);
@@ -223,17 +231,16 @@
String professionalTitleName = getStringValue(diagnosisMap, "professionalTitleName");
if (professionalTitleName.contains("鍖诲笀")) {
sysUser.setUserType("鍖荤敓");
- sysUser.setSearchscope("1");
}
if (professionalTitleName.contains("鎶�")) {
sysUser.setUserType("鎶ゅ+");
- sysUser.setSearchscope("2");
}
sysUser.setTitle(getStringValue(diagnosisMap, "professionalTitleName"));
}
}
}
-
+ //濡傛灉鐢ㄦ埛鐨勬偅鑰呰寖鍥翠负绌猴紝鍒欓粯璁や负0
+ if (StringUtils.isEmpty(sysUser.getSearchscope())) sysUser.setSearchscope("0");
sysUser.setPhonenumber(getStringValue(dataItem, "telephone"));
sysUser.setUserCode(getStringValue(dataItem, "jobNumber"));
//璁剧疆鎬у埆
@@ -246,86 +253,94 @@
sysUser.setUpdateTime(new Date());
sysUser.setUpdateBy("admin");
sysUser.setCreateBy("admin");
- sysUser.setCreateBy("admin");
sysUser.setOrgid("" + getLongValue(dataItem, "orgId"));
-// sysUser.setCampusid("" + getLongValue(dataItem, "cmpusId"));
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
sysUser.setPassword(passwordEncoder.encode(userPwd));
-
SysUser sysUser1 = sysUser2Mapper.selectUserByUserName(sysUser.getUserName());
if (ObjectUtils.isNotEmpty(sysUser1)) {
+ //宸插瓨鍦細鐢变汉宸ョ淮鎶ょ殑瀛楁鏄笉闇�瑕佹洿鏂扮殑锛宱rgid/campusid淇濈暀鍘熷�间笉瑕嗙洊
+ sysUser.setSearchscope(null);
+ sysUser.setPassword(null);
sysUser.setUserId(sysUser1.getUserId());
+ sysUser.setOrgid(null);
+ sysUser.setCampusid(null);
sysUser2Mapper.updateUser(sysUser);
} else {
- sysUser2Mapper.insertUser(sysUser);
+ try {
+ sysUser2Mapper.insertUser(sysUser);
+ } catch (org.springframework.dao.DuplicateKeyException e) {
+ //骞跺彂鎻掑叆鍦烘櫙锛氶噸鏂版煡璇㈣幏鍙栧凡瀛樺湪璁板綍锛岄伩鍏嶉噸澶�
+ log.warn("銆恞ueryHospUserInfoList銆戠敤鎴峰凡瀛樺湪(骞跺彂鎻掑叆)锛岃烦杩囷細userName={}", sysUser.getUserName());
+ SysUser existingUser = sysUser2Mapper.selectUserByUserName(sysUser.getUserName());
+ if (ObjectUtils.isNotEmpty(existingUser)) {
+ sysUser.setUserId(existingUser.getUserId());
+ }
+ }
}
// 澶勭悊鐢ㄦ埛涓庨儴闂ㄧ殑鍏崇郴
List businessDepts = (List<?>) dataItem.get("businessDepts");
- if (CollectionUtils.isEmpty(businessDepts)) {
- continue;
- }
+ if (CollectionUtils.isNotEmpty(businessDepts)) {
+ List<List<String>> deptInfoList = new ArrayList<>();
+ List<List<String>> hospInfoList = new ArrayList<>();
+ log.info("------businessDepts鏄惁鏈夊�硷細{}", businessDepts.size());
+ for (Object businessDept : businessDepts) {
+ if (businessDept instanceof Map) {
+ Map<String, Object> businessDeptMap = (Map<String, Object>) businessDept;
+ log.info("------businessDeptMap鏄惁鏈夊�硷細{}", businessDeptMap);
+ String hisDeptId = getStringValue(businessDeptMap, "deptId");
+ log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getOrgId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
+ //鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode锛屾寜闄㈠尯+鏈烘瀯鏌ョ瀹わ紝閬垮厤璺ㄩ櫌鍖烘煡閿�
+ SysDept sysDept = sysDeptMapper.selectDeptByCodeAndCampus(hisDeptId, reqVO.getOrgId(), reqVO.getCampusId() != null ? reqVO.getCampusId().toString() : null);
+ log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getCampusId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
+ if (Objects.isNull(sysDept)) continue;
+ SysUserDept sysUserDept = new SysUserDept();
+ sysUserDept.setUserId(sysUser.getUserId());
+ sysUserDept.setDeptType(sysDept.getDeptType());
+ sysUserDept.setDeptId(sysDept.getDeptId());
+ sysUserDept.setDeptCode(sysDept.getDeptCode());
+ sysUserDept.setDeptName(sysDept.getDeptName());
+ sysUserDept.setOrgid(sysDept.getOrgid());
+ sysUserDept.setCreateTime(new Date());
+ sysUserDept.setDelFlag(0L);
- List<List<String>> deptInfoList = new ArrayList<>();
- List<List<String>> hospInfoList = new ArrayList<>();
- log.info("------businessDepts鏄惁鏈夊�硷細{}", businessDepts.size());
- for (Object businessDept : businessDepts) {
- if (businessDept instanceof Map) {
- Map<String, Object> businessDeptMap = (Map<String, Object>) businessDept;
- log.info("------businessDeptMap鏄惁鏈夊�硷細{}", businessDeptMap);
-// Long hisDeptId = (Long) personnelDeptMap.get("deptId");
- String hisDeptId = getStringValue(businessDeptMap, "deptId");
- log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getOrgId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
- //鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode
- SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getOrgId());
- log.info("------hisDeptId鏄惁鏈夊�硷細{}, reqVO.getCampusId()鐨勫�间负:{}", hisDeptId, reqVO.getCampusId());
- if (Objects.isNull(sysDept)) continue;
- SysUserDept sysUserDept = new SysUserDept();
- sysUserDept.setUserId(sysUser.getUserId());
- sysUserDept.setDeptType(sysDept.getDeptType());
- sysUserDept.setDeptId(sysDept.getDeptId());
- sysUserDept.setDeptCode(sysDept.getDeptCode());
- sysUserDept.setDeptName(sysDept.getDeptName());
- sysUserDept.setOrgid(sysDept.getOrgid());
- sysUserDept.setCreateTime(new Date());
- sysUserDept.setDelFlag(0L);
-
- //鍒ゆ柇涓�涓嬫槸涓嶆槸宸茬粡瀛樺湪浜�
- if (ObjectUtils.isNotEmpty(sysUser1) && ObjectUtils.isNotEmpty(sysDept)) {
- SysUserDept sud = new SysUserDept();
- sud.setUserId(sysUser1.getUserId());
- sud.setDeptId(sysDept.getDeptId());
- List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sud);
- if (CollectionUtils.isNotEmpty(sysUserDepts)) {
- sysUserDept.setId(sysUserDepts.get(0).getId());
- sysUserDeptMapper.updateSysUserDept(sysUserDept);
+ //鍒ゆ柇涓�涓嬬敤鎴�-閮ㄩ棬鍏崇郴鏄笉鏄凡缁忓瓨鍦ㄤ簡锛堟棤璁烘柊鐢ㄦ埛杩樻槸鑰佺敤鎴烽兘闇�瑕佸幓閲嶏級
+ if (ObjectUtils.isNotEmpty(sysUser.getUserId()) && ObjectUtils.isNotEmpty(sysDept)) {
+ SysUserDept sud = new SysUserDept();
+ sud.setUserId(sysUser.getUserId());
+ sud.setDeptId(sysDept.getDeptId());
+ sud.setOrgid(sysDept.getOrgid());
+ List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sud);
+ if (CollectionUtils.isNotEmpty(sysUserDepts)) {
+ sysUserDept.setId(sysUserDepts.get(0).getId());
+ sysUserDeptMapper.updateSysUserDept(sysUserDept);
+ } else {
+ sysUserDeptMapper.insertSysUserDept(sysUserDept);
+ }
}
- } else {
- //涓嶅瓨鍦紝鍒欐柊澧�
- sysUserDeptMapper.insertSysUserDept(sysUserDept);
- }
- if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
- hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
- } else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
- deptInfoList.add(Arrays.asList(sysDept.getDeptCode()));
+ if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
+ hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
+ } else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
+ deptInfoList.add(Arrays.asList(sysDept.getDeptCode()));
+ }
}
}
+ //灏嗛儴闂ㄦ垜鐥呭尯鏀惧埌鎸囧畾瀛楁涓�
+ Gson gson = new Gson();
+ sysUser.setHospInfo(gson.toJson(hospInfoList));
+ sysUser.setDeptInfo(gson.toJson(deptInfoList));
+ sysUser2Mapper.updateUser(sysUser);
}
- //灏嗛儴闂ㄦ垜鐥呭尯鏀惧埌鎸囧畾瀛楁涓�
- Gson gson = new Gson();
- sysUser.setHospInfo(gson.toJson(hospInfoList));
- sysUser.setDeptInfo(gson.toJson(deptInfoList));
- sysUser2Mapper.updateUser(sysUser);
//璁剧疆涓�涓粯璁よ鑹诧紙鍖荤敓瑙掕壊锛�
List<SysUserRole> userRoleList = new ArrayList();
SysUserRole sur = new SysUserRole();
sur.setUserId(sysUser.getUserId());
- sur.setRoleId(3L);
+ sur.setRoleId(4L);
sur.setOrgid(sysUser.getOrgid());
//鍏堟煡璇竴涓嬶紝鏄惁瀛樺湪
- SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(sysUser.getUserId(), 3L);
+ SysUserRole sysUserRole = sysUserRoleMapper.selectUserRoleByRoleIdAndUserId(4L, sysUser.getUserId());
if (ObjectUtils.isNotEmpty(sysUserRole)) continue;
userRoleList.add(sur);
@@ -393,6 +408,13 @@
params.put("inpatientArea", null);
// params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList().get(0) : null);
params.put("status", null);
+ // 鍒嗛〉鍙傛暟锛堥棬鎬ヨ瘖鍒嗛〉閲囬泦鏃朵娇鐢級
+ if (reqVO.getCurrent() != null) {
+ params.put("current", reqVO.getCurrent());
+ }
+ if (reqVO.getSize() != null) {
+ params.put("size", reqVO.getSize());
+ }
return params;
}
@@ -450,11 +472,21 @@
}
private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, String campusId) {
- for (String type : types)
+ // 闂ㄨ瘖(FH0108.01)鍜屾�ヨ瘖(FH0108.03)鍦ㄤ笟鍔′笂鏄悓涓�绫绘暟鎹紝鍏辩敤鍚屼竴涓� resultList銆�
+ // 鑻� types 鍚屾椂鍖呭惈涓よ�咃紝outHospitalDate 浼氳璋冪敤涓ゆ瀵艰嚧閲嶅鍏ュ簱銆�
+ // 鍥犳鍙 types 涓惈鏈変换鎰忎竴涓棬鎬ヨ瘖绫诲瀷锛屽氨鍙鐞嗕竴娆°��
+ boolean outpProcessed = false;
+ for (String type : types) {
switch (type) {
case "FH0108.01":
- log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
- outHospitalDate(resultList);
+ case "FH0108.03":
+ if (!outpProcessed) {
+ log.info("銆恜arseResponseData銆戣В鏋愰棬鎬ヨ瘖鏁版嵁锛宼ypes={}", types);
+ outHospitalDate(resultList);
+ outpProcessed = true;
+ } else {
+ log.info("銆恜arseResponseData銆戦棬鎬ヨ瘖鏁版嵁宸插鐞嗭紝璺宠繃 type={}", type);
+ }
break;
case "FH0109.26":
log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
@@ -476,14 +508,11 @@
log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌锛堝叾浠栵級鏁版嵁");
inHospitalDate(resultList, cry);
break;
-// case "FH0108.03":
-// log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
-// outHospitalDate(resultList);
-// break;
default:
log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
break;
}
+ }
}
private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
@@ -537,6 +566,9 @@
patMedOuthosp.setCreateTime(new Date());
patMedOuthosp.setOrgid(dto.getOrgId());
patMedOuthosp.setCampusid(dto.getCampusId());
+ patMedOuthosp.setFuflag("1");
+ if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1"))
+ patMedOuthosp.setFuflag("0");
return patMedOuthosp;
}
@@ -578,8 +610,10 @@
queryInhosp.setInhospstate("3");
List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
if (CollectionUtils.isNotEmpty(patMedInhospList)) {
- //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+ //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼锛堥鍏ラ櫌鈫掑叆闄級
+ patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ log.info("鐢遍鍏ラ櫌鏇存柊涓哄叆闄細serialnum={}", patMedInhosp.getSerialnum());
} else {
//濡傛灉鍑洪櫌涓嶄负绌猴紝鍒欎笉杩涜澶勭悊
queryInhosp.setInhospstate("1");
@@ -600,37 +634,38 @@
}
} else if (cry.equals("1")) {
-// 鍑洪櫌鏁版嵁澶勭悊
- if (CollectionUtils.isEmpty(existingInhosps)) {
- //濡傛灉涓虹┖锛岃鍏堝垽鏂紝棰勫叆闄㈡槸鍚︽湁鍊硷紝鏈夊�肩殑璇濆垯鏇存柊
+ // 鍑洪櫌鏁版嵁澶勭悊
+ if (CollectionUtils.isNotEmpty(existingInhosps)) {
+ // 宸插瓨鍦ㄥ嚭闄㈣褰曪紝鐩存帴鏇存柊锛堜繚鎸佹渶鏂版暟鎹級
+ patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
+ patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ log.info("鍑洪櫌璁板綍宸插瓨鍦紝鎵ц鏇存柊锛歴erialnum={}, orgid={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
+ } else {
+ // 涓嶅瓨鍦ㄥ嚭闄㈣褰曪紝鍏堟煡棰勫叆闄紙state=3锛夛紝鍐嶆煡鍏ラ櫌锛坰tate=0锛�
queryInhosp.setInhospstate("3");
- log.info("-----patMedInhospList杩涙潵浜嗕笉锛熷叆鍙備负锛歿}", queryInhosp);
+ log.info("-----鏌ヨ棰勫叆闄㈣褰曪紝鍏ュ弬涓猴細{}", queryInhosp);
List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
- log.info("----patMedInhospList杩涙潵浜嗕笉锛熻繑鍙備负锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? null : patMedInhospList.get(0).getSerialnum());
+ log.info("----棰勫叆闄㈡煡璇㈢粨鏋滐細{}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.get(0).getSerialnum());
if (CollectionUtils.isNotEmpty(patMedInhospList)) {
- //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+ // 瀛樺湪棰勫叆闄㈣褰曪紝鏇存柊涓哄嚭闄㈢姸鎬�
+ patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ log.info("鐢遍鍏ラ櫌鏇存柊涓哄嚭闄細serialnum={}", patMedInhosp.getSerialnum());
} else {
- //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
+ // 鍐嶆煡鍏ラ櫌璁板綍锛坰tate=0锛�
queryInhosp.setInhospstate("0");
patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+ log.debug("鍏ラ櫌鏌ヨ缁撴灉锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.size());
if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+ // 瀛樺湪鍏ラ櫌璁板綍锛屾洿鏂颁负鍑洪櫌鐘舵��
+ patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
patMedInhospService.updatePatMedInhosp(patMedInhosp);
- }
- }
-
- //濡傛灉閮戒负绌猴紝鍒欒繘琛屾柊澧�
- if (CollectionUtils.isEmpty(patMedInhospList)) {
- //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
- queryInhosp.setInhospstate("0");
- log.debug("鍑洪櫌queryInhosp鍏ュ弬涓猴細{}", queryInhosp);
- List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
- log.debug("鍑洪櫌patMedInhospList杩斿弬涓猴細{}", CollectionUtils.isEmpty(patMedInhosps) ? null : patMedInhosps.size());
- if (CollectionUtils.isNotEmpty(patMedInhosps)) {
- patMedInhospService.updatePatMedInhosp(patMedInhosp);
+ log.info("鐢卞叆闄㈡洿鏂颁负鍑洪櫌锛歴erialnum={}", patMedInhosp.getSerialnum());
} else {
+ // 棰勫叆闄㈠拰鍏ラ櫌鍧囦笉瀛樺湪锛岀洿鎺ユ柊澧炲嚭闄㈣褰�
try {
patMedInhospService.insertPatMedInhosp(patMedInhosp);
+ log.info("鏂板鍑洪櫌璁板綍锛歴erialnum={}", patMedInhosp.getSerialnum());
} catch (org.springframework.dao.DuplicateKeyException e) {
log.warn("鍑洪櫌璁板綍宸插瓨鍦紝璺宠繃锛歴erialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
}
@@ -655,6 +690,8 @@
if (locked == null || Boolean.TRUE.equals(locked)) {
try {
queryInhosp.setInhospstate(null);
+ queryInhosp.setSchemestatus(null);
+ queryInhosp.setPatno(null);
List<PatMedInhosp> patMedInhospList3 = patMedInhospService.selectPatMedInhosp(queryInhosp);
if (CollectionUtils.isEmpty(patMedInhospList3)) {
try {
@@ -688,10 +725,45 @@
patMedInhosp.setNurseId(dto.getChiefNurseId() == null ? "" : dto.getChiefNurseId().toString());
patMedInhosp.setNurseName(dto.getChiefNurseName());
patMedInhosp.setSerialnum(dto.getHealthcareRecordNo());
+ patMedInhosp.setInhospno(dto.getHealthcareRecordNo());
patMedInhosp.setFuflag("1");
- if ("0".equals(cry)) patMedInhosp.setInhospstate("0");
- if ("1".equals(cry)) patMedInhosp.setInhospstate("1");
- if ("3".equals(cry)) patMedInhosp.setInhospstate("3");
+
+
+ if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1"))
+ patMedInhosp.setFuflag("0");
+ if ("0".equals(cry)) {
+ patMedInhosp.setInhospstate("0");
+ if (CollectionUtils.isNotEmpty(dto.getDiagnosisList()) && dto.getDiagnosisList().size() > 0) {
+ for (ServiceSLTDDiagnosisResDTO diagnosis : dto.getDiagnosisList()) {
+ if (diagnosis.getIsMainDiagnosis() == 1) {
+ patMedInhosp.setDiagname(diagnosis.getDiagnosisDictName() == null ? "" : diagnosis.getDiagnosisDictName());
+ patMedInhosp.setIcd10code(diagnosis.getDiagnosisDictCode() == null ? "" : diagnosis.getDiagnosisDictCode());
+ }
+ }
+ }
+ }
+ if ("1".equals(cry)) {
+ patMedInhosp.setInhospstate("1");
+ ServiceSLTDDiagnosisResDTO mainDischargeDiagnosis = dto.getMainDischargeDiagnosis();
+ log.info("-----------mainDischargeDiagnosis鐨勫�兼湁浜嗗悧?{}", mainDischargeDiagnosis);
+ if (!Objects.isNull(mainDischargeDiagnosis)) {
+ if (mainDischargeDiagnosis.getIsMainDiagnosis() == 1) {
+ patMedInhosp.setLeavediagname(StringUtils.defaultString(mainDischargeDiagnosis.getDiagnosisDictName(), ""));
+ patMedInhosp.setLeaveicd10code(StringUtils.defaultString(mainDischargeDiagnosis.getDiagnosisDictCode(), ""));
+ }
+ }
+ }
+ if ("3".equals(cry)) {
+ patMedInhosp.setInhospstate("3");
+ if (CollectionUtils.isNotEmpty(dto.getDiagnosisList()) && dto.getDiagnosisList().size() > 0) {
+ for (ServiceSLTDDiagnosisResDTO diagnosis : dto.getDiagnosisList()) {
+ if (diagnosis.getIsMainDiagnosis() == 1) {
+ patMedInhosp.setDiagname(diagnosis.getDiagnosisDictName() == null ? "" : diagnosis.getDiagnosisDictName());
+ patMedInhosp.setIcd10code(diagnosis.getDiagnosisDictCode() == null ? "" : diagnosis.getDiagnosisDictCode());
+ }
+ }
+ }
+ }
patMedInhosp.setHospitalcode(dto.getOrgId());
patMedInhosp.setBedNo(dto.getBedNumber());
patMedInhosp.setStarttime(parseDate(dto.getStartTime()));
@@ -736,17 +808,52 @@
}
private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
- PatArchive queryArchive = new PatArchive();
- queryArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
- List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);
+ List<PatArchive> existingArchives = null;
+
+ // 绗竴姝ワ細鎸� patientno 绮剧‘鏌ラ噸锛堜笌鎻掑叆鏃朵娇鐢ㄧ殑 medicalRecordNo 涓�鑷达級
+ String patientno = dto.getMedicalRecordNo() == null ? null : String.valueOf(dto.getMedicalRecordNo());
+ if (StringUtils.isNotEmpty(patientno)) {
+ PatArchive queryByPatientNo = new PatArchive();
+ queryByPatientNo.setPatientno(patientno);
+ existingArchives = patArchiveService.selectPatArchiveList(queryByPatientNo);
+ }
+
+ // 绗簩姝ワ細鎸� patientno 鏌ヤ笉鍒版椂锛屾寜 idcardno 鏌ラ噸锛堝垎姝R锛岄伩鍏岮ND鏉′欢婕忔煡锛�
+ if (CollectionUtils.isEmpty(existingArchives) && StringUtils.isNotEmpty(dto.getIdCardNo())) {
+ PatArchive queryByIdCard = new PatArchive();
+ queryByIdCard.setIdcardno(dto.getIdCardNo().trim());
+ existingArchives = patArchiveService.selectPatArchiveList(queryByIdCard);
+ }
+
+ // 绗笁姝ワ細鎸� patidHis 鏌ラ噸锛堝吋瀹规棫鏁版嵁锛屾棫鏁版嵁鍙兘浠� patientId 瀛樹负 patientno锛�
+ if (CollectionUtils.isEmpty(existingArchives) && dto.getPatientId() != null) {
+ PatArchive queryByPatidHis = new PatArchive();
+ queryByPatidHis.setPatientno(String.valueOf(dto.getPatientId()));
+ existingArchives = patArchiveService.selectPatArchiveList(queryByPatidHis);
+ }
PatArchive patArchive = buildPatientArchive(dto);
if (CollectionUtils.isEmpty(existingArchives)) {
- patArchiveService.insertPatArchive(patArchive);
- log.debug("銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
+ try {
+ patArchiveService.insertPatArchive(patArchive);
+ log.debug("銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
+ } catch (org.springframework.dao.DuplicateKeyException e) {
+ log.warn("銆恜rocessPatientArchive銆戞偅鑰呮。妗堝凡瀛樺湪(骞跺彂鎻掑叆)锛岃烦杩囷細patientno={}, idcardno={}", patArchive.getPatientno(), patArchive.getIdcardno());
+ // 骞跺彂鎻掑叆鍦烘櫙锛岄噸鏂版煡璇㈣幏鍙栧凡瀛樺湪鐨勮褰�
+ PatArchive queryRetry = new PatArchive();
+ queryRetry.setPatientno(patArchive.getPatientno());
+ existingArchives = patArchiveService.selectPatArchiveList(queryRetry);
+ if (CollectionUtils.isNotEmpty(existingArchives)) {
+ patArchive.setId(existingArchives.get(0).getId());
+ patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
+ patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
+ }
+ }
} else {
patArchive.setId(existingArchives.get(0).getId());
+ patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
+ patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
patArchiveService.updateArchive(patArchive);
log.debug("銆恜rocessPatientArchive銆戞洿鏂版偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
}
@@ -756,7 +863,8 @@
private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {
PatArchive patArchive = new PatArchive();
- patArchive.setPatientno("" + dto.getPatientId());
+ patArchive.setPatientno(dto.getMedicalRecordNo() == null ? null : String.valueOf(dto.getMedicalRecordNo()));
+ patArchive.setPatidHis(dto.getPatientId() == null ? null : String.valueOf(dto.getPatientId()));
patArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
patArchive.setName(dto.getPatientName());
patArchive.setSourcefrom(2L);
@@ -835,7 +943,17 @@
dto.setCostNatureName(getStringValue(dataItem, "costNatureName"));
dto.setCostNatureCode(getStringValue(dataItem, "costNatureCode"));
dto.setFurtherConsultationStatus(getIntegerValue(dataItem, "furtherConsultationStatus"));
-
+ Object mainDiagObj = dataItem.get("mainDischargeDiagnosis");
+ if (mainDiagObj instanceof Map) {
+ Map<String, Object> mainDiagMap = (Map<String, Object>) mainDiagObj;
+ ServiceSLTDDiagnosisResDTO mainDiag = new ServiceSLTDDiagnosisResDTO();
+ mainDiag.setDiagnosisDictCode(getStringValue(mainDiagMap, "diagnosisDictCode"));
+ mainDiag.setDiagnosisDictName(getStringValue(mainDiagMap, "diagnosisDictName"));
+ mainDiag.setDiagnosisCategory(getStringValue(mainDiagMap, "diagnosisCategory"));
+ mainDiag.setRecordType(getIntegerValue(mainDiagMap, "recordType"));
+ mainDiag.setIsMainDiagnosis(getIntegerValue(mainDiagMap, "isMainDiagnosis"));
+ dto.setMainDischargeDiagnosis(mainDiag);
+ }
Object contactsObj = dataItem.get("residentContactInfos");
if (contactsObj instanceof List) {
dto.setResidentContactInfos(parseContacts((List<?>) contactsObj));
--
Gitblit v1.9.3