参与者改造

This commit is contained in:
Wang.Huan
2025-03-28 14:26:20 +08:00
parent f81a553c21
commit f767b93f0c
15 changed files with 316 additions and 131 deletions

View File

@@ -149,14 +149,14 @@
<if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
<if test="menuCheckStrictly != null">
<choose>
<when test="menuCheckStrictly == true">1,</when>
<otherwise>0,</otherwise>
<when test="menuCheckStrictly == true">menu_check_strictly=1,</when>
<otherwise>menu_check_strictly=0,</otherwise>
</choose>
</if>
<if test="deptCheckStrictly != null">
<choose>
<when test="deptCheckStrictly == true">1,</when>
<otherwise>0,</otherwise>
<when test="deptCheckStrictly == true">dept_check_strictly=1,</when>
<otherwise>dept_check_strictly=0,</otherwise>
</choose>
</if>
<if test="status != null and status != ''">status = #{status},</if>

View File

@@ -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;
/**
* 参与者 应该服务类

View File

@@ -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<BizUser>().eq(BizUser::getUserName, userName)).getUserId(); // 用户id
// 新增 sys_user_role
List<Long> roleIds = userAndPractitionerDto.getRoleIds();
List<PractitionerRolesDto> 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<PractitionerOrgAndLocationDto> 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<UserAndPractitionerChildDto> 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<PractitionerOrgAndLocationDto> 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<PractitionerOrgAndLocationDto> 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<Long> practitionerIdList =
records.stream().map(UserAndPractitionerDto::getPractitionerId).collect(Collectors.toList());
// 集合
List<UserAndPractitionerChildDto> childList = practitionerAppAppMapper.getChildList(practitionerIdList);
// 角色集合
List<PractitionerRolesDto> practitionerRolesDtoList =
practitionerAppAppMapper.getPractitionerRolesDtoList(practitionerIdList);
// 科室和位置
List<PractitionerOrgAndLocationDto> orgAndLocationDtoList =
practitionerAppAppMapper.getOrgAndLocationDtoList(practitionerIdList);
for (UserAndPractitionerDto record : records) {
// 匹配子集合
List<UserAndPractitionerChildDto> childDtoList = childList.stream()
// 匹配角色
List<PractitionerRolesDto> list1 = practitionerRolesDtoList.stream()
.filter(e -> e.getPractitionerId().equals(record.getPractitionerId())).collect(Collectors.toList());
record.setChildList(childDtoList);
record.setPractitionerRolesDtoList(list1);
// 匹配责任科室
List<PractitionerOrgAndLocationDto> list2 = orgAndLocationDtoList.stream()
.filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) && "".equals(e.getRoleCode()))
.collect(Collectors.toList());
record.setResponsibilityOrgDtoList(list2);
// 匹配医生出诊科室
List<PractitionerOrgAndLocationDto> list3 =
orgAndLocationDtoList.stream().filter(e -> e.getPractitionerId().equals(record.getPractitionerId())
&& PractitionerRoles.DOCTOR.getCode().equals(e.getRoleCode())).collect(Collectors.toList());
record.setDoctorVisitOrgDtoList(list3);
// 匹配管理库房
List<PractitionerOrgAndLocationDto> 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<BizUser>().eq(BizUser::getUserId, userId));
// 先删除,再新增 sys_user_role
practitionerAppAppMapper.delUserRole(userId);
List<Long> roleIds = userAndPractitionerDto.getRoleIds();
List<PractitionerRolesDto> 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<PractitionerOrgAndLocationDto> 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<UserAndPractitionerChildDto> 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<PractitionerOrgAndLocationDto> 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<PractitionerOrgAndLocationDto> 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);
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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<Long> roleIds;
private List<PractitionerOrgAndLocationDto> responsibilityOrgDtoList;
/**
* 集合
* 参与者角色集合
*/
private List<UserAndPractitionerChildDto> childList;
private List<PractitionerRolesDto> practitionerRolesDtoList;
/**
* 医生出诊科室集合
*/
private List<PractitionerOrgAndLocationDto> doctorVisitOrgDtoList;
/**
* 管理库房集合
*/
private List<PractitionerOrgAndLocationDto> manageLocationDtoList;
}

View File

@@ -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<UserAndPractitionerDto> queryWrapper);
/**
* 查询子集合
* 查询参与者的角色信息
*
* @param practitionerIdList 参与者id集合
* @return 子集合
* @return 参与者的角色信息
*/
List<UserAndPractitionerChildDto> getChildList(@Param("practitionerIdList") List<Long> practitionerIdList);
List<PractitionerRolesDto> getPractitionerRolesDtoList(@Param("practitionerIdList") List<Long> practitionerIdList);
/**
* 查询科室和位置集合
*
* @param practitionerIdList 参与者id集合
* @return 科室和位置集合
*/
List<PractitionerOrgAndLocationDto>
getOrgAndLocationDtoList(@Param("practitionerIdList") List<Long> practitionerIdList);
/**
* 物理删除系统用户与角色的关系

View File

@@ -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<PractitionerMetadata> 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()));

View File

@@ -98,70 +98,114 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// 费用定价子表信息
List<AdvicePriceDto> childCharge = doctorStationAdviceAppMapper
.getChildCharge(ConditionCode.UNIT_PRODUCT_BATCH_NUM.getInfo(), chargeItemDefinitionIdList);
.getChildCharge(ConditionCode.UNIT_PRODUCT_BATCH_NUM.getCode(), chargeItemDefinitionIdList);
// 费用定价主表信息
List<AdvicePriceDto> mainCharge = doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList);
// 药品和耗材
List<AdviceBaseDto> 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<AdviceInventoryDto> 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<AdvicePriceDto> priceDtoList = new ArrayList<>();
// 库存信息里取 单位,产品批号 去匹配价格
for (AdviceInventoryDto adviceInventoryDto : inventoryList) {
Long finalChargeItemDefinitionId = chargeItemDefinitionId;
String finalUnitCode = unitCode;
String finalMinUnitCode = minUnitCode;
// 匹配包装单位
List<AdvicePriceDto> 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<AdvicePriceDto> 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<AdviceInventoryDto> 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<AdvicePriceDto> priceDtoList = new ArrayList<>();
// 库存信息里取 命中条件 去匹配价格
for (AdviceInventoryDto adviceInventoryDto : inventoryList) {
Long finalChargeItemDefinitionId = chargeItemDefinitionId;
String finalUnitCode = unitCode;
// 匹配包装单位
List<AdvicePriceDto> 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<AdvicePriceDto> 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<AdviceBaseDto> 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<AdvicePriceDto> priceList =
mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
.collect(Collectors.toList());
// 价格信息
baseDto.setPriceList(priceList);
}
// 下面的注释不要删除 2025.03.27
// // 药品和耗材
// List<AdviceBaseDto> 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<AdviceInventoryDto> 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<AdvicePriceDto> priceDtoList = new ArrayList<>();
// // 库存信息里取 单位,产品批号 去匹配价格
// for (AdviceInventoryDto adviceInventoryDto : inventoryList) {
// Long finalChargeItemDefinitionId = chargeItemDefinitionId;
// String finalUnitCode = unitCode;
// String finalMinUnitCode = minUnitCode;
// // 匹配包装单位
// List<AdvicePriceDto> 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<AdvicePriceDto> 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<AdviceBaseDto> 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<AdvicePriceDto> priceList =
// mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
// .collect(Collectors.toList());
// // 价格信息
// baseDto.setPriceList(priceList);
// }
return adviceBaseInfo;
}

View File

@@ -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;

View File

@@ -27,6 +27,12 @@ public class AdviceSaveDto {
*/
private String categoryCode;
/** 拆零比 */
private BigDecimal partPercent;
/** 拆分属性 */
private Integer partAttributeEnum;
/** 执行次数 */
private Integer executeNum; // 当医嘱类型为药品时,选填

View File

@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.basedatamanage.mapper.PractitionerAppAppMapper">
<select id="getUserPractitionerPage" resultType="com.openhis.web.doctorstation.dto.UserAndPractitionerDto">
<select id="getUserPractitionerPage" resultType="com.openhis.web.basedatamanage.dto.UserAndPractitionerDto">
SELECT T3.tenant_id,
T3.user_id,
T3.practitioner_id,
@@ -45,18 +45,33 @@
${ew.customSqlSegment}
</select>
<select id="getChildList" resultType="com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto">
<select id="getPractitionerRolesDtoList" resultType="com.openhis.web.basedatamanage.dto.PractitionerRolesDto">
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'
<if test="practitionerIdList != null and !practitionerIdList.isEmpty()">
AND ap.ID IN
<foreach collection="practitionerIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
<select id="getOrgAndLocationDtoList" resultType="com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto">
SELECT
t1.practitioner_id,
t1.org_id,
t1.location_id,
t1.role_code,
t2.role_id,
t2.role_name
t1.org_id,
t1.location_id
FROM
adm_practitioner_role AS T1
LEFT JOIN sys_role AS T2 ON t2.role_key = t1.role_code
AND t2.del_flag = '0'
WHERE
t1.delete_flag = '0'
<if test="practitionerIdList != null and !practitionerIdList.isEmpty()">

View File

@@ -8,6 +8,7 @@
SELECT abi.tenant_id,
abi.advice_type,
abi.category_code,
abi.part_percent,
abi.advice_definition_id,
abi.advice_name,
abi.advice_bus_no,
@@ -33,6 +34,7 @@
SELECT T1.tenant_id,
1 AS advice_type,
T1.category_code AS category_code,
T1.part_percent AS part_percent,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
@@ -69,6 +71,7 @@
SELECT T1.tenant_id,
2 AS advice_type,
T1.category_code AS category_code,
T1.part_percent AS part_percent,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
@@ -104,6 +107,7 @@
SELECT T1.tenant_id,
3 AS advice_type,
'' AS category_code,
1 AS part_percent,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
@@ -137,8 +141,6 @@
SELECT
T1.item_id,
T1.item_table,
T1.base_quantity,
T1.base_unit_code,
T1.min_quantity,
T1.min_unit_code,
T1.lot_number,

View File

@@ -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;