diff --git a/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml b/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml index 55d07a54..aaa8b474 100644 --- a/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -149,14 +149,14 @@ data_scope = #{dataScope}, - 1, - 0, + menu_check_strictly=1, + menu_check_strictly=0, - 1, - 0, + dept_check_strictly=1, + dept_check_strictly=0, status = #{status}, diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java index b3d27871..9db610ad 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java @@ -2,7 +2,7 @@ package com.openhis.web.basedatamanage.appservice; import com.baomidou.mybatisplus.core.metadata.IPage; import com.core.common.core.domain.R; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; /** * 参与者 应该服务类 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java index 3a476f55..2cc18a79 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java @@ -27,11 +27,13 @@ import com.openhis.administration.service.IPractitionerRoleService; import com.openhis.administration.service.IPractitionerService; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.AccountStatus; +import com.openhis.common.enums.PractitionerRoles; import com.openhis.common.utils.HisQueryUtils; import com.openhis.web.basedatamanage.appservice.IPractitionerAppService; +import com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto; +import com.openhis.web.basedatamanage.dto.PractitionerRolesDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; import com.openhis.web.basedatamanage.mapper.PractitionerAppAppMapper; -import com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; @Service public class PractitionerAppServiceImpl implements IPractitionerAppService { @@ -82,12 +84,12 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { Long userId = iBizUserService.getOne(new LambdaQueryWrapper().eq(BizUser::getUserName, userName)).getUserId(); // 用户id // 新增 sys_user_role - List roleIds = userAndPractitionerDto.getRoleIds(); + List practitionerRoleDtoList = userAndPractitionerDto.getPractitionerRolesDtoList(); BizUserRole bizUserRole; - for (Long roleId : roleIds) { + for (PractitionerRolesDto practitionerRolesDto : practitionerRoleDtoList) { bizUserRole = new BizUserRole(); bizUserRole.setUserId(userId); - bizUserRole.setRoleId(roleId); + bizUserRole.setRoleId(practitionerRolesDto.getRoleId()); iBizUserRoleService.save(bizUserRole); } // 新增 adm_practitioner @@ -100,21 +102,43 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址 practitioner.setYbNo(userAndPractitionerDto.getYbNo()); // 医保码 practitioner.setUserId(userId); // 系统用户id - practitioner.setOrgId(userAndPractitionerDto.getOrgId()); // 机构id + // 责任科室 + List responsibilityOrgDtoList = + userAndPractitionerDto.getResponsibilityOrgDtoList(); + practitioner.setOrgId(responsibilityOrgDtoList.get(0).getOrgId()); // 机构id practitioner.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(nickName)); // 拼音码 practitioner.setWbStr(ChineseConvertUtils.toWBFirstLetter(nickName)); // 五笔码 iPractitionerService.save(practitioner); Long practitionerId = practitioner.getId();// 参与者id // 新增 adm_practitioner_role - List childList = userAndPractitionerDto.getChildList(); PractitionerRole practitionerRole; - for (UserAndPractitionerChildDto userAndPractitionerChildDto : childList) { + // 1.责任科室 + for (PractitionerOrgAndLocationDto responsibilityOrgDto : responsibilityOrgDtoList) { practitionerRole = new PractitionerRole(); practitionerRole.setName(nickName); // 姓名 practitionerRole.setPractitionerId(practitionerId); // 参与者id - practitionerRole.setRoleCode(userAndPractitionerChildDto.getRoleCode()); // 角色code - practitionerRole.setOrgId(userAndPractitionerChildDto.getOrgId()); // 机构id - practitionerRole.setLocationId(userAndPractitionerChildDto.getLocationId()); // 位置id + practitionerRole.setOrgId(responsibilityOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 2.医生出诊科室 + List doctorVisitOrgDtoList = userAndPractitionerDto.getDoctorVisitOrgDtoList(); + for (PractitionerOrgAndLocationDto doctorVisitOrgDto : doctorVisitOrgDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.DOCTOR.getCode());// 角色code + practitionerRole.setOrgId(doctorVisitOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 3.管理库房 + List manageLocationDtoList = userAndPractitionerDto.getManageLocationDtoList(); + for (PractitionerOrgAndLocationDto manageLocationDto : manageLocationDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.LOCATION_ADMIN.getCode()); // 角色code + practitionerRole.setLocationId(manageLocationDto.getLocationId()); // 位置id + practitionerRole.setOrgId(manageLocationDto.getOrgId()); // 机构id iPractitionerRoleService.save(practitionerRole); } @@ -143,13 +167,34 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { // 参与者id集合 List practitionerIdList = records.stream().map(UserAndPractitionerDto::getPractitionerId).collect(Collectors.toList()); - // 子集合 - List childList = practitionerAppAppMapper.getChildList(practitionerIdList); + // 角色集合 + List practitionerRolesDtoList = + practitionerAppAppMapper.getPractitionerRolesDtoList(practitionerIdList); + // 科室和位置 + List orgAndLocationDtoList = + practitionerAppAppMapper.getOrgAndLocationDtoList(practitionerIdList); for (UserAndPractitionerDto record : records) { - // 匹配子集合 - List childDtoList = childList.stream() + // 匹配角色 + List list1 = practitionerRolesDtoList.stream() .filter(e -> e.getPractitionerId().equals(record.getPractitionerId())).collect(Collectors.toList()); - record.setChildList(childDtoList); + record.setPractitionerRolesDtoList(list1); + // 匹配责任科室 + List list2 = orgAndLocationDtoList.stream() + .filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) && "".equals(e.getRoleCode())) + .collect(Collectors.toList()); + record.setResponsibilityOrgDtoList(list2); + // 匹配医生出诊科室 + List list3 = + orgAndLocationDtoList.stream().filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) + && PractitionerRoles.DOCTOR.getCode().equals(e.getRoleCode())).collect(Collectors.toList()); + record.setDoctorVisitOrgDtoList(list3); + // 匹配管理库房 + List list4 = + orgAndLocationDtoList.stream() + .filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) + && PractitionerRoles.LOCATION_ADMIN.getCode().equals(e.getRoleCode())) + .collect(Collectors.toList()); + record.setManageLocationDtoList(list4); } return userPractitionerPage; } @@ -179,12 +224,12 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { iBizUserService.update(bizUser, new LambdaQueryWrapper().eq(BizUser::getUserId, userId)); // 先删除,再新增 sys_user_role practitionerAppAppMapper.delUserRole(userId); - List roleIds = userAndPractitionerDto.getRoleIds(); + List practitionerRoleDtoList = userAndPractitionerDto.getPractitionerRolesDtoList(); BizUserRole bizUserRole; - for (Long roleId : roleIds) { + for (PractitionerRolesDto practitionerRolesDto : practitionerRoleDtoList) { bizUserRole = new BizUserRole(); bizUserRole.setUserId(userId); - bizUserRole.setRoleId(roleId); + bizUserRole.setRoleId(practitionerRolesDto.getRoleId()); iBizUserRoleService.save(bizUserRole); } // 编辑 adm_practitioner @@ -197,21 +242,43 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址 practitioner.setYbNo(userAndPractitionerDto.getYbNo()); // 医保码 practitioner.setUserId(userId); // 系统用户id - practitioner.setOrgId(userAndPractitionerDto.getOrgId()); // 机构id + // 责任科室 + List responsibilityOrgDtoList = + userAndPractitionerDto.getResponsibilityOrgDtoList(); + practitioner.setOrgId(responsibilityOrgDtoList.get(0).getOrgId()); // 机构id practitioner.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(nickName)); // 拼音码 practitioner.setWbStr(ChineseConvertUtils.toWBFirstLetter(nickName)); // 五笔码 iPractitionerService.updateById(practitioner); // 先删除,再新增 adm_practitioner_role practitionerAppAppMapper.delPractitionerRole(practitionerId); - List childList = userAndPractitionerDto.getChildList(); PractitionerRole practitionerRole; - for (UserAndPractitionerChildDto userAndPractitionerChildDto : childList) { + // 1.责任科室 + for (PractitionerOrgAndLocationDto responsibilityOrgDto : responsibilityOrgDtoList) { practitionerRole = new PractitionerRole(); practitionerRole.setName(nickName); // 姓名 practitionerRole.setPractitionerId(practitionerId); // 参与者id - practitionerRole.setRoleCode(userAndPractitionerChildDto.getRoleCode()); // 角色code - practitionerRole.setOrgId(userAndPractitionerChildDto.getOrgId()); // 机构id - practitionerRole.setLocationId(userAndPractitionerChildDto.getLocationId()); // 位置id + practitionerRole.setOrgId(responsibilityOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 2.医生出诊科室 + List doctorVisitOrgDtoList = userAndPractitionerDto.getDoctorVisitOrgDtoList(); + for (PractitionerOrgAndLocationDto doctorVisitOrgDto : doctorVisitOrgDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.DOCTOR.getCode());// 角色code + practitionerRole.setOrgId(doctorVisitOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 3.管理库房 + List manageLocationDtoList = userAndPractitionerDto.getManageLocationDtoList(); + for (PractitionerOrgAndLocationDto manageLocationDto : manageLocationDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.LOCATION_ADMIN.getCode()); // 角色code + practitionerRole.setLocationId(manageLocationDto.getLocationId()); // 位置id + practitionerRole.setOrgId(manageLocationDto.getOrgId()); // 机构id iPractitionerRoleService.save(practitionerRole); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java index 0644b661..22e5553e 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.core.common.core.domain.R; import com.openhis.web.basedatamanage.appservice.IPractitionerAppService; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerOrgAndLocationDto.java similarity index 79% rename from openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java rename to openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerOrgAndLocationDto.java index f3586e8f..c3057f78 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerOrgAndLocationDto.java @@ -1,4 +1,4 @@ -package com.openhis.web.doctorstation.dto; +package com.openhis.web.basedatamanage.dto; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -8,19 +8,11 @@ import lombok.Data; import lombok.experimental.Accessors; /** - * 用户 及 参与者 子dto + * 参与者机构和位置 dto */ @Data @Accessors(chain = true) -public class UserAndPractitionerChildDto { - - /** - * 机构id - */ - @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") - @JsonSerialize(using = ToStringSerializer.class) - private Long orgId; - private String orgId_dictText; +public class PractitionerOrgAndLocationDto { /** * 位置id @@ -36,14 +28,12 @@ public class UserAndPractitionerChildDto { private String roleCode; /** - * 角色id + * 机构id */ - private Long roleId; - - /** - * 角色name - */ - private String roleName; + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; + private String orgId_dictText; /** * 参与者id diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java new file mode 100644 index 00000000..f8b19a3d --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java @@ -0,0 +1,32 @@ +package com.openhis.web.basedatamanage.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 参与者角色 dto + */ +@Data +@Accessors(chain = true) +public class PractitionerRolesDto { + + /** + * 角色id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long roleId; + /** + * 角色名称 + */ + private String roleName; + + /** + * 参与者id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long practitionerId; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/UserAndPractitionerDto.java similarity index 79% rename from openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java rename to openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/UserAndPractitionerDto.java index 4a6e4718..01866348 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/UserAndPractitionerDto.java @@ -1,4 +1,4 @@ -package com.openhis.web.doctorstation.dto; +package com.openhis.web.basedatamanage.dto; import java.util.Date; import java.util.List; @@ -103,13 +103,23 @@ public class UserAndPractitionerDto { private String orgId_dictText; /** - * 角色id集合 + * 责任科室 */ - private List roleIds; + private List responsibilityOrgDtoList; /** - * 子集合 + * 参与者角色集合 */ - private List childList; + private List practitionerRolesDtoList; + + /** + * 医生出诊科室集合 + */ + private List doctorVisitOrgDtoList; + + /** + * 管理库房集合 + */ + private List manageLocationDtoList; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java index 9696fae2..87a0d1d6 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java @@ -9,8 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; +import com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto; +import com.openhis.web.basedatamanage.dto.PractitionerRolesDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; /** * 参与者 应用Mapper @@ -29,12 +30,21 @@ public interface PractitionerAppAppMapper { @Param(Constants.WRAPPER) QueryWrapper queryWrapper); /** - * 查询子集合 + * 查询参与者的角色信息 * * @param practitionerIdList 参与者id集合 - * @return 子集合 + * @return 参与者的角色信息 */ - List getChildList(@Param("practitionerIdList") List practitionerIdList); + List getPractitionerRolesDtoList(@Param("practitionerIdList") List practitionerIdList); + + /** + * 查询科室和位置集合 + * + * @param practitionerIdList 参与者id集合 + * @return 科室和位置集合 + */ + List + getOrgAndLocationDtoList(@Param("practitionerIdList") List practitionerIdList); /** * 物理删除系统用户与角色的关系 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java index 8dfd14ae..fdc0baaf 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java @@ -4,22 +4,18 @@ package com.openhis.web.chargemanage.appservice.impl; import java.util.List; -import java.util.stream.Collectors; -import com.openhis.web.chargemanage.dto.RefundItemDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.core.common.core.domain.R; -import com.core.common.utils.MessageUtils; -import com.openhis.administration.domain.ChargeItem; import com.openhis.administration.service.IChargeItemService; import com.openhis.common.constant.CommonConstants; -import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.PaymentStatus; import com.openhis.financial.service.IPaymentReconciliationService; import com.openhis.web.chargemanage.appservice.IOutpatientRefundAppService; import com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto; +import com.openhis.web.chargemanage.dto.RefundItemDto; import com.openhis.web.chargemanage.mapper.OutpatientRefundAppMapper; /** @@ -61,28 +57,19 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi @Override public R refundPayment(List paymentIdList) { - List refundItemList = outpatientRefundAppMapper.selectRefundItem(paymentIdList, CommonConstants.TableName.MED_MEDICATION_REQUEST, - CommonConstants.TableName.WOR_SERVICE_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST, - CommonConstants.Common.THREE); - // 医生同意退费 // 查询所有的chargeid,对应生成一个负的chargeitem // 根据每个 chargeitem判断对应的服务,药品,耗材是否已发放执行 // 若已发放/执行需要对应的发药人/执行人审批(药品耗材需要先退药) - for (Long paymentId : paymentIdList) { - // 根据支付id获取对应收费项目的id列表 - List chargeItemIdList = paymentReconciliationService.getChargeItemIdListByPayment(paymentId); - if (chargeItemIdList == null) { - return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00006, null)); - } - // 根据收费项目id列表获取收费信息 - List chargeItemList = chargeItemService.getChargeItemInfo(chargeItemIdList); + // 根据支付id获取对应收费项目的id列表 + List chargeItemIdList = paymentReconciliationService.getChargeItemIdListByPayment(paymentIdList); - List prescriptionNoList = - chargeItemList.stream().map(ChargeItem::getPrescriptionNo).collect(Collectors.toList()); + //根据收费项目id列表查询退费项 + List refundItemList = outpatientRefundAppMapper.selectRefundItem(chargeItemIdList, + CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST, + CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.Common.THREE); - } return null; } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java index f01c4d3f..3ad9bb1c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java @@ -23,7 +23,7 @@ import com.openhis.administration.service.*; import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.*; -import com.openhis.common.enums.PractitionerRole; +import com.openhis.common.enums.PractitionerRoles; import com.openhis.common.utils.EnumUtils; import com.openhis.common.utils.HisPageUtils; import com.openhis.common.utils.HisQueryUtils; @@ -142,7 +142,7 @@ public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistra new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), null); IPage practitionerMetadataPage = outpatientRegistrationAppMapper.getPractitionerMetadataPage(new Page<>(pageNo, pageSize), locationId, - PractitionerRole.DOCTOR.getCode(), queryWrapper); + PractitionerRoles.DOCTOR.getCode(), queryWrapper); practitionerMetadataPage.getRecords().forEach(e -> { // 性别 e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum())); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java index aa0eab06..a4e7132c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java @@ -36,14 +36,14 @@ public interface OutpatientRefundAppMapper { /** * 查询退费项目 * - * @param paymentIdList 支付编号列表 + * @param chargeItemIdList 收费项列表 * @param medMedicationRequest 药品请求表 * @param worServiceRequest 服务请求表 * @param worDeviceRequest 耗材请求表 * @param three 用于字符截位 * @return 退费项目列表 */ - List selectRefundItem(@Param("paymentIdList") List paymentIdList, + List selectRefundItem(@Param("chargeItemIdList") List chargeItemIdList, @Param("medMedicationRequest") String medMedicationRequest, @Param("worServiceRequest") String worServiceRequest, @Param("worDeviceRequest") String worDeviceRequest, @Param("three") Integer three); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IDeviceManageAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IDeviceManageAppService.java index ee8dbfc0..715b6036 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IDeviceManageAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IDeviceManageAppService.java @@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody; import com.core.common.core.domain.R; import com.openhis.web.datadictionary.dto.DeviceManageSelParam; import com.openhis.web.datadictionary.dto.DeviceManageUpDto; +import org.springframework.web.bind.annotation.RequestParam; /** * 器材目录 service @@ -63,7 +64,7 @@ public interface IDeviceManageAppService { * @param id 查询条件 * @return 器材目录查询结果 */ - R getDeviceOne(@PathVariable("id") Long id); + R getDeviceOne(@RequestParam Long id); /** * 器材目录停用 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java index 28ab2d00..53980f83 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java @@ -1,6 +1,10 @@ package com.openhis.web.datadictionary.appservice; +import com.openhis.administration.domain.ChargeItemDefinition; +import com.openhis.administration.domain.DeviceDefinition; import com.openhis.medication.domain.MedicationDetail; +import com.openhis.web.datadictionary.dto.DeviceManageUpDto; +import com.openhis.web.datadictionary.dto.ItemUpFromDirectoryDto; import com.openhis.web.datadictionary.dto.MedicationManageUpDto; /** @@ -12,11 +16,26 @@ import com.openhis.web.datadictionary.dto.MedicationManageUpDto; public interface IItemDefinitionService { /** - * 添加药品的项目定价 + * 添加药品/器材/诊疗的项目定价 * - * @param medicationManageUpDto 药品目录信息 - * @param medicationDetail 药品信息 + * @param itemUpFromDirectoryDto 药品/器材/诊疗目录信息 */ - boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail); + boolean addItem(ItemUpFromDirectoryDto itemUpFromDirectoryDto); + + +// /** +// * 添加器材的项目定价 +// * +// * @param deviceManageUpDto 器材目录信息 +// * @param deviceDefinition 器材信息 +// */ +// boolean addItem(ItemUpFromDirectoryDto itemUpFromDirectoryDto, DeviceDefinition deviceDefinition); +// + /** + * 修改项目定价表 + * + * @param chargeItemDefinition 项目定价表信息 + */ + boolean updateItem(ChargeItemDefinition chargeItemDefinition); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java index bb194317..7851f248 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java @@ -8,6 +8,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.openhis.web.datadictionary.dto.MedicationSearchParam; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -32,14 +33,11 @@ public interface IMedicationManageAppService { * 药品目录查询 * * @param searchKey 查询条件 - * @param ybMatchFlag 查询条件-是否对码 - * @param statusEnum 查询条件-状态 - * @param categoryCode 查询条件-药品分类 * @param pageNo 当前页码 * @param pageSize 查询条数 * @return 药品目录查询结果 */ - R getMedicationList(String searchKey, Integer ybMatchFlag, Integer statusEnum, String categoryCode, + R getMedicationList(MedicationSearchParam medicationSearchParam,String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request); /** diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java index 015967ab..072e7de6 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/DeviceManageAppServiceImpl.java @@ -13,10 +13,11 @@ import java.util.stream.Stream; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import com.openhis.administration.domain.Supplier; +import com.openhis.administration.service.ISupplierService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -25,8 +26,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; -import com.core.common.utils.MessageUtils; +import com.core.common.core.domain.entity.SysDictData; +import com.core.common.utils.*; import com.core.common.utils.bean.BeanUtils; +import com.core.system.service.ISysDictTypeService; +import com.openhis.administration.domain.ChargeItemDefinition; import com.openhis.administration.domain.DeviceDefinition; import com.openhis.administration.domain.Organization; import com.openhis.administration.mapper.DeviceDefinitionMapper; @@ -34,20 +38,16 @@ import com.openhis.administration.service.IDeviceDefinitionService; import com.openhis.administration.service.IOrganizationService; import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.PromptMsgConstant; -import com.openhis.common.enums.DeviceCategory; +import com.openhis.common.enums.AssignSeqEnum; import com.openhis.common.enums.OrganizationType; import com.openhis.common.enums.PublicationStatus; import com.openhis.common.enums.Whether; import com.openhis.common.utils.EnumUtils; -import com.openhis.common.utils.HisPageUtils; import com.openhis.common.utils.HisQueryUtils; import com.openhis.web.datadictionary.appservice.IDeviceManageAppService; -import com.openhis.web.datadictionary.dto.DeviceManageDto; -import com.openhis.web.datadictionary.dto.DeviceManageInitDto; -import com.openhis.web.datadictionary.dto.DeviceManageSelParam; -import com.openhis.web.datadictionary.dto.DeviceManageUpDto; +import com.openhis.web.datadictionary.appservice.IItemDefinitionService; +import com.openhis.web.datadictionary.dto.*; import com.openhis.web.datadictionary.mapper.DeviceManageMapper; -import com.openhis.web.doctorstation.dto.AdviceBaseDto; /** * 器材目录 impl @@ -70,6 +70,18 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { @Resource DeviceManageMapper deviceManageMapper; + @Autowired + private ISysDictTypeService sysDictTypeService; + + @Autowired + private IItemDefinitionService itemDefinitionServic; + + @Autowired + private ISupplierService supplierService; + + @Autowired(required = false) + AssignSeqUtil assignSeqUtil; + /** * 器材目录初始化 * @@ -77,25 +89,52 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { */ @Override public R getDeviceManageInit() { + DeviceManageInitDto deviceManageInitDto = new DeviceManageInitDto(); + // 获取状态 List statusEnumOptions = Stream.of(PublicationStatus.values()) .map(status -> new DeviceManageInitDto.statusEnumOption(status.getValue(), status.getInfo())) .collect(Collectors.toList()); deviceManageInitDto.setStatusFlagOptions(statusEnumOptions); - // 获取执行科室 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Organization::getTypeEnum, OrganizationType.HOSPITAL_DEPARTMENT); - List organizations = organizationService.list(queryWrapper); - List exeOrganizations = organizations.stream() - .map(exeOrg -> new DeviceManageInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName())) - .collect(Collectors.toList()); - deviceManageInitDto.setExeOrganizations(exeOrganizations); - // 获取分类 - List deviceCategories = Stream.of(DeviceCategory.values()) - .map(category -> new DeviceManageInitDto.deviceCategory(category.getValue(), category.getInfo())) + +// // 获取执行科室 +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(Organization::getTypeEnum, OrganizationType.HOSPITAL_DEPARTMENT); +// List organizations = organizationService.list(queryWrapper); +// List exeOrganizations = organizations.stream() +// .map(exeOrg -> new DeviceManageInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName())) +// .collect(Collectors.toList()); +// deviceManageInitDto.setExeOrganizations(exeOrganizations); + // // 从枚举中获取器材分类 + // List deviceCategories = Stream.of(DeviceCategory.values()) + // .map(category -> new DeviceManageInitDto.deviceCategory(category.getValue(), category.getInfo())) + // .collect(Collectors.toList()); + // deviceManageInitDto.setDeviceCategories(deviceCategories); + + // 获取器材 + List deviceList = + sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DEVICE_CATEGORY_CODE); + // 从字典中获取器材分类 + List deviceCategories = deviceList.stream() + .map(category -> new DeviceManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel())) .collect(Collectors.toList()); deviceManageInitDto.setDeviceCategories(deviceCategories); + + // 获取医保是否对码 + List statusYBWeatherOption = Stream.of(Whether.values()) + .map(status -> new DeviceManageInitDto.statusEnumOption(status.getValue(), status.getInfo())) + .collect(Collectors.toList()); + deviceManageInitDto.setStatusYBWeatherOptions(statusYBWeatherOption); + + // 查询供应商列表 + List supplierList = supplierService.getList(); + // 供应商信息 + List supplierListOptions = supplierList.stream() + .map(supplier -> new DeviceManageInitDto.supplierListOption(supplier.getId(), supplier.getName())) + .collect(Collectors.toList()); + deviceManageInitDto.setSupplierListOptions(supplierListOptions); + return R.ok(deviceManageInitDto); } @@ -114,22 +153,12 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { -// // 构建查询条件 -// QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey, -// new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); -// // 设置排序 -// queryWrapper.orderByAsc("bus_no"); -// -// // 分页查询 -// Page deviceManagePage = -// HisPageUtils.selectPage(deviceDefinitionMapper, queryWrapper, pageNo, pageSize, DeviceManageDto.class); - // 构建查询条件 QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey, new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request); // 分页查询 - IPage deviceManagePage = + IPage deviceManagePage = deviceManageMapper.getDevicePage(new Page<>(pageNo, pageSize), queryWrapper); deviceManagePage.getRecords().forEach(e -> { @@ -142,7 +171,8 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { // 过敏标记枚举类回显赋值 e.setAllergenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getAllergenFlag())); // 器材分类 - e.setCategoryEnum_enumText(EnumUtils.getInfoByValue(DeviceCategory.class, e.getCategoryEnum())); + // e.setCategoryEnum_enumText(EnumUtils.getInfoByValue(DeviceCategory.class, e.getCategoryEnum())); + // 器材状态 e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum())); }); @@ -161,11 +191,24 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { DeviceDefinition deviceDefinition = new DeviceDefinition(); BeanUtils.copyProperties(deviceManageDto, deviceDefinition); + // 拼音码 + deviceDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(deviceDefinition.getName())); + // 五笔码 + deviceDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(deviceDefinition.getName())); // 更新器材信息 - return deviceDefinitionService.updateById(deviceDefinition) - ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"})) - : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); + if (deviceDefinitionService.updateById(deviceDefinition)) { + ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition(); + chargeItemDefinition.setYbType(deviceManageDto.getItemTypeCode()).setTypeCode(deviceManageDto.getTypeCode()) + .setInstanceTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION) + .setInstanceId(deviceDefinition.getId()); + + // 更新价格表 + return itemDefinitionServic.updateItem(chargeItemDefinition) + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"})) + : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); + } + return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); } /** @@ -175,10 +218,14 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { * @return 器材目录查询结果 */ @Override - public R getDeviceOne(@PathVariable("id") Long id) { + public R getDeviceOne(@RequestParam Long id) { + + // 获取租户ID + Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); // 根据ID查询【器材目录】 - DeviceDefinition byId = deviceDefinitionService.getById(id); - return R.ok(byId); + DeviceManageDto deviceManageDto = deviceManageMapper.getOne(id, tenantId); + + return R.ok(deviceManageDto); } /** @@ -196,7 +243,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { for (Long detail : ids) { DeviceDefinition deviceDefinition = new DeviceDefinition(); deviceDefinition.setId(detail); - deviceDefinition.setStatusEnum(PublicationStatus.RETIRED); + deviceDefinition.setStatusEnum(PublicationStatus.RETIRED.getValue()); DeviceDefinitionList.add(deviceDefinition); } @@ -221,7 +268,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { for (Long detail : ids) { DeviceDefinition DeviceDefinition = new DeviceDefinition(); DeviceDefinition.setId(detail); - DeviceDefinition.setStatusEnum(PublicationStatus.ACTIVE); + DeviceDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue()); DeviceDefinitionList.add(DeviceDefinition); } @@ -242,10 +289,32 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService { DeviceDefinition deviceDefinition = new DeviceDefinition(); BeanUtils.copyProperties(deviceManageUpDto, deviceDefinition); + // 使用10位数基础采番 + String code = assignSeqUtil.getSeq(AssignSeqEnum.DEVICE_NUM.getPrefix(), 10); + deviceDefinition.setBusNo(code); + // 拼音码 + deviceDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(deviceDefinition.getName())); + // 五笔码 + deviceDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(deviceDefinition.getName())); + // 新增外来器材目录 - deviceDefinition.setStatusEnum(PublicationStatus.DRAFT); - return deviceDefinitionService.addDevice(deviceDefinition) - ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"})) - : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); + deviceDefinition.setStatusEnum(PublicationStatus.DRAFT.getValue()); + + if (deviceDefinitionService.addDevice(deviceDefinition)) { + ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto(); + BeanUtils.copyProperties(deviceManageUpDto, itemUpFromDirectoryDto); + itemUpFromDirectoryDto.setTypeCode(deviceManageUpDto.getItemTypeCode()) + .setInstanceTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION) + .setEffectiveStart(DateUtils.getNowDate()).setStatusEnum(PublicationStatus.ACTIVE.getValue()) + .setConditionFlag(Whether.YES.getValue()).setChargeName(deviceManageUpDto.getName()) + .setInstanceId(deviceDefinition.getId()) + .setPrice(deviceManageUpDto.getRetailPrice()); + + return itemDefinitionServic.addItem(itemUpFromDirectoryDto) + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"})) + : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); + } + + return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java index 1a7671de..f003054d 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java @@ -3,6 +3,13 @@ package com.openhis.web.datadictionary.appservice.impl; import java.util.ArrayList; import java.util.List; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.core.common.utils.SecurityUtils; +import com.core.common.utils.bean.BeanUtils; +import com.openhis.administration.domain.DeviceDefinition; +import com.openhis.common.enums.ConditionCode; +import com.openhis.web.datadictionary.dto.DeviceManageUpDto; +import com.openhis.web.datadictionary.dto.ItemUpFromDirectoryDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -34,57 +41,50 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { @Autowired IChargeItemDefDetailService chargeItemDefDetailService; + /** - * 添加项目定价 + * 添加药品/器材/诊疗的项目定价 * - * @param medicationManageUpDto 药品目录信息 - * @param medicationDetail 药品信息 + * @param itemUpFromDirectoryDto 药品/器材/诊疗目录信息 */ @Override - public boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail) { + public boolean addItem(ItemUpFromDirectoryDto itemUpFromDirectoryDto) { + ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition(); - chargeItemDefinition.setChargeName(medicationDetail.getName()) - .setStatusEnum(PublicationStatus.ACTIVE.getValue()) - .setInstanceTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION) - .setInstanceId(medicationDetail.getMedicationDefId()).setEffectiveStart(DateUtils.getNowDate()) - // 机构ID - // .setOrgId(SecurityUtils.getLoginUser().getOrgId()) - .setOrgId(1l)// todo 没数据先写死 - // 财务类别 - .setTypeCode(medicationManageUpDto.getMinimalFee()) - // 医保类别 - .setYbType(medicationManageUpDto.getYbType()).setConditionFlag(Whether.YES.getValue()) - .setPrice(medicationManageUpDto.getRetailPrice()); + BeanUtils.copyProperties(itemUpFromDirectoryDto, chargeItemDefinition); + boolean insertCIDSuccess = chargeItemDefinitionService.save(chargeItemDefinition); if (insertCIDSuccess) { List shargeItemDefDetails = new ArrayList<>(); + //插入购入价 ChargeItemDefDetail chargeItemDefDetail1 = new ChargeItemDefDetail(); chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId()) - // 单位+批次(unit,pici) 用,符号拼装 - .setConditionCode(StringUtils.joinStrings( - medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) + // 条件:采购 + .setConditionCode(ConditionCode.PROCUREMENT.getCode()) // 购入价 - .setAmount(medicationManageUpDto.getPurchasePrice()); - + .setAmount(itemUpFromDirectoryDto.getPurchasePrice()); + shargeItemDefDetails.add(chargeItemDefDetail1); + //插入零售价 ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail(); chargeItemDefDetail2.setDefinitionId(chargeItemDefinition.getId()) - // 单位+批次(unit,pici) 用,符号拼装 - .setConditionCode(StringUtils.joinStrings( - medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) + // 条件:单位 + .setConditionCode(ConditionCode.UNIT.getCode()) + //单位枚举 + .setConditionValue(itemUpFromDirectoryDto.getUnitCode()) // 零售价 - .setAmount(medicationManageUpDto.getRetailPrice()); + .setAmount(itemUpFromDirectoryDto.getRetailPrice()); shargeItemDefDetails.add(chargeItemDefDetail2); + //插入最高零售价 ChargeItemDefDetail chargeItemDefDetail3 = new ChargeItemDefDetail(); chargeItemDefDetail3.setDefinitionId(chargeItemDefinition.getId()) - // 单位+批次(unit,pici) 用,符号拼装 - .setConditionCode(StringUtils.joinStrings( - medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) + // 条件:限制 + .setConditionCode(ConditionCode.LIMIT.getCode()) // 最高零售价 - .setAmount(medicationManageUpDto.getMaximumRetailPrice()); + .setAmount(itemUpFromDirectoryDto.getMaximumRetailPrice()); shargeItemDefDetails.add(chargeItemDefDetail3); @@ -94,4 +94,23 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { return false; } + + /** + * 修改项目定价表 + * + * @param chargeItemDefinition 项目定价表信息 + */ + @Override + public boolean updateItem(ChargeItemDefinition chargeItemDefinition) { + + // 关联项目和代码位为key,更新表 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ChargeItemDefinition::getInstanceId, chargeItemDefinition.getInstanceId()); + updateWrapper.eq(ChargeItemDefinition::getInstanceTable, chargeItemDefinition.getInstanceTable()) + .set(ChargeItemDefinition::getYbType, chargeItemDefinition.getYbType()) + .set(ChargeItemDefinition::getTypeCode, chargeItemDefinition.getTypeCode()); + + return chargeItemDefinitionService.update(null, updateWrapper); + } + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java index 3c14c756..f1087146 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java @@ -4,6 +4,8 @@ package com.openhis.web.datadictionary.appservice.impl; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -11,31 +13,30 @@ import java.util.stream.Stream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.core.common.utils.*; +import com.openhis.web.datadictionary.dto.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; import com.core.common.core.domain.entity.SysDictData; -import com.core.common.utils.ChineseConvertUtils; -import com.core.common.utils.MessageUtils; -import com.core.common.utils.SecurityUtils; import com.core.common.utils.bean.BeanUtils; import com.core.common.utils.poi.ExcelUtil; import com.core.system.service.ISysDictTypeService; +import com.openhis.administration.domain.ChargeItemDefinition; import com.openhis.administration.domain.Supplier; import com.openhis.administration.service.ISupplierService; import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.PromptMsgConstant; -import com.openhis.common.enums.ApplicableScope; -import com.openhis.common.enums.PermissionLimit; -import com.openhis.common.enums.PublicationStatus; -import com.openhis.common.enums.Whether; +import com.openhis.common.enums.*; import com.openhis.common.utils.EnumUtils; +import com.openhis.common.utils.HisQueryUtils; import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.MedicationDefinition; import com.openhis.medication.domain.MedicationDetail; @@ -43,9 +44,6 @@ import com.openhis.medication.service.IMedicationDefinitionService; import com.openhis.medication.service.IMedicationService; import com.openhis.web.datadictionary.appservice.IItemDefinitionService; import com.openhis.web.datadictionary.appservice.IMedicationManageAppService; -import com.openhis.web.datadictionary.dto.MedicationManageDto; -import com.openhis.web.datadictionary.dto.MedicationManageInitDto; -import com.openhis.web.datadictionary.dto.MedicationManageUpDto; import com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper; /** @@ -74,6 +72,9 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi @Autowired private IItemDefinitionService itemDefinitionServic; + @Autowired(required = false) + AssignSeqUtil assignSeqUtil; + /** * 药品目录初始化 * @@ -117,12 +118,25 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi .map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo())) .collect(Collectors.toList()); + // 拆分属性 + List partAttributeEnumOptions = Stream.of(SplitPropertyCode.values()) + .map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo())) + .collect(Collectors.toList()); + + // 住院临时医嘱拆分属性的枚举 + List tempOrderSplitPropertyOptions = + Stream.of(TempOrderSplitPropertyCode.values()) + .map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo())) + .collect(Collectors.toList()); + medicationManageInitDto.setStatusFlagOptions(statusEnumOptions); medicationManageInitDto.setDomainFlagOptions(domainEnumOptions); medicationManageInitDto.setSupplierListOptions(supplierListOptions); medicationManageInitDto.setMedicationCategoryCodeOptions(medicationCategories); medicationManageInitDto.setStatusWeatherOptions(statusWeatherOption); medicationManageInitDto.setStatusRestrictedOptions(statusRestrictedOptions); + medicationManageInitDto.setPartAttributeEnumOptions(partAttributeEnumOptions); + medicationManageInitDto.setTempOrderSplitPropertyEnumOptions(tempOrderSplitPropertyOptions); return R.ok(medicationManageInitDto); } @@ -137,26 +151,19 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi * @return 药品目录查询结果 */ @Override - public R getMedicationList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, - @RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag, - @RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum, - @RequestParam(value = "categoryCode", defaultValue = "") String categoryCode, + public R getMedicationList(MedicationSearchParam medicationSearchParam, + @RequestParam(value = "searchKey", defaultValue = "") String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { - // 分页设置 - Integer offset = (pageNo - 1) * pageSize; - // 获取租户ID - Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); - // 查询药品目录列表 - List medicationDetailList = medicationManageSearchMapper.getPage(searchKey, ybMatchFlag, - statusEnum, categoryCode, tenantId, pageSize, offset); - // 查询总记录数 - long total = - medicationManageSearchMapper.getPageCount(searchKey, ybMatchFlag, statusEnum, categoryCode, tenantId); - // 创建Page对象并设置属性 - Page medicationManageDtoPage = new Page<>(pageNo, pageSize, total); - medicationManageDtoPage.setRecords(medicationDetailList); + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(medicationSearchParam, + searchKey, new HashSet<>(Arrays.asList("name", "name_en", "merchandise_name", "bus_no", "py_str", "wb_str", + "merchandise_py_str", "merchandise_wb_str")), + null); + + IPage medicationManageDtoPage = + medicationManageSearchMapper.getPage(new Page<>(pageNo, pageSize), queryWrapper); // 枚举类回显赋值 medicationManageDtoPage.getRecords().forEach(e -> { @@ -185,7 +192,12 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi e.setAntibioticFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getAntibioticFlag())); // 基药标识 e.setBasicFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getBasicFlag())); - + // 拆分分属性 + e.setPartAttributeEnum_enumText( + EnumUtils.getInfoByValue(SplitPropertyCode.class, e.getPartAttributeEnum())); + // 住院临时医嘱拆分属性 + e.setThoPartAttributeEnum_enumText( + EnumUtils.getInfoByValue(TempOrderSplitPropertyCode.class, e.getThoPartAttributeEnum())); // // 活动标记 // e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag())); @@ -207,6 +219,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi Medication medication = new Medication(); BeanUtils.copyProperties(medicationManageUpDto, medication); // 子表信息 BeanUtils.copyProperties(medicationManageUpDto, medicationDefinition);// 主表信息 + medicationDefinition.setId(medicationManageUpDto.getMedicationDefId()); // 拼音码 medicationDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDefinition.getName())); medicationDefinition @@ -216,10 +229,21 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi medicationDefinition .setMerchandiseWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDefinition.getMerchandiseName())); + ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition(); + chargeItemDefinition.setYbType(medicationManageUpDto.getYbType()) + .setTypeCode(medicationManageUpDto.getTypeCode()) + .setInstanceTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION) + .setInstanceId(medicationManageUpDto.getMedicationDefId()); + // 更新子表药品信息 if (medicationService.updateById(medication)) { + // 更新主表药品信息 - return medicationDefinitionService.updateById(medicationDefinition) + boolean updateMedicationDefinition = medicationDefinitionService.updateById(medicationDefinition); + // 更新价格表 + boolean updateChargeItemDefinition = itemDefinitionServic.updateItem(chargeItemDefinition); + + return (updateMedicationDefinition && updateChargeItemDefinition) ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); } else { @@ -300,6 +324,9 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi MedicationDetail medicationDetail = new MedicationDetail(); BeanUtils.copyProperties(medicationManageUpDto, medicationDetail); + // 使用10位数基础采番 + String code = assignSeqUtil.getSeq(AssignSeqEnum.MEDICATION_NUM.getPrefix(),10); + medicationDetail.setBusNo(code); // 拼音码 medicationDetail.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDetail.getName())); medicationDetail @@ -314,10 +341,21 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi // 新增子表外来药品目录 boolean insertMedicationSuccess = medicationService.addMedication(medicationDetail); - // 添加药品成功后,添加相应的条件价格表信息 - boolean insertItemDefinitionSuccess = itemDefinitionServic.addItem(medicationManageUpDto, medicationDetail); + ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto(); + BeanUtils.copyProperties(medicationManageUpDto, itemUpFromDirectoryDto); + itemUpFromDirectoryDto.setInstanceId(medicationDetail.getMedicationDefId()) + .setStatusEnum(PublicationStatus.ACTIVE.getValue()) + .setInstanceTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION) + .setEffectiveStart(DateUtils.getNowDate()) + .setOrgId(SecurityUtils.getLoginUser().getOrgId()) + .setConditionFlag(Whether.YES.getValue()) + .setChargeName(medicationDetail.getName()) + .setPrice(medicationManageUpDto.getRetailPrice()); - return (insertMedicationSuccess || insertItemDefinitionSuccess) + // 添加药品成功后,添加相应的条件价格表信息 + boolean insertItemDefinitionSuccess = itemDefinitionServic.addItem(itemUpFromDirectoryDto); + + return (insertMedicationSuccess && insertItemDefinitionSuccess) ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); } else { diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DeviceManageController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DeviceManageController.java index b803360a..01b99d24 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DeviceManageController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DeviceManageController.java @@ -118,12 +118,9 @@ public class DeviceManageController { * @return */ @GetMapping("/information-one") - public R getDeviceOne(@PathVariable("id") Long id) { + public R getDeviceOne(@RequestParam Long id) { return deviceManageAppService.getDeviceOne(id); - // // 根据ID查询【器材目录】 - // DeviceDefinition byId = iDeviceDefinitionService.getById(id); - // return R.ok(byId); } /** @@ -137,13 +134,6 @@ public class DeviceManageController { return deviceManageAppService.editDevice(deviceManageDto); - // DeviceDefinition DeviceDefinition = new DeviceDefinition(); - // BeanUtils.copyProperties(deviceManageDto, DeviceDefinition); - // - // // 更新器材信息 - // return iDeviceDefinitionService.updateById(DeviceDefinition) - // ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"})) - // : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); } /** diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java index 60e23a5a..1e51a619 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java @@ -112,7 +112,7 @@ public class DiseaseManageController { * @return */ @GetMapping("/information-one") - public R getDiseaseOne(@PathVariable("id") Long id) { + public R getDiseaseOne(@RequestParam Long id) { DiseaseManageDto diseaseManageDto = new DiseaseManageDto(); // 根据ID查询【病种目录】 ConditionDefinition conditionDefinition = iConditionDefinitionService.getById(id); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java index 1c3dac5c..679ec3cc 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java @@ -5,6 +5,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.openhis.web.datadictionary.dto.MedicationSearchParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -44,22 +45,18 @@ public class MedicationManageController { /** * 查询药品目录分页列表 * - * @param searchKey 查询条件 - * @param statusEnum 查询条件-状态 - * @param ybMatchFlag 查询条件-是否对码 - * @param categoryCode 查询条件-药品分类 + * @param medicationSearchParam 查询条件 + * @param searchKey 模糊查询条件 * @param pageNo 当前页码 * @param pageSize 查询条数 * @return */ @GetMapping("/information-page") - public R getMedicationList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, - @RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag, - @RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum, - @RequestParam(value = "categoryCode", defaultValue = "") String categoryCode, + public R getMedicationList( + MedicationSearchParam medicationSearchParam,@RequestParam(value = "searchKey", defaultValue = "") String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { - return medicationManageAppService.getMedicationList(searchKey, ybMatchFlag, statusEnum, categoryCode, pageNo, + return medicationManageAppService.getMedicationList(medicationSearchParam,searchKey,pageNo, pageSize, request); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java index f38590d8..a8b937e7 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageDto.java @@ -37,14 +37,19 @@ public class DeviceManageDto { private String wbStr; /** 器材分类 */ - private Integer categoryEnum; - private String categoryEnum_enumText; + @Dict(dictCode = "device_category_code") + private String categoryCode; + private String categoryCode_dictText; /** 器材种类 */ + @Dict(dictCode = "device_type_code") private String typeCode; + private String typeCode_dictText; /** 包装单位 */ + @Dict(dictCode = "unit_code") private String unitCode; + private String unitCode_dictText; /** 包装规格 */ private String size; @@ -53,7 +58,21 @@ public class DeviceManageDto { private BigDecimal partPercent; /** 最小使用单位 */ + @Dict(dictCode = "unit_code") private String minUnitCode; + private String minUnitCode_dictText; + + /** 所属科室 */ + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; + private String orgId_dictText; + + /** 所在位置 */ + @Dict(dictTable = "adm_location", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) + private Long locationId; + private String locationId_dictText; /** 产品型号 */ private String modelNumber; @@ -63,7 +82,9 @@ public class DeviceManageDto { private String hvcmFlag_enumText; /** 销售单位 */ + @Dict(dictCode = "unit_code") private String salesUnitCode; + private String salesUnitCode_dictText; /** 批准文号 */ private String approvalNumber; @@ -84,10 +105,11 @@ public class DeviceManageDto { private String statusEnum_enumText; /** 生产厂家 */ + @JsonSerialize(using = ToStringSerializer.class) private Long manufacturerId; /** 生产厂商文本 */ - private Long manufacturerText; + private String manufacturerText; /** 供应商 */ @JsonSerialize(using = ToStringSerializer.class) @@ -101,12 +123,6 @@ public class DeviceManageDto { /** 适用范围 */ private String jurisdiction; - /** 执行科室 */ - @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") - @JsonSerialize(using = ToStringSerializer.class) - private Long ruleId; - private String ruleId_dictText; - /** 器材版本 */ private String version; @@ -117,7 +133,23 @@ public class DeviceManageDto { private Integer allergenFlag; private String allergenFlag_enumText; - /** 售价 */ - private BigDecimal price; + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String itemTypeCode; + private String itemTypeCode_dictText; + + /** 医保类别 */ + @Dict(dictCode = "yb_type") + private String ybType; + private String ybType_dictText; + + /** 购入价 */ + private BigDecimal purchasePrice; + + /** 零售价 */ + private BigDecimal retailPrice; + + /** 最高零售价 */ + private BigDecimal maximumRetailPrice; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageInitDto.java index 36090c28..17d6abea 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageInitDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageInitDto.java @@ -3,6 +3,8 @@ package com.openhis.web.datadictionary.dto; import java.util.ArrayList; import java.util.List; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.experimental.Accessors; @@ -16,8 +18,12 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class DeviceManageInitDto { private List statusFlagOptions; - private List deviceCategories; + private List deviceCategories; private List exeOrganizations; + // 供应商 + private List supplierListOptions; + // 是/否 状态 + private List statusYBWeatherOptions; /** * 状态 @@ -48,6 +54,21 @@ public class DeviceManageInitDto { } } + /** + * 器材分类 + */ + @Data + public static class dictCategoryCode { + private String value; + private String info; + private List children = new ArrayList<>(); + + public dictCategoryCode(String value, String info) { + this.value = value; + this.info = info; + } + } + /** * 执行机构 */ @@ -61,4 +82,21 @@ public class DeviceManageInitDto { this.label = label; } } + + /** + * 供应商 + */ + @Data + public static class supplierListOption { + + @JsonSerialize(using = ToStringSerializer.class) + private Long value; + private String label; + + public supplierListOption(Long value, String label) { + this.value = value; + this.label = label; + } + } + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageSelParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageSelParam.java index a51a2b21..10fbb9a7 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageSelParam.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageSelParam.java @@ -14,7 +14,7 @@ import lombok.experimental.Accessors; public class DeviceManageSelParam { /** 器材分类 */ - private Integer categoryEnum; + private String categoryCode; /** 医保对码标记 */ private Integer ybMatchFlag; @@ -22,6 +22,4 @@ public class DeviceManageSelParam { /** 状态 */ private Integer statusEnum; - /** 执行科室 */ - private Long ruleId; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java index 34f3194c..2b161e0b 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DeviceManageUpDto.java @@ -7,6 +7,7 @@ import javax.validation.constraints.NotNull; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.annotation.Dict; import com.openhis.common.enums.DeviceCategory; import lombok.Data; @@ -26,7 +27,6 @@ public class DeviceManageUpDto { private Long id; /** 编码 */ - @NotBlank(message = "器材编码不能为空") private String busNo; /** 器材名称 */ @@ -34,19 +34,14 @@ public class DeviceManageUpDto { private String name; /** 器材名称拼音 */ - @NotBlank(message = "器材名称拼音不能为空") private String pyStr; /** 器材五笔拼音 */ - @NotBlank(message = "器材五笔拼音不能为空") private String wbStr; /** 器材分类 */ @NotNull(message = "器材分类不能为空") -// private DeviceCategory categoryEnum; - private Integer categoryEnum; - private String categoryEnum_enumText; - + private String categoryCode; /** 器材种类 */ @NotBlank(message = "器材种类不能为空") @@ -68,12 +63,25 @@ public class DeviceManageUpDto { @NotBlank(message = "最小使用单位不能为空") private String minUnitCode; + /** 所属科室 */ + @NotNull(message = "所属科室不能为空") + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; + private String orgId_dictText; + + /** 所在位置 */ + @NotNull(message = "所在位置不能为空") + @Dict(dictTable = "adm_location", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) + private Long locationId; + private String locationId_dictText; + /** 产品型号 */ @NotBlank(message = "产品型号不能为空") private String modelNumber; /** 高值器材标志 */ - // @NotNull(message = "高值器材标志不能为空") private Integer hvcmFlag; /** 销售单位 */ @@ -85,21 +93,22 @@ public class DeviceManageUpDto { private String approvalNumber; /** 医保标记 */ - // @NotNull(message = "医保标记不能为空") private Integer ybFlag; /** 医保编码 */ private String ybNo; /** 医保对码标记 */ - // @NotNull(message = "医保对码标记不能为空") private Integer ybMatchFlag; /** 生产厂家 */ - @NotNull(message = "生产厂家不能为空") @JsonSerialize(using = ToStringSerializer.class) private Long manufacturerId; + /** 生产厂商文本 */ + @JsonSerialize(using = ToStringSerializer.class) + private String manufacturerText; + /** 供应商 */ @NotNull(message = "供应商不能为空") @JsonSerialize(using = ToStringSerializer.class) @@ -112,21 +121,6 @@ public class DeviceManageUpDto { @NotBlank(message = "适用范围不能为空") private String jurisdiction; - /** 执行科室 */ - @NotNull(message = "执行科室不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long ruleId; - - /** 归属科室 */ - @NotNull(message = "归属科室不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long orgId; - - /** 所在位置 */ - @NotNull(message = "所在位置不能为空") - @JsonSerialize(using = ToStringSerializer.class) - private Long locationId; - /** 器材版本 */ private String version; @@ -134,7 +128,6 @@ public class DeviceManageUpDto { private String substanceText; /** 过敏标记 */ - // @NotNull(message = "过敏标记不能为空") private Integer allergenFlag; /** 购入价 */ @@ -149,10 +142,12 @@ public class DeviceManageUpDto { @NotNull(message = "最高零售价不能为空") private BigDecimal maximumRetailPrice; - /** 最小费用 */ - private String minimalFee; + /** 财务类别 */ + @NotNull(message = "财务类别不能为空") + private String itemTypeCode; /** 医保类别 */ + @NotNull(message = "医保类别不能为空") private String ybType; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java index 34d09f69..c6ab1373 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java @@ -2,6 +2,7 @@ package com.openhis.web.datadictionary.dto; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.annotation.Dict; import com.openhis.common.enums.ActivityDefCategory; import com.openhis.common.enums.PublicationStatus; @@ -45,7 +46,9 @@ public class DiagnosisTreatmentDto { private String typeEnum_enumText; /** 使用单位 */ + @Dict(dictCode = "rate_code") private String permittedUnitCode; + private String permittedUnitCode_dictText; /** 医保标记 */ private Integer ybFlag; @@ -74,15 +77,38 @@ public class DiagnosisTreatmentDto { /** 规则id */ private Integer ruleId; - /** 归属科室 */ + /** 所属科室 */ + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") @JsonSerialize(using = ToStringSerializer.class) private Long orgId; + private String orgId_dictText; /** 所在位置 */ + @Dict(dictTable = "adm_location", dictCode = "id", dictText = "name") @JsonSerialize(using = ToStringSerializer.class) private Long locationId; + private String locationId_dictText; /** 售价 */ private BigDecimal price; + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String typeCode; + private String typeCode_dictText; + + /** 医保类别 */ + @Dict(dictCode = "med_chrgitm_type") + private String ybType; + private String ybType_dictText; + + /** 购入价 */ + private BigDecimal purchasePrice; + + /** 零售价 */ + private BigDecimal retailPrice; + + /** 最高零售价 */ + private BigDecimal maximumRetailPrice; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java index fd5c2294..48c42698 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentSelParam.java @@ -14,11 +14,12 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) public class DiagnosisTreatmentSelParam { + /** 目录类别 */ private Integer categoryEnum; /** 类型 */ - private String typeCode; + private Integer typeEnum; /** 医保对码标记 */ private Integer ybMatchFlag; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java index 154a1158..6e70dfcf 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentUpDto.java @@ -5,11 +5,14 @@ import javax.validation.constraints.NotNull; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.annotation.Dict; import com.openhis.common.enums.ActivityDefCategory; import lombok.Data; import lombok.experimental.Accessors; +import java.math.BigDecimal; + /** * 诊疗目录分页更新 * @@ -73,4 +76,24 @@ public class DiagnosisTreatmentUpDto { /** 规则id */ private Integer ruleId; + + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String itemTypeCode; + private String itemTypeCode_dictText; + + /** 医保类别 */ + @Dict(dictCode = "yb_type") + private String ybType; + private String ybType_dictText; + + /** 购入价 */ + private BigDecimal purchasePrice; + + /** 零售价 */ + private BigDecimal retailPrice; + + /** 最高零售价 */ + private BigDecimal maximumRetailPrice; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemUpFromDirectoryDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemUpFromDirectoryDto.java new file mode 100644 index 00000000..89fce04a --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemUpFromDirectoryDto.java @@ -0,0 +1,74 @@ +package com.openhis.web.datadictionary.dto; + +import java.math.BigDecimal; +import java.util.Date; + +import com.openhis.common.annotation.Dict; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 从目录添加定价表信息用的Dto + * + * @author liuhr + * @date 2025/3/28 + */ +@Data +@Accessors(chain = true) +public class ItemUpFromDirectoryDto { + + /** 药品单位 */ + private String unitCode; + + /** 购入价 */ + private BigDecimal purchasePrice; + + /** 零售价 */ + private BigDecimal retailPrice; + + /** 最高零售价 */ + private BigDecimal maximumRetailPrice; + + /** 名称 */ + private String chargeName; + + /** 状态 */ + private Integer statusEnum; + + /** 机构ID */ + private Long orgId; + + /** 代码 */ + private String instanceTable; + + /** 关联项目 */ + private Long instanceId; + + /** 有效时间开始 */ + private Date effectiveStart; + + /** 财务类别 */ + private String typeCode; + + /** 医保类别 */ + private String ybType; + + /** 是否使用详细价格规则 */ + private Integer conditionFlag; + + /** 基础价格 */ + private BigDecimal price; + + /** 费用定价主键ID */ + private Long definitionId; + + /** 条件 */ + private String conditionCode; + + /** 命中值 */ + private String conditionValue; + + /** 价格 */ + private BigDecimal amount; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java index f236f982..3623e7cb 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java @@ -10,6 +10,8 @@ import com.openhis.common.annotation.Dict; import lombok.Data; import lombok.experimental.Accessors; +import javax.validation.constraints.NotNull; + /** * 药品目录Dto * @@ -129,7 +131,7 @@ public class MedicationManageDto { /** 药品分类 */ @Dict(dictCode = "med_category_code") - private Integer categoryCode; + private String categoryCode; private String categoryCode_dictText; /** 商品名称 */ @@ -142,7 +144,9 @@ public class MedicationManageDto { private String merchandiseWbStr; /** 药品单位 */ + @Dict(dictCode = "unit_code") private String unitCode; + private String unitCode_dictText; /** 最小单位 */ @Dict(dictCode = "unit_code") @@ -156,8 +160,9 @@ public class MedicationManageDto { private BigDecimal partPercent; /** 剂量形式 */ + @Dict(dictCode = "dose_from_code") private Integer doseFrom; - private String doseFrom_enumText; + private String doseFrom_dictText; /** 批准文号 */ private String approvalNumber; @@ -185,8 +190,8 @@ public class MedicationManageDto { private Long manufacturerId; /** 供应商 */ - @JsonSerialize(using = ToStringSerializer.class) @Dict(dictTable = "adm_supplier", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) private Long supplyId; private String supplyId_dictText; @@ -233,13 +238,8 @@ public class MedicationManageDto { private Integer basicFlag; private String basicFlag_enumText; - /** 生产厂家名称 */ - private String manufacturerName; - - /** 常规单位 */ - @Dict(dictCode = "unit_code") - private String baseUnitCode; - private String baseUnitCode_dictText; + /** 生产厂商文本 */ + private String manufacturerText; /** 当前库存数量(常规单位) */ private String baseQuantity; @@ -256,5 +256,28 @@ public class MedicationManageDto { /** 单次最大用药频次 */ private String maxRateCode; + /** 医保类别 */ + private String ybType; + + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String typeCode; + private String typeCode_dictText; + + /** 成分 */ + private String ingredient; + + /** 购入价 */ + private BigDecimal purchasePrice; + + /** 零售价 */ + private BigDecimal retailPrice; + + /** 最高零售价 */ + private BigDecimal maximumRetailPrice; + + /** 住院临时医嘱拆分属性 */ + private Integer thoPartAttributeEnum; + private String thoPartAttributeEnum_enumText; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java index 2051e437..1614d5ff 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java @@ -3,6 +3,8 @@ package com.openhis.web.datadictionary.dto; import java.util.ArrayList; import java.util.List; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.experimental.Accessors; @@ -27,6 +29,10 @@ public class MedicationManageInitDto { private List statusWeatherOptions; // 权限限制 private List statusRestrictedOptions; + // 拆分属性 + private List partAttributeEnumOptions; + //住院临时医嘱拆分属性 + private List tempOrderSplitPropertyEnumOptions; /** * 状态 @@ -61,6 +67,8 @@ public class MedicationManageInitDto { */ @Data public static class supplierListOption { + + @JsonSerialize(using = ToStringSerializer.class) private Long value; private String label; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java index dd976187..b809a736 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java @@ -86,7 +86,6 @@ public class MedicationManageUpDto { private String definition; /** 药品编号 */ - @NotBlank(message = "药品编号不能为空") private String busNo; /** 药品名称 */ @@ -109,7 +108,7 @@ public class MedicationManageUpDto { private String wbStr; /** 药品分类 */ - private Integer categoryCode; + private String categoryCode; /** 商品名称 */ private String merchandiseName; @@ -121,7 +120,9 @@ public class MedicationManageUpDto { private String merchandiseWbStr; /** 药品单位 */ + @Dict(dictCode = "unit_code") private String unitCode; + private String unitCode_dictText; /** 最小单位 */ private String minUnitCode; @@ -136,7 +137,9 @@ public class MedicationManageUpDto { private BigDecimal partPercent; /** 剂量形式 */ + @Dict(dictCode = "dose_from_code") private Integer doseFrom; + private String doseFrom_dictText; /** 批准文号 */ private String approvalNumber; @@ -194,8 +197,10 @@ public class MedicationManageUpDto { /** 医保类别 */ private String ybType; - /** 最小费用 */ - private String minimalFee; + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String typeCode; + private String typeCode_dictText; /** 单次最小用药频次 */ private String minRateCode; @@ -205,6 +210,7 @@ public class MedicationManageUpDto { /** 药品状态 */ private Integer statusEnum; + private String statusEnum_enumText; /** 拆分属性 */ private Integer partAttributeEnum; @@ -227,5 +233,17 @@ public class MedicationManageUpDto { /** 用量限定 */ private BigDecimal usageLimit; - /** 系统类别???? */ + /** 抗生素分类 */ + @Dict(dictCode = "antibiotic_type_code") + private String antibioticCode; + private String antibioticCode_dictText; + + /** 权限限制 */ + private Integer restrictedEnum; + + /** 基药标识 */ + private Integer basicFlag; + + /** 住院临时医嘱拆分属性 */ + private Integer thoPartAttributeEnum; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java new file mode 100644 index 00000000..a8f2c5d2 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java @@ -0,0 +1,22 @@ +package com.openhis.web.datadictionary.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 药品查询信息 + * + * @author liuhr + * @date 2025/3/27 + */ +@Data +@Accessors(chain = true) +public class MedicationSearchParam { + + /** 医保是否对码 */ + private Integer ybMatchFlag; + /** 药品状态 */ + private Integer statusEnum; + /** 药品分类 */ + private String categoryCode; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java index 39a3d652..b6cabe7e 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/DeviceManageMapper.java @@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.openhis.web.datadictionary.dto.DeviceManageDto; +import com.openhis.web.datadictionary.dto.MedicationManageDto; import com.openhis.web.outpatientmanage.dto.OutpatientInfusionPatientDto; import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; /** * 器材目录 @@ -14,6 +16,7 @@ import org.apache.ibatis.annotations.Param; * @author Wuser * @date 2025/3/26 */ +@Repository public interface DeviceManageMapper { /** @@ -27,4 +30,13 @@ public interface DeviceManageMapper { @Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + /** + * 器材详情 + * + * @param id 器材ID + * @param tenantId 租户 + * @return + */ + DeviceManageDto getOne(@Param("id") Long id, @Param("tenantId") Integer tenantId); + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java index 47ecd5af..8546160c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java @@ -2,6 +2,11 @@ package com.openhis.web.datadictionary.mapper; import java.util.List; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -17,35 +22,18 @@ import com.openhis.web.datadictionary.dto.MedicationManageDto; */ @Repository public interface MedicationManageSearchMapper extends BaseMapper { - /** - * 药品目录分页查询 - * - * @param searchKey 模糊查询条件 - * @param ybMatchFlag 是否对码 - * @param statusEnum 状态 - * @param categoryCode 分类 - * @param tenantId 租户 - * @param pageSize - * @param offset - * @return - */ - List getPage(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag, - @Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode, - @Param("tenantId") Integer tenantId, @Param("pageSize") Integer pageSize, @Param("offset") Integer offset); /** * 药品目录分页查询 - * - * @param searchKey 模糊查询条件 - * @param ybMatchFlag 是否对码 - * @param statusEnum 状态 - * @param categoryCode 分类 - * @param tenantId 租户 + * + * @param page 分页 + * @param queryWrapper 查询条件 * @return */ - Long getPageCount(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag, - @Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode, - @Param("tenantId") Integer tenantId); + IPage getPage( + @Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + /** * 药品详情 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index 2d4e3795..7f082eb0 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -98,70 +98,114 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp // 费用定价子表信息 List childCharge = doctorStationAdviceAppMapper - .getChildCharge(ConditionCode.UNIT_PRODUCT_BATCH_NUM.getInfo(), chargeItemDefinitionIdList); + .getChildCharge(ConditionCode.UNIT_PRODUCT_BATCH_NUM.getCode(), chargeItemDefinitionIdList); // 费用定价主表信息 List mainCharge = doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList); - // 药品和耗材 - List medicationAndDeviceList = adviceBaseDtoList.stream() - .filter(e -> CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(e.getAdviceTableName()) - || CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(e.getAdviceTableName())) - .collect(Collectors.toList()); - // 药品和耗材-赋值 + String unitCode = ""; // 包装单位 - String minUnitCode; // 小单位 Long chargeItemDefinitionId; // 费用定价主表ID - for (AdviceBaseDto baseDto : medicationAndDeviceList) { - // 每一条医嘱的库存集合信息 - List inventoryList = - adviceInventory.stream().filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId()) - && baseDto.getAdviceTableName().equals(e.getItemTable())).collect(Collectors.toList()); - // 库存信息 - baseDto.setInventoryList(inventoryList); - - unitCode = baseDto.getUnitCode(); - minUnitCode = baseDto.getMinUnitCode(); - chargeItemDefinitionId = baseDto.getChargeItemDefinitionId(); - - List priceDtoList = new ArrayList<>(); - // 库存信息里取 单位,产品批号 去匹配价格 - for (AdviceInventoryDto adviceInventoryDto : inventoryList) { - Long finalChargeItemDefinitionId = chargeItemDefinitionId; - String finalUnitCode = unitCode; - String finalMinUnitCode = minUnitCode; - // 匹配包装单位 - List advicePrice1 = childCharge.stream() - .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() - .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode, - adviceInventoryDto.getLotNumber()))) - .peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode - .collect(Collectors.toList()); - // 匹配最小单位 - List advicePrice2 = childCharge.stream() - .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() - .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalMinUnitCode, - adviceInventoryDto.getLotNumber()))) - .peek(e -> e.setUnitCode(finalMinUnitCode)) // 设置 unitCode - .collect(Collectors.toList()); - priceDtoList.addAll(advicePrice1); - priceDtoList.addAll(advicePrice2); + for (AdviceBaseDto baseDto : adviceBaseDtoList) { + // 药品和耗材 + if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(baseDto.getAdviceTableName()) + || CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(baseDto.getAdviceTableName())) { + // 每一条医嘱的库存集合信息 , 包装单位库存前端计算 + List inventoryList = + adviceInventory.stream().filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId()) + && baseDto.getAdviceTableName().equals(e.getItemTable())).collect(Collectors.toList()); + // 库存信息 + baseDto.setInventoryList(inventoryList); + unitCode = baseDto.getUnitCode(); + chargeItemDefinitionId = baseDto.getChargeItemDefinitionId(); + List priceDtoList = new ArrayList<>(); + // 库存信息里取 命中条件 去匹配价格 + for (AdviceInventoryDto adviceInventoryDto : inventoryList) { + Long finalChargeItemDefinitionId = chargeItemDefinitionId; + String finalUnitCode = unitCode; + // 匹配包装单位 + List advicePrice1 = childCharge.stream() + .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() + .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode, + adviceInventoryDto.getLotNumber()))) + .peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode + .collect(Collectors.toList()); + priceDtoList.addAll(advicePrice1); + } + } + // 诊疗活动 + else { + List priceList = + mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) + .collect(Collectors.toList()); + // 价格信息 + baseDto.setPriceList(priceList); + // 活动类型 + baseDto + .setActivityType_enumText(EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType())); } - // 价格信息 - baseDto.setPriceList(priceDtoList); - } - // 诊疗 - List activityList = adviceBaseDtoList.stream() - .filter(e -> CommonConstants.TableName.WOR_ACTIVITY_DEFINITION.equals(e.getAdviceTableName())) - .collect(Collectors.toList()); - // 诊疗-赋值 - for (AdviceBaseDto baseDto : activityList) { - // 活动类型 - baseDto.setActivityType_enumText(EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType())); - List priceList = - mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) - .collect(Collectors.toList()); - // 价格信息 - baseDto.setPriceList(priceList); } + + // 下面的注释不要删除 2025.03.27 + // // 药品和耗材 + // List medicationAndDeviceList = adviceBaseDtoList.stream() + // .filter(e -> CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(e.getAdviceTableName()) + // || CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(e.getAdviceTableName())) + // .collect(Collectors.toList()); + // // 药品和耗材-赋值 + // String unitCode = ""; // 包装单位 + // String minUnitCode; // 小单位 + // Long chargeItemDefinitionId; // 费用定价主表ID + // for (AdviceBaseDto baseDto : medicationAndDeviceList) { + // // 每一条医嘱的库存集合信息 + // List inventoryList = + // adviceInventory.stream().filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId()) + // && baseDto.getAdviceTableName().equals(e.getItemTable())).collect(Collectors.toList()); + // // 库存信息 + // baseDto.setInventoryList(inventoryList); + // + // unitCode = baseDto.getUnitCode(); + // minUnitCode = baseDto.getMinUnitCode(); + // chargeItemDefinitionId = baseDto.getChargeItemDefinitionId(); + // + // List priceDtoList = new ArrayList<>(); + // // 库存信息里取 单位,产品批号 去匹配价格 + // for (AdviceInventoryDto adviceInventoryDto : inventoryList) { + // Long finalChargeItemDefinitionId = chargeItemDefinitionId; + // String finalUnitCode = unitCode; + // String finalMinUnitCode = minUnitCode; + // // 匹配包装单位 + // List advicePrice1 = childCharge.stream() + // .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() + // .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode, + // adviceInventoryDto.getLotNumber()))) + // .peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode + // .collect(Collectors.toList()); + // // 匹配最小单位 + // List advicePrice2 = childCharge.stream() + // .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() + // .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalMinUnitCode, + // adviceInventoryDto.getLotNumber()))) + // .peek(e -> e.setUnitCode(finalMinUnitCode)) // 设置 unitCode + // .collect(Collectors.toList()); + // priceDtoList.addAll(advicePrice1); + // priceDtoList.addAll(advicePrice2); + // } + // // 价格信息 + // baseDto.setPriceList(priceDtoList); + // } + // // 诊疗 + // List activityList = adviceBaseDtoList.stream() + // .filter(e -> CommonConstants.TableName.WOR_ACTIVITY_DEFINITION.equals(e.getAdviceTableName())) + // .collect(Collectors.toList()); + // // 诊疗-赋值 + // for (AdviceBaseDto baseDto : activityList) { + // // 活动类型 + // baseDto.setActivityType_enumText(EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType())); + // List priceList = + // mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) + // .collect(Collectors.toList()); + // // 价格信息 + // baseDto.setPriceList(priceList); + // } return adviceBaseInfo; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java index dcea9bdc..c61768b4 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java @@ -1,5 +1,6 @@ package com.openhis.web.doctorstation.dto; +import java.math.BigDecimal; import java.util.List; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -24,6 +25,12 @@ public class AdviceBaseDto { */ private String categoryCode; + /** 拆零比 */ + private BigDecimal partPercent; + + /** 拆分属性 */ + private Integer partAttributeEnum; + /** 医嘱定义ID */ @JsonSerialize(using = ToStringSerializer.class) private Long adviceDefinitionId; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java index 0c844a0f..43424d69 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java @@ -27,6 +27,12 @@ public class AdviceSaveDto { */ private String categoryCode; + /** 拆零比 */ + private BigDecimal partPercent; + + /** 拆分属性 */ + private Integer partAttributeEnum; + /** 执行次数 */ private Integer executeNum; // 当医嘱类型为药品时,选填 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java new file mode 100644 index 00000000..c4b75ec5 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java @@ -0,0 +1,59 @@ +package com.openhis.web.pharmacymanage.appservice; + +import javax.servlet.http.HttpServletRequest; + +import com.core.common.core.domain.R; +import com.openhis.web.pharmacymanage.dto.EncounterInfoSearchParam; + +/** + * 处方管理 应用实现接口 + * + * @author wangyang + * @date 2025/3/18 + */ +public interface IWesternMedicineDispenseAppService { + + /** + * 页面初始化 + * + * @return 初始化信息 + */ + R init(); + + /** + * 分页查询就诊病人列表 + * + * @param encounterInfoSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 就诊病人分页列表 + */ + R getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, Integer pageNo, Integer pageSize, + HttpServletRequest request); + + /** + * 查询处方单列表 + * + * @param encounterId 就诊号 + * @return 处方单列表 + */ + R getPrescriptionInfo(Long encounterId); + + /** + * 处方单核对发药 + * + * @param prescriptionNo 处方号 + * @return 处理结果 + */ + R medicineDispense(String prescriptionNo); + + /** + * 处方单作废 + * + * @param prescriptionNo 处方号 + * @param notPerformedReasonEnum 未发药原因 + * @return 处理结果 + */ + R medicineCancel(String prescriptionNo, Integer notPerformedReasonEnum); +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IWesternMedicineDispenseAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IWesternMedicineDispenseAppServiceImpl.java new file mode 100644 index 00000000..d6d17bd4 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IWesternMedicineDispenseAppServiceImpl.java @@ -0,0 +1,269 @@ +package com.openhis.web.pharmacymanage.appservice.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.core.domain.R; +import com.core.common.utils.DateUtils; +import com.core.common.utils.MessageUtils; +import com.core.common.utils.SecurityUtils; +import com.openhis.administration.domain.Organization; +import com.openhis.administration.service.IOrganizationService; +import com.openhis.common.constant.PromptMsgConstant; +import com.openhis.common.enums.DispenseStatus; +import com.openhis.common.enums.NotPerformedReasonEnum; +import com.openhis.common.enums.OrganizationClass; +import com.openhis.common.utils.HisQueryUtils; +import com.openhis.medication.domain.MedicationDispense; +import com.openhis.medication.service.IMedicationDispenseService; +import com.openhis.web.pharmacymanage.appservice.IWesternMedicineDispenseAppService; +import com.openhis.web.pharmacymanage.dto.*; +import com.openhis.web.pharmacymanage.mapper.WesternMedicineDispenseMapper; +import com.openhis.workflow.domain.InventoryItem; +import com.openhis.workflow.service.IInventoryItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * 西药发放 应用实现类 + * + * @author wangyang + * @date 2025/3/14 + */ +@Service +public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineDispenseAppService { + + @Autowired + private IOrganizationService iOrganizationService; + + @Autowired + IMedicationDispenseService iMedicationDispenseService; + + @Autowired + IInventoryItemService iInventoryItemService; + + @Autowired + WesternMedicineDispenseMapper westernMedicineDispenseMapper; + + /** + * 获取页面初始化信息 + * + * @return 初始化信息 + */ + @Override + public R init() { + + PageInitDto initDto = new PageInitDto(); + + // 获取科室下拉选列表 + List organizationList = iOrganizationService.getList(OrganizationClass.CLINIC.getValue()); + List organizationOptions = organizationList.stream() + .map(organization -> new PageInitDto.DepartmentOption(organization.getId(), + organization.getName())).collect(Collectors.toList()); + + // 未发药原因下拉选列表 + List notPerformedReasonOptions = + Stream.of(NotPerformedReasonEnum.values()).map(notPerformedReason -> + new PageInitDto.NotPerformedReasonOption(notPerformedReason.getValue(), + notPerformedReason.getInfo())).collect(Collectors.toList()); + + initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions); + return R.ok(initDto); + } + + /** + * 分页查询就诊病人列表 + * + * @param encounterInfoSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 就诊病人列表 + */ + @Override + public R getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, + Integer pageNo, + Integer pageSize, + HttpServletRequest request) { + + // 查询条件设定 + String condition = encounterInfoSearchParam.getCondition(); + if (!condition.isEmpty()){ + Pattern pattern = Pattern.compile(".*\\d.*"); + Matcher matcher = pattern.matcher(encounterInfoSearchParam.getCondition()); + encounterInfoSearchParam.setIdCard(matcher.find() ? condition:""); + encounterInfoSearchParam.setPatientName(!matcher.find() ? condition:""); + } + + // 构建查询条件 + QueryWrapper queryWrapper = + HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam,null,null, request); + + // 查询就诊病人列表 + Page encounterInfoPageDto = westernMedicineDispenseMapper.selectEncounterInfoListPage( + new Page<>(pageNo, pageSize), queryWrapper); + + return R.ok(encounterInfoPageDto); + } + + /** + * 查询处方单列表 + * @param encounterId 就诊号 + * @return 处方单列表 + */ + @Override + public R getPrescriptionInfo(Long encounterId) { + + // 患者基本信息查询 + PrescriptionPatientInfoDto prescriptionPatientInfoDto = westernMedicineDispenseMapper. + selectPrescriptionPatientInfo(encounterId); + + // 处方单信息查询 + List prescriptionMedicineInfoList = westernMedicineDispenseMapper. + selectPrescriptionMedicineInfoList(encounterId); + + // 计算合计金额 + if(!prescriptionMedicineInfoList.isEmpty()) { + BigDecimal totalPrice = new BigDecimal(0); + for (PrescriptionMedicineInfoDto item : prescriptionMedicineInfoList) { + totalPrice.add(item.getTotal_price()); + } + prescriptionPatientInfoDto.setTotalPrice(totalPrice); + } + + PrescriptionInfoDto prescriptionInfoDto = new PrescriptionInfoDto(); + prescriptionInfoDto.setPrescriptionPatientInfoDto(prescriptionPatientInfoDto); + prescriptionInfoDto.setPrescriptionMedicineInfoDtoList(prescriptionMedicineInfoList); + + return R.ok(prescriptionInfoDto); + } + + /** + * 处方单核对发药 + * @param prescriptionNo 处方号 + * @return 处理结果 + */ + @Override + public R medicineDispense(String prescriptionNo) { + + List medicationDispenseList = new ArrayList<>(); + List inventoryItemList = new ArrayList<>(); + boolean iMedicationDispenseUpdFlg = true; + boolean iInventoryItemUpdFlg = true; + + // 获取药品待发放和库存信息 + List dispenseInventoryList = westernMedicineDispenseMapper. + selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo); + if(!dispenseInventoryList.isEmpty()){ + MedicationDispense medicationDispense; + InventoryItem inventoryItem; + for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) { + + // 药品发放表项目设定 + medicationDispense = new MedicationDispense(); + // id + medicationDispense.setId(dispenseInventoryDto.getDispenseId()); + // 药品发放状态 + medicationDispense.setStatusEnum(DispenseStatus.COMPLETED.getValue()); + // 状态变更时间 + medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); + // 发药人 + medicationDispense.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId()); + // 已发药数量 + medicationDispense.setDispenseQuantity(dispenseInventoryDto.getDispenseQuantity()); + // 配药时间 + medicationDispense.setPrepareTime(DateUtils.getNowDate()); + // 发药时间 + medicationDispense.setDispenseTime(DateUtils.getNowDate()); + medicationDispenseList.add(medicationDispense); + + // 库存表项目设定 + inventoryItem = new InventoryItem(); + // 库存数量 + if (dispenseInventoryDto.getDispenseUnitCode().equals(dispenseInventoryDto. + getInventoryBaseUnitCode())) { + // id + inventoryItem.setId(dispenseInventoryDto.getInventoryId()); + // 包装数量 + inventoryItem.setBaseQuantity(dispenseInventoryDto.getInventoryBaseQuantity(). + min(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()))); + // 拆零数量(拆零比×包装数量) + inventoryItem.setMinQuantity(dispenseInventoryDto.getInventoryMinQuantity(). + min(dispenseInventoryDto.getPartPercent().multiply( + new BigDecimal(dispenseInventoryDto.getDispenseQuantity())))); + } else if (dispenseInventoryDto.getDispenseUnitCode().equals(dispenseInventoryDto. + getInventoryMinUnitCode())) { + // id + inventoryItem.setId(dispenseInventoryDto.getInventoryId()); + // 拆零数量 + inventoryItem.setMinQuantity(dispenseInventoryDto.getInventoryMinQuantity().min( + new BigDecimal(dispenseInventoryDto.getDispenseQuantity()))); + // 包装数量(拆零数量÷拆零比) + inventoryItem.setBaseQuantity(dispenseInventoryDto.getInventoryBaseQuantity().min( + new BigDecimal(dispenseInventoryDto.getDispenseQuantity()). + divide(dispenseInventoryDto.getPartPercent(),RoundingMode.HALF_UP))); + } + inventoryItemList.add(inventoryItem); + } + // 药品发放更新 + iMedicationDispenseUpdFlg = iMedicationDispenseService.updateBatchById(medicationDispenseList); + + // 库存更新 + iInventoryItemUpdFlg = iInventoryItemService.updateBatchById(inventoryItemList); + } + return iMedicationDispenseUpdFlg && iInventoryItemUpdFlg ? + R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)) + : R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); + } + + /** + * 作废 + * @param prescriptionNo 处方号 + * @param notPerformedReasonEnum 未发药原因 + * @return 处理结果 + */ + @Override + public R medicineCancel(String prescriptionNo, + Integer notPerformedReasonEnum) { + + List medicationDispenseList = new ArrayList<>(); + boolean iMedicationDispenseUpdFlg = true; + + // 获取药品待发放记录 + List dispenseInventoryList = westernMedicineDispenseMapper. + selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo); + if(!dispenseInventoryList.isEmpty()){ + MedicationDispense medicationDispense; + for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) { + + // 药品发放表项目设定 + medicationDispense = new MedicationDispense(); + // id + medicationDispense.setId(dispenseInventoryDto.getDispenseId()); + // 药品发放状态 + medicationDispense.setStatusEnum(DispenseStatus.DECLINED.getValue()); + // 未发药原因 + medicationDispense.setNotPerformedReasonEnum(notPerformedReasonEnum); + // 状态变更时间 + medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); + // 发药人 + medicationDispense.setPractitionerId(SecurityUtils.getLoginUser().getPractitionerId()); + medicationDispenseList.add(medicationDispense); + } + // 药品发放更新 + iMedicationDispenseUpdFlg = iMedicationDispenseService.updateBatchById(medicationDispenseList); + } + return iMedicationDispenseUpdFlg? + R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)) + : R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); + } +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java new file mode 100644 index 00000000..db9063ac --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java @@ -0,0 +1,93 @@ +package com.openhis.web.pharmacymanage.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.core.common.core.domain.R; +import com.openhis.web.pharmacymanage.appservice.IWesternMedicineDispenseAppService; +import com.openhis.web.pharmacymanage.dto.EncounterInfoSearchParam; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 西药发药 + * + * @author wangyang + * @date 2025/3/14 + */ +@RestController +@RequestMapping("/pharmacy-manage/western-medicine-dispense") +@Slf4j +@AllArgsConstructor +public class WesternMedicineDispenseController { + + @Autowired + public IWesternMedicineDispenseAppService iWesternMedicineDispenseService; + + /** + * 获取页面初始化信息 + * + * @return 初始化信息 + */ + @GetMapping(value = "/init") + public R medicineDispenseInit() { + return iWesternMedicineDispenseService.init(); + } + + /** + * 分页查询就诊病人列表 + * + * @param encounterInfoSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 就诊病人列表 + */ + @GetMapping("/encounter-list") + public R getEncounterInfoList(EncounterInfoSearchParam encounterInfoSearchParam, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + return iWesternMedicineDispenseService.getEncounterInfoListPage(encounterInfoSearchParam, pageNo, pageSize, + request); + } + + /** + * 处方单查询 + * + * @param encounterId 就诊Id + */ + @GetMapping("/prescription-list") + public R getPatientInfoList(@RequestParam(value = "encounterId") Long encounterId) { + return iWesternMedicineDispenseService.getPrescriptionInfo(encounterId); + } + + // todo:配药逻辑 + + /** + * 核对发药 + * + * @param prescriptionNo 处方号 + */ + @GetMapping("/medicine-dispense") + public R medicineDispense(@RequestParam(value = "prescriptionNo") String prescriptionNo) { + return iWesternMedicineDispenseService.medicineDispense(prescriptionNo); + } + + /** + * 作废 + * + * @param prescriptionNo 处方号 + * @param notPerformedReasonEnum 未发药原因 + */ + @GetMapping("/medicine-cancel") + public R medicineCancel(@RequestParam(value = "prescriptionNo") String prescriptionNo, + @RequestParam(value = "prescriptionNo") Integer notPerformedReasonEnum) { + return iWesternMedicineDispenseService.medicineCancel(prescriptionNo, notPerformedReasonEnum); + } +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java new file mode 100644 index 00000000..8f545de7 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java @@ -0,0 +1,47 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import java.math.BigDecimal; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 药品发放和库存表连接信息 + * + * @author wangyang + * @date 2025-03-14 + */ +@Data +@Accessors(chain = true) +public class DispenseInventoryDto { + + /** 药品发放表主键ID */ + private Long dispenseId; + + /** 请求单位编码 */ + private String dispenseUnitCode; + + /** 请求数量 */ + private Integer dispenseQuantity; + + /** 库存项目表主键ID */ + private Long inventoryId; + + /** 常规单位 */ + private String inventoryBaseUnitCode; + + /** 当前库存数量(常规单位) */ + private BigDecimal inventoryBaseQuantity; + + /** 最小单位 */ + private String inventoryMinUnitCode; + + /** 当前库存数量(最小单位数量) */ + private BigDecimal inventoryMinQuantity; + + /** 拆零比 */ + private BigDecimal partPercent; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java new file mode 100644 index 00000000..dc1eeed6 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java @@ -0,0 +1,38 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import java.io.Serializable; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 就诊人员列表 + * + * @author WangYang + * @date 2025-03-18 + */ +@Data +@Accessors(chain = true) +public class EncounterInfoPageDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 就诊ID */ + private Long encounterId; + + /** 科室 */ + private String departmentName; + + /** 患者姓名 */ + private String patientName; + + /** 性别 */ + private Integer genderEnum; + private String genderEnum_enumText; + + /** 就诊日期 */ + private String encounterDate; +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java new file mode 100644 index 00000000..d46515c4 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java @@ -0,0 +1,32 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import java.io.Serializable; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 处方列表查询条件 + * + * @author wangyang + * @date 2025-03-14 + */ +@Data +@Accessors(chain = true) +public class EncounterInfoSearchParam implements Serializable { + + /** 科室 */ + private long departmentId; + + /** 患者姓名或者证件号 */ + private String condition; + + /** 患者姓名 */ + private String patientName; + + /** 证件号 */ + private String idCard; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java new file mode 100644 index 00000000..d5dd601a --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java @@ -0,0 +1,49 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import java.util.List; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * + * @author wangyang + * @date 2025-03-14 + */ +@Data +@Accessors(chain = true) +public class PageInitDto { + + /** 科室列表 */ + private List departmentOptions; + + /** 未发药原因 */ + private List notPerformedReasonOptions; + + @Data + public static class DepartmentOption { + + private Long value; + private String label; + + public DepartmentOption(Long value, String label) { + this.value = value; + this.label = label; + } + } + + @Data + public static class NotPerformedReasonOption { + + private Integer value; + private String label; + + public NotPerformedReasonOption(Integer value, String label) { + this.value = value; + this.label = label; + } + } +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java new file mode 100644 index 00000000..0272c80a --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java @@ -0,0 +1,29 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import java.io.Serializable; +import java.util.List; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 处方信息 + * + * @author wangyang + * @date 2025-03-14 + */ +@Data +@Accessors(chain = true) +public class PrescriptionInfoDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 患者基本信息 */ + private PrescriptionPatientInfoDto prescriptionPatientInfoDto; + + /** 处方药品信息 */ + List prescriptionMedicineInfoDtoList; +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java new file mode 100644 index 00000000..a694d4b8 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java @@ -0,0 +1,80 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 就诊人员列表 + * + * @author wangyang + * @date 2025-03-14 + */ +@Data +@Accessors(chain = true) +public class PrescriptionMedicineInfoDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 科室 */ + private String departmentName; + + /** 项目类型 */ + private String itemType; + + /** 开单医生 */ + private String doctorName; + + /** 处方号 */ + private String prescriptionNo; + + /** 药品名称 */ + private String medicineName; + + /** 规格 */ + private String totalVolume; + + /** 单次剂量 */ + private BigDecimal dose; + + /** 用药频次 */ + private String rateCode; + + /** 用法 */ + private String methodCode; + + /** 剂量单位 */ + private String doseUnitCode; + + /** 单次最大剂量 */ + private BigDecimal maxDose; + + /** 首次用量 */ + private BigDecimal firstDose; + + /** 首次持续时间 */ + private String firstDuration; + + /** 给药间隔 */ + private String dispenseInterval; + + /** 单次发药数 */ + private Integer dispensePerQuantity; + + /** 每次发药供应天数 */ + private Integer dispensePerDuration; + + /** 数量 */ + private Integer quantity; + + /** 单价 */ + private BigDecimal unitPrice; + + /** 金额 */ + private BigDecimal total_price; +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java new file mode 100644 index 00000000..e22cdea8 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java @@ -0,0 +1,56 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.dto; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 患者基本信息 + * + * @author wangyang + * @date 2025-03-14 + */ +@Data +@Accessors(chain = true) +public class PrescriptionPatientInfoDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 姓名 */ + private String patientName; + + /** 性别 */ + private Integer genderEnum; + private String genderEnum_enumText; + + /** 生日 */ + private Date birth_date; + + /** 年龄 */ + private String age; + + /** 合同类型 */ + private Integer categoryEnum; + private String categoryEnum_enumText; + + /** 证件号 */ + private String idCard; + + /** 就诊科室 */ + private String organizationName; + + /** 就诊日期 */ + private String encounterDate; + + /** 门诊诊断 */ + private String diagnoseName; + + /** 总金额 */ + private BigDecimal totalPrice; +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java new file mode 100644 index 00000000..0fcabf4c --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java @@ -0,0 +1,53 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.pharmacymanage.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.openhis.web.pharmacymanage.dto.*; + +@Repository +public interface WesternMedicineDispenseMapper { + + /** + * 就诊病人列表分页查询 + * + * @param page 分页 + * @param queryWrapper 查询条件 + * @return 就诊病人列表 + */ + Page selectEncounterInfoListPage(@Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + /** + * 患者基本信息查询 + * + * @param encounterId 就诊号 + * @return 患者基本信息 + */ + PrescriptionPatientInfoDto selectPrescriptionPatientInfo(@Param("encounterId") Long encounterId); + + /** + * 处方单查询 + * + * @param encounterId 就诊号 + * @return 处方单列表 + */ + List selectPrescriptionMedicineInfoList(@Param("encounterId") Long encounterId); + + /** + * 待发药和库存信息查询 + * + * @param prescriptionNo 处方号 + * @return 待发药信息 + */ + List + selectDispenseInventoryInfoByPrescriptionNo(@Param("prescriptionNo") String prescriptionNo); +} diff --git a/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml index be4c8a1f..eb75fe31 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - SELECT T3.tenant_id, T3.user_id, T3.practitioner_id, @@ -45,18 +45,33 @@ ${ew.customSqlSegment} - + SELECT + sr.role_id, + sr.role_name, + ap.ID AS practitioner_id + FROM + sys_role sr + JOIN sys_user_role sur ON sr.role_id = sur.role_id + JOIN adm_practitioner ap ON sur.user_id = ap.user_id + WHERE + ap.delete_flag = '0' + + AND ap.ID IN + + #{itemId} + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml index f74ad716..fb552fc1 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/DeviceManageMapper.xml @@ -10,7 +10,7 @@ T3.name, T3.py_str, T3.wb_str, - T3.category_enum, + T3.category_code, T3.type_code, T3.unit_code, T3.size, @@ -35,7 +35,11 @@ T3.substance_text, T3.allergen_flag, T3.tenant_id, - T3.price + T3.item_type_code, + T3.yb_type, + T3.retail_price, + T3.purchase_price, + T3.maximum_retail_price FROM ( SELECT @@ -44,7 +48,7 @@ T1.name, T1.py_str, T1.wb_str, - T1.category_enum, + T1.category_code, T1.type_code, T1.unit_code, T1.size, @@ -69,7 +73,23 @@ T1.substance_text, T1.allergen_flag, T1.tenant_id, - T2.price + T2.type_code as item_type_code, + T2.yb_type, + T2.price as retail_price,--零售价, + ( SELECT T4.amount + FROM adm_charge_item_definition T5 + LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id + WHERE T4.condition_code = '2'--2:采购价 + AND T5.instance_id = T1.id + AND T5.instance_table = 'adm_device_definition' + ) as purchase_price,--购入价 + ( SELECT T4.amount + FROM adm_charge_item_definition T5 + LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id + WHERE T4.condition_code = '4'--4:限制 + AND T5.instance_id = T1.id + AND T5.instance_table = 'adm_device_definition' + ) as maximum_retail_price--最高零售价 FROM adm_device_definition T1 LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id @@ -81,4 +101,69 @@ ${ew.customSqlSegment} + + + \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml index 760e0fa3..18e5c5da 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml @@ -1,8 +1,84 @@ + - - + SELECT + encounter_id, + organization_id, + department_name, + id_card, + patient_name, + gender_enum, + encounter_date + + FROM + ( + SELECT + DISTINCT + T2.id AS encounter_id, + TO_CHAR(T2.start_time,'YYYY-MM-DD') AS encounter_date, + T2.organization_id, + T3.gender_enum, + T3.name AS patient_name, + T3.id_card, + T6.name AS department_name + + FROM med_medication_dispense AS T1 + + INNER JOIN adm_encounter AS T2 + ON T1.encounter_id = T2.id + + INNER JOIN adm_patient AS T3 + ON T1.patient_id = T3.id + + INNER JOIN med_medication AS T4 + ON T1.medication_id = T4.id + + INNER JOIN med_medication_definition AS T5 + ON T4.medication_def_id = T5.id + AND T5.category_code IN ('1','2') + + INNER JOIN adm_organization AS T6 + ON T2.organization_id = T6.id + + WHERE + T1.status_enum = 3 + + ORDER BY + T2.start_time desc, + T2.organization_id + ) + ${ew.customSqlSegment} + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java index bc9f0656..fecb2c50 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java @@ -189,9 +189,13 @@ public class CommonConstants { */ public interface DictName { /** - * 药品分类 + * 器材 */ String MED_CATEGORY_CODE = "med_category_code"; + /** + * 药品分类 + */ + String DEVICE_CATEGORY_CODE = "device_category_code"; } diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AssignSeqEnum.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AssignSeqEnum.java index 69c1576e..a3507485 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AssignSeqEnum.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AssignSeqEnum.java @@ -49,7 +49,17 @@ public enum AssignSeqEnum { /** * 费用项目编码 */ - CHARGE_ITEM_NO("8", "费用项目编码", "CI"); + CHARGE_ITEM_NO("8", "费用项目编码", "CI"), + + /** + * 药品项目编码 + */ + MEDICATION_NUM("9", "药品项目编码", "MD"), + + /** + * 器材项目编码 + */ + DEVICE_NUM("10", "项目编码", "DD"); private final String code; private final String info; diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java new file mode 100644 index 00000000..5e949485 --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java @@ -0,0 +1,96 @@ +package com.openhis.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 药品请求状态 + * + * @author wangyang + * @date 2025-03-14 + */ +@Getter +@AllArgsConstructor +public enum DispenseStatus implements HisEnumInterface { + + /** + * 草稿 + */ + DRAFT(1, "DR", "草稿"), + + /** + * 待配药 + */ + PREPARATION(2, "PR", "待配药"), + + /** + * 待发药 + */ + IN_PROGRESS(3, "IN", "待发药"), + + /** + * 已发药 + */ + COMPLETED(4, "CO", "已发药"), + + /** + * 暂停 + */ + ON_HOLD(5, "ON", "暂停"), + + /** + * 停止 + */ + STOPPED(6, "ST", "停止"), + + /** + * 拒绝发药 + */ + DECLINED(7, "DE", "拒绝发药 已退药"), + + /** + * 已汇总 + */ + SUMMARIZED(8, "SR", "已汇总"), + + /** + * 部分发药 + */ + PART_COMPLETED(9, "PC", "部分发药"), + + /** + * 部分退药 + */ + PART_REFUND(10, "PR", "部分退药"), + + /** + * 退药中 + */ + IN_REFUND(11, "IR", "退药中"), + + /** + * 已退药 + */ + REFUNDED(12, "RE", "已退药"), + + /** + * 未知 + */ + UNKNOWN(13, "UN", "未知"); + + private Integer value; + private String code; + private String info; + + public static DispenseStatus getByValue(Integer value) { + if (value == null) { + return null; + } + for (DispenseStatus val : values()) { + if (val.getValue().equals(value)) { + return val; + } + } + return null; + } +} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/NotPerformedReasonEnum.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/NotPerformedReasonEnum.java new file mode 100644 index 00000000..e9eb5288 --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/NotPerformedReasonEnum.java @@ -0,0 +1,136 @@ +package com.openhis.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 药品请求状态 + * + * @author wangyang + * @date 2025-03-14 + */ +@Getter +@AllArgsConstructor +public enum NotPerformedReasonEnum implements HisEnumInterface { + + /** + * 订单已停止 + */ + ORDER_STOPPED(1,"OS", "订单已停止"), + + /** + * 过时订单 + */ + OUTDATED_ORDER(2, "OO", "过时订单"), + + /** + * 不完整的数据 + */ + INCOMPLETE_DATA(3, "ID", "不完整的数据"), + + /** + * 产品不可用 + */ + PRODUCT_NOT_AVAILABLE(4, "PNA", "产品不可用"), + + /** + * 道德/宗教 + */ + MORAL_RELIGIOUS(5, "MR", "道德/宗教"), + + /** + * 无法提供护理 + */ + UNABLE_PROVIDE(6, "UP", "无法提供护理"), + + /** + * 先尝试其他治疗方法 + */ + OTHER_TREATMENT(7, "OT", "先尝试其他治疗方法"), + + /** + * 处方/请求需要澄清 + */ + PRESCRIPTION_REQUEST_CLARIFICATION(8, "PRC", "处方/请求需要澄清"), + + /** + * 药物水平过高 + */ + EXCESSIVE_DRUG_LEVELS(9, "EDL", "药物水平过高"), + + /** + * 入院 + */ + HOSPITALIZED(10, "HO", "入院"), + + /** + * 实验室干扰问题 + */ + LABORATORY_INTERFERENCE_ISSUE(11, "LII", "实验室干扰问题"), + + /** + * 患者不可用 + */ + PATIENT_UNAVAILABLE(12, "PU", "患者不可用"), + + /** + * 患者怀孕或哺乳 + */ + PATIENT_PREGNANT_BREASTFEEDING(13, "PPB", "患者怀孕或哺乳"), + + /** + * 过敏 + */ + ALLERGY(14, "AL", "过敏"), + + /** + * 药物与另一种药物相互作用 + */ + ANOTHER_DRUG(15, "AD", "药物与另一种药物相互作用"), + + /** + * 重复治疗 + */ + REPEAT_TREATMENT(16, "RT", "重复治疗"), + + /** + * 疑似不耐受 + */ + SUSPECTED_INTOLERANCE(17, "SI", "疑似不耐受"), + + /** + * 计划手术的患者 + */ + PATIENTS_PLANNING_SURGERY(18, "PPS", "计划手术的患者"), + + /** + * 冲洗 + */ + WASH(19, "WA", "冲洗"), + + /** + * 药物缺货 + */ + DRUG_SHORTAGE(20, "DS", "药物缺货"), + + /** + * 药物不可用 + */ + MEDICATION_NOT_AVAILABLE(21, "MNA", "药物不可用"); + + private Integer value; + private String code; + private String info; + + public static NotPerformedReasonEnum getByValue(Integer value) { + if (value == null) { + return null; + } + for (NotPerformedReasonEnum val : values()) { + if (val.getValue().equals(value)) { + return val; + } + } + return null; + } +} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PractitionerRole.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PractitionerRoles.java similarity index 74% rename from openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PractitionerRole.java rename to openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PractitionerRoles.java index 5ec25b1a..a0242e62 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PractitionerRole.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PractitionerRoles.java @@ -10,13 +10,15 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum PractitionerRole implements HisEnumInterface { +public enum PractitionerRoles implements HisEnumInterface { DOCTOR(1, "doctor", "医生"), NURSE(2, "nurse", "护士"), - PHARMACIST(3, "pharmacist", "药师"); + PHARMACIST(3, "pharmacist", "药师"), + + LOCATION_ADMIN(4, "locationAdmin", "库房管理员"); @EnumValue private final Integer value; diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java index 8fb13339..71abcc59 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java @@ -23,37 +23,42 @@ public enum RequestStatus implements HisEnumInterface { /** * 已发送 */ - COMPLETED(2, "completed", "已发送"), + ACTIVE(2, "active", "已发送"), + + /** + * 已完成 + */ + COMPLETED(3, "completed", "已完成"), /** * 暂停 */ - ON_HOLD(3, "on_hold", "暂停"), + ON_HOLD(4, "on_hold", "暂停"), /** * 撤回 */ - CANCELLED(4, "cancelled", "撤回"), + CANCELLED(5, "cancelled", "撤回"), /** * 停止 */ - STOPPED(5, "stopped", "停止"), + STOPPED(6, "stopped", "停止"), /** * 不可用 */ - ENDED(6, "ended", "不可用"), - - /** - * 未知 - */ - UNKNOWN(7, "unknown", "未知"), + ENDED(7, "ended", "不可用"), /** * 已汇总 */ - SUMMARIZED(8, "summarized", "已汇总"); + SUMMARIZED(8, "summarized", "已汇总"), + + /** + * 未知 + */ + UNKNOWN(9, "unknown", "未知"); @EnumValue private final Integer value; diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SplitPropertyCode.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SplitPropertyCode.java index 9de5b807..a81c02c4 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SplitPropertyCode.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/SplitPropertyCode.java @@ -15,10 +15,10 @@ import lombok.Getter; @AllArgsConstructor public enum SplitPropertyCode implements HisEnumInterface { - OUTPATIENT_NON_SPLITTABLE(1, "outpatient_non_splittable", "门诊不可拆分包装单位"), - INPATIENT_SPLITTABLE(2, "inpatient_splittable", "住院可拆分包装单位"), - EMERGENCY_SPLITTABLE(3, "emergency_splittable", "急诊可拆分包装单位"), - PHARMACY_NON_SPLITTABLE(4, "pharmacy_non_splittable", "药房不可拆分包装单位"); + OUTPATIENT_MIN_UNIT_CEIL(1, "outpatient_min_unit_ceil", "门诊按最小单位每次量向上取整"), + OUTPATIENT_PACKAGE_NON_SPLITTABLE(2, "outpatient_package_non_splittable", "门诊按包装单位不可拆分"), + OUTPATIENT_MIN_UNIT_TOTAL_CEIL(3, "outpatient_min_unit_total_ceil", "门诊按最小单位总量向上取整"), + OUTPATIENT_PACKAGE_UNIT_CEIL(4, "outpatient_package_unit_ceil", "门诊按包装单位每次量向上取整"); @EnumValue private final Integer value; diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/TempOrderSplitPropertyCode.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/TempOrderSplitPropertyCode.java new file mode 100644 index 00000000..916f1e5d --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/TempOrderSplitPropertyCode.java @@ -0,0 +1,27 @@ +package com.openhis.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 住院临时医嘱拆分属性的枚举 + * + * @author liuhr + * + * @date 2025/3/28 + */ +@Getter +@AllArgsConstructor +public enum TempOrderSplitPropertyCode implements HisEnumInterface { + + TEMP_ORDER_MIN_UNIT_CEIL(1, "temp_order_min_unit_ceil", "临时医嘱按最小单位每次量向上取整"), + TEMP_ORDER_PACKAGE(2, "temp_order_package", "临时医嘱按包装单位开立"), + TEMP_ORDER_MIN_UNIT_TOTAL_CEIL(3, "temp_order_min_unit_total_ceil", "临时医嘱按最小单位总量向上取整"), + TEMP_ORDER_PACKAGE_UNIT_CEIL(4, "temp_order_package_unit_ceil", "临时医嘱按包装单位每次量向上取整"); + + @EnumValue + private final Integer value; + private final String code; + private final String info; +} \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/DeviceDefinition.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/DeviceDefinition.java index ea207b6a..ff9b7c27 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/DeviceDefinition.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/DeviceDefinition.java @@ -87,7 +87,7 @@ public class DeviceDefinition extends HisBaseEntity { private Integer ybMatchFlag; /** 状态 */ - private PublicationStatus statusEnum; + private Integer statusEnum; /** 生产厂家 */ private Long manufacturerId; diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Supplier.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Supplier.java index 991f6652..6bdca327 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Supplier.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Supplier.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.core.common.core.domain.HisBaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -26,6 +28,7 @@ public class Supplier extends HisBaseEntity { /** ID */ @TableId(type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** 编号 */ diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java index dd66aa3b..d868ba68 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java @@ -3,6 +3,8 @@ package com.openhis.administration.service; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.administration.domain.Organization; +import java.util.List; + /** * 机构管理Service接口 * @@ -27,4 +29,11 @@ public interface IOrganizationService extends IService { */ boolean inactiveOrg(Long orgId); + /** + * 获取机构下拉列表 + * + * @param classEnum 机构分类 + * @return 机构下拉列表 + */ + List getList(Integer classEnum); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java index 2c66cfb7..0c0288d3 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java @@ -1,7 +1,10 @@ package com.openhis.administration.service.impl; +import java.util.List; + import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.openhis.administration.domain.Organization; @@ -45,4 +48,15 @@ public class OrganizationServiceImpl extends ServiceImpl 0; } + /** + * 获取机构下拉列表 + * + * @param classEnum 机构分类 + * @return 机构下拉列表 + */ + @Override + public List getList(Integer classEnum) { + return baseMapper.selectList(new LambdaQueryWrapper() + .select(Organization::getId, Organization::getName).eq(Organization::getClassEnum, classEnum)); + } } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java index 090ff014..25e3eb15 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java @@ -16,8 +16,8 @@ public interface IPaymentReconciliationService extends IService getChargeItemIdListByPayment(Long paymentId); + List getChargeItemIdListByPayment(List paymentIdList); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java index c9e49c4b..639fb487 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java @@ -1,5 +1,6 @@ package com.openhis.financial.service.impl; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -30,21 +31,28 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl getChargeItemIdListByPayment(Long paymentId) { + public List getChargeItemIdListByPayment(List paymentIdList) { // 根据支付id获取支付信息 - PaymentReconciliation paymentReconciliation = - paymentReconciliationMapper.selectOne(new LambdaQueryWrapper() - .select(PaymentReconciliation::getChargeItemIds).eq(PaymentReconciliation::getId, paymentId)); - if (paymentReconciliation == null) { + List paymentReconciliationList = + paymentReconciliationMapper.selectList(new LambdaQueryWrapper() + .select(PaymentReconciliation::getChargeItemIds).in(PaymentReconciliation::getId, paymentIdList)); + if (paymentReconciliationList.isEmpty()) { return null; } + // 拆解所有的chargeItemId,拼装成一个集合 + List chargeItemIdList = paymentReconciliationList.stream().map(PaymentReconciliation::getChargeItemIds) + .collect(Collectors.toList()); + List chargeItemIds = new ArrayList<>(); + for (String chargeItemId : chargeItemIdList) { + chargeItemIds.addAll(Arrays.stream(chargeItemId.split(CommonConstants.Common.COMMA)).map(Long::parseLong) + .collect(Collectors.toList())); + } // 将收费项目集合转换成列表 - return Arrays.stream(paymentReconciliation.getChargeItemIds().split(CommonConstants.Common.COMMA)) - .map(Long::parseLong).collect(Collectors.toList()); + return chargeItemIds; } } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java index ddc85a7e..c33e0f0c 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDefinition.java @@ -156,4 +156,7 @@ public class MedicationDefinition extends HisBaseEntity { /** 基药标识 */ private Integer basicFlag; + /** 住院临时医嘱拆分属性 */ + private Integer thoPartAttributeEnum; + } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java index 088543d2..980fca10 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/domain/MedicationDetail.java @@ -99,7 +99,7 @@ public class MedicationDetail extends HisBaseEntity { private String wbStr; /** 药品分类 */ - private Integer categoryCode; + private String categoryCode; /** 商品名称 */ private String merchandiseName; @@ -198,5 +198,6 @@ public class MedicationDetail extends HisBaseEntity { private String manufacturerText; /** 用量限定 */ private BigDecimal usageLimit; - + /** 住院临时医嘱拆分属性 */ + private Integer thoPartAttributeEnum; } diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDefinitionService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDefinitionService.java index f69bf849..0ecd9358 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDefinitionService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDefinitionService.java @@ -20,11 +20,4 @@ public interface IMedicationDefinitionService extends IService { + /** + * 新增草稿状态的药品发放信息 + * + * @param medicationRequestList 药品请求信息 + */ + void addMedicationDispense(List medicationRequestList); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationService.java index 8e5d5ef6..b3ed6cc1 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationService.java @@ -32,6 +32,4 @@ public interface IMedicationService extends IService { // 新增药品目录 boolean addMedication(MedicationDetail medicationDetail); - // 新增医保药品目录 - boolean addYbMedicatione(MedicationDetail medicationDetail); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDefinitionServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDefinitionServiceImpl.java index dfc6f12f..e1dbe0b7 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDefinitionServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDefinitionServiceImpl.java @@ -60,8 +60,5 @@ public class MedicationDefinitionServiceImpl extends ServiceImpl implements IMedicationDispenseService { +public class MedicationDispenseServiceImpl extends ServiceImpl + implements IMedicationDispenseService { + /** + * 新增草稿状态的药品发放信息 + * + * @param medicationRequestList 药品请求信息 + */ + @Override + public void addMedicationDispense(List medicationRequestList) { + for (MedicationRequest medicationRequest : medicationRequestList) { + MedicationDispense medicationDispense = new MedicationDispense(); + // 药品发放id + medicationDispense.setBusNo(medicationRequest.getBusNo()); + // 药品发放状态 + medicationDispense.setStatusEnum(DispenseStatus.DRAFT.getValue()); + // 状态变更时间 + medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); + // 发药类型 + medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum()); + // 药品编码 + medicationDispense.setMedicationId(medicationRequest.getMedicationId()); + // 请求数量 + medicationDispense.setQuantity(medicationRequest.getQuantity()); + // 请求单位编码 + medicationDispense.setUnitCode(medicationRequest.getUnitCode()); + // 产品批号 + medicationDispense.setLotNumber(medicationRequest.getLotNumber()); + // 患者id + medicationDispense.setPatientId(medicationRequest.getPatientId()); + // 就诊id + medicationDispense.setEncounterId(medicationRequest.getEncounterId()); + // 支持用药信息 + medicationDispense.setSupportInfo(medicationRequest.getSupportInfo()); + // 发药人 + medicationDispense.setPractitionerId(medicationRequest.getPractitionerId()); + // 发放药房 + medicationDispense.setLocationId(medicationRequest.getPerformOrg()); + // 药品请求id + medicationDispense.setMedReqId(medicationRequest.getId()); + // 已发药数量 + medicationDispense.setDispenseQuantity(0); + // 用法 + medicationDispense.setMethodCode(medicationRequest.getMethodCode()); + // 用药频次 + medicationDispense.setFrequencyCode(medicationRequest.getRateCode()); + // 单次剂量 + medicationDispense.setDose(medicationRequest.getDose()); + // 剂量单位 + medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode()); + // 单次最大剂量 + medicationDispense.setMaxUnit(medicationRequest.getMaxDose()); + baseMapper.insert(medicationDispense); + } + } } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationServiceImpl.java index 34d33057..0e59a1a0 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationServiceImpl.java @@ -83,14 +83,4 @@ public class MedicationServiceImpl extends ServiceImpl @@ -449,14 +450,6 @@ function handleSelectionChange(selection) { multiple.value = !selection.length; } -/** 下载模板操作 */ -function importTemplate() { - proxy.download( - "system/user/importTemplate", - {}, - `user_template_${new Date().getTime()}.xlsx` - ); -} /** 重置操作表单 */ function reset() { form.value = { diff --git a/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue b/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue index 78de83b4..46a47c7f 100644 --- a/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue +++ b/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue @@ -234,7 +234,7 @@ - + - + - + @@ -293,6 +294,7 @@ value-key="id" placeholder="请选择提供部门" check-strictly + clearable /> @@ -300,7 +302,7 @@ - + - + - + @@ -24,49 +24,25 @@ - - + - - - - - - - - + + - + + + + + + @@ -92,7 +82,7 @@ - + - - + + + + - + + + + + + @@ -131,56 +133,38 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -270,20 +297,18 @@ + getList(); + }); +} + +getDiseaseTreatmentList(); +getList(); + +.el-form--inline .el-form-item { + display: inline-flex; + vertical-align: middle; + margin-right: 10px !important; +} + \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/catalog/disease/components/disease.js b/openhis-ui-vue3/src/views/catalog/disease/components/disease.js index 07613c01..6738a23c 100644 --- a/openhis-ui-vue3/src/views/catalog/disease/components/disease.js +++ b/openhis-ui-vue3/src/views/catalog/disease/components/disease.js @@ -1,5 +1,4 @@ import request from '@/utils/request' -import { parseStrEmpty } from "@/utils/openhis"; // 查询病种目录列表 export function getDiseaseList(query) { @@ -13,8 +12,9 @@ export function getDiseaseList(query) { // 查询病种目录详细 export function getDiseaseOne(id) { return request({ - url: '/data-dictionary/disease/information-one/' + parseStrEmpty(id), - method: 'get' + url: '/data-dictionary/disease/information-one', + method: 'get', + params: { id } // 确保参数正确传递 }) } diff --git a/openhis-ui-vue3/src/views/catalog/disease/index.vue b/openhis-ui-vue3/src/views/catalog/disease/index.vue index 219c153e..c1b102e6 100644 --- a/openhis-ui-vue3/src/views/catalog/disease/index.vue +++ b/openhis-ui-vue3/src/views/catalog/disease/index.vue @@ -3,15 +3,6 @@ -
- + - 查询 - + 编辑 - 查看 + > --> @@ -273,7 +244,6 @@ - @@ -281,7 +251,11 @@ - + - + - - + - + - + @@ -138,16 +131,13 @@ value-key="id" placeholder="请选择地点" check-strictly + clearable /> - - + + - + - + - + @@ -223,11 +201,7 @@ --> - + - + - + - + - + - + + + + @@ -325,9 +291,9 @@ - + - + @@ -366,11 +332,7 @@ - + - - + + - - + + + + + + + + + @@ -451,17 +425,29 @@ - + - + - + @@ -515,6 +501,11 @@ + + + + + @@ -595,7 +585,6 @@ @@ -606,7 +595,6 @@ @@ -616,7 +604,6 @@ @@ -663,6 +650,7 @@ diff --git a/openhis-ui-vue3/src/views/charge/outpatientregistration/index.vue b/openhis-ui-vue3/src/views/charge/outpatientregistration/index.vue index de628fe0..5e3baf9f 100644 --- a/openhis-ui-vue3/src/views/charge/outpatientregistration/index.vue +++ b/openhis-ui-vue3/src/views/charge/outpatientregistration/index.vue @@ -339,6 +339,7 @@ highlight-current default-expand-all @node-click="handleNodeClick" + clearable /> diff --git a/openhis-ui-vue3/src/views/medicationmanagement/purchaseinventory/components/inventoryReceiptDialog.vue b/openhis-ui-vue3/src/views/medicationmanagement/purchaseinventory/components/inventoryReceiptDialog.vue index 67d646a2..b2044b57 100644 --- a/openhis-ui-vue3/src/views/medicationmanagement/purchaseinventory/components/inventoryReceiptDialog.vue +++ b/openhis-ui-vue3/src/views/medicationmanagement/purchaseinventory/components/inventoryReceiptDialog.vue @@ -222,6 +222,7 @@ v-model="scope.row.itemId" placeholder="请选择" :class="{ 'error-border': scope.row.error }" + clearable > @@ -271,6 +272,7 @@ v-model="scope.row.unitCode" placeholder="请选择计量单位" :class="{ 'error-border': scope.row.error }" + clearable > @@ -297,6 +299,7 @@ v-model="scope.row.purposeLocationId" placeholder="请选择仓库" :class="{ 'error-border': scope.row.error }" + clearable > @@ -322,6 +325,7 @@ v-model="scope.row.purposeLocationStoreId" placeholder="请选择货位" :class="{ 'error-border': scope.row.error }" + clearable >