Merge branch 'master' of ssh://git.jizhiweb.cn:2222/clinic-v2/server

This commit is contained in:
LiJianZhao 2025-05-26 11:52:15 +08:00
commit 0bed77b5d7
10 changed files with 596 additions and 37 deletions

View File

@ -254,4 +254,12 @@ public class SocialRequest {
JSONObject jsonObject = httpUtil.callBackMsgId("3101", "data", im3101.buildToMap(), 10000); JSONObject jsonObject = httpUtil.callBackMsgId("3101", "data", im3101.buildToMap(), 10000);
DebugUtil.out(jsonObject); DebugUtil.out(jsonObject);
} }
public JSONObject callMerge31013102(Map<String,Object> map,String code) {
JSONObject jsonObject = httpUtil.callBackMsgId(code, "data", map, 10000);
DebugUtil.out(jsonObject);
return jsonObject;
}
} }

View File

@ -77,6 +77,7 @@ public class RegistrationController extends BaseController {
if (registration == null) { if (registration == null) {
throw new MessageException("data参数为空"); throw new MessageException("data参数为空");
} }
patientRegistrationService.updateById(registration); patientRegistrationService.updateById(registration);
return success(); return success();
} }
@ -123,7 +124,7 @@ public class RegistrationController extends BaseController {
@RequestMapping("/getListByType") @RequestMapping("/getListByType")
public Result<Page<PatientRegistration>> getListByType() { public Result<Page<PatientRegistration>> getListByType() {
RegistrationQuery query = parmsUtil.getObject("query", RegistrationQuery.class); RegistrationQuery query = parmsUtil.getObject("query", RegistrationQuery.class);
return success(patientRegistrationService.getPageByType(query)); return success(patientRegistrationService.getListByType(query));
} }
/** /**

View File

@ -87,12 +87,12 @@ public class StatisticsController extends BaseController {
* 获取收费队列 就诊队列数量 * 获取收费队列 就诊队列数量
*/ */
@RequestMapping("/getTipCount") @RequestMapping("/getTipCount")
public Result<TipCountVo> getChargeQueueCount() { public Result<TipCountVo> getTipCount() {
String begin = parmsUtil.getString("beginTime", "开始时间为空"); String begin = parmsUtil.getString("beginTime", "开始时间为空");
String end = parmsUtil.getString("endTime", "结束时间为空"); String end = parmsUtil.getString("endTime", "结束时间为空");
LocalDateTime beginTime = DateUtil.getDateTime(begin); LocalDateTime beginTime = DateUtil.getDateTime(begin);
LocalDateTime endTime = DateUtil.getDateTime(end); LocalDateTime endTime = DateUtil.getDateTime(end);
return success( statisticsService.getWaitCount(beginTime, endTime)); return success( statisticsService.getTipCount(beginTime, endTime));
} }
/** /**
* 商品统计 * 商品统计

View File

@ -1,25 +1,25 @@
package com.syjiaer.clinic.server.entity.patient; package com.syjiaer.clinic.server.entity.patient;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 挂号表 * 挂号表
* </p> * </p>
* *
* @author NiuZiYuan * @author NiuZiYuan
* @since 2025-04-30 * @since 2025-05-23
*/ */
@Getter @Getter
@Setter @Setter
@ -55,6 +55,9 @@ public class PatientRegistration implements Serializable {
@ApiModelProperty("挂号时间") @ApiModelProperty("挂号时间")
private LocalDateTime createDatetime; private LocalDateTime createDatetime;
@ApiModelProperty("挂号时间")
private LocalDateTime updateDatetime;
@ApiModelProperty("推荐") @ApiModelProperty("推荐")
private String recommendations; private String recommendations;
@ -93,4 +96,11 @@ public class PatientRegistration implements Serializable {
@ApiModelProperty("流水号") @ApiModelProperty("流水号")
private String fstNo; private String fstNo;
@ApiModelProperty("挂号时间")
private LocalDateTime appointmentTime;
@ApiModelProperty("是否预约")
@TableField(exist = false)
private Boolean isAppointment;
} }

View File

@ -79,4 +79,6 @@ public class RegistrationSaveDto {
@ApiModelProperty("医保余额") @ApiModelProperty("医保余额")
private BigDecimal insuBalance; private BigDecimal insuBalance;
@ApiModelProperty("预约时间")
private String appointmentTime;
} }

View File

@ -6,6 +6,7 @@ import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalItemList;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
@ -27,5 +28,15 @@ public interface DiagnosisMedicalItemListMapper extends BaseMapper<DiagnosisMedi
" FROM diagnosis_medical_item_list AS dmil LEFT JOIN item ON dmil.item_id = item.id" + " FROM diagnosis_medical_item_list AS dmil LEFT JOIN item ON dmil.item_id = item.id" +
" WHERE dmil.diagnosis_code = #{code} ") " WHERE dmil.diagnosis_code = #{code} ")
List<ChargeItemListVo> selectDetailByCode(String code); List<ChargeItemListVo> selectDetailByCode(String code);
@Select("SELECT" +
" dmil.unit AS selected_unit," +
" dmil.unit_price AS selected_price," +
" dmil.number AS selected_num," +
" item.*" +
" FROM diagnosis_medical_item_list AS dmil LEFT JOIN item ON dmil.item_id = item.id" +
" WHERE dmil.diagnosis_code = #{code} and item.del_flag != 1")
List<ChargeItemListVo> selectDetailByCodeNotDelete(String code);
} }

View File

@ -0,0 +1,437 @@
package com.syjiaer.clinic.server.service.diagnosis;
import com.alibaba.fastjson2.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.api.input.IM3101;
import com.syjiaer.clinic.server.common.api.input.im3101.FsiDiagnoseDtos;
import com.syjiaer.clinic.server.common.api.input.im3101.FsiEncounterDtos;
import com.syjiaer.clinic.server.common.api.input.im3101.FsiOrderDtos;
import com.syjiaer.clinic.server.common.api.input.im3101.PatientDtos;
import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.util.DebugUtil;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo;
import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalGoodsList;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalItemList;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalRecord;
import com.syjiaer.clinic.server.entity.item.ItemGroupList;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.entity.social.SocialDiagnose;
import com.syjiaer.clinic.server.entity.social.SocialUser;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalGoodsListMapper;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalItemListMapper;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMedicalRecordMapper;
import com.syjiaer.clinic.server.mapper.item.ItemGroupListMapper;
import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.mapper.social.SocialUserMapper;
import com.syjiaer.clinic.server.service.BaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.syjiaer.clinic.server.common.config.Config;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class CheckService extends BaseService {
@Autowired
private PatientRegistrationMapper patientRegistrationMapper;
@Autowired
private SocialUserMapper socialUserMapper;
@Autowired
private DiagnosisMapper diagnosisMapper;
@Autowired
private PatientInfoMapper patientInfoMapper;
@Autowired
private Config config;
@Autowired
private DiagnosisMedicalRecordMapper diagnosisMedicalRecordMapper;
@Autowired
private OrganizationMemberMapper organizationMemberMapper;
@Autowired
private DiagnosisMedicalGoodsListMapper diagnosisMedicalGoodsListMapper;
@Autowired
private DiagnosisMedicalItemListMapper diagnosisMedicalItemListMapper;
@Autowired
private ItemGroupListMapper itemGroupListMapper;
@Autowired
private SocialRequest socialRequest;
public PatientRegistration getPatientRegistrationInfo(Integer registrationId)
{
return patientRegistrationMapper.selectById(registrationId);
}
public void loggerInfo(String message,Object data) {
log.info("CheckService:事前事中:{} :extra:{}", message, data);
}
public void check(Integer registrationId,String imCode)
{
loggerInfo("接收到数据请求:registrationId:"+registrationId,null);
try {
// 获取挂号信息
PatientRegistration patientRegistrationInfo = getPatientRegistrationInfo(registrationId);
if (patientRegistrationInfo == null)
{
loggerInfo("挂号表数据为空",null);
return;
}
if (patientRegistrationInfo.getType() != 2)
{
loggerInfo("挂号数据非医保类型",null);
return;
}
if (patientRegistrationInfo.getStatus() != 3)
{
loggerInfo("挂号数据非已诊状态",null);
return;
}
//获取诊断主表
QueryWrapper<Diagnosis> diagnosisQueryWrapper = new QueryWrapper<>();
diagnosisQueryWrapper.eq("registration_id", registrationId);
diagnosisQueryWrapper.last("limit 1");
Diagnosis diagnosis = diagnosisMapper.selectOne(diagnosisQueryWrapper);
if (diagnosis == null)
{
loggerInfo("诊断数据不存在",null);
return;
}
//获取患者信息
PatientInfo patientInfo = patientInfoMapper.selectById(diagnosis.getPatientId());
if (patientInfo==null)
{
loggerInfo("患者信息不存在",null);
return;
}
//查询医保用户信息
QueryWrapper<SocialUser> socialUserQueryWrapper = new QueryWrapper<>();
socialUserQueryWrapper.eq("certno", patientInfo.getCertNo());
socialUserQueryWrapper.last("limit 1");
SocialUser socialUserInfo = socialUserMapper.selectOne(socialUserQueryWrapper);
if (socialUserInfo==null)
{
loggerInfo("医保用户信息不存在",null);
return;
}
//查询病例 病例 diagnosis_medical_record
QueryWrapper<DiagnosisMedicalRecord> diagnosisMedicalRecordWrapper = new QueryWrapper<>();
diagnosisMedicalRecordWrapper.eq("diagnosis_code",diagnosis.getCode());
DiagnosisMedicalRecord record = diagnosisMedicalRecordMapper.selectOne(diagnosisMedicalRecordWrapper);
if (record==null)
{
loggerInfo("诊断信息为空",null);
return;
}
//医生信息
OrganizationMember organizationMember = organizationMemberMapper.selectById(patientRegistrationInfo.getOrganizationDoctorId());
if (organizationMember==null)
{
loggerInfo("医生信息不存在",null);
return;
}
Map<String,Object> requestMap = mergeRequestParam(socialUserInfo,patientRegistrationInfo,diagnosis,record,organizationMember);
loggerInfo("组织请求接口数据",requestMap);
Map<String,Object> callResult = socialRequest.callMerge31013102(requestMap,imCode);
loggerInfo("调用成功",callResult);
} catch (Exception e) {
log.error("事前事中:error_message:{}",e.getMessage());
}
}
public Map<String,Object> mergeRequestParam(SocialUser socialUser, PatientRegistration patientRegistration, Diagnosis diagnosis, DiagnosisMedicalRecord record, OrganizationMember organizationMember)
{
IM3101 im3101 = new IM3101();
im3101.setSyscode(config.get("social", "syscode"));
im3101.setTrigScen("1");
PatientDtos patientDtos = new PatientDtos();
patientDtos.setPatnId(socialUser.getPsnNo());
patientDtos.setPatnName(socialUser.getPsnName());
patientDtos.setGend(Integer.valueOf(socialUser.getGend()));
patientDtos.setBrdy(socialUser.getBrdy());
patientDtos.setPoolarea(patientRegistration.getInsutype());
patientDtos.setCurrMdtrtId(socialUser.getPsnNo());
im3101.setPatientDtos(patientDtos);
FsiEncounterDtos fsiEncounterDtos = new FsiEncounterDtos();
fsiEncounterDtos.setMdtrtId(diagnosis.getCode());
fsiEncounterDtos.setMedinsId(config.get("social", "medinsId"));
fsiEncounterDtos.setMedinsName(config.get("social", "fixmedinsName"));
fsiEncounterDtos.setMedinsAdmdvs(config.get("social", "insuplcAdmdvs"));
//定点医疗机构-1 定点零售药店-2 工伤定点康复机构-3 辅助器具配置机构-4 计划生育服务机构-5
fsiEncounterDtos.setMedinsType("1");
// 目前不知道啥意思写死05
fsiEncounterDtos.setMedinsLv("05");
fsiEncounterDtos.setAdmDate(diagnosis.getCreateTime());
fsiEncounterDtos.setDscgDate(diagnosis.getCreateTime());
// 获取主诊断
List<SocialDiagnose> diagnoseList = JSONArray.parseArray(record.getDiagnosisDetail(),SocialDiagnose.class);
fsiEncounterDtos.setDscgMainDiseCodg(diagnoseList.get(0).getCode());
fsiEncounterDtos.setDscgMainDiseName(diagnoseList.get(0).getName());
patientDtos.setFsiEncounterDtos(fsiEncounterDtos);
//诊断信息DTO
List<FsiDiagnoseDtos> fsiDiagnoseDtosList= new ArrayList<>();
for (int i = 0; i < diagnoseList.size(); i++) {
SocialDiagnose diagnoseInfo = diagnoseList.get(i);
//主诊断是1 其他的诊断是0
String maindiseFlag = "0";
if (i==0) {
maindiseFlag = "1";
}
FsiDiagnoseDtos fsiDiagnoseDtos = new FsiDiagnoseDtos();
fsiDiagnoseDtos.setDiseId(diagnosis.getCode()+"_"+i);
//干啥的不知道 默认1
fsiDiagnoseDtos.setInoutDiseType("1");
// 主诊断是1 别的是0 第一个是1其他的是0
fsiDiagnoseDtos.setMaindiseFlag(maindiseFlag);
//数组下标 从1开始
fsiDiagnoseDtos.setDiasSrtNo(String.valueOf(i + 1));
fsiDiagnoseDtos.setDiseCodg(diagnoseInfo.getCode());
fsiDiagnoseDtos.setDiseName(diagnoseInfo.getName());
//取diagnosis创建时间
fsiDiagnoseDtos.setDiseDate(diagnosis.getCreateTime());
fsiDiagnoseDtosList.add(fsiDiagnoseDtos);
}
fsiEncounterDtos.setFsiDiagnoseDtos(fsiDiagnoseDtosList);
//医生表里面查
fsiEncounterDtos.setDrCodg(organizationMember.getSocialMemberCode());
//下面的4个瞎写 写死就行
fsiEncounterDtos.setAdmDeptCodg("XY");
fsiEncounterDtos.setAdmDeptName("西医科");
fsiEncounterDtos.setDscgDeptCodg("XY");
fsiEncounterDtos.setDscgDeptName("西医科");
//这玩意儿没有 字典表没有
fsiEncounterDtos.setMedMdtrtType("1");
// 11是普通门诊 110104是门诊统筹
fsiEncounterDtos.setMedType("11");
//处方(医嘱)信息 医疗服务信息*------------------------------------------------------------------------------------------------------------
List<FsiOrderDtos> fsiOrderDtosList= new ArrayList<>();
//获取病例商品信息 病例服务信息
List<DiagnosisMedicalGoodsList> goodsList = diagnosisMedicalGoodsListMapper.listByDiagnosisCode(diagnosis.getCode());
List<ChargeItemListVo> itemList = diagnosisMedicalItemListMapper.selectDetailByCodeNotDelete(diagnosis.getCode());
for (DiagnosisMedicalGoodsList goodsInfo : goodsList) {
FsiOrderDtos fsiOrderDtos = new FsiOrderDtos();
fsiOrderDtos.setRxId(String.valueOf(goodsInfo.getId()));
fsiOrderDtos.setRxno(String.valueOf(goodsInfo.getId()));
//[1=,0=]
fsiOrderDtos.setLongDrordFlag("0");
//101 西药中成药 104 民族药
//102 中药饮片 201 医疗服务项目
//103 自制剂 301 医用耗材
fsiOrderDtos.setHilistType("101");
//收费类别 传啥不知道 ----字典表没有
fsiOrderDtos.setChrgType("02");
// 传啥不知道 ----字典表没有
fsiOrderDtos.setDrordBhvr("0");
fsiOrderDtos.setHilistCode(goodsInfo.getSocialCode());
fsiOrderDtos.setHilistName(goodsInfo.getName());
fsiOrderDtos.setHilistDosform(goodsInfo.getUnit());
//穿啥不知道 写死的
fsiOrderDtos.setHilistLv("01");
fsiOrderDtos.setHilistPric(goodsInfo.getUnitPrice());
fsiOrderDtos.setHosplistCode(goodsInfo.getSocialCode());
fsiOrderDtos.setHosplistName(goodsInfo.getName());
//数量 取diagnosis_medical_goods_list number字段
fsiOrderDtos.setCnt(BigDecimal.valueOf(goodsInfo.getNumber()));
fsiOrderDtos.setPric(goodsInfo.getUnitPrice());
fsiOrderDtos.setSumamt(goodsInfo.getUnitPrice().multiply(BigDecimal.valueOf(goodsInfo.getNumber())));
fsiOrderDtos.setOwnpayAmt(goodsInfo.getUnitPrice().multiply(BigDecimal.valueOf(goodsInfo.getNumber())));
fsiOrderDtos.setSelfpayAmt(goodsInfo.getUnitPrice().multiply(BigDecimal.valueOf(goodsInfo.getNumber())));
fsiOrderDtos.setSpec(goodsInfo.getUnit());
fsiOrderDtos.setSpecUnt(goodsInfo.getUnit());
fsiOrderDtos.setDrordBegnDate(diagnosis.getCreateTime());
fsiOrderDtos.setDrordDeptCodg("XY");
fsiOrderDtos.setDrordDeptName("西医科");
fsiOrderDtos.setDrordDrCodg(organizationMember.getSocialMemberCode());
fsiOrderDtos.setDrordDrName(organizationMember.getName());
// 7.171开单医生职称(drord_dr_profttl)
// 主任医师-231 副主任医师-232 主诊医师-233 医师-234 医士-235
fsiOrderDtos.setDrordDrProfttl("235");
//本次处方(医嘱)标记[1=,0=]
fsiOrderDtos.setCurrDrordFlag("1");
fsiOrderDtosList.add(fsiOrderDtos);
}
for (ChargeItemListVo itemInfo : itemList)
{
if (!itemInfo.getIsGroup()) {
FsiOrderDtos fsiOrderDtos = new FsiOrderDtos();
fsiOrderDtos.setRxId(String.valueOf(itemInfo.getId()));
fsiOrderDtos.setRxno(String.valueOf(itemInfo.getId()));
//[1=,0=]
fsiOrderDtos.setLongDrordFlag("0");
//101 西药中成药 104 民族药
//102 中药饮片 201 医疗服务项目
//103 自制剂 301 医用耗材
fsiOrderDtos.setHilistType("201");
//收费类别 传啥不知道 ----字典表没有
fsiOrderDtos.setChrgType("02");
// 传啥不知道 ----字典表没有
fsiOrderDtos.setDrordBhvr("0");
fsiOrderDtos.setHilistCode(itemInfo.getItemSocialCode());
fsiOrderDtos.setHilistName(itemInfo.getItemName());
fsiOrderDtos.setHilistDosform(itemInfo.getSelectedUnit());
//穿啥不知道 写死的
fsiOrderDtos.setHilistLv("01");
//把itemInfo.getSelectedUnit()转化成BigDecimal价格
fsiOrderDtos.setHilistPric(itemInfo.getSelectedPrice());
fsiOrderDtos.setHosplistCode(itemInfo.getItemSocialCode());
fsiOrderDtos.setHosplistName(itemInfo.getItemName());
//数量 取diagnosis_medical_goods_list number字段
fsiOrderDtos.setCnt(BigDecimal.valueOf(itemInfo.getSelectedNum()));
fsiOrderDtos.setPric(itemInfo.getUnitPrice());
fsiOrderDtos.setSumamt(itemInfo.getUnitPrice().multiply(BigDecimal.valueOf(itemInfo.getSelectedNum())));
fsiOrderDtos.setOwnpayAmt(itemInfo.getUnitPrice().multiply(BigDecimal.valueOf(itemInfo.getSelectedNum())));
fsiOrderDtos.setSelfpayAmt(itemInfo.getUnitPrice().multiply(BigDecimal.valueOf(itemInfo.getSelectedNum())));
fsiOrderDtos.setSpec(itemInfo.getSelectedUnit());
fsiOrderDtos.setSpecUnt(itemInfo.getSelectedUnit());
fsiOrderDtos.setDrordBegnDate(diagnosis.getCreateTime());
fsiOrderDtos.setDrordDeptCodg("XY");
fsiOrderDtos.setDrordDeptName("西医科");
fsiOrderDtos.setDrordDrCodg(organizationMember.getSocialMemberCode());
fsiOrderDtos.setDrordDrName(organizationMember.getName());
// 7.171开单医生职称(drord_dr_profttl)
// 主任医师-231 副主任医师-232 主诊医师-233 医师-234 医士-235
fsiOrderDtos.setDrordDrProfttl("235");
//本次处方(医嘱)标记[1=,0=]
fsiOrderDtos.setCurrDrordFlag("1");
fsiOrderDtosList.add(fsiOrderDtos);
continue;
}
QueryWrapper<ItemGroupList> itemGroupListWrapper = new QueryWrapper<>();
itemGroupListWrapper.eq("item_id",itemInfo.getId());
itemGroupListWrapper.ne("del_flag",1);
List<ItemGroupList> itemGroupList = itemGroupListMapper.selectList(itemGroupListWrapper);
for (ItemGroupList itemGroupInfo : itemGroupList){
FsiOrderDtos fsiOrderDtos = new FsiOrderDtos();
fsiOrderDtos.setRxId(String.valueOf(itemGroupInfo.getId()));
fsiOrderDtos.setRxno(String.valueOf(itemGroupInfo.getId()));
//[1=,0=]
fsiOrderDtos.setLongDrordFlag("0");
//101 西药中成药 104 民族药
//102 中药饮片 201 医疗服务项目
//103 自制剂 301 医用耗材
fsiOrderDtos.setHilistType("201");
//收费类别 传啥不知道 ----字典表没有
fsiOrderDtos.setChrgType("02");
// 传啥不知道 ----字典表没有
fsiOrderDtos.setDrordBhvr("0");
fsiOrderDtos.setHilistCode(itemGroupInfo.getSocialCode());
fsiOrderDtos.setHilistName(itemGroupInfo.getName());
fsiOrderDtos.setHilistDosform(itemGroupInfo.getUnit());
//穿啥不知道 写死的
fsiOrderDtos.setHilistLv("01");
//把itemInfo.getSelectedUnit()转化成BigDecimal价格
fsiOrderDtos.setHilistPric(itemGroupInfo.getUnitPrice());
fsiOrderDtos.setHosplistCode(itemGroupInfo.getSocialCode());
fsiOrderDtos.setHosplistName(itemGroupInfo.getName());
//数量 取diagnosis_medical_goods_list number字段
//用itemInfo.getSelectedNum() * itemGroupInfo.getNumber()
fsiOrderDtos.setCnt(BigDecimal.valueOf(itemInfo.getSelectedNum() * itemGroupInfo.getNumber()));
fsiOrderDtos.setPric(itemGroupInfo.getUnitPrice());
BigDecimal totel = itemGroupInfo.getUnitPrice().multiply(BigDecimal.valueOf(itemInfo.getSelectedNum() * itemGroupInfo.getNumber()));
fsiOrderDtos.setSumamt(totel);
fsiOrderDtos.setOwnpayAmt(totel);
fsiOrderDtos.setSelfpayAmt(totel);
fsiOrderDtos.setSpec(itemGroupInfo.getUnit());
fsiOrderDtos.setSpecUnt(itemGroupInfo.getUnit());
fsiOrderDtos.setDrordBegnDate(diagnosis.getCreateTime());
fsiOrderDtos.setDrordDeptCodg("XY");
fsiOrderDtos.setDrordDeptName("西医科");
fsiOrderDtos.setDrordDrCodg(organizationMember.getSocialMemberCode());
fsiOrderDtos.setDrordDrName(organizationMember.getName());
// 7.171开单医生职称(drord_dr_profttl)
// 主任医师-231 副主任医师-232 主诊医师-233 医师-234 医士-235
fsiOrderDtos.setDrordDrProfttl("235");
//本次处方(医嘱)标记[1=,0=]
fsiOrderDtos.setCurrDrordFlag("1");
fsiOrderDtosList.add(fsiOrderDtos);
}
}
fsiEncounterDtos.setFsiOrderDtos(fsiOrderDtosList);
// 计算fsiOrderDtosList中所有元素的sumamt的总和
BigDecimal sumamt = fsiOrderDtosList.stream().map(FsiOrderDtos::getSumamt).reduce(BigDecimal::add).get();
fsiEncounterDtos.setMatnStas("0");
fsiEncounterDtos.setMedfeeSumamt(sumamt);
fsiEncounterDtos.setOwnpayAmt(sumamt);
fsiEncounterDtos.setSelfpayAmt(sumamt);
fsiEncounterDtos.setAcctPayamt(sumamt);
fsiEncounterDtos.setMaAmt(new BigDecimal("0"));
fsiEncounterDtos.setHifpPayamt(new BigDecimal("0"));
fsiEncounterDtos.setSetlTotlnum(1);
// social_user data字段中找
fsiEncounterDtos.setInsutype(patientRegistration.getInsutype());
//报销标志
fsiEncounterDtos.setReimFlag("1");
fsiEncounterDtos.setOutSetlFlag("0");
// socialRequest.call3101(im3101);
return im3101.buildToMap();
}
}

View File

@ -124,6 +124,7 @@ public class DiagnosisService extends BaseService {
} }
PatientRegistration updateRegis = new PatientRegistration(); PatientRegistration updateRegis = new PatientRegistration();
updateRegis.setId(dbRegis.getId()); updateRegis.setId(dbRegis.getId());
updateRegis.setUpdateDatetime(LocalDateTime.now());
updateRegis.setStatus(RegistrationStatusEnum.complete.getStatus()); updateRegis.setStatus(RegistrationStatusEnum.complete.getStatus());
patientRegistrationMapper.updateById(updateRegis); patientRegistrationMapper.updateById(updateRegis);
//诊断主表 //诊断主表

View File

@ -37,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -79,6 +81,20 @@ public class PatientRegistrationService extends BaseService {
throw new MessageException("证件号码不能为空"); throw new MessageException("证件号码不能为空");
} }
LocalDateTime appointmentTime=null;
if(registrationParam.getAppointmentTime()!=null &&!registrationParam.getAppointmentTime().isEmpty()){
try{
appointmentTime = LocalDateTime.parse(registrationParam.getAppointmentTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
}
catch (Exception e){
appointmentTime=LocalDateTime.now();
}
}
if(appointmentTime==null||appointmentTime.isBefore(LocalDateTime.now())){
appointmentTime=LocalDateTime.now();
}
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String fstNo = StringUtil.getCode("FSN"); String fstNo = StringUtil.getCode("FSN");
@ -100,7 +116,9 @@ public class PatientRegistrationService extends BaseService {
BeanUtils.copyProperties(registrationParam, registration); BeanUtils.copyProperties(registrationParam, registration);
registration.setFstNo(fstNo); registration.setFstNo(fstNo);
registration.setRegistrationMoney(new BigDecimal("0")); registration.setRegistrationMoney(new BigDecimal("0"));
registration.setAppointmentTime(appointmentTime);
registration.setCreateDatetime(now); registration.setCreateDatetime(now);
registration.setUpdateDatetime(now);
registration.setStatus(1); registration.setStatus(1);
OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
if (docker == null){ if (docker == null){
@ -224,40 +242,49 @@ public class PatientRegistrationService extends BaseService {
return registration; return registration;
} }
/*
* 获取所有已删除挂号信息
* @param id 挂号id
*/
public List<PatientRegistration> allList() {
QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", 1);
List<PatientRegistration> list = patientRegistrationMapper.selectList(queryWrapper);
return list;
}
/* /*
* 根据查询条件查询挂号信息 * 根据查询条件查询挂号信息
* @param query 查询条件 * @param query 查询条件
*/ */
public Page<PatientRegistration> getPageByType(RegistrationQuery query) { public Page<PatientRegistration> getListByType(RegistrationQuery query) {
ManagerUser user = getManagerUser(); ManagerUser user = getManagerUser();
List<PatientRegistration> list=null;
//如果状态为1 获取挂号列表
if(query.getStatus()==RegistrationStatusEnum.waiting.getStatus()){
list = getRegisterList(query, user);
}
//否则获取患者列表 逻辑相同 但是排序规则不同
else{
list = getPatientList(query, user);
}
Page<PatientRegistration> page = new Page<>();
page.setList(list);
page.setTotal_count(10000);
page.setTotal_page(1);
return page;
}
private List<PatientRegistration> getPatientList(RegistrationQuery query, ManagerUser user){
List<PatientRegistration> list =patientRegistrationMapper.selectList(getPatientQueryWrapper(query, user));;
return list;
}
private QueryWrapper getPatientQueryWrapper(RegistrationQuery query, ManagerUser user){
QueryWrapper<PatientRegistration> PatientQueryWrapper = new QueryWrapper<>();
ManagerUser dbUser = managerUserMapper.selectById(user.getId()); ManagerUser dbUser = managerUserMapper.selectById(user.getId());
OrganizationMember member= null; OrganizationMember member= null;
if (dbUser != null && dbUser.getOrganizationMemberId() != null){ if (dbUser != null && dbUser.getOrganizationMemberId() != null){
member = organizationMemberMapper.selectById(dbUser.getOrganizationMemberId()); member = organizationMemberMapper.selectById(dbUser.getOrganizationMemberId());
} }
QueryWrapper<PatientRegistration> regisQuery = new QueryWrapper<>(); PatientQueryWrapper.eq("del_flag", 0);
regisQuery.eq("del_flag", 0);
if (member != null && member.getRole() == 1){ if (member != null && member.getRole() == 1){
regisQuery.eq("organization_doctor_id", member.getId()); PatientQueryWrapper.eq("organization_doctor_id", member.getId());
}
if (query.getStatus() != null) {
regisQuery.eq("status", query.getStatus());
} }
PatientQueryWrapper.eq("status", query.getStatus());
if (query.getKeyword() != null) { if (query.getKeyword() != null) {
regisQuery.like("name", query.getKeyword()); PatientQueryWrapper.like("name", query.getKeyword());
regisQuery.or().like("phone", query.getKeyword()); PatientQueryWrapper.or().like("phone", query.getKeyword());
} }
if (query.getPageNum() == null) { if (query.getPageNum() == null) {
query.setPageNum(1); query.setPageNum(1);
@ -266,13 +293,73 @@ public class PatientRegistrationService extends BaseService {
query.setPageSize(Constants.DetailPageSize); query.setPageSize(Constants.DetailPageSize);
} }
if (query.getBeginTime() != null) { if (query.getBeginTime() != null) {
regisQuery.ge("appointment_time", query.getBeginTime()); PatientQueryWrapper.ge("update_datetime", query.getBeginTime());
} }
if (query.getEndTime() != null) { if (query.getEndTime() != null) {
regisQuery.le("appointment_time", query.getEndTime()); PatientQueryWrapper.le("update_datetime", query.getEndTime());
}
PatientQueryWrapper.orderByDesc("update_datetime");
return PatientQueryWrapper;
}
private List<PatientRegistration> getRegisterList(RegistrationQuery query, ManagerUser user){
List<PatientRegistration> Beforlist = patientRegistrationMapper.selectList(getRegisterQueryWrapper(query, user,true));
List<PatientRegistration> Afterlist = patientRegistrationMapper.selectList(getRegisterQueryWrapper(query, user,false));
List<PatientRegistration> list = new ArrayList<>();
list.addAll(Beforlist);
list.addAll(Afterlist);
list.forEach((regis)->{
LocalDateTime appointmentTime = regis.getAppointmentTime();
if (appointmentTime.isBefore(LocalDateTime.now())) {
regis.setIsAppointment(false);
} else {
regis.setIsAppointment(true);
}
});
return list;
}
private QueryWrapper getRegisterQueryWrapper(RegistrationQuery query, ManagerUser user,boolean isBefore){
QueryWrapper<PatientRegistration> registerQueryWrapper = new QueryWrapper<>();
ManagerUser dbUser = managerUserMapper.selectById(user.getId());
OrganizationMember member= null;
if (dbUser != null && dbUser.getOrganizationMemberId() != null){
member = organizationMemberMapper.selectById(dbUser.getOrganizationMemberId());
} }
return pageHelper(query.getPageNum(), query.getPageSize(), regisQuery, patientRegistrationMapper, "appointment_time", false); registerQueryWrapper.eq("del_flag", 0);
if (member != null && member.getRole() == 1){
registerQueryWrapper.eq("organization_doctor_id", member.getId());
}
registerQueryWrapper.eq("status", query.getStatus());
if (query.getKeyword() != null) {
registerQueryWrapper.like("name", query.getKeyword());
registerQueryWrapper.or().like("phone", query.getKeyword());
}
if (query.getPageNum() == null) {
query.setPageNum(1);
}
if (query.getPageSize() == null) {
query.setPageSize(Constants.DetailPageSize);
}
if (query.getBeginTime() != null) {
registerQueryWrapper.ge("appointment_time", query.getBeginTime());
}
if (query.getEndTime() != null) {
registerQueryWrapper.le("appointment_time", query.getEndTime());
}
if(isBefore){
registerQueryWrapper.le("appointment_time", LocalDateTime.now());
registerQueryWrapper.orderByDesc("appointment_time");
}else{
registerQueryWrapper.ge("appointment_time", LocalDateTime.now());
registerQueryWrapper.orderByAsc("appointment_time");
}
return registerQueryWrapper;
} }
/** /**
@ -305,6 +392,7 @@ public class PatientRegistrationService extends BaseService {
public void updateById(PatientRegistration registration) { public void updateById(PatientRegistration registration) {
registration.setUpdateDatetime(LocalDateTime.now());
patientRegistrationMapper.updateById(registration); patientRegistrationMapper.updateById(registration);
} }
@ -369,6 +457,7 @@ public class PatientRegistrationService extends BaseService {
PatientRegistration updateRegistration = new PatientRegistration(); PatientRegistration updateRegistration = new PatientRegistration();
updateRegistration.setId(regisId); updateRegistration.setId(regisId);
updateRegistration.setStatus(status); updateRegistration.setStatus(status);
updateRegistration.setUpdateDatetime(LocalDateTime.now());
patientRegistrationMapper.updateById(updateRegistration); patientRegistrationMapper.updateById(updateRegistration);
return patientRegistrationMapper.selectById(regisId); return patientRegistrationMapper.selectById(regisId);
} }

View File

@ -190,7 +190,7 @@ public class StatisticsService extends BaseService {
return result; return result;
} }
public TipCountVo getWaitCount(LocalDateTime beginTime, LocalDateTime endTime) { public TipCountVo getTipCount(LocalDateTime beginTime, LocalDateTime endTime) {
ManagerUser user = getManagerUser(); ManagerUser user = getManagerUser();
ManagerUser dbUser = managerUserMapper.selectById(user.getId()); ManagerUser dbUser = managerUserMapper.selectById(user.getId());
OrganizationMember member= null; OrganizationMember member= null;
@ -202,8 +202,8 @@ public class StatisticsService extends BaseService {
TipCountVo tipCountVo = new TipCountVo(); TipCountVo tipCountVo = new TipCountVo();
RegistrationStatusEnum registrationStatusEnum = RegistrationStatusEnum.waiting; RegistrationStatusEnum registrationStatusEnum = RegistrationStatusEnum.waiting;
QueryWrapper<PatientRegistration> registrationWrapper = new QueryWrapper<>(); QueryWrapper<PatientRegistration> registrationWrapper = new QueryWrapper<>();
registrationWrapper.lt("create_datetime", endTime); registrationWrapper.lt("appointment_time", endTime);
registrationWrapper.ge("create_datetime", beginTime); registrationWrapper.ge("appointment_time", beginTime);
registrationWrapper.eq("status", registrationStatusEnum.getStatus()); registrationWrapper.eq("status", registrationStatusEnum.getStatus());
registrationWrapper.eq("del_flag",0); registrationWrapper.eq("del_flag",0);
if (member != null && member.getRole() == 1){ if (member != null && member.getRole() == 1){
@ -213,8 +213,8 @@ public class StatisticsService extends BaseService {
registrationStatusEnum = RegistrationStatusEnum.inProgress; registrationStatusEnum = RegistrationStatusEnum.inProgress;
registrationWrapper = new QueryWrapper<>(); registrationWrapper = new QueryWrapper<>();
registrationWrapper.lt("create_datetime", endTime); registrationWrapper.lt("update_datetime", endTime);
registrationWrapper.ge("create_datetime", beginTime); registrationWrapper.ge("update_datetime", beginTime);
registrationWrapper.eq("status", registrationStatusEnum.getStatus()); registrationWrapper.eq("status", registrationStatusEnum.getStatus());
registrationWrapper.eq("del_flag",0); registrationWrapper.eq("del_flag",0);
if (member != null && member.getRole() == 1){ if (member != null && member.getRole() == 1){
@ -224,8 +224,8 @@ public class StatisticsService extends BaseService {
registrationStatusEnum = RegistrationStatusEnum.complete; registrationStatusEnum = RegistrationStatusEnum.complete;
registrationWrapper = new QueryWrapper<>(); registrationWrapper = new QueryWrapper<>();
registrationWrapper.lt("create_datetime", endTime); registrationWrapper.lt("update_datetime", endTime);
registrationWrapper.ge("create_datetime", beginTime); registrationWrapper.ge("update_datetime", beginTime);
registrationWrapper.eq("status", registrationStatusEnum.getStatus()); registrationWrapper.eq("status", registrationStatusEnum.getStatus());
registrationWrapper.eq("del_flag",0); registrationWrapper.eq("del_flag",0);
if (member != null && member.getRole() == 1){ if (member != null && member.getRole() == 1){