feat: 广州中西医结合医院,质控患者数据同步

master
wyb 11 months ago
parent b9b5e52f2b
commit b12083d2a1

@ -0,0 +1,8 @@
{
"startDate": "2024-08-21",
"errorDays": 30,
"url": "http://192.168.12.121:3000/ws/service?wsdl",
"namespaceUri": "http://ws.sie.com",
"operationName": "service",
"param": "flow=HIS_SQL_IN_PATIENT_01,app=JS_MR_DOC"
}

@ -0,0 +1,72 @@
package com.docus.server.archive.converter;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.docus.server.archive.entity.TBasic;
import com.docus.server.archive.utils.PinYinUtil;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author YongBin Wen
* @date 2024/8/23 11:03
*/
public class GzZxyJhPatientInfoConverter {
public static List<TBasic> convertTbasic(String result) {
List<JSONObject> parseArray = JSONArray.parseArray(result, JSONObject.class);
List<TBasic> tBasicList = new ArrayList<>();
for (JSONObject jsonObject : parseArray) {
String jzh = jsonObject.getString("INPATIENT_NO");
if (StrUtil.isBlank(jzh)) {
continue;
}
String inpatientNo = jsonObject.getString("PATIENT_NO");
String name = jsonObject.getString("NAME");
Integer admissTimes = jsonObject.getInteger("IN_TIMES");
String idCard = jsonObject.getString("IDENNO");
Date admissDate = jsonObject.getDate("IN_DATE");
String admissDept = jsonObject.getString("IN_DEPT_CODE");
String admissDeptName = jsonObject.getString("IN_DEPT_NAME");
Date disDate = jsonObject.getDate("OUT_DATE");
String disDept = jsonObject.getString("OUT_DEPT_CODE");
String disDeptName = jsonObject.getString("OUT_DEPT_NAME");
String groundingNo = jsonObject.getString("CASE_LIST_NO");
String attending = jsonObject.getString("HOUSE_DOC_CODE");
String attendingName = jsonObject.getString("HOUSE_DOC_NAME");
String sexName = jsonObject.getString("SEX_NAME");
String bedNo = jsonObject.getString("BED_NO");
String zgName = jsonObject.getString("ZG_NAME");
String linkmanTel = jsonObject.getString("LINKMAN_TEL");
TBasic tBasic = new TBasic();
tBasic.setJzh(jzh);
tBasic.setInpatientNo(inpatientNo);
tBasic.setName(name);
tBasic.setNameSpell(PinYinUtil.getFirstSpell(name));
tBasic.setAdmissTimes(admissTimes);
tBasic.setIdCard(idCard);
tBasic.setAdmissDate(admissDate);
tBasic.setAdmissDept(admissDept);
tBasic.setAdmissDeptName(admissDeptName);
tBasic.setDisDate(disDate);
tBasic.setDisDept(disDept);
tBasic.setDisDeptName(disDeptName);
tBasic.setGroundingNo(groundingNo);
tBasic.setAttending(attending);
tBasic.setAttendingName(attendingName);
tBasic.setSexName(sexName);
tBasic.setSex("男".equals(sexName) ? "1" : "2");
tBasic.setBedNo(bedNo);
tBasic.setIsDead("死亡".equals(zgName) ? 1 : 0);
tBasic.setTelphone(linkmanTel);
tBasicList.add(tBasic);
}
return tBasicList;
}
}

@ -118,4 +118,7 @@ public class TBasic implements Serializable {
@ApiModelProperty(value = "离院方式代码")
private Integer leaveMethod;
@ApiModelProperty(value = "上架号")
private String groundingNo;
}

@ -1,5 +1,6 @@
package com.docus.server.archive.job;
import com.alibaba.fastjson.JSONObject;
import com.docus.core.util.DateUtil;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.utils.TableJsonRead;
@ -52,7 +53,7 @@ public class PatientInfoSyncJob {
String startDateTimeStr = startDate + " 00:00:00";
String endDateTimeStr = runLocalDate.toString() + " 23:59:59";
try {
patientInfoSyncService.syncByModifyTime(Func.parseDateTime(startDateTimeStr), Func.parseDateTime(endDateTimeStr));
patientInfoSyncService.syncByModifyTimeRange(Func.parseDateTime(startDateTimeStr), Func.parseDateTime(endDateTimeStr));
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> {} 患者基础数据按照最后修改时间 {} {} 同步结束了!", syncServicePrefix, startDateTimeStr, endDateTimeStr);
// 下次同步则开始多同步一天,防止时间差引起同步缺漏 例如 10分钟同步一次 导致 23:50:01 出院未同步到
String nexRunStartDate = runLocalDate.plusDays(-1).toString();
@ -82,18 +83,56 @@ public class PatientInfoSyncJob {
syncJobConfig = PatientInfoSyncJobConfig.checkAndInit(syncJobConfig);
String cyrqStart = syncJobConfig.getCyrqStart();
String startTime = syncJobConfig.getStartTime();
String now = DateUtil.format(DateUtil.now(),DateUtil.PATTERN_DATETIME);
String now = DateUtil.format(DateUtil.now(), DateUtil.PATTERN_DATETIME);
try {
patientInfoSyncService.syncByModifyTimeAndCyrq(cyrqStart,startTime);
patientInfoSyncService.syncByModifyTimeAndCyrq(cyrqStart, startTime);
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> {} 患者基础数据按照最后修改时间 {} 同步结束了!", syncServicePrefix, startTime);
syncJobConfig.setStartTime(now);
jsonReader.Save(jobConfigPath, jobConfigName, Func.toJson(syncJobConfig));
} catch (Exception ex) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " + syncServicePrefix + " 患者基础数据按照最后修改时间 " + startTime + " 出现异常!" + ex.getMessage(), ex);
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " + syncServicePrefix + " 患者基础数据按照最后修改时间 " + startTime + " 出现异常!" + ex.getMessage(), ex);
}
}
/**
* 广西job
*
* @date 2024/8/23 10:21
* @author YongBin Wen
*/
@XxlJob("GzZxyJhQcPatientInfoSyncJob")
public void gzZxyJhQcPatientInfoSyncJob() {
String syncServicePrefix = "gzzxyjhqc";
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> {} 患者基础数据按照出院日期ws接口同步开始了!", syncServicePrefix);
String serviceName = syncServicePrefix + SyncConstant.PATIENT_INFO_SYNC_SERVICE_SUFFIX;
PatientInfoSyncService patientInfoSyncService = patientInfoSyncServiceMap.get(serviceName);
if (patientInfoSyncService == null) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 患者基础数据同步服务 {} 未找到!", serviceName);
return;
}
String jobConfigPath = "data-config\\job-config";
String jobConfigName = "GzZxyJhQcPatientInfoSyncJob.json";
TableJsonRead jsonReader = new TableJsonRead();
JSONObject syncJobConfig = jsonReader.Read(jobConfigPath, jobConfigName, JSONObject.class);
String startDateStr = syncJobConfig.getString("startDate");
// 出院日期存在误差天数,因为不是按照修改时间
int errorDays = syncJobConfig.getIntValue("errorDays");
LocalDate startDate = Func.parseDate(startDateStr);
LocalDate endDate = LocalDate.now();
try {
patientInfoSyncService.syncByDisDateRange(startDate, endDate);
log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> {} 患者基础数据按照出院日期 {} 开始,同步结束了!", syncServicePrefix, startDateStr);
syncJobConfig.put("startDate", endDate.plusDays(-errorDays).toString());
jsonReader.Save(jobConfigPath, jobConfigName, Func.toJson(syncJobConfig));
} catch (Exception ex) {
log.error(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> " + syncServicePrefix + " 患者基础数据按照出院日期 " + startDateStr + " 出现异常!" + ex.getMessage(), ex);
}
}
private static class PatientInfoSyncJobConfig {
private String startDate;

@ -0,0 +1,11 @@
package com.docus.server.archive.rpc;
import com.docus.server.archive.rpc.dto.HisSqlInPatient01Dto;
/**
* @author YongBin Wen
* @date 2024/8/23 13:58
*/
public interface GzZxyJhBasicDataService {
String getHisSqlInPatient01(HisSqlInPatient01Dto hisSqlInPatient01Dto);
}

@ -0,0 +1,20 @@
package com.docus.server.archive.rpc.dto;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
/**
* @author YongBin Wen
* @date 2024/8/23 14:03
*/
@Data
public class HisSqlInPatient01Dto {
@JSONField(name = "PATIENT_NO")
private String PATIENT_NO;
@JSONField(name = "BEGIN_TIME")
private String BEGIN_TIME;
@JSONField(name = "END_TIME")
private String END_TIME;
}

@ -0,0 +1,35 @@
package com.docus.server.archive.rpc.impl;
import com.alibaba.fastjson.JSONObject;
import com.docus.infrastructure.core.utils.TableJsonRead;
import com.docus.server.archive.rpc.GzZxyJhBasicDataService;
import com.docus.server.archive.rpc.dto.HisSqlInPatient01Dto;
import com.docus.server.archive.utils.JaxWsDynamicClientUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author YongBin Wen
* @date 2024/8/23 13:58
*/
@Component
@Slf4j
public class GzZxyJhBasicDataServiceImpl implements GzZxyJhBasicDataService {
@Override
public String getHisSqlInPatient01(HisSqlInPatient01Dto hisSqlInPatient01Dto) {
String jobConfigPath = "data-config\\job-config";
String jobConfigName = "GzZxyJhQcPatientInfoSyncJob.json";
TableJsonRead jsonReader = new TableJsonRead();
JSONObject syncJobConfig = jsonReader.Read(jobConfigPath, jobConfigName, JSONObject.class);
String url = syncJobConfig.getString("url");
String namespaceUri = syncJobConfig.getString("namespaceUri");
String operationName = syncJobConfig.getString("operationName");
String param1 = syncJobConfig.getString("param");
String param2 = JSONObject.toJSONString(hisSqlInPatient01Dto);
String[] params = {param1, param2};
String result = JaxWsDynamicClientUtil.send(url, namespaceUri, operationName, params);
log.info("广州中西医结合查询基础数据参数 {} 获取数据:{}", param2, result);
return result;
}
}

@ -1,5 +1,6 @@
package com.docus.server.archive.service;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
@ -8,14 +9,14 @@ import java.time.LocalDateTime;
*/
public interface PatientInfoSyncService {
/**
*
*
*
* @param start
* @param end
* @date 2024/5/23 15:33
* @author YongBin Wen
*/
void syncByDisDate(LocalDateTime start, LocalDateTime end);
void syncByDisDateRange(LocalDate start, LocalDate end);
/**
*
@ -25,7 +26,7 @@ public interface PatientInfoSyncService {
* @date 2024/5/23 15:35
* @author YongBin Wen
*/
void syncByModifyTime(LocalDateTime start, LocalDateTime end);
void syncByModifyTimeRange(LocalDateTime start, LocalDateTime end);
/**
*

@ -0,0 +1,158 @@
package com.docus.server.archive.service.impl;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.exception.BaseException;
import com.docus.infrastructure.redis.service.IdService;
import com.docus.server.archive.constans.SyncConstant;
import com.docus.server.archive.converter.GzZxyJhPatientInfoConverter;
import com.docus.server.archive.entity.TBasic;
import com.docus.server.archive.mapper.TBasicMapper;
import com.docus.server.archive.rpc.GzZxyJhBasicDataService;
import com.docus.server.archive.rpc.dto.HisSqlInPatient01Dto;
import com.docus.server.archive.service.PatientInfoSyncService;
import com.docus.server.archive.utils.MethodRetryUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 广西
*
* @author YongBin Wen
* @date 2024/8/23 10:56
*/
@Service("gzzxyjhqc" + SyncConstant.PATIENT_INFO_SYNC_SERVICE_SUFFIX)
@Slf4j
public class GzZxyJhQcPatientInfoSyncServiceImpl implements PatientInfoSyncService {
@Resource
private TBasicMapper tBasicMapper;
@Resource
private IdService idService;
@Resource
private GzZxyJhBasicDataService gzZxyJhBasicDataService;
@Override
public void syncByDisDateRange(LocalDate start, LocalDate end) {
LocalDate startDate = start;
LocalDate endDate = end;
String endDateStr = end.toString();
String startDateStr = start.toString();
int everyDayRetries = 20;
while (endDate.isBefore(startDate)) {
// 同步与重试
String dateStr = startDate.toString();
try {
syncByDisDate(startDate);
} catch (Exception ex) {
log.info("广州中西医结合同步质控患者,出院日期:" + dateStr + " 出错了,进行 " + everyDayRetries + "次重试," + ex.getMessage(), ex);
boolean retryStatus = MethodRetryUtil.retry(this::syncByDisDate, startDate, everyDayRetries, 500);
if (!retryStatus) {
throw new BaseException("广州中西医结合同步质控患者,出院日期:" + dateStr + ",多次(" + everyDayRetries + ")重试失败了!");
}
}
startDate = startDate.plusDays(1);
}
}
@Override
public void syncByModifyTimeRange(LocalDateTime start, LocalDateTime end) {
log.error("广州中西医结合医院未开发按照视图最后修改时间同步患者基础数据!");
}
@Override
public void syncByModifyTimeAndCyrq(String cyrqStart, String startTime) {
log.error("广州中西医结合医院未开发按照出院时间和最后修改时间同步患者基础数据!");
}
private void syncByDisDate(LocalDate date) {
HisSqlInPatient01Dto hisSqlInPatient01Dto = new HisSqlInPatient01Dto();
hisSqlInPatient01Dto.setBEGIN_TIME(date + " 00:00:00");
hisSqlInPatient01Dto.setEND_TIME(date + " 23:59:59");
String result = gzZxyJhBasicDataService.getHisSqlInPatient01(hisSqlInPatient01Dto);
List<TBasic> tBasicList = GzZxyJhPatientInfoConverter.convertTbasic(result);
// 因为扫描也同步了一套为了区分修改为jzh_1
for (TBasic tBasic : tBasicList) {
String jzh = tBasic.getJzh();
tBasic.setJzh(jzh + "_1");
tBasic.setFileSource(1);
}
saveOrUpdate(tBasicList);
}
/**
* @param iuBasicList
*/
private void saveOrUpdate(List<TBasic> iuBasicList) {
Date nowDate = new Date();
List<String> iuJzhList = iuBasicList.stream()
.map(TBasic::getJzh)
.collect(Collectors.toList());
List<TBasic> existsBasicList = tBasicMapper.getByJzh(iuJzhList);
Map<String, TBasic> existsJzhBasicMap = existsBasicList.stream().collect(Collectors.toMap(TBasic::getJzh, Function.identity()));
List<TBasic> insertBasicList = new ArrayList<>();
List<TBasic> updateBasicList = new ArrayList<>();
for (TBasic iuBasic : iuBasicList) {
if (existsJzhBasicMap.containsKey(iuBasic.getJzh())) {
TBasic tBasic = existsJzhBasicMap.get(iuBasic.getJzh());
tBasic.setName(iuBasic.getName());
tBasic.setInpatientNo(iuBasic.getInpatientNo());
tBasic.setAdmissTimes(iuBasic.getAdmissTimes());
tBasic.setSex(iuBasic.getSex());
tBasic.setSexName(iuBasic.getSexName());
tBasic.setNameSpell(iuBasic.getNameSpell());
tBasic.setJzh(iuBasic.getJzh());
tBasic.setAdmissDate(iuBasic.getAdmissDate());
tBasic.setAdmissDept(iuBasic.getAdmissDept());
tBasic.setAdmissDeptName(iuBasic.getAdmissDeptName());
tBasic.setBedNo(iuBasic.getBedNo());
tBasic.setAttending(iuBasic.getAttending());
tBasic.setAttendingName(iuBasic.getAttendingName());
tBasic.setAge(iuBasic.getAge());
tBasic.setAgeMonth(iuBasic.getAgeMonth());
tBasic.setAgeDay(iuBasic.getAgeDay());
tBasic.setIdCard(iuBasic.getIdCard());
tBasic.setTelphone(iuBasic.getTelphone());
tBasic.setDisDate(iuBasic.getDisDate());
tBasic.setDisDept(iuBasic.getDisDept());
tBasic.setDisDeptName(iuBasic.getDisDeptName());
tBasic.setIsDead(iuBasic.getIsDead());
tBasic.setTotalCost(iuBasic.getTotalCost());
tBasic.setFileSource(iuBasic.getFileSource());
tBasic.setGroundingNo(iuBasic.getGroundingNo());
tBasic.setUpdateTime(nowDate);
updateBasicList.add(tBasic);
continue;
}
iuBasic.setPatientId(String.valueOf(idService.getDateSeq()));
iuBasic.setCreateTime(nowDate);
iuBasic.setUpdateTime(nowDate);
insertBasicList.add(iuBasic);
}
if (Func.isNotEmpty(insertBasicList)) {
tBasicMapper.insertBatch(insertBasicList);
}
if (Func.isNotEmpty(updateBasicList)) {
tBasicMapper.updateBatch(updateBasicList);
}
}
}

@ -14,11 +14,14 @@ import com.docus.server.mzsy.entity.MzsyPatientInfoView;
import com.docus.server.mzsy.mapper.MzsyPatientInfoViewMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -36,12 +39,12 @@ public class MzsyPatientInfoSyncServiceImpl implements PatientInfoSyncService {
private PowerUserMapper powerUserMapper;
@Override
public void syncByDisDate(LocalDateTime start, LocalDateTime end) {
public void syncByDisDateRange(LocalDate start, LocalDate end) {
log.error("梅州三院未开发按照出院时间同步患者基础数据!");
}
@Override
public void syncByModifyTime(LocalDateTime start, LocalDateTime end) {
public void syncByModifyTimeRange(LocalDateTime start, LocalDateTime end) {
log.error("梅州三院未开发按照修改时间同步患者基础数据!");
}

@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
@ -33,12 +34,12 @@ public class ZqDyRyPatientInfoSyncServiceImpl implements PatientInfoSyncService
private IdService idService;
@Override
public void syncByDisDate(LocalDateTime start, LocalDateTime end) {
public void syncByDisDateRange(LocalDate start, LocalDate end) {
log.error("肇庆第一人民医院未开发按照出院时间同步患者基础数据!");
}
@Override
public void syncByModifyTime(LocalDateTime start, LocalDateTime end) {
public void syncByModifyTimeRange(LocalDateTime start, LocalDateTime end) {
String startDateTime = Func.formatDateTime(start);
String endDateTime = Func.formatDateTime(end);
int size = 1000;

@ -0,0 +1,47 @@
package com.docus.server.archive.utils;
import com.docus.infrastructure.core.exception.BaseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
/**
* @author YongBin Wen
* @date 2024/8/23 11:35
*/
public class MethodRetryUtil {
private final static Logger logger = LoggerFactory.getLogger(MethodRetryUtil.class);
public static <T> boolean retry(Consumer<T> consumer, T param, int retries, int timeoutMillis) {
if (retries <= 0) {
throw new BaseException("重试次数需要大于0");
}
for (int i = 1; i <= retries; i++) {
try {
consumer.accept(param);
logger.info("重试操作成功,进行了 {} 次重试",i);
return true;
} catch (Exception rex) {
logger.error("重试操作失败,尝试第" + (i + 1) + "次重试," + rex.getMessage(), rex);
try {
TimeUnit.MILLISECONDS.sleep(timeoutMillis);
} catch (InterruptedException exc) {
Thread.currentThread().interrupt();
return false;
}
}
}
return false;
}
public static void main(String[] args) {
AtomicInteger i=new AtomicInteger(-1);
System.out.println(retry(n -> {
System.out.println(2 / n);
}, 0, 10, 500));
}
}

@ -48,26 +48,31 @@ public class PinYinUtil {
* @return
*/
public static String getFirstSpell(String chinese) {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if (temp != null) {
pybf.append(temp[0].charAt(0));
try {
StringBuffer pybf = new StringBuffer();
char[] arr = chinese.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) {
try {
String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
if (temp != null) {
pybf.append(temp[0].charAt(0));
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
} else {
pybf.append(arr[i]);
}
} else {
pybf.append(arr[i]);
}
return pybf.toString().replaceAll("\\W", "").trim();
}catch (Exception ex){
return null;
}
return pybf.toString().replaceAll("\\W", "").trim();
}
public static void main(String[] args) {

@ -12,7 +12,7 @@
`attending`, `attending_name`,
`is_dead`,`file_source`,
`jzh`,`bed_no`, `jz_card_no`, `total_cost`,
`create_time`, `update_time`,`admiss_days`) VALUES
`create_time`, `update_time`,`admiss_days`,`grounding_no`) VALUES
<foreach collection="basicList" separator="," item="basic">
(
#{basic.patientId},#{basic.admissTimes},#{basic.inpatientNo},#{basic.name},#{basic.nameSpell},
@ -22,7 +22,7 @@
#{basic.attending},#{basic.attendingName},
#{basic.isDead},#{basic.fileSource},
#{basic.jzh},#{basic.bedNo},#{basic.jzCardNo},#{basic.totalCost},
#{basic.createTime},#{basic.updateTime},#{basic.admissDays}
#{basic.createTime},#{basic.updateTime},#{basic.admissDays,#{basic.groundingNo}
)
</foreach>
</insert>
@ -37,8 +37,7 @@
`attending`= #{basic.attending}, `attending_name`=#{basic.attendingName},
`is_dead`=#{basic.isDead},`file_source`=#{basic.fileSource},
`jzh`= #{basic.jzh},`bed_no`=#{basic.bedNo}, `jz_card_no`=#{basic.jzCardNo}, `total_cost`=#{basic.totalCost},
`create_time`= #{basic.createTime}, `update_time`=#{basic.updateTime},
`admiss_days`=#{basic.admissDays}
`create_time`= #{basic.createTime}, `update_time`=#{basic.updateTime},`admiss_days`=#{basic.admissDays},`grounding_no`==#{basic.groundingNo}
WHERE patient_id= #{basic.patientId};
</foreach>
</update>
@ -61,7 +60,7 @@
`attending`, `attending_name`,
`is_dead`,`file_source`,
`jzh`,`bed_no`, `jz_card_no`, `total_cost`,
`create_time`, `update_time`
`create_time`, `update_time`,`admiss_days`,`basic.groundingNo`
from docus_medicalrecord.t_basic
where jzh in <foreach collection="jzhs" item="jzh" open="(" close=")" separator=",">
#{jzh}

Loading…
Cancel
Save