From fcb98e4558897945a316d04555923355b8e60605 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 21 七月 2026 10:16:56 +0800
Subject: [PATCH] Merge branch 'master' into master-任务组
---
smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java | 288 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 244 insertions(+), 44 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 edc7410..2ada147 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -63,6 +63,12 @@
private SysUserRole2Mapper sysUserRoleMapper;
@Autowired
+ private MedicationItemMapper medicationItemMapper;
+
+ @Autowired
+ private MedicationDoseInfoMapper medicationDoseInfoMapper;
+
+ @Autowired
private RedisTemplate<String, String> redisTemplate;
@Value("${sltd_pub_path}")
@@ -74,13 +80,22 @@
@Value("${lwl_app_key}")
private String APP_KEY;
+
+ @Value("${spring.profiles.active}")
+ private String active;
+
@Override
public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
try {
Map<String, Object> requestParams = buildRequestParams(reqVO);
Map<String, String> headers = buildRequestHeaders();
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 result = null;
+ if (reqVO.getSize() == null && reqVO.getCurrent() == null)
+ result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
+ else
+ result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcPageHealthcareRecordList", new Gson().toJson(requestParams), headers);
+ log.info("queryHealthcareRecordList--result杩斿洖鐨勭粨鏋滃�硷細{}", result == null ? "绌哄��" : "鏈夊��");
String cry = determineCry(reqVO);
log.info("cry鐨勫�间负锛歿}", cry);
@@ -91,6 +106,31 @@
log.error("銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
throw new RuntimeException("璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触:" + e.getMessage());
}
+ }
+
+ @Override
+ public Boolean queryMedicationItemList(ServiceSLTDInhospReqVO reqVO) {
+ try {
+ Map<String, Object> requestParams = buildRequestParams(reqVO);
+ Map<String, String> headers = buildRequestHeaders();
+ log.info("璇锋眰鍙傝嵂鍝佷俊鎭湴鍧�锛歿},appKey:{}", sltdPubPath + "/hbos-thirdparty-integration/standard/base/mc/service/medication/queryMedicationInfoPage", APP_KEY);
+ String result = HttpUtils.sendPostByHeader(sltdPubPath + "/hbos-thirdparty-integration/standard/base/mc/service/medication/queryMedicationInfoPage", new Gson().toJson(requestParams), headers);
+ List<Map<String, Object>> dataList = getDataList(result, 2);
+ for (Map<String, Object> dataItem : dataList) {
+ MedicationItem medicationItem = convertToMedication(dataItem);
+ log.info("medicationItem鐨勫�间负锛歿}", medicationItem);
+ medicationItemMapper.insertMedicationItem(medicationItem);
+ List<MedicationDoseInfo> doseInfoList = medicationItem.getDoseInfoList();
+ for (MedicationDoseInfo doseInfo : doseInfoList) {
+ doseInfo.setMedicationItemId(medicationItem.getId());
+ medicationDoseInfoMapper.insertMedicationDoseInfo(doseInfo);
+ }
+ }
+ } catch (Exception e) {
+ log.error("銆恞ueryMedicationItemList銆戣皟鐢ㄧ渷绔嬪悓寰疯嵂鍝佷俊鎭煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
+ throw new RuntimeException(e);
+ }
+ return true;
}
@@ -132,7 +172,7 @@
Map<String, String> headers = buildRequestHeaders();
String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/dept/queryDeptList", new Gson().toJson(params), headers);
log.info("銆恞ueryDeptWardAreaInfoList銆戞帴鍙e搷搴旂粨鏋滐細{}", StringUtils.isEmpty(result) ? "绌虹殑" : "涓嶇┖");
- List<Map<String, Object>> dataList = getDataList(result);
+ List<Map<String, Object>> dataList = getDataList(result, 1);
log.info("-----------dataList鎺ュ彛鍝嶅簲缁撴灉锛歿}", dataList.size());
for (Map<String, Object> dataItem : dataList) {
SysDept sysDept = new SysDept();
@@ -188,20 +228,6 @@
return true;
}
- @Override
- public void aa(Map<String, Object> map) {
- List<String> types = new ArrayList<>();
- types.add("FH0109.27");
- ObjectMapper objectMapper = new ObjectMapper();
- try {
- String jsonString = objectMapper.writeValueAsString(map);
- parseResponseData(jsonString, types, "1", "20001001");
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
-
- }
-
/**
* 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅
@@ -215,7 +241,7 @@
Map<String, String> headers = buildRequestHeaders();
String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/staff/queryStaffList", new Gson().toJson(requestParams), headers);
log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滄槸鍚︽湁鍊硷細{}", StringUtils.isEmpty(result) ? "娌″��" : "鏈夊��");
- List<Map<String, Object>> dataList = getDataList(result);
+ List<Map<String, Object>> dataList = getDataList(result, 1);
for (Map<String, Object> dataItem : dataList) {
SysUser sysUser = new SysUser();
if (StringUtils.isEmpty(getStringValue(dataItem, "accountNo"))) {
@@ -351,17 +377,25 @@
}
private String determineCry(ServiceSLTDInhospReqVO reqVO) {
- if (CollectionUtils.isEmpty(reqVO.getStatusList())) return null;
-
- if (reqVO.getStatusList().contains("FH0109.26")) {
- //鍏ラ櫌
- return "0";
- } else if (reqVO.getStatusList().contains("FH0109.27")) {
- //鍑洪櫌
- return "1";
- } else if (reqVO.getStatusList().contains("FH0109.22") || reqVO.getStatusList().contains("FH0109.23") || reqVO.getStatusList().contains("FH0109.53")) {
- //棰勫叆闄�
- return "3";
+ if (CollectionUtils.isEmpty(reqVO.getStatusList()) && CollectionUtils.isEmpty(reqVO.getHealthcareRecordTypeList()))
+ return null;
+ if (reqVO.getStatusList() != null) {
+ if (reqVO.getStatusList().contains("FH0109.24")) {
+ //鍏ラ櫌
+ return "0";
+ } else if (reqVO.getStatusList().contains("FH0109.27")) {
+ //鍑洪櫌
+ return "1";
+ } else if (reqVO.getStatusList().contains("FH0109.22") || reqVO.getStatusList().contains("FH0109.23") || reqVO.getStatusList().contains("FH0109.53")) {
+ //棰勫叆闄�
+ return "3";
+ }
+ }
+ if (reqVO.getHealthcareRecordTypeList() != null) {
+ if (reqVO.getHealthcareRecordTypeList().contains("FH0108.03") || reqVO.getHealthcareRecordTypeList().contains("FH0108.01")) {
+ //闂ㄦ�ヨ瘖
+ return "4";
+ }
}
return null;
}
@@ -372,7 +406,7 @@
params.put("orgId", Long.parseLong(reqVO.getOrgId()));
}
if (reqVO.getCampusId() != null) {
- params.put("campusId", reqVO.getCampusId());
+ params.put("campusIds", reqVO.getCampusId());
}
if (reqVO.getStartHeadTime() != null) {
params.put("startHeadTime", reqVO.getStartHeadTime());
@@ -427,12 +461,13 @@
private List<ServiceSLTDInhospResDTO> parseResponseData(String result, List<String> types, String cry, String campusId) {
try {
- List<Map<String, Object>> dataList = getDataList(result);
+ List<Map<String, Object>> dataList = getDataList(result, cry.equals("4") ? 2 : 1);
+ log.info("銆恜arseResponseData銆戞垚鍔熻В鏋恉ataList:{}鏉″仴搴疯褰曟暟鎹�", dataList.size());
List<ServiceSLTDInhospResDTO> resultList = new ArrayList<>();
for (Map<String, Object> dataItem : dataList) {
resultList.add(convertToDTO(dataItem));
}
- log.info("銆恜arseResponseData銆戞垚鍔熻В鏋恵}鏉″仴搴疯褰曟暟鎹�", resultList.size());
+ log.info("銆恜arseResponseData銆戞垚鍔熻В鏋恟esultList:{}鏉″仴搴疯褰曟暟鎹�", resultList.size());
processResultList(resultList, types, cry, campusId);
return resultList;
@@ -442,11 +477,20 @@
}
}
- public List<Map<String, Object>> getDataList(String result) {
+ /**
+ * 瑙f瀽鎺ュ彛杩斿洖鏁版嵁
+ *
+ * @param result 鎺ュ彛杩斿洖鏁版嵁
+ * @param flag 1浠h〃锛屾暟缁勫湪data閲岋紝2浠h〃鏁扮粍鍦╠ata/records閲�
+ * @return 瑙f瀽鍚庣殑鏁版嵁鍒楄〃
+ */
+
+ public List<Map<String, Object>> getDataList(String result, Integer flag) {
Gson gson = new Gson();
Type mapType = new TypeToken<Map<String, Object>>() {
}.getType();
Map<String, Object> responseMap = gson.fromJson(result, mapType);
+ log.info("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹殑responseMap锛歿}", Objects.isNull(responseMap) ? "绌虹殑" : "鏈夊��");
Number codeNum = (Number) responseMap.get("code");
String code = BigDecimal.valueOf(codeNum.longValue()).toPlainString();
if (StringUtils.isEmpty(code) || !code.equals("200")) {
@@ -455,15 +499,30 @@
}
Object dataObj = responseMap.get("data");
+ if (flag == 1) {
+ dataObj = responseMap.get("data");
+ } else if (flag == 2) {
+ //闂ㄦ�ヨ瘖鐨勫垎椤垫暟鎹槸鍦╮ecords涓�
+ dataObj = ((Map<String, Object>) responseMap.get("data")).get("records");
+ log.info("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹殑dataObj锛歿}", Objects.isNull(dataObj) ? "绌虹殑" : "鏈夊��");
+ }
if (dataObj == null) {
log.info("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌�");
return new ArrayList<>();
}
- String dataJson = gson.toJson(dataObj);
- Type listType = new TypeToken<List<Map<String, Object>>>() {
- }.getType();
- List<Map<String, Object>> dataList = gson.fromJson(dataJson, listType);
+ // 鍏煎data涓烘暟缁勬垨瀵硅薄涓ょ鎯呭喌锛氭帴鍙f甯告椂data涓篬{...}]鏁扮粍锛�
+ // 寮傚父鎴栫┖鏁版嵁鏃跺彲鑳借繑鍥瀧}瀵硅薄锛岀洿鎺ユ寜List瑙f瀽浼氭姏JsonSyntaxException
+ List<Map<String, Object>> dataList;
+ if (dataObj instanceof List) {
+ String dataJson = gson.toJson(dataObj);
+ Type listType = new TypeToken<List<Map<String, Object>>>() {
+ }.getType();
+ dataList = gson.fromJson(dataJson, listType);
+ } else {
+ log.info("銆恜arseResponseData銆戞帴鍙h繑鍥瀌ata涓嶆槸鏁扮粍锛岃�屾槸瀵硅薄绫诲瀷锛宒ata鍐呭锛歿}", gson.toJson(dataObj));
+ return new ArrayList<>();
+ }
// 浣跨敤 Set 鍘婚噸锛岀‘淇濇病鏈夐噸澶嶇殑鏁版嵁
Set<Map<String, Object>> uniqueDataSet = new HashSet<>(dataList);
@@ -488,7 +547,7 @@
log.info("銆恜arseResponseData銆戦棬鎬ヨ瘖鏁版嵁宸插鐞嗭紝璺宠繃 type={}", type);
}
break;
- case "FH0109.26":
+ case "FH0109.24":
log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
inHospitalDate(resultList, cry);
break;
@@ -695,6 +754,14 @@
List<PatMedInhosp> patMedInhospList3 = patMedInhospService.selectPatMedInhosp(queryInhosp);
if (CollectionUtils.isEmpty(patMedInhospList3)) {
try {
+ //鑾峰彇涓�涓嬪叆闄㈢敵璇峰崟
+ Map<String, String> headers = buildRequestHeaders();
+ Map<String, Object> requestParams = new HashMap<>();
+ requestParams.put("orgId", "20001001");
+ requestParams.put("20001001", patArchive.getPatidHis());
+ String result = HttpUtils.sendPostByHeader(sltdPubPath + "/hospitalizedApply/query", new Gson().toJson(requestParams), headers);
+
+
patMedInhospService.insertPatMedInhosp(patMedInhosp);
log.debug("鎴愬姛鎻掑叆棰勫叆闄㈣褰曪細serialnum={}", patMedInhosp.getSerialnum());
} catch (Exception e) {
@@ -781,6 +848,18 @@
patMedInhosp.setDelFlag("0");
patMedInhosp.setOrgid(dto.getOrgId());
patMedInhosp.setCampusid(dto.getCampusId());
+ if (StringUtils.isNotEmpty(dto.getHealthcareRecordStatus()) && dto.getHealthcareRecordStatus().equals("FH0109.25"))
+ patMedInhosp.setRemark("棰勫嚭闄�");
+ if (active.equals("nhfy") && dto.getAreaId() != null && dto.getAreaId().toString().equals("40003483") && StringUtils.isNotEmpty(patMedInhosp.getPatname())) {
+ //鍗楀崕闄勪竴鐨勪骇绉戯紝瑕佹眰涓嶇敓鎴愨�滀箣瀛愩�佷箣濂炽�佷箣濠粹�濈殑闅忚浠诲姟
+ if (patMedInhosp.getPatname().contains("涔嬪瓙") || patMedInhosp.getPatname().contains("涔嬪コ") || patMedInhosp.getPatname().contains("涔嬪┐")) {
+ patMedInhosp.setDeptcheckFlag("3");
+ patMedInhosp.setWardcheckFlag("3");
+ patMedInhosp.setDiagcheckFlag("3");
+ patMedInhosp.setRemark(patMedInhosp.getRemark() + ";涓嶇敓鎴愪箣瀛愩�佷箣濂炽�佷箣濠撮棶鍗�");
+ }
+ }
+
return patMedInhosp;
}
@@ -807,15 +886,50 @@
patMedInhosp.setHospitaldistrictname(dto.getAreaName());
}
+ /**
+ * 澶勭悊鎮h�呮。妗堬紙鏂板鎴栨洿鏂帮級
+ * 浣跨敤 Redis 鍒嗗竷寮忛攣闃叉骞跺彂閲嶅鎻掑叆
+ */
private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
- List<PatArchive> existingArchives = null;
+ // 鏋勫缓閿佺殑 key锛氬熀浜� patientno 鎴� idcardno
+ String lockKey = "pat_archive_lock:" + (StringUtils.isNotEmpty(dto.getMedicalRecordNo()) ? dto.getMedicalRecordNo() : dto.getIdCardNo());
+ // 灏濊瘯鑾峰彇鍒嗗竷寮忛攣锛屾渶澶氱瓑寰� 3 绉掞紝閿佸畾 10 绉掕嚜鍔ㄩ噴鏀�
+ Boolean lockAcquired = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", 10, TimeUnit.SECONDS);
+
+ if (lockAcquired == null || !lockAcquired) {
+ log.warn("銆恜rocessPatientArchive銆戣幏鍙栧垎甯冨紡閿佸け璐ワ紝璺宠繃鏈澶勭悊锛堝叾浠栫嚎绋嬫鍦ㄥ鐞嗭級锛宲atientno={}", dto.getMedicalRecordNo());
+ // 绛夊緟涓�娈垫椂闂村悗閲嶈瘯鏌ヨ
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ try {
+ return doProcessPatientArchive(dto);
+ } finally {
+ // 閲婃斁閿�
+ if (lockAcquired != null && lockAcquired) {
+ redisTemplate.delete(lockKey);
+ }
+ }
+ }
+
+ /**
+ * 瀹為檯鎵ц鎮h�呮。妗堝鐞嗛�昏緫
+ */
+ private PatArchive doProcessPatientArchive(ServiceSLTDInhospResDTO dto) {
+ List<PatArchive> existingArchives = null;
+ log.info("銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鏌ヨ鍏ュ弬淇℃伅patientno:{}锛宨dcardno:{}", dto.getMedicalRecordNo(), dto.getIdCardNo());
// 绗竴姝ワ細鎸� patientno 绮剧‘鏌ラ噸锛堜笌鎻掑叆鏃朵娇鐢ㄧ殑 medicalRecordNo 涓�鑷达級
- String patientno = dto.getMedicalRecordNo() == null ? null : String.valueOf(dto.getMedicalRecordNo());
+ String patientno = StringUtils.isEmpty(dto.getMedicalRecordNo()) ? null : dto.getMedicalRecordNo();
if (StringUtils.isNotEmpty(patientno)) {
PatArchive queryByPatientNo = new PatArchive();
queryByPatientNo.setPatientno(patientno);
existingArchives = patArchiveService.selectPatArchiveList(queryByPatientNo);
+ log.debug("銆恜rocessPatientArchive銆戞寜patientno鏌ヨ锛宲atientno={}, 缁撴灉鏁伴噺={}", patientno, existingArchives.size());
}
// 绗簩姝ワ細鎸� patientno 鏌ヤ笉鍒版椂锛屾寜 idcardno 鏌ラ噸锛堝垎姝R锛岄伩鍏岮ND鏉′欢婕忔煡锛�
@@ -823,24 +937,51 @@
PatArchive queryByIdCard = new PatArchive();
queryByIdCard.setIdcardno(dto.getIdCardNo().trim());
existingArchives = patArchiveService.selectPatArchiveList(queryByIdCard);
+ log.debug("銆恜rocessPatientArchive銆戞寜idcardno鏌ヨ锛宨dcardno={}, 缁撴灉鏁伴噺={}", dto.getIdCardNo(), existingArchives.size());
}
PatArchive patArchive = buildPatientArchive(dto);
+ log.info("銆恜rocessPatientArchive銆戞偅鑰呮。妗堟煡閲嶅畬鎴愶紝patientno={}, 鏄惁宸插瓨鍦�={}", patArchive.getPatientno(), CollectionUtils.isEmpty(existingArchives) ? "鍚�" : "鏄�(id=" + existingArchives.get(0).getId() + ")");
if (CollectionUtils.isEmpty(existingArchives)) {
try {
- patArchiveService.insertPatArchive(patArchive);
- log.info("銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
+ // 鏈�缁堢‘璁ゆ煡璇紙闃插尽鎬х紪绋嬶細闃叉Redis閿佸け鏁堢瓑鏋佺鎯呭喌锛�
+ PatArchive finalQuery = new PatArchive();
+ if (StringUtils.isNotEmpty(dto.getIdCardNo())) {
+ finalQuery.setIdcardno(dto.getIdCardNo().trim());
+ }
+ if (StringUtils.isNotEmpty(dto.getMedicalRecordNo())) {
+ finalQuery.setPatientno(dto.getMedicalRecordNo());
+ }
+
+ List<PatArchive> finalCheck = patArchiveService.selectPatArchiveList(finalQuery);
+ log.info("銆恜rocessPatientArchive銆戞渶缁堢‘璁ゆ煡璇紝patientno={}, idcardno={}, 缁撴灉鏁伴噺={}", dto.getMedicalRecordNo(), dto.getIdCardNo(), finalCheck.size());
+
+ if (CollectionUtils.isEmpty(finalCheck)) {
+ patArchiveService.insertPatArchive(patArchive);
+ log.info("銆恜rocessPatientArchive銆戔湏 鏂板鎮h�呮。妗堟垚鍔燂紝patientno={}, id={}", patArchive.getPatientno(), patArchive.getId());
+ } else {
+ // 鍏朵粬绾跨▼宸茬粡鎻掑叆锛岀洿鎺ヤ娇鐢ㄥ凡鏈夎褰�
+ existingArchives = finalCheck;
+ patArchive.setId(existingArchives.get(0).getId());
+ patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
+ patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
+ log.info("銆恜rocessPatientArchive銆戞。妗堝凡琚叾浠栫嚎绋嬪垱寤猴紝浣跨敤宸叉湁璁板綍锛宨d={}", patArchive.getId());
+ }
} catch (org.springframework.dao.DuplicateKeyException e) {
- log.error("銆恜rocessPatientArchive銆戞偅鑰呮。妗堝凡瀛樺湪(骞跺彂鎻掑叆)锛岃烦杩囷細patientno={}, idcardno={}", patArchive.getPatientno(), patArchive.getIdcardno());
+ log.warn("銆恜rocessPatientArchive銆戞偅鑰呮。妗堝凡瀛樺湪(骞跺彂鎻掑叆寮傚父)锛岃烦杩囷細patientno={}, idcardno={}", patArchive.getPatientno(), patArchive.getIdcardno());
// 骞跺彂鎻掑叆鍦烘櫙锛岄噸鏂版煡璇㈣幏鍙栧凡瀛樺湪鐨勮褰�
PatArchive queryRetry = new PatArchive();
queryRetry.setPatientno(patArchive.getPatientno());
+ if (StringUtils.isNotEmpty(patArchive.getIdcardno())) {
+ queryRetry.setIdcardno(patArchive.getIdcardno());
+ }
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());
+ log.info("銆恜rocessPatientArchive銆戜粠寮傚父鎭㈠锛岃幏鍙栧凡鏈夋。妗堬紝id={}", patArchive.getId());
}
}
} else {
@@ -848,7 +989,7 @@
patArchive.setNotrequiredFlag(existingArchives.get(0).getNotrequiredFlag());
patArchive.setNotrequiredreason(existingArchives.get(0).getNotrequiredreason());
patArchiveService.updateArchive(patArchive);
- log.info("銆恜rocessPatientArchive銆戞洿鏂版偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}", patArchive.getPatientno());
+ log.info("銆恜rocessPatientArchive銆戔湏 鏇存柊鎮h�呮。妗堬紝patientno={}, id={}", patArchive.getPatientno(), patArchive.getId());
}
return patArchive;
@@ -856,7 +997,7 @@
private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {
PatArchive patArchive = new PatArchive();
- patArchive.setPatientno(dto.getMedicalRecordNo() == null ? null : String.valueOf(dto.getMedicalRecordNo()));
+ patArchive.setPatientno(StringUtils.isEmpty(dto.getMedicalRecordNo()) ? null : 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());
@@ -960,6 +1101,55 @@
return dto;
}
+ private MedicationItem convertToMedication(Map<String, Object> dataItem) {
+ MedicationItem dto = new MedicationItem();
+ dto.setOrgId(getLongValue(dataItem, "orgId"));
+ dto.setIdentificationCode(getStringValue(dataItem, "identificationCode"));
+ dto.setWbm(getStringValue(dataItem, "wbm"));
+ dto.setMedicationCommonName(getStringValue(dataItem, "medicationCommonName"));
+ dto.setManufacturerName(getStringValue(dataItem, "manufacturerName"));
+ dto.setItemCode(getStringValue(dataItem, "itemCode"));
+ dto.setSmallLargePackageRatio(getLongValue(dataItem, "smallLargePackageRatio"));
+ dto.setRemark(getStringValue(dataItem, "remark"));
+ dto.setItemName(getStringValue(dataItem, "itemName"));
+ dto.setMedicationType(getStringValue(dataItem, "medicationType"));
+ Object mainDiagObj = dataItem.get("doseInfoList");
+ List<MedicationDoseInfo> doseInfoList = new ArrayList<>();
+ if (mainDiagObj instanceof List) {
+ List<Map<String, Object>> mainDiagList = (List<Map<String, Object>>) mainDiagObj;
+ for (Map<String, Object> mainDiagMap : mainDiagList) {
+ MedicationDoseInfo medicationDoseInfo = new MedicationDoseInfo();
+ medicationDoseInfo.setDoseSmallPackageRation(getBigDecimalValue(mainDiagMap, "doseSmallPackageRation"));
+ medicationDoseInfo.setDose(getLongValue(mainDiagMap, "dose"));
+ medicationDoseInfo.setDoseSmallPackageNum(getLongValue(mainDiagMap, "doseSmallPackageNum"));
+ medicationDoseInfo.setDoseUnit(getStringValue(mainDiagMap, "doseUnit"));
+ medicationDoseInfo.setDoseUnitType(getLongValue(mainDiagMap, "doseUnitType"));
+ doseInfoList.add(medicationDoseInfo);
+ }
+ }
+ dto.setDoseInfoList(doseInfoList);
+ dto.setAntimicrobialGradeCode(getStringValue(dataItem, "antimicrobialGradeCode"));
+ dto.setLicenseNumber(getStringValue(dataItem, "licenseNumber"));
+ dto.setDefaultUsageName(getStringValue(dataItem, "defaultUsageName"));
+ dto.setSpecialDrugsName(getStringValue(dataItem, "specialDrugsName"));
+ dto.setAntimicrobialGradeName(getStringValue(dataItem, "antimicrobialGradeName"));
+ dto.setCommonPinyin(getStringValue(dataItem, "commonPinyin"));
+ dto.setCommonWbm(getStringValue(dataItem, "commonWbm"));
+ dto.setManufacturerId(getLongValue(dataItem, "manufacturerId"));
+ dto.setDefaultUsageId(getLongValue(dataItem, "defaultUsageId"));
+ dto.setSpecification(getStringValue(dataItem, "specification"));
+ dto.setSmallPackageUnit(getStringValue(dataItem, "smallPackageUnit"));
+ dto.setItemId(getLongValue(dataItem, "itemId"));
+ dto.setSpecialDrugsCode(getStringValue(dataItem, "specialDrugsCode"));
+ dto.setPinyin(getStringValue(dataItem, "pinyin"));
+ dto.setDoseFormName(getStringValue(dataItem, "doseFormName"));
+ dto.setLargePackageUnit(getStringValue(dataItem, "largePackageUnit"));
+ dto.setRetailPrice(getBigDecimalValue(dataItem, "retailPrice"));
+ dto.setStatus(getLongValue(dataItem, "status"));
+ return dto;
+ }
+
+
private List<ServiceSLTDContactsResDTO> parseContacts(List<?> contactsList) {
List<ServiceSLTDContactsResDTO> contacts = new ArrayList<>();
for (Object contactObj : contactsList) {
@@ -1004,6 +1194,16 @@
return value instanceof Number ? new BigDecimal(value.toString()).toPlainString() : value.toString();
}
+ private BigDecimal getBigDecimalValue(Map<String, Object> map, String key) {
+ Object value = map.get(key);
+ if (value == null) {
+ return null;
+ }
+
+ // 鍙鐞嗘暟瀛楃被鍨嬶紝閬垮厤绉戝璁℃暟娉�
+ return new BigDecimal(value.toString());
+ }
+
private Long getLongValue(Map<String, Object> map, String key) {
Object value = map.get(key);
if (value == null) return null;
--
Gitblit v1.9.3