版本更新

This commit is contained in:
Zhang.WH
2025-09-03 15:54:41 +08:00
parent 0b93d16b64
commit 8f82322d10
3290 changed files with 154339 additions and 23829 deletions

View File

@@ -0,0 +1,83 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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
*
* @author dh
* @date 2025-03-10
*/
public interface IDeviceManageAppService {
/**
* 器材目录初始化
*
* @return
*/
R<?> getDeviceManageInit();
/**
* 器材目录查询
*
* @param deviceManageSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 器材目录查询结果
*/
R<?> getDevicePage(DeviceManageSelParam deviceManageSelParam, String searchKey, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**
* 添加器材目录信息
*
* @param deviceManageUpDto 器材目录信息
*/
R<?> addDevice(DeviceManageUpDto deviceManageUpDto);
/**
* 编辑供应商信息
*
* @param deviceManageDto 器材目录信息
*/
R<?> editDevice(DeviceManageUpDto deviceManageDto);
/**
* 器材目录详细查询
*
* @param id 查询条件
* @return 器材目录查询结果
*/
R<?> getDeviceOne(@RequestParam Long id);
/**
* 器材目录停用
*
* @param ids 器材目录ID列表
* @return
*/
R<?> editDeviceStop(@RequestBody List<Long> ids);
/**
* 器材目录启用
*
* @param ids 器材目录ID列表
* @return
*/
R<?> editDeviceStart(@RequestBody List<Long> ids);
}

View File

@@ -0,0 +1,78 @@
package com.openhis.web.datadictionary.appservice;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentSelParam;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentUpDto;
/**
* 诊疗目录
*
* @author liuhr
* @date 2025/3/28
*/
public interface IDiagTreatMAppService {
/**
* 诊疗目录初期查询
*
* @return
*/
R<?> getDiseaseTreatmentInit();
/**
* 查询诊疗目录分页列表
*
* @param DiagnosisTreatmentSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
R<?> getDiseaseTreatmentPage(DiagnosisTreatmentSelParam DiagnosisTreatmentSelParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request);
/**
* 根据id查询诊疗详情
*
* @param id 诊疗ID
* @return
*/
R<?> getDiseaseTreatmentOne(Long id);
/**
* 诊疗目录编辑
*
* @param diagnosisTreatmentUpDto 诊疗目录列表
* @return
*/
R<?> editDiseaseTreatment(DiagnosisTreatmentUpDto diagnosisTreatmentUpDto);
/**
* 诊疗目录停用
*
* @param ids 诊疗目录ID列表
* @return
*/
R<?> editDiseaseTreatmentStop(List<Long> ids);
/**
* 诊疗目录启用
*
* @param ids 诊疗目录ID列表
* @return
*/
R<?> editDiseaseTreatmentStart(List<Long> ids);
/**
* 新增外来诊疗目录
*
* @param diagnosisTreatmentUpDto 诊疗目录
* @return
*/
R<?> addDiseaseTreatment(DiagnosisTreatmentUpDto diagnosisTreatmentUpDto);
}

View File

@@ -0,0 +1,80 @@
package com.openhis.web.datadictionary.appservice;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.dto.DiseaseManageSelParam;
import com.openhis.web.datadictionary.dto.DiseaseManageUpDto;
/**
* 病种目录
*
* @author liuhr
* @date 2025/3/30
*/
public interface IDiseaseManageAppService {
/**
* 病种目录初始化
*
* @return
*/
R<?> getDiseaseInit();
/**
* 查询病种目录分页列表
*
* @param diseaseManageSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
R<?> getDiseaseList(DiseaseManageSelParam diseaseManageSelParam, String searchKey, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**
* 根据id查询疾病详情
*
* @param id 疾病ID
* @return
*/
R<?> getDiseaseOne(Long id);
/**
* 病种目录编辑
*
* @param diseaseManageDto 病种目录列表
* @return
*/
R<?> editDisease(DiseaseManageUpDto diseaseManageDto);
/**
* 病种目录停用
*
* @param ids 病种目录ID列表
* @return
*/
R<?> editDiseaseStop(List<Long> ids);
/**
* 病种目录启用
*
* @param ids 病种目录ID列表
* @return
*/
R<?> editDiseaseStart(List<Long> ids);
/**
* 新增外来病种目录
*
* @param diseaseManageUpDto 病种目录
* @return
*/
R<?> addDisease(DiseaseManageUpDto diseaseManageUpDto);
}

View File

@@ -0,0 +1,40 @@
package com.openhis.web.datadictionary.appservice;
import com.openhis.administration.domain.ChargeItemDefDetail;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.web.datadictionary.dto.ItemUpFromDirectoryDto;
import java.math.BigDecimal;
import java.util.List;
/**
* 项目定价
*
* @author liuhr
* @date 2025/3/25
*/
public interface IItemDefinitionService {
/**
* 添加药品/器材/诊疗的项目定价
*
* @param itemUpFromDirectoryDto 药品/器材/诊疗目录信息
*/
boolean addItem(ItemUpFromDirectoryDto itemUpFromDirectoryDto);
/**
* 修改项目定价表
*
* @param chargeItemDefinition 项目定价表信息
*/
boolean updateItem(ChargeItemDefinition chargeItemDefinition);
/**
* 修改项目定价表子信息
*
* @param chargeItemDefinition 项目定价表信息
* @param price 价格
* @param conditionCode 条件
*/
boolean updateItemDetail(ChargeItemDefinition chargeItemDefinition, BigDecimal price,String conditionCode);
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.dto.MedicationManageUpDto;
import com.openhis.web.datadictionary.dto.MedicationSearchParam;
/**
* 药品目录 service
*
* @author
* @date 2025-03-17
*/
public interface IMedicationManageAppService {
/**
* 初始化药品目录信息
*
*/
R<?> getMedicationInit();
/**
* 药品目录查询
*
* @param searchKey 查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return 药品目录查询结果
*/
R<?> getMedicationList(MedicationSearchParam medicationSearchParam, String searchKey, Integer pageNo,
Integer pageSize, HttpServletRequest request);
/**
* 药品目录详细查询
*
* @param id 查询条件
* @return 药品目录查询结果
*/
R<?> getMedicationOne(@RequestParam Long id);
/**
* 编辑药品目录信息
*
* @param medicationManageUpDto 药品目录信息
*/
R<?> editMedication(MedicationManageUpDto medicationManageUpDto);
/**
* 药品目录停用
*
* @param ids 药品目录ID列表
* @return
*/
R<?> editMedicationStop(@RequestBody List<Long> ids);
/**
* 药品目录启用
*
* @param ids 药品目录ID列表
* @return
*/
R<?> editMedicationStart(@RequestBody List<Long> ids);
/**
* 添加药品目录信息
*
* @param medicationManageUpDto 药品目录信息
*/
R<?> addMedication(MedicationManageUpDto medicationManageUpDto);
R<?> exportMedication(@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, HttpServletResponse response);
/**
* 导入药品目录
*
* @param file 文件
* @return 结果
*/
R<?> importData(MultipartFile file);
/**
* 获取导入模板
*
* @param response 响应
*/
void importTemplate(HttpServletResponse response);
}

View File

@@ -0,0 +1,83 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.dto.SupplierSearchParam;
import com.openhis.web.datadictionary.dto.SupplierUpDto;
/**
* 厂商/产地 service
*
* @author dh
* @date 2025-03-10
*/
public interface ISupplierManagementAppService {
/**
* 厂商/产地初始化
*
* @return
*/
@GetMapping("/information-init")
R<?> getSupplierInit();
/**
* 厂商/产地查询
*
* @param supplierSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param typeEnum 查询条件
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 厂商/产地查询结果
*/
R<?> getSupplierList(SupplierSearchParam supplierSearchParam, String searchKey,Integer typeEnum, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**
* 添加供应商信息
*
* @param supplierUpDto 供应商信息
*/
R<?> addSupplyRequest(SupplierUpDto supplierUpDto);
/**
* 编辑供应商信息
*
* @param supplierUpDto 供应商信息
*/
R<?> editSupplyRequest(SupplierUpDto supplierUpDto);
/**
* 厂商/产地详细查询
*
* @param id 查询条件
* @return 厂商/产地查询结果
*/
R<?> getSupplierDetail(Long id);
/**
* 厂商/产地停用
*
* @param ids 厂商/产地ID列表
* @return
*/
R<?> editSupplierStop(@RequestBody List<Long> ids);
/**
* 厂商/产地启用
*
* @param ids 厂商/产地ID列表
* @return
*/
R<?> editSupplierStart(@RequestBody List<Long> ids);
}

View File

@@ -0,0 +1,46 @@
package com.openhis.web.datadictionary.appservice;
import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.dto.ItemDefinitionDetailDto;
import com.openhis.web.datadictionary.dto.ItemDefinitionDto;
/**
* 项目定价 应用Service
*/
public interface ItemDefinitionAppService {
/**
* 项目定价 分页
*
* @param itemDefinitionDto dto
* @param searchKey 模糊查询关键字
* @param chargeItemContext 收费项目类型
* @param pageNo 当前页
* @param pageSize 每页多少条
* @return 项目定价
*/
IPage<ItemDefinitionDto> getChargeItemInfo(ItemDefinitionDto itemDefinitionDto, Integer chargeItemContext,
String searchKey, Integer pageNo, Integer pageSize);
/**
* 项目定价详细
*
* @param id id
* @return 项目定价详细
*/
List<ItemDefinitionDetailDto> getChargeItemInfoDetail(Long id);
/**
* 改价
*
* @param id id
* @param price 价格
* @return 结果
*/
R<?> updateChargeItemInfo(Long id, BigDecimal price);
}

View File

@@ -0,0 +1,366 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice.impl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
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.*;
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.Supplier;
import com.openhis.administration.service.IDeviceDefinitionService;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.*;
import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.sys.service.IOperationRecordService;
import com.openhis.web.datadictionary.appservice.IDeviceManageAppService;
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
import com.openhis.web.datadictionary.dto.*;
import com.openhis.web.datadictionary.mapper.DeviceManageMapper;
import com.openhis.workflow.service.ISupplyRequestService;
import com.openhis.yb.service.YbManager;
/**
* 器材目录 impl
*
* @author
* @date 2025-03-17
*/
@Service
public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
@Autowired
private ISupplyRequestService supplyRequestService;
@Autowired
private IDeviceDefinitionService deviceDefinitionService;
@Resource
private DeviceManageMapper deviceManageMapper;
@Autowired
private ISysDictTypeService sysDictTypeService;
@Autowired
private IItemDefinitionService itemDefinitionServic;
@Autowired
private ISupplierService supplierService;
@Autowired(required = false)
private AssignSeqUtil assignSeqUtil;
@Autowired
private YbManager ybService;
@Autowired
private IOperationRecordService iOperationRecordService;
/**
* 器材目录初始化
*
* @return
*/
@Override
public R<?> getDeviceManageInit() {
DeviceManageInitDto deviceManageInitDto = new DeviceManageInitDto();
// 获取状态
List<DeviceManageInitDto.statusEnumOption> statusEnumOptions = Stream.of(PublicationStatus.values())
.map(status -> new DeviceManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
deviceManageInitDto.setStatusFlagOptions(statusEnumOptions);
// // 获取执行科室
// LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(Organization::getTypeEnum, OrganizationType.HOSPITAL_DEPARTMENT);
// List<Organization> organizations = organizationService.list(queryWrapper);
// List<DeviceManageInitDto.exeOrganization> exeOrganizations = organizations.stream()
// .map(exeOrg -> new DeviceManageInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName()))
// .collect(Collectors.toList());
// deviceManageInitDto.setExeOrganizations(exeOrganizations);
// // 从枚举中获取器材分类
// List<DeviceManageInitDto.deviceCategory> deviceCategories = Stream.of(DeviceCategory.values())
// .map(category -> new DeviceManageInitDto.deviceCategory(category.getValue(), category.getInfo()))
// .collect(Collectors.toList());
// deviceManageInitDto.setDeviceCategories(deviceCategories);
// 获取器材
List<SysDictData> deviceList =
sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DEVICE_CATEGORY_CODE);
// 从字典中获取器材分类
List<DeviceManageInitDto.dictCategoryCode> deviceCategories = deviceList.stream()
.map(category -> new DeviceManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel()))
.collect(Collectors.toList());
deviceManageInitDto.setDeviceCategories(deviceCategories);
// 获取医保是否对码
List<DeviceManageInitDto.statusEnumOption> statusYBWeatherOption = Stream.of(Whether.values())
.map(status -> new DeviceManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
deviceManageInitDto.setStatusYBWeatherOptions(statusYBWeatherOption);
// 查询供应商列表
List<Supplier> supplierList = supplierService.getList();
// 供应商信息
List<DeviceManageInitDto.supplierListOption> supplierListOptions = supplierList.stream()
.map(supplier -> new DeviceManageInitDto.supplierListOption(supplier.getId(), supplier.getName()))
.collect(Collectors.toList());
deviceManageInitDto.setSupplierListOptions(supplierListOptions);
return R.ok(deviceManageInitDto);
}
/**
* 器材目录查询
*
* @param
* @param searchKey 查询条件-模糊查询
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 器材目录查询结果
*/
@Override
public R<?> getDevicePage(DeviceManageSelParam deviceManageSelParam, String searchKey, Integer pageNo,
Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<DeviceManageDto> queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey,
new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
// 分页查询
IPage<DeviceManageDto> deviceManagePage =
deviceManageMapper.getDevicePage(new Page<>(pageNo, pageSize), queryWrapper);
deviceManagePage.getRecords().forEach(e -> {
// 高值器材标志枚举类回显赋值
e.setHvcmFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getHvcmFlag()));
// 医保标记枚举类回显赋值
e.setYbFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbFlag()));
// 医保对码标记枚举类回显赋值
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag()));
// 过敏标记枚举类回显赋值
e.setAllergenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getAllergenFlag()));
// 器材分类
// e.setCategoryEnum_enumText(EnumUtils.getInfoByValue(DeviceCategory.class, e.getCategoryEnum()));
// 器材状态
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum()));
});
// 返回【器材目录列表DTO】分页
return R.ok(deviceManagePage);
}
/**
* 编辑器材信息
*
* @param deviceManageDto 器材信息
*/
@Override
public R<?> editDevice(DeviceManageUpDto deviceManageDto) {
// // 校验是否可以编辑
// boolean result = supplyRequestService.verifyAbleEdit(deviceManageDto.getId());
// if (result) {
// return R.fail("该耗材已经发生过业务,不可编辑");
// }
DeviceDefinition deviceDefinition = new DeviceDefinition();
BeanUtils.copyProperties(deviceManageDto, deviceDefinition);
// 拼音码
deviceDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(deviceDefinition.getName()));
// 五笔码
deviceDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(deviceDefinition.getName()));
// 更新器材信息
if (deviceDefinitionService.updateById(deviceDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) {
R<?> r =
ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId());
if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常");
}
}
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
chargeItemDefinition.setYbType(deviceManageDto.getYbType()).setTypeCode(deviceManageDto.getItemTypeCode())
.setInstanceTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION)
.setInstanceId(deviceDefinition.getId()).setPrice(deviceManageDto.getRetailPrice())
.setChargeName(deviceManageDto.getName());;
// 插入操作记录
iOperationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition);
// 更新价格表
boolean upItemDef = itemDefinitionServic.updateItem(chargeItemDefinition);
// 更新子表,修改购入价,条件:采购
boolean upItemDetail1 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
deviceManageDto.getPurchasePrice(), ConditionCode.PURCHASE.getCode());
// 更新子表,修改零售价,条件:单位
boolean upItemDetail2 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
deviceManageDto.getRetailPrice(), ConditionCode.UNIT.getCode());
// 更新子表,修改最高零售价,条件:限制
boolean upItemDetail3 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
deviceManageDto.getMaximumRetailPrice(), ConditionCode.LIMIT.getCode());
// 更新价格表
return upItemDef && upItemDetail1 && upItemDetail2 && upItemDetail3
? 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));
}
/**
* 器材目录详细查询
*
* @param id 查询条件
* @return 器材目录查询结果
*/
@Override
public R<?> getDeviceOne(@RequestParam Long id) {
// 获取租户ID
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
// 根据ID查询【器材目录】
DeviceManageDto deviceManageDto = deviceManageMapper.getOne(id, tenantId);
return R.ok(deviceManageDto);
}
/**
* 器材目录停用
*
* @param ids 器材目录ID列表
* @return
*/
@Override
public R<?> editDeviceStop(List<Long> ids) {
List<DeviceDefinition> DeviceDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
DeviceDefinition deviceDefinition = new DeviceDefinition();
deviceDefinition.setId(detail);
deviceDefinition.setStatusEnum(PublicationStatus.RETIRED.getValue());
DeviceDefinitionList.add(deviceDefinition);
}
// 插入操作记录
iOperationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
CommonConstants.TableName.ADM_DEVICE_DEFINITION, ids);
// 更新器材信息
return deviceDefinitionService.updateBatchById(DeviceDefinitionList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 器材目录启用
*
* @param ids 器材目录ID列表
* @return
*/
@Override
public R<?> editDeviceStart(List<Long> ids) {
List<DeviceDefinition> DeviceDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
DeviceDefinition DeviceDefinition = new DeviceDefinition();
DeviceDefinition.setId(detail);
DeviceDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
DeviceDefinitionList.add(DeviceDefinition);
}
// 插入操作记录
iOperationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
CommonConstants.TableName.ADM_DEVICE_DEFINITION, ids);
// 更新器材信息
return deviceDefinitionService.updateBatchById(DeviceDefinitionList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"器材目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 添加供应商信息
*
* @param deviceManageUpDto 供应商信息
*/
@Override
public R<?> addDevice(@Validated @RequestBody DeviceManageUpDto deviceManageUpDto) {
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.ACTIVE.getValue());
if (deviceDefinitionService.addDevice(deviceDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(deviceDefinition.getYbNo())) {
R<?> r =
ybService.directoryCheck(CommonConstants.TableName.ADM_DEVICE_DEFINITION, deviceDefinition.getId());
if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常");
}
}
// 插入操作记录
iOperationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
CommonConstants.TableName.ADM_DEVICE_DEFINITION, 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));
}
}

View File

@@ -0,0 +1,390 @@
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.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.openhis.yb.service.YbManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.*;
import com.core.common.utils.bean.BeanUtils;
import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.domain.Organization;
import com.openhis.administration.service.IOrganizationService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.*;
import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.sys.service.IOperationRecordService;
import com.openhis.web.common.appservice.ICommonService;
import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService;
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
import com.openhis.web.datadictionary.dto.*;
import com.openhis.web.datadictionary.mapper.ActivityDefinitionManageMapper;
import com.openhis.workflow.domain.ActivityDefinition;
import com.openhis.workflow.mapper.ActivityDefinitionMapper;
import com.openhis.workflow.service.IActivityDefinitionService;
/**
* 诊疗实现类
*
* @author Wuser
* @date 2025/3/28
*/
@Service
public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
@Autowired
private IActivityDefinitionService iActivityDefinitionService;
@Autowired
private ActivityDefinitionMapper activityDefinitionMapper;
@Autowired
private IOrganizationService iOrganizationService;
@Autowired
private ISysDictTypeService iSysDictTypeService;
@Resource
private ActivityDefinitionManageMapper activityDefinitionManageMapper;
@Autowired
private IItemDefinitionService itemDefinitionServic;
@Autowired
private ISysDictTypeService sysDictTypeService;
@Autowired
private ICommonService commonService;
@Autowired(required = false)
AssignSeqUtil assignSeqUtil;
@Autowired
YbManager ybService;
@Autowired
IOperationRecordService iOperationRecordService;
/**
* 诊疗目录初期查询
*
* @return
*/
@Override
public R<?> getDiseaseTreatmentInit() {
DiagnosisTreatmentInitDto diagnosisTreatmentInitDto = new DiagnosisTreatmentInitDto();
// 获取状态
List<DiagnosisTreatmentInitDto.statusEnumOption> statusEnumOptions = Stream.of(PublicationStatus.values())
.map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setStatusFlagOptions(statusEnumOptions);
// 获取执行科室
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Organization::getTypeEnum, OrganizationType.DEPARTMENT);
List<Organization> organizations = iOrganizationService.list(queryWrapper);
List<DiagnosisTreatmentInitDto.exeOrganization> exeOrganizations = organizations.stream()
.map(exeOrg -> new DiagnosisTreatmentInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setExeOrganizations(exeOrganizations);
// 获取诊目录疗分类
List<SysDictData> diagnosisList =
sysDictTypeService.selectDictDataByType(CommonConstants.DictName.DIAGNOSIS_CATEGORY_CODE);
// 获取诊疗录疗分类
List<DiagnosisTreatmentInitDto.dictCategoryCode> diagnosisCategories = diagnosisList.stream()
.map(category -> new DiagnosisTreatmentInitDto.dictCategoryCode(category.getDictValue(),
category.getDictLabel()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setDiagnosisCategoryOptions(diagnosisCategories);
// 查询医疗服务项类型
List<SysDictData> medical_service_items =
iSysDictTypeService.selectDictDataByType(ActivityDefCategory.MEDICAL_SERVICE_ITEM.getCode());
// 获取医疗服务项List
List<DiagnosisTreatmentInitDto.diseaseTreatmentType> diseaseTreatmentCategoryList = medical_service_items
.stream().map(status -> new DiagnosisTreatmentInitDto.diseaseTreatmentType(status.getDictValue(),
status.getDictLabel()))
.collect(Collectors.toList());
List<DiagnosisTreatmentInitDto.diseaseTreatmentCategory> diseaseTreatmentCategories = new ArrayList<>();
//
// //获取目录分类
// DiagnosisTreatmentInitDto.diseaseTreatmentCategory diseaseTreatmentCategory =
// new DiagnosisTreatmentInitDto.diseaseTreatmentCategory(ActivityDefCategory.MEDICAL_SERVICE_ITEM.getValue(),
// ActivityDefCategory.MEDICAL_SERVICE_ITEM.getInfo());
// diseaseTreatmentCategory.setChildren(diseaseTreatmentCategoryList);
// diseaseTreatmentCategories.add(diseaseTreatmentCategory);
// diagnosisTreatmentInitDto.setDiseaseTreatmentCategoryList(diseaseTreatmentCategories);
//
// // 查询手术与治疗类型
// List<SysDictData> medical_service_items2 =
// iSysDictTypeService.selectDictDataByType(ActivityDefCategory.TREATMENT_SURGERY.getCode());
// // 获取手术与治疗List
// List<DiagnosisTreatmentInitDto.diseaseTreatmentType> diseaseTreatmentCategoryList2 = medical_service_items2
// .stream().map(status -> new DiagnosisTreatmentInitDto.diseaseTreatmentType(status.getDictValue(),
// status.getDictLabel()))
// .collect(Collectors.toList());
//
// DiagnosisTreatmentInitDto.diseaseTreatmentCategory diseaseTreatmentCategory2 =
// new DiagnosisTreatmentInitDto.diseaseTreatmentCategory(ActivityDefCategory.TREATMENT_SURGERY.getValue(),
// ActivityDefCategory.TREATMENT_SURGERY.getInfo());
// diseaseTreatmentCategory2.setChildren(diseaseTreatmentCategoryList2);
// diseaseTreatmentCategories.add(diseaseTreatmentCategory2);
//
// diagnosisTreatmentInitDto.setDiseaseTreatmentCategoryList(diseaseTreatmentCategories);
// 获取类型
List<DiagnosisTreatmentInitDto.statusEnumOption> typeEnumOptions = Stream.of(ActivityType.values())
.map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setTypeEnumOptions(typeEnumOptions);
// 获取是/否 列表
// 获取状态
List<DiagnosisTreatmentInitDto.statusEnumOption> statusWeatherOption = Stream.of(Whether.values())
.map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setStatusWeatherOption(statusWeatherOption);
return R.ok(diagnosisTreatmentInitDto);
}
/**
* 查询诊疗目录分页列表
*
* @param DiagnosisTreatmentSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
@Override
public R<?> getDiseaseTreatmentPage(DiagnosisTreatmentSelParam DiagnosisTreatmentSelParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<DiagnosisTreatmentDto> queryWrapper = HisQueryUtils.buildQueryWrapper(DiagnosisTreatmentSelParam,
searchKey, new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
// 分页查询
IPage<DiagnosisTreatmentDto> diseaseTreatmentPage =
activityDefinitionManageMapper.getDiseaseTreatmentPage(new Page<>(pageNo, pageSize), queryWrapper);
diseaseTreatmentPage.getRecords().forEach(e -> {
// 医保标记枚举类回显赋值
e.setYbFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbFlag()));
// 医保对码标记枚举类回显赋值
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag()));
// 类型举类回显赋值
e.setTypeEnum_enumText(EnumUtils.getInfoByValue(ActivityType.class, e.getTypeEnum()));
// 状态举类回显赋值
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum()));
// 划价标记
e.setPricingFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getPricingFlag()));
});
// 返回【诊疗目录列表DTO】分页
return R.ok(diseaseTreatmentPage);
}
/**
* 根据id查询诊疗详情
*
* @param id 诊疗ID
* @return
*/
@Override
public R<?> getDiseaseTreatmentOne(Long id) {
// 获取租户ID
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
// 根据ID查询【诊疗目录】
return R.ok(activityDefinitionManageMapper.getDiseaseTreatmentOne(id, tenantId));
}
/**
* 诊疗目录编辑
*
* @param diagnosisTreatmentUpDto 诊疗目录列表
* @return
*/
@Override
public R<?> editDiseaseTreatment(DiagnosisTreatmentUpDto diagnosisTreatmentUpDto) {
ActivityDefinition activityDefinition = new ActivityDefinition();
BeanUtils.copyProperties(diagnosisTreatmentUpDto, activityDefinition);
// 拼音码
activityDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(activityDefinition.getName()));
// 五笔码
activityDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(activityDefinition.getName()));
// 更新诊疗信息
if (iActivityDefinitionService.updateById(activityDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(activityDefinition.getYbNo()) ) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION,
activityDefinition.getId());
if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常");
}
}
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
chargeItemDefinition.setYbType(diagnosisTreatmentUpDto.getYbType())
.setTypeCode(diagnosisTreatmentUpDto.getItemTypeCode())
.setInstanceTable(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION)
.setInstanceId(diagnosisTreatmentUpDto.getId()).setPrice(diagnosisTreatmentUpDto.getRetailPrice())
.setChargeName(diagnosisTreatmentUpDto.getName());
// 插入操作记录
iOperationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, activityDefinition);
// 更新价格表
boolean upItemDef = itemDefinitionServic.updateItem(chargeItemDefinition);
// 更新子表,修改零售价,条件:单位
boolean upItemDetail1 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
diagnosisTreatmentUpDto.getRetailPrice(), ConditionCode.UNIT.getCode());
// 更新子表,修改最高零售价,条件:限制
boolean upItemDetail2 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
diagnosisTreatmentUpDto.getMaximumRetailPrice(), ConditionCode.LIMIT.getCode());
// 更新价格表
return upItemDef && upItemDetail1 && upItemDetail2
? 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));
}
/**
* 诊疗目录停用
*
* @param ids 诊疗目录ID列表
* @return
*/
@Override
public R<?> editDiseaseTreatmentStop(List<Long> ids) {
List<ActivityDefinition> ActivityDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
ActivityDefinition ActivityDefinition = new ActivityDefinition();
ActivityDefinition.setId(detail);
ActivityDefinition.setStatusEnum(PublicationStatus.RETIRED.getValue());
ActivityDefinitionList.add(ActivityDefinition);
}
// 插入操作记录
iOperationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, ids);
// 更新诊疗信息
return iActivityDefinitionService.updateBatchById(ActivityDefinitionList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊疗目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 诊疗目录启用
*
* @param ids 诊疗目录ID列表
* @return
*/
@Override
public R<?> editDiseaseTreatmentStart(List<Long> ids) {
List<ActivityDefinition> ActivityDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
ActivityDefinition ActivityDefinition = new ActivityDefinition();
ActivityDefinition.setId(detail);
ActivityDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
ActivityDefinitionList.add(ActivityDefinition);
}
// 插入操作记录
iOperationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, ids);
// 更新诊疗信息
return iActivityDefinitionService.updateBatchById(ActivityDefinitionList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊疗目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 新增外来诊疗目录
*
* @param diagnosisTreatmentUpDto 诊疗目录
* @return
*/
@Override
public R<?> addDiseaseTreatment(DiagnosisTreatmentUpDto diagnosisTreatmentUpDto) {
if (diagnosisTreatmentUpDto.getOrgId() == null) {
// 如果为空,设置当前登录所在的医院
Long orgId = SecurityUtils.getLoginUser().getHospitalId();
diagnosisTreatmentUpDto.setOrgId(orgId);
}
ActivityDefinition activityDefinition = new ActivityDefinition();
BeanUtils.copyProperties(diagnosisTreatmentUpDto, activityDefinition);
// 使用10位数基础采番
String code = assignSeqUtil.getSeq(AssignSeqEnum.ACTIVITY_DEFINITION_NUM.getPrefix(), 10);
activityDefinition.setBusNo(code);
// 拼音码
activityDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(activityDefinition.getName()));
// 五笔码
activityDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(activityDefinition.getName()));
// 新增外来诊疗目录
activityDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
if (iActivityDefinitionService.addDiagnosisTreatment(activityDefinition)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(activityDefinition.getYbNo()) ) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION,
activityDefinition.getId());
if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常");
}
}
// 插入操作记录
iOperationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
CommonConstants.TableName.WOR_ACTIVITY_DEFINITION, activityDefinition);
ItemUpFromDirectoryDto itemUpFromDirectoryDto = new ItemUpFromDirectoryDto();
BeanUtils.copyProperties(diagnosisTreatmentUpDto, itemUpFromDirectoryDto);
itemUpFromDirectoryDto.setTypeCode(diagnosisTreatmentUpDto.getItemTypeCode())
.setUnitCode(diagnosisTreatmentUpDto.getPermittedUnitCode())
.setInstanceTable(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION)
.setEffectiveStart(DateUtils.getNowDate()).setStatusEnum(PublicationStatus.ACTIVE.getValue())
.setConditionFlag(Whether.YES.getValue()).setChargeName(diagnosisTreatmentUpDto.getName())
.setInstanceId(activityDefinition.getId()).setPrice(diagnosisTreatmentUpDto.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));
}
}

View File

@@ -0,0 +1,217 @@
package com.openhis.web.datadictionary.appservice.impl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.AssignSeqUtil;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.clinical.domain.ConditionDefinition;
import com.openhis.clinical.mapper.ConditionDefinitionMapper;
import com.openhis.clinical.service.IConditionDefinitionService;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.AssignSeqEnum;
import com.openhis.common.enums.ConditionDefinitionSource;
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.IDiseaseManageAppService;
import com.openhis.web.datadictionary.dto.DiseaseManageDto;
import com.openhis.web.datadictionary.dto.DiseaseManageInitDto;
import com.openhis.web.datadictionary.dto.DiseaseManageSelParam;
import com.openhis.web.datadictionary.dto.DiseaseManageUpDto;
/**
* 病种目录 实现
*
* @author liuhr
* @date 2025/3/30
*/
@Service
public class DiseaseManageAppServiceImpl implements IDiseaseManageAppService {
@Autowired
private ConditionDefinitionMapper conditionDefinitionMapper;
@Autowired
private IConditionDefinitionService ConditionDefinitionService;
@Autowired(required = false)
AssignSeqUtil assignSeqUtil;
/**
* 病种目录初始化
*
* @return
*/
@Override
public R<?> getDiseaseInit() {
DiseaseManageInitDto diseaseManageInitDto = new DiseaseManageInitDto();
// 获取疾病目录种类
List<DiseaseManageInitDto.diseaseCategory> diseaseCategoryList = Stream.of(ConditionDefinitionSource.values())
.map(status -> new DiseaseManageInitDto.diseaseCategory(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
diseaseManageInitDto.setDiseaseCategoryList(diseaseCategoryList);
// 获取状态
List<DiseaseManageInitDto.statusEnumOption> statusEnumOptions = Stream.of(PublicationStatus.values())
.map(status -> new DiseaseManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
diseaseManageInitDto.setStatusFlagOptions(statusEnumOptions);
return R.ok(diseaseManageInitDto);
}
/**
* 查询病种目录分页列表
*
* @param diseaseManageSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
public R<?> getDiseaseList(DiseaseManageSelParam diseaseManageSelParam, String searchKey, Integer pageNo,
Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<ConditionDefinition> queryWrapper = HisQueryUtils.buildQueryWrapper(diseaseManageSelParam,
searchKey, new HashSet<>(Arrays.asList("condition_code", "name", "py_str", "wb_str")), request);
// 设置排序
queryWrapper.orderByAsc("condition_code");
// 分页查询
Page<DiseaseManageDto> diseasePage =
HisPageUtils.selectPage(conditionDefinitionMapper, queryWrapper, pageNo, pageSize, DiseaseManageDto.class);
diseasePage.getRecords().forEach(e -> {
// 医保对码枚举类回显赋值
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag()));
// 状态
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum()));
// 所属分类
e.setSourceEnum_enumText(EnumUtils.getInfoByValue(ConditionDefinitionSource.class, e.getSourceEnum()));
// 医保标记
e.setYbFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbFlag()));
});
// 返回【病种目录列表DTO】分页
return R.ok(diseasePage);
}
/**
* 根据id查询疾病详情
*
* @param id 疾病ID
* @return
*/
public R<?> getDiseaseOne(Long id) {
DiseaseManageDto diseaseManageDto = new DiseaseManageDto();
// 根据ID查询【病种目录】
ConditionDefinition conditionDefinition = ConditionDefinitionService.getById(id);
BeanUtils.copyProperties(conditionDefinition, diseaseManageDto);
return R.ok(diseaseManageDto);
}
/**
* 病种目录编辑
*
* @param diseaseManageDto 病种目录列表
* @return
*/
public R<?> editDisease(DiseaseManageUpDto diseaseManageDto) {
ConditionDefinition conditionDefinition = new ConditionDefinition();
BeanUtils.copyProperties(diseaseManageDto, conditionDefinition);
// 拼音码
conditionDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(conditionDefinition.getName()));
// 五笔码
conditionDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(conditionDefinition.getName()));
// 更新病种信息
return ConditionDefinitionService.updateById(conditionDefinition)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 病种目录停用
*
* @param ids 病种目录ID列表
* @return
*/
public R<?> editDiseaseStop(List<Long> ids) {
List<ConditionDefinition> conditionDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
ConditionDefinition conditionDefinition = new ConditionDefinition();
conditionDefinition.setId(detail);
conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
conditionDefinitionList.add(conditionDefinition);
}
// 更新病种信息
return ConditionDefinitionService.updateBatchById(conditionDefinitionList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 病种目录启用
*
* @param ids 病种目录ID列表
* @return
*/
public R<?> editDiseaseStart(List<Long> ids) {
List<ConditionDefinition> conditionDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
ConditionDefinition conditionDefinition = new ConditionDefinition();
conditionDefinition.setId(detail);
conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
conditionDefinitionList.add(conditionDefinition);
}
// 更新病种信息
return ConditionDefinitionService.updateBatchById(conditionDefinitionList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 新增外来病种目录
*
* @param diseaseManageUpDto 病种目录
* @return
*/
public R<?> addDisease(DiseaseManageUpDto diseaseManageUpDto) {
ConditionDefinition conditionDefinition = new ConditionDefinition();
BeanUtils.copyProperties(diseaseManageUpDto, conditionDefinition);
// 使用10位数基础采番
String code = assignSeqUtil.getSeq(AssignSeqEnum.CONDITION_DEFINITION_NUM.getPrefix(), 10);
conditionDefinition.setConditionCode(code);
// 新增外来病种目录
conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
// 拼音码
conditionDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(conditionDefinition.getName()));
// 五笔码
conditionDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(conditionDefinition.getName()));
return ConditionDefinitionService.addDisease(conditionDefinition)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
}
}

View File

@@ -0,0 +1,106 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice.impl;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
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.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.ConditionCode;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.datadictionary.appservice.ItemDefinitionAppService;
import com.openhis.web.datadictionary.dto.ItemDefinitionDetailDto;
import com.openhis.web.datadictionary.dto.ItemDefinitionDto;
import com.openhis.web.datadictionary.mapper.ItemDefinitionAppMapper;
/**
* 项目定价 应用impl
*/
@Service
public class ItemDefinitionAppServiceImpl implements ItemDefinitionAppService {
@Resource
ItemDefinitionAppMapper itemDefinitionAppMapper;
@Resource
IChargeItemDefinitionService iChargeItemDefinitionService;
/**
* 项目定价 分页
*
* @param itemDefinitionDto dto
* @param searchKey 模糊查询关键字
* @param chargeItemContext 收费项目类型
* @param pageNo 当前页
* @param pageSize 每页多少条
* @return 项目定价
*/
@Override
public IPage<ItemDefinitionDto> getChargeItemInfo(ItemDefinitionDto itemDefinitionDto, Integer chargeItemContext,
String searchKey, Integer pageNo, Integer pageSize) {
// 构建查询条件
QueryWrapper<ItemDefinitionDto> queryWrapper = HisQueryUtils.buildQueryWrapper(itemDefinitionDto, searchKey,
new HashSet<>(Arrays.asList("charge_name")), null);
IPage<ItemDefinitionDto> chargeItemInfo = itemDefinitionAppMapper.getChargeItemInfo(
new Page<>(pageNo, pageSize), chargeItemContext, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION, CommonConstants.TableName.WOR_ACTIVITY_DEFINITION,
CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper);
List<ItemDefinitionDto> records = chargeItemInfo.getRecords();
for (ItemDefinitionDto record : records) {
// 状态
record.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, record.getStatusEnum()));
}
return chargeItemInfo;
}
/**
* 项目定价详细
*
* @param id id
* @return 项目定价详细
*/
@Override
public List<ItemDefinitionDetailDto> getChargeItemInfoDetail(Long id) {
List<ItemDefinitionDetailDto> chargeItemInfoDetail = itemDefinitionAppMapper.getChargeItemInfoDetail(id);
for (ItemDefinitionDetailDto itemDefinitionDetailDto : chargeItemInfoDetail) {
// 条件
itemDefinitionDetailDto.setConditionCode_enumText(
EnumUtils.getInfoByValue(ConditionCode.class, itemDefinitionDetailDto.getConditionCode()));
}
return chargeItemInfoDetail;
}
/**
* 改价
*
* @param id id
* @param price 价格
* @return 结果
*/
@Override
public R<?> updateChargeItemInfo(Long id, BigDecimal price) {
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
chargeItemDefinition.setId(id);
chargeItemDefinition.setPrice(price);
iChargeItemDefinitionService.updateById(chargeItemDefinition);
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"项目定价"}));
}
}

View File

@@ -0,0 +1,144 @@
package com.openhis.web.datadictionary.appservice.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.ChargeItemDefDetail;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.mapper.ChargeItemDefAppMapper;
import com.openhis.administration.mapper.ChargeItemDefinitionMapper;
import com.openhis.administration.service.IChargeItemDefDetailService;
import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.enums.ConditionCode;
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
import com.openhis.web.datadictionary.dto.ItemUpFromDirectoryDto;
/**
* 项目定价 实现
*
* @author liuhr
* @date 2025/3/25
*/
@Service
public class ItemDefinitionServiceImpl implements IItemDefinitionService {
@Autowired
IChargeItemDefinitionService chargeItemDefinitionService;
@Autowired
IChargeItemDefDetailService chargeItemDefDetailService;
@Autowired
ChargeItemDefinitionMapper chargeItemDefinitionMapper;
@Autowired
ChargeItemDefAppMapper chargeItemDefAppMapper;
/**
* 添加药品/器材/诊疗的项目定价
*
* @param itemUpFromDirectoryDto 药品/器材/诊疗目录信息
*/
@Override
public boolean addItem(ItemUpFromDirectoryDto itemUpFromDirectoryDto) {
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
BeanUtils.copyProperties(itemUpFromDirectoryDto, chargeItemDefinition);
boolean insertCIDSuccess = chargeItemDefinitionService.save(chargeItemDefinition);
if (insertCIDSuccess) {
List<ChargeItemDefDetail> shargeItemDefDetails = new ArrayList<>();
// 诊疗没有购入价
if (!CommonConstants.TableName.WOR_ACTIVITY_DEFINITION.equals(itemUpFromDirectoryDto.getInstanceTable())) {
// 插入购入价
ChargeItemDefDetail chargeItemDefDetail1 = new ChargeItemDefDetail();
chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId())
// 条件:采购
.setConditionCode(ConditionCode.PURCHASE.getCode())
// 购入价
.setAmount(itemUpFromDirectoryDto.getPurchasePrice());
shargeItemDefDetails.add(chargeItemDefDetail1);
}
// 插入零售价
ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail();
chargeItemDefDetail2.setDefinitionId(chargeItemDefinition.getId())
// 条件:单位
.setConditionCode(ConditionCode.UNIT.getCode())
// 单位枚举
.setConditionValue(itemUpFromDirectoryDto.getUnitCode())
// 零售价
.setAmount(itemUpFromDirectoryDto.getRetailPrice());
shargeItemDefDetails.add(chargeItemDefDetail2);
// 插入最高零售价
ChargeItemDefDetail chargeItemDefDetail3 = new ChargeItemDefDetail();
chargeItemDefDetail3.setDefinitionId(chargeItemDefinition.getId())
// 条件:限制
.setConditionCode(ConditionCode.LIMIT.getCode())
// 最高零售价
.setAmount(itemUpFromDirectoryDto.getMaximumRetailPrice());
shargeItemDefDetails.add(chargeItemDefDetail3);
return chargeItemDefDetailService.saveBatch(shargeItemDefDetails);
}
return false;
}
/**
* 修改项目定价表
*
* @param chargeItemDefinition 项目定价表信息
*/
@Override
public boolean updateItem(ChargeItemDefinition chargeItemDefinition) {
// 关联项目和代码位为key更新表
LambdaUpdateWrapper<ChargeItemDefinition> 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())
.set(ChargeItemDefinition::getPrice, chargeItemDefinition.getPrice())
.set(ChargeItemDefinition::getChargeName, chargeItemDefinition.getChargeName());
return chargeItemDefinitionService.update(null, updateWrapper);
}
/**
* 修改项目定价表子信息
*
* @param chargeItemDefinition 项目定价表子信息
* @param price 价格
* @param conditionCode 条件
*/
@Override
public boolean updateItemDetail(ChargeItemDefinition chargeItemDefinition, BigDecimal price, String conditionCode) {
LambdaQueryWrapper<ChargeItemDefinition> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ChargeItemDefinition::getInstanceId, chargeItemDefinition.getInstanceId())
.eq(ChargeItemDefinition::getInstanceTable, chargeItemDefinition.getInstanceTable());
ChargeItemDefinition cItemDefObj = chargeItemDefinitionMapper.selectOne(queryWrapper);
// 关联项目和代码位为key更新表
LambdaUpdateWrapper<ChargeItemDefDetail> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ChargeItemDefDetail::getDefinitionId, cItemDefObj.getId());
updateWrapper.eq(ChargeItemDefDetail::getConditionCode, conditionCode).set(ChargeItemDefDetail::getAmount,
price);
return chargeItemDefDetailService.update(null, updateWrapper);
}
}

View File

@@ -0,0 +1,497 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice.impl;
import java.io.IOException;
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
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.*;
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.IChargeItemDefDetailService;
import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
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;
import com.openhis.medication.service.IMedicationDefinitionService;
import com.openhis.medication.service.IMedicationDispenseService;
import com.openhis.medication.service.IMedicationService;
import com.openhis.sys.service.IOperationRecordService;
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
import com.openhis.web.datadictionary.appservice.IMedicationManageAppService;
import com.openhis.web.datadictionary.dto.*;
import com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper;
import com.openhis.workflow.service.ISupplyRequestService;
import com.openhis.yb.service.YbManager;
/**
* TODO:DTO已UI最小需要值返回 药品目录 impl
*
* @author
* @date 2025-03-17
*/
@Service
public class MedicationManageAppServiceImpl implements IMedicationManageAppService {
@Autowired
private IMedicationService medicationService;
@Autowired
private IMedicationDefinitionService medicationDefinitionService;
@Autowired
IChargeItemDefinitionService chargeItemDefinitionService;
@Autowired
IChargeItemDefDetailService chargeItemDefDetailService;
@Autowired
private MedicationManageSearchMapper medicationManageSearchMapper;
@Autowired
private ISupplierService supplierService;
@Autowired
private ISysDictTypeService sysDictTypeService;
@Autowired
private IItemDefinitionService itemDefinitionServic;
@Autowired(required = false)
private AssignSeqUtil assignSeqUtil;
@Autowired
private YbManager ybService;
@Autowired
private IOperationRecordService iOperationRecordService;
@Autowired
private ISupplyRequestService supplyRequestService;
@Autowired
private IMedicationDispenseService medicationDispenseService;
/**
* 药品目录初始化
*
* @return
*/
@Override
public R<?> getMedicationInit() {
MedicationManageInitDto medicationManageInitDto = new MedicationManageInitDto();
// 获取状态,从枚举里面取下拉值
List<MedicationManageInitDto.statusEnumOption> statusEnumOptions = Stream.of(PublicationStatus.values())
.map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
// 获取适用范围
List<MedicationManageInitDto.domainEnumOption> domainEnumOptions = Stream.of(ApplicableScope.values())
.map(domain -> new MedicationManageInitDto.domainEnumOption(domain.getValue(), domain.getInfo()))
.collect(Collectors.toList());
// 查询供应商列表
List<Supplier> supplierList = supplierService.getList();
// 供应商信息
List<MedicationManageInitDto.supplierListOption> supplierListOptions = supplierList.stream()
.map(supplier -> new MedicationManageInitDto.supplierListOption(supplier.getId(), supplier.getName()))
.collect(Collectors.toList());
// 获取药品分类
List<SysDictData> medicalList =
sysDictTypeService.selectDictDataByType(CommonConstants.DictName.MED_CATEGORY_CODE);
// 获取药品分类
List<MedicationManageInitDto.dictCategoryCode> medicationCategories = medicalList.stream().map(
category -> new MedicationManageInitDto.dictCategoryCode(category.getDictValue(), category.getDictLabel()))
.collect(Collectors.toList());
// 获取是/否 列表
// 获取状态
List<MedicationManageInitDto.statusEnumOption> statusWeatherOption = Stream.of(Whether.values())
.map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
// 权限限制
List<MedicationManageInitDto.statusEnumOption> statusRestrictedOptions = Stream.of(PermissionLimit.values())
.map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
// 拆分属性
List<MedicationManageInitDto.statusEnumOption> partAttributeEnumOptions = Stream.of(SplitPropertyCode.values())
.map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
// 住院临时医嘱拆分属性的枚举
List<MedicationManageInitDto.statusEnumOption> tempOrderSplitPropertyOptions =
Stream.of(TempOrderSplitPropertyCode.values())
.map(status -> new MedicationManageInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
// 医保等级List
List<MedicationManageInitDto.statusEnumOption> chrgitmLvOptions = Stream.of(InsuranceLevel.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);
medicationManageInitDto.setChrgitmLvOptions(chrgitmLvOptions);
return R.ok(medicationManageInitDto);
}
/**
* 已评审 药品目录查询
*
* @param
* @param searchKey 查询条件-模糊查询
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 药品目录查询结果
*/
@Override
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) {
// 构建查询条件
QueryWrapper<MedicationManageDto> 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<MedicationManageDto> medicationManageDtoPage =
medicationManageSearchMapper.getPage(new Page<>(pageNo, pageSize), queryWrapper);
// 枚举类回显赋值
medicationManageDtoPage.getRecords().forEach(e -> {
// 药品状态
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum()));
// 权限限制
e.setRestrictedEnum_enumText(EnumUtils.getInfoByValue(PermissionLimit.class, e.getRestrictedEnum()));
// 是否为活性
e.setActiveFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getActiveFlag()));
// 医保是否对码
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag()));
// 是否皮试
e.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getSkinTestFlag()));;
// 是否为注射药物
e.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getInjectFlag()));
// 是否限制使用
e.setRestrictedFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getRestrictedFlag()));
// 儿童用药标志
e.setChildrenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getChildrenFlag()));
// 适用范围
e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum()));
// 是否自制
e.setSelfFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getSelfFlag()));
// 是否抗生素
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()));
});
// 返回【药品录列表DTO】分页
return R.ok(medicationManageDtoPage);
}
/**
* 已评审 编辑药品目录信息
*
* @param medicationManageUpDto 药品目录信息
*/
@Override
public R<?> editMedication(@Validated @RequestBody MedicationManageUpDto medicationManageUpDto) {
// // 校验是否可以编辑
// boolean result = supplyRequestService.verifyAbleEdit(medicationManageUpDto.getMedicationDefId());
// if (result) {
// return R.fail("该药品已经发生过业务,不可编辑");
// }
// boolean result = medicationDispenseService.verifyAbleEdit(medicationManageUpDto.getMedicationDefId());
// if (result) {
// return R.fail("该药品已经发生过业务,不可编辑");
// }
// Todo:用Medication和medicationDefinition的domainservice来创造新的实例根据业务需求使用构造函数
// 如果小于5哥变量就用基本类型传递如果大于5哥在domain层定义构造方法的入参
MedicationDefinition medicationDefinition = new MedicationDefinition();
Medication medication = new Medication();
BeanUtils.copyProperties(medicationManageUpDto, medication); // 子表信息
BeanUtils.copyProperties(medicationManageUpDto, medicationDefinition);// 主表信息
medicationDefinition.setId(medicationManageUpDto.getMedicationDefId());
// 拼音码
medicationDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDefinition.getName()));
medicationDefinition
.setMerchandisePyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDefinition.getMerchandiseName()));
// 五笔码
medicationDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDefinition.getName()));
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()).setPrice(medicationManageUpDto.getRetailPrice())
.setChargeName(medicationManageUpDto.getName());
// 更新子表药品信息
if (medicationService.updateById(medication)) {
// 更新主表药品信息
boolean updateMedicationDefinition = medicationDefinitionService.updateById(medicationDefinition);
if (updateMedicationDefinition) {
// 调用医保目录对照接口
String ybSwitch =
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(medicationDefinition.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.MED_MEDICATION_DEFINITION,
medicationDefinition.getId());
if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常");
}
}
}
// 插入操作记录
iOperationRecordService.addEntityOperationRecord(DbOpType.UPDATE.getCode(),
CommonConstants.TableName.MED_MEDICATION_DEFINITION, medication);
// Todo:封装一个价格初始话的方法给app层调用
// 更新价格表
boolean updateChargeItemDefinition = itemDefinitionServic.updateItem(chargeItemDefinition);
// 更新子表,修改购入价,条件:采购
boolean upItemDetail1 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
medicationManageUpDto.getPurchasePrice(), ConditionCode.PURCHASE.getCode());
// 更新子表,修改零售价,条件:单位
boolean upItemDetail2 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
medicationManageUpDto.getRetailPrice(), ConditionCode.UNIT.getCode());
// 更新子表,修改最高零售价,条件:限制
boolean upItemDetail3 = itemDefinitionServic.updateItemDetail(chargeItemDefinition,
medicationManageUpDto.getMaximumRetailPrice(), ConditionCode.LIMIT.getCode());
return (updateMedicationDefinition && updateChargeItemDefinition && upItemDetail1 && upItemDetail2
&& upItemDetail3)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
} else {
return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
}
/**
* 已评审 药品目录详细查询
*
* @param id 查询条件
* @return 药品目录查询结果
*/
@Override
public R<?> getMedicationOne(@RequestParam Long id) {
// 获取租户ID
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
// 查询药品目录列表
MedicationManageDto medicationManageDto = medicationManageSearchMapper.getOne(id, tenantId);
// 返回【药品录列表DTO】列表
return R.ok(medicationManageDto);
}
/**
* 药品目录停用
*
* @param ids 药品目录ID列表
* @return
*/
@Override
public R<?> editMedicationStop(List<Long> ids) {
List<Medication> medicationList = new ArrayList<>();
// 取得更新值
for (Long detail : ids) {
Medication medication = new Medication();
medication.setId(detail);
medication.setStatusEnum(PublicationStatus.RETIRED.getValue());
medicationList.add(medication);
}
// TODO:别用三元,日志在业务代码以后记录
// 插入操作记录
iOperationRecordService.addIdsOperationRecord(DbOpType.STOP.getCode(),
CommonConstants.TableName.MED_MEDICATION_DEFINITION, ids);
// 更新药品信息
return medicationService.updateBatchById(medicationList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* TODO业务代码写在Domain里 药品目录启用
*
* @param ids 药品目录ID列表
* @return
*/
@Override
public R<?> editMedicationStart(List<Long> ids) {
List<Medication> medicationList = new ArrayList<>();
// 取得更新值
for (Long detail : ids) {
Medication medication = new Medication();
medication.setId(detail);
medication.setStatusEnum(PublicationStatus.ACTIVE.getValue());
medicationList.add(medication);
}
// 插入操作记录
iOperationRecordService.addIdsOperationRecord(DbOpType.START.getCode(),
CommonConstants.TableName.MED_MEDICATION_DEFINITION, ids);
// 更新药品信息
return medicationService.updateBatchById(medicationList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 添加药品目录信息
*
* @param medicationManageUpDto 药品目录信息
*/
@Override
public R<?> addMedication(@Validated @RequestBody MedicationManageUpDto medicationManageUpDto) {
MedicationDetail medicationDetail = new MedicationDetail();
BeanUtils.copyProperties(medicationManageUpDto, medicationDetail);
medicationDetail.setStatusEnum(PublicationStatus.ACTIVE.getValue());
// 使用10位数基础采番
String code = assignSeqUtil.getSeq(AssignSeqEnum.MEDICATION_NUM.getPrefix(), 10);
medicationDetail.setBusNo(code);
// 拼音码
medicationDetail.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDetail.getName()));
medicationDetail
.setMerchandisePyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDetail.getMerchandiseName()));
// 五笔码
medicationDetail.setWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDetail.getName()));
medicationDetail
.setMerchandiseWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDetail.getMerchandiseName()));
// 新增主表外来药品目录
if (medicationDefinitionService.addMedication(medicationDetail)) {
// 调用医保目录对照接口
String ybSwitch = SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.YB_SWITCH); // 医保开关
if (Whether.YES.getCode().equals(ybSwitch) && StringUtils.isNotEmpty(medicationDetail.getYbNo())) {
R<?> r = ybService.directoryCheck(CommonConstants.TableName.MED_MEDICATION_DEFINITION,
medicationDetail.getId());
if (200 != r.getCode()) {
throw new RuntimeException("医保目录对照接口异常");
}
}
// 插入操作记录
iOperationRecordService.addEntityOperationRecord(DbOpType.INSERT.getCode(),
CommonConstants.TableName.MED_MEDICATION_DEFINITION, medicationDetail);
// 新增子表外来药品目录
boolean insertMedicationSuccess = medicationService.addMedication(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());
// 添加药品成功后,添加相应的条件价格表信息
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 {
return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
}
}
@Override
public R<?> exportMedication(String searchKey, Integer ybMatchFlag, Integer statusEnum, String categoryCode,
HttpServletResponse response) {
// 获取租户ID
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
List<MedicationManageDto> list =
medicationManageSearchMapper.getList(searchKey, ybMatchFlag, statusEnum, categoryCode, tenantId);
ExcelUtil<MedicationManageDto> util = new ExcelUtil<>(MedicationManageDto.class);
util.exportExcel(response, list, "药品目录");
return null;
}
/**
* 导入药品目录
*
* @param file 文件
* @return 结果
*/
@Override
public R<?> importData(MultipartFile file) {
ExcelUtil<MedicationImportDto> util = new ExcelUtil<>(MedicationImportDto.class);
List<MedicationImportDto> dtoList;
try {
dtoList = util.importExcel(file.getInputStream());
} catch (IOException e) {
return R.fail("文件读取失败");
}
return null;
}
/**
* 获取导入模板
*
* @param response 响应
*/
@Override
public void importTemplate(HttpServletResponse response) {
ExcelUtil<MedicationImportDto> util = new ExcelUtil<>(MedicationImportDto.class);
util.importTemplateExcel(response, "药品目录数据");
}
}

View File

@@ -0,0 +1,228 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.appservice.impl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import com.core.common.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.AssignSeqUtil;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.StringUtils;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.Supplier;
import com.openhis.administration.mapper.SupplierMapper;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.AssignSeqEnum;
import com.openhis.common.enums.DelFlag;
import com.openhis.common.enums.SupplierType;
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.ISupplierManagementAppService;
import com.openhis.web.datadictionary.dto.SupplierDto;
import com.openhis.web.datadictionary.dto.SupplierInitDto;
import com.openhis.web.datadictionary.dto.SupplierSearchParam;
import com.openhis.web.datadictionary.dto.SupplierUpDto;
/**
* 厂商/产地 impl
*
* @author dh
* @date 2025-03-10
*/
@Service
public class SupplierManagementAppServiceImpl implements ISupplierManagementAppService {
@Autowired
private ISupplierService supplierService;
@Autowired
private SupplierMapper supplierMapper;
@Autowired(required = false)
AssignSeqUtil assignSeqUtil;
/**
* 厂商/产地初始化
*
* @return
*/
@Override
public R<?> getSupplierInit() {
SupplierInitDto supplierInitDto = new SupplierInitDto();
// 获取厂商/产地种类
List<SupplierInitDto.supplierTypeOption> supplierTypeOption = Stream.of(SupplierType.values())
.map(status -> new SupplierInitDto.supplierTypeOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
supplierInitDto.setSupplierTypeOptions(supplierTypeOption);
return R.ok(supplierInitDto);
}
/**
* 厂商/产地查询
*
* @param supplierSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param typeEnum 查询条件
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 厂商/产地查询结果
*/
@Override
public R<?> getSupplierList(SupplierSearchParam supplierSearchParam, String searchKey, Integer typeEnum,
Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<Supplier> queryWrapper = HisQueryUtils.buildQueryWrapper(
supplierSearchParam, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.BusNo,
CommonConstants.FieldName.Name, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr)),
request);
if (StringUtils.isNotNull(typeEnum)) {
queryWrapper.eq(CommonConstants.FieldName.TypeEnum, typeEnum);
}
// 设置排序
queryWrapper.eq(CommonConstants.FieldName.DeleteFlag, DelFlag.NO.getCode())
.orderByDesc(CommonConstants.FieldName.BusNo);
// 分页查询
Page<SupplierDto> supplierPage =
HisPageUtils.selectPage(supplierMapper, queryWrapper, pageNo, pageSize, SupplierDto.class);
// 枚举类回显赋值
supplierPage.getRecords().forEach(e -> {
e.setActiveFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getActiveFlag()));
// 厂商类型
e.setTypeEnum_enumText(EnumUtils.getInfoByValue(SupplierType.class, e.getTypeEnum()));
});
// 返回【病种目录列表DTO】分页
return R.ok(supplierPage);
}
/**
* 添加供应商信息
*
* @param supplierUpDto 供应商信息
*/
@Override
public R<?> addSupplyRequest(SupplierUpDto supplierUpDto) {
// 重复添加校验
// 根据名字,地址,类型查询供应商信息
List<Supplier> supplierList = supplierService.getsupplierList(supplierUpDto.getName(),
supplierUpDto.getAddress(), supplierUpDto.getTypeEnum());
if(!supplierList.isEmpty()){
throw new ServiceException("数据已添加,请勿重复添加");
}
Supplier supplierInfo = new Supplier();
BeanUtils.copyProperties(supplierUpDto, supplierInfo);
// 设置拼音首拼
supplierInfo.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(supplierInfo.getName()));
// 设置五笔首拼
supplierInfo.setWbStr(ChineseConvertUtils.toWBFirstLetter(supplierInfo.getName()));
// 使用基础采番设置供应商编码10位数
String code = assignSeqUtil.getSeq(AssignSeqEnum.SUPPLIER_BUS_NO.getPrefix(), 10);
supplierInfo.setBusNo(code);
return supplierService.addSupplier(supplierInfo)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"厂商/供应商信息"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
}
/**
* 编辑供应商信息
*
* @param supplierUpDto 供应商信息
*/
@Override
public R<?> editSupplyRequest(SupplierUpDto supplierUpDto) {
Supplier supplier = new Supplier();
BeanUtils.copyProperties(supplierUpDto, supplier);
// 设置拼音首拼
supplier.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(supplier.getName()));
// 设置五笔首拼
supplier.setWbStr(ChineseConvertUtils.toWBFirstLetter(supplier.getName()));
// 更新供应商信息信息
return supplierService.updateById(supplier)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"厂商/供应商信息"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 厂商/产地详细查询
*
* @param id 查询条件
* @return 厂商/产地查询结果
*/
@Override
public R<?> getSupplierDetail(Long id) {
SupplierDto supplierDto = new SupplierDto();
// 根据ID查询【供应商信息】
Supplier supplier = supplierService.getById(id);
BeanUtils.copyProperties(supplier, supplierDto);
return R.ok(supplierDto);
}
/**
* 厂商/产地停用
*
* @param ids 厂商/产地ID列表
* @return
*/
@Override
public R<?> editSupplierStop(List<Long> ids) {
List<Supplier> supplierList = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
Supplier supplier = new Supplier();
supplier.setId(detail);
supplier.setActiveFlag(0);
supplierList.add(supplier);
}
// 更新厂商/产地信息
return supplierService.updateBatchById(supplierList)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
* 厂商/产地启用
*
* @param ids 厂商/产地ID列表
* @return
*/
@Override
public R<?> editSupplierStart(List<Long> ids) {
List<Supplier> supplierListStart = new CopyOnWriteArrayList<>();
// 取得更新值
for (Long detail : ids) {
Supplier supplier = new Supplier();
supplier.setId(detail);
supplier.setActiveFlag(1);
supplierListStart.add(supplier);
}
// 更新厂商/产地信息
return supplierService.updateBatchById(supplierListStart)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
}

View File

@@ -0,0 +1,183 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.assembler;
/**
* 费用定价dto转换器
*
* @author zxy
* @date 2025-02-21
*/
public class ItemDefinitionAssembler {
// /**
// * 装配【费用定价分页列表DTO】分页 药品
// *
// * @param chargeItemDefinitionPage 【费用定价管理Entity实体】分页
// * @param chargeItemDefAppList 【费用定价管理子表Entity实体】列表
// * @param medicationDefinitionList【药品定义管理Entity实体】列表
// * @return 【费用定价分页列表DTO】分页
// */
// public static Page<ChargeItemDefPageDto> assembleMedDefinitionDto(
// Page<ChargeItemDefinition> chargeItemDefinitionPage, List<ChargeItemDefDetail> chargeItemDefAppList,
// List<MedicationDefinition> medicationDefinitionList, ItemDefSearchParam itemDefSearchParam) {
//
// // 将查询到的【药品基本信息管理】列表作成以ID为Key的Map
// Map<Long, MedicationDefinition> medicationDefinitionMap = medicationDefinitionList.stream()
// .collect(Collectors.toMap(MedicationDefinition::getId, Function.identity()));
//
// // 将查询到的【患者管理】列表作成以ID为Key的Map
// Map<Long, ChargeItemDefDetail> chargeItemDefAppMap =
// chargeItemDefAppList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getId, Function.identity()));
//
// // 定义【入库单据分页列表DTO】的分页传入【页码】、【行数】、及上面分页的【总数】
// Page<ChargeItemDefPageDto> returnPage = new Page<>(chargeItemDefinitionPage.getCurrent(),
// chargeItemDefinitionPage.getSize(), chargeItemDefinitionPage.getTotal());
//
// // 将【供应申请管理】的分页转化为返回【入库单据分页列表DTO】的分页
// returnPage.setRecords(chargeItemDefinitionPage.getRecords().stream().map(entity -> {
// // 定义【入库单据分页列表DTO】
// ChargeItemDefPageDto dto = new ChargeItemDefPageDto();
// ChargeItemDefDetail chargeItemDefApp =
// chargeItemDefAppMap.getOrDefault(entity.getInstanceId(), new ChargeItemDefDetail());
// MedicationDefinition medicationDefinition =
// medicationDefinitionMap.getOrDefault(entity.getInstanceId(), new MedicationDefinition());
// // 从主表COPY需要的字段
// dto.setId(entity.getId());
// dto.setConditionLotnumber(chargeItemDefApp.getConditionLotnumber());
// dto.setPyCode(medicationDefinition.getPyCode());
// dto.setTypeEnum(medicationDefinition.getCategoryCode());
// return dto;
// }).collect(Collectors.toList()));
// // 模糊查询项目名称/项目编码/助记码
// if (itemDefSearchParam.getSearchKey() != null) {
// returnPage.setRecords(returnPage.getRecords().stream()
// .filter(e -> e.getChargeName().contains(itemDefSearchParam.getSearchKey())
// || e.getTitle().contains(itemDefSearchParam.getSearchKey())
// || e.getPyCode().contains(itemDefSearchParam.getSearchKey()))
// .collect(Collectors.toList()));
// }
// // 精确查询收费项目
// if (itemDefSearchParam.getChargeItem() != null) {
// returnPage.setRecords(returnPage.getRecords().stream()
// .filter(e -> e.getTypeEnum().equals(itemDefSearchParam.getChargeItem())).collect(Collectors.toList()));
// }
//
// // 返回【入库单据分页列表DTO】分页
// return returnPage;
// }
//
// /**
// * 装配【费用定价分页列表DTO】分页 器具
// *
// * @param chargeItemDefinitionPage 【费用定价管理Entity实体】分页
// * @param chargeItemDefAppList 【费用定价管理子表Entity实体】列表
// * @param medicationDefinitionList【药品定义管理Entity实体】列表
// * @return 【费用定价分页列表DTO】分页
// */
// public static Page<ChargeItemDefPageDto> assembleDevDefinitionDto(
// Page<ChargeItemDefinition> chargeItemDefinitionPage, List<ChargeItemDefDetail> chargeItemDefAppList,
// List<DeviceDefinition> medicationDefinitionList, ItemDefSearchParam itemDefSearchParam) {
//
// // 将查询到的【药品基本信息管理】列表作成以ID为Key的Map
// Map<Long, DeviceDefinition> deviceDefinitionMap =
// medicationDefinitionList.stream().collect(Collectors.toMap(DeviceDefinition::getId, Function.identity()));
//
// // 将查询到的【患者管理】列表作成以ID为Key的Map
// Map<Long, ChargeItemDefDetail> chargeItemDefAppMap =
// chargeItemDefAppList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getId, Function.identity()));
//
// // 定义【入库单据分页列表DTO】的分页传入【页码】、【行数】、及上面分页的【总数】
// Page<ChargeItemDefPageDto> returnPage = new Page<>(chargeItemDefinitionPage.getCurrent(),
// chargeItemDefinitionPage.getSize(), chargeItemDefinitionPage.getTotal());
//
// // 将【供应申请管理】的分页转化为返回【入库单据分页列表DTO】的分页
// returnPage.setRecords(chargeItemDefinitionPage.getRecords().stream().map(entity -> {
// // 定义【入库单据分页列表DTO】
// ChargeItemDefPageDto dto = new ChargeItemDefPageDto();
// ChargeItemDefDetail chargeItemDefApp =
// chargeItemDefAppMap.getOrDefault(entity.getInstanceId(), new ChargeItemDefDetail());
// DeviceDefinition deviceDefinition =
// deviceDefinitionMap.getOrDefault(entity.getInstanceId(), new DeviceDefinition());
// // 从主表COPY需要的字段
// dto.setId(entity.getId());
// dto.setConditionLotnumber(chargeItemDefApp.getConditionLotnumber());
// dto.setPyCode(deviceDefinition.getPyCode());
// dto.setTypeEnum(deviceDefinition.getDeviceClass());
// return dto;
// }).collect(Collectors.toList()));
// // 模糊查询项目名称/项目编码/助记码
// if (itemDefSearchParam.getSearchKey() != null) {
// returnPage.setRecords(returnPage.getRecords().stream()
// .filter(e -> e.getChargeName().contains(itemDefSearchParam.getSearchKey())
// || e.getTitle().contains(itemDefSearchParam.getSearchKey())
// || e.getPyCode().contains(itemDefSearchParam.getSearchKey()))
// .collect(Collectors.toList()));
// }
// // 精确查询收费项目
// if (itemDefSearchParam.getChargeItem() != null) {
// returnPage.setRecords(returnPage.getRecords().stream()
// .filter(e -> e.getTypeEnum().equals(itemDefSearchParam.getChargeItem())).collect(Collectors.toList()));
// }
//
// // 返回【入库单据分页列表DTO】分页
// return returnPage;
// }
//
// /**
// * 装配【费用定价分页列表DTO】分页 诊疗
// *
// * @param chargeItemDefinitionPage 【费用定价管理Entity实体】分页
// * @param chargeItemDefAppList 【费用定价管理子表Entity实体】列表
// * @param medicationDefinitionList【药品定义管理Entity实体】列表
// * @return 【费用定价分页列表DTO】分页
// */
// public static Page<ChargeItemDefPageDto> assembleProDefinitionDto(
// Page<ChargeItemDefinition> chargeItemDefinitionPage, List<ChargeItemDefDetail> chargeItemDefAppList,
// List<ActivityDefinition> medicationDefinitionList, ItemDefSearchParam itemDefSearchParam) {
//
// // 将查询到的【药品基本信息管理】列表作成以ID为Key的Map
// Map<Long, ActivityDefinition> activityDefinitionMap =
// medicationDefinitionList.stream().collect(Collectors.toMap(ActivityDefinition::getId, Function.identity()));
//
// // 将查询到的【患者管理】列表作成以ID为Key的Map
// Map<Long, ChargeItemDefDetail> chargeItemDefAppMap =
// chargeItemDefAppList.stream().collect(Collectors.toMap(ChargeItemDefDetail::getId, Function.identity()));
//
// // 定义【入库单据分页列表DTO】的分页传入【页码】、【行数】、及上面分页的【总数】
// Page<ChargeItemDefPageDto> returnPage = new Page<>(chargeItemDefinitionPage.getCurrent(),
// chargeItemDefinitionPage.getSize(), chargeItemDefinitionPage.getTotal());
//
// // 将【供应申请管理】的分页转化为返回【入库单据分页列表DTO】的分页
// returnPage.setRecords(chargeItemDefinitionPage.getRecords().stream().map(entity -> {
// // 定义【入库单据分页列表DTO】
// ChargeItemDefPageDto dto = new ChargeItemDefPageDto();
// ChargeItemDefDetail chargeItemDefApp =
// chargeItemDefAppMap.getOrDefault(entity.getInstanceId(), new ChargeItemDefDetail());
// ActivityDefinition deviceDefinition =
// activityDefinitionMap.getOrDefault(entity.getInstanceId(), new ActivityDefinition());
// // 从主表COPY需要的字段
// dto.setId(entity.getId());
// dto.setConditionLotnumber(chargeItemDefApp.getConditionLotnumber());
// dto.setPyCode(deviceDefinition.getPyCode());
// dto.setTypeEnum(deviceDefinition.getTypeEnum().toString());
// return dto;
// }).collect(Collectors.toList()));
// // 模糊查询项目名称/项目编码/助记码
// if (itemDefSearchParam.getSearchKey() != null) {
// returnPage.setRecords(returnPage.getRecords().stream()
// .filter(e -> e.getChargeName().contains(itemDefSearchParam.getSearchKey())
// || e.getTitle().contains(itemDefSearchParam.getSearchKey())
// || e.getPyCode().contains(itemDefSearchParam.getSearchKey()))
// .collect(Collectors.toList()));
// }
// // 精确查询收费项目
// if (itemDefSearchParam.getChargeItem() != null) {
// returnPage.setRecords(returnPage.getRecords().stream()
// .filter(e -> e.getTypeEnum().equals(itemDefSearchParam.getChargeItem())).collect(Collectors.toList()));
// }
//
// // 返回【入库单据分页列表DTO】分页
// return returnPage;
// }
}

View File

@@ -0,0 +1,141 @@
package com.openhis.web.datadictionary.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.appservice.IDeviceManageAppService;
import com.openhis.web.datadictionary.dto.DeviceManageDto;
import com.openhis.web.datadictionary.dto.DeviceManageSelParam;
import com.openhis.web.datadictionary.dto.DeviceManageUpDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* TODO:器材目录
*
* @author lpt
* @date 2025-02-20
*/
@RestController
@RequestMapping("/data-dictionary/device")
@Slf4j
@AllArgsConstructor
public class DeviceManageController {
@Autowired
private IDeviceManageAppService deviceManageAppService;
/**
* 器材目录初期查询
*
* @return
*/
@GetMapping("/init")
public R<?> getDeviceManageInit() {
return deviceManageAppService.getDeviceManageInit();
}
/**
* 查询器材目录分页列表
*
* @param deviceManageSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
@GetMapping("/information-page")
public R<?> getDevicePage(DeviceManageSelParam deviceManageSelParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return deviceManageAppService.getDevicePage(deviceManageSelParam, searchKey, pageNo, pageSize, request);
}
/**
* 根据id查询器材详情
*
* @param id 器材ID
* @return
*/
@GetMapping("/information-one")
public R<?> getDeviceOne(@RequestParam Long id) {
return deviceManageAppService.getDeviceOne(id);
}
/**
* 器材目录编辑
*
* @param deviceManageDto 器材目录列表
* @return
*/
@PutMapping("/information")
public R<?> editDevice(@RequestBody DeviceManageUpDto deviceManageDto) {
return deviceManageAppService.editDevice(deviceManageDto);
}
/**
* 器材目录停用
*
* @param ids 器材目录ID列表
* @return
*/
@PutMapping("/information-stop")
public R<?> editDeviceStop(@RequestBody List<Long> ids) {
return deviceManageAppService.editDeviceStop(ids);
}
/**
* 器材目录启用
*
* @param ids 器材目录ID列表
* @return
*/
@PutMapping("/information-start")
public R<?> editDeviceStart(@RequestBody List<Long> ids) {
return deviceManageAppService.editDeviceStart(ids);
}
/**
* 新增器材目录
*
* @param deviceManageUpDto 器材目录
* @return
*/
@PostMapping("/information")
public R<?> addDevice(@Validated @RequestBody DeviceManageUpDto deviceManageUpDto) {
return deviceManageAppService.addDevice(deviceManageUpDto);
}
/**
* 新增医保器材目录
*
* @param DeviceManageUpDto 器材目录
* @return
*/
@PostMapping("/information-yb")
public R<?> addYbDevice(@RequestBody DeviceManageUpDto DeviceManageUpDto) {
return null;
}
/**
* 器材目录导出
*
* @param DeviceManageDto 器材目录
* @return
*/
@GetMapping("/information-export")
public R<?> exportDevice(@RequestBody DeviceManageDto DeviceManageDto) {
return null;
}
}

View File

@@ -0,0 +1,139 @@
package com.openhis.web.datadictionary.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.appservice.IDiagTreatMAppService;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentDto;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentSelParam;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentUpDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* TODO:诊疗目录
*
* @author lpt
* @date 2025-02-20
*/
@RestController
@RequestMapping("/data-dictionary/diagnosis-treatment")
@Slf4j
@AllArgsConstructor
public class DiagnosisTreatmentController {
@Autowired
private IDiagTreatMAppService diagTreatMAppService;
/**
* 诊疗目录初期查询
*
* @return
*/
@GetMapping("/init")
public R<?> getDiseaseTreatmentInit() {
return diagTreatMAppService.getDiseaseTreatmentInit();
}
/**
* 查询诊疗目录分页列表
*
* @param DiagnosisTreatmentSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
@GetMapping("/information-page")
public R<?> getDiseaseTreatmentPage(DiagnosisTreatmentSelParam DiagnosisTreatmentSelParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return diagTreatMAppService.getDiseaseTreatmentPage(DiagnosisTreatmentSelParam, searchKey, pageNo,
pageSize, request);
}
/**
* 根据id查询诊疗详情
*
* @param id 诊疗ID
* @return
*/
@GetMapping("/information-one")
public R<?> getDiseaseTreatmentOne(@RequestParam Long id) {
return diagTreatMAppService.getDiseaseTreatmentOne(id);
}
/**
* 诊疗目录编辑
*
* @param diagnosisTreatmentUpDto 诊疗目录列表
* @return
*/
@PutMapping("/information")
public R<?> editDiseaseTreatment(@RequestBody DiagnosisTreatmentUpDto diagnosisTreatmentUpDto) {
return diagTreatMAppService.editDiseaseTreatment(diagnosisTreatmentUpDto);
}
/**
* 诊疗目录停用
*
* @param ids 诊疗目录ID列表
* @return
*/
@PutMapping("/information-stop")
public R<?> editDiseaseTreatmentStop(@RequestBody List<Long> ids) {
return diagTreatMAppService.editDiseaseTreatmentStop(ids);
}
/**
* 诊疗目录启用
*
* @param ids 诊疗目录ID列表
* @return
*/
@PutMapping("/information-start")
public R<?> editDiseaseTreatmentStart(@RequestBody List<Long> ids) {
return diagTreatMAppService.editDiseaseTreatmentStart(ids);
}
/**
* 新增外来诊疗目录
*
* @param diagnosisTreatmentUpDto 诊疗目录
* @return
*/
@PostMapping("/information")
public R<?> addDiseaseTreatment(@Validated @RequestBody DiagnosisTreatmentUpDto diagnosisTreatmentUpDto) {
return diagTreatMAppService.addDiseaseTreatment(diagnosisTreatmentUpDto);
}
/**
* 新增医保诊疗目录
*
* @param diagnosisTreatmentUpDto 诊疗目录
* @return
*/
@PostMapping("/information-yb")
public R<?> addYbDiseaseTreatment(@RequestBody DiagnosisTreatmentUpDto diagnosisTreatmentUpDto) {
return null;
}
/**
* 诊疗目录导出
*
* @param diagnosisTreatmentDto 诊疗目录
* @return
*/
@GetMapping("/information-export")
public R<?> exportDiseaseTreatment(@RequestBody DiagnosisTreatmentDto diagnosisTreatmentDto) {
return null;
}
}

View File

@@ -0,0 +1,154 @@
package com.openhis.web.datadictionary.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.core.common.core.domain.R;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.clinical.domain.ConditionDefinition;
import com.openhis.web.datadictionary.appservice.IDiseaseManageAppService;
import com.openhis.web.datadictionary.dto.DiseaseManageDto;
import com.openhis.web.datadictionary.dto.DiseaseManageSelParam;
import com.openhis.web.datadictionary.dto.DiseaseManageUpDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* TODO:病种目录
*
* @author lpt
* @date 2025-02-20
*/
@RestController
@RequestMapping("/data-dictionary/disease")
@Slf4j
@AllArgsConstructor
public class DiseaseManageController {
@Autowired
private IDiseaseManageAppService diseaseManageAppService;
/**
* 病种目录初始化
*
* @return
*/
@GetMapping("/information-init")
public R<?> getDiseaseInit() {
return diseaseManageAppService.getDiseaseInit();
}
/**
* 查询病种目录分页列表
*
* @param diseaseManageSelParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
@GetMapping("/information-page")
public R<?> getDiseaseList(DiseaseManageSelParam diseaseManageSelParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// 返回【病种目录列表DTO】分页
return diseaseManageAppService.getDiseaseList(diseaseManageSelParam, searchKey, pageNo, pageSize, request);
}
/**
* 根据id查询疾病详情
*
* @param id 疾病ID
* @return
*/
@GetMapping("/information-one")
public R<?> getDiseaseOne(@RequestParam Long id) {
// 根据ID查询【病种目录】
return diseaseManageAppService.getDiseaseOne(id);
}
/**
* 病种目录编辑
*
* @param diseaseManageDto 病种目录列表
* @return
*/
@PutMapping("/information")
public R<?> editDisease(@RequestBody DiseaseManageUpDto diseaseManageDto) {
ConditionDefinition conditionDefinition = new ConditionDefinition();
BeanUtils.copyProperties(diseaseManageDto, conditionDefinition);
// 更新病种信息
return diseaseManageAppService.editDisease(diseaseManageDto);
}
/**
* 病种目录停用
*
* @param ids 病种目录ID列表
* @return
*/
@PutMapping("/information-stop")
public R<?> editDiseaseStop(@RequestBody List<Long> ids) {
// 更新病种信息
return diseaseManageAppService.editDiseaseStop(ids);
}
/**
* 病种目录启用
*
* @param ids 病种目录ID列表
* @return
*/
@PutMapping("/information-start")
public R<?> editDiseaseStart(@RequestBody List<Long> ids) {
// 更新病种信息
return diseaseManageAppService.editDiseaseStart(ids);
}
/**
* 新增外来病种目录
*
* @param diseaseManageUpDto 病种目录
* @return
*/
@PostMapping("/information")
public R<?> addDisease(@Validated @RequestBody DiseaseManageUpDto diseaseManageUpDto) {
return diseaseManageAppService.addDisease(diseaseManageUpDto);
}
/**
* 新增医保病种目录
*
* @param diseaseManageUpDto 病种目录
* @return
*/
@PostMapping("/information-yb")
public R<?> addYbDisease(@RequestBody DiseaseManageUpDto diseaseManageUpDto) {
return null;
}
/**
* 病种目录导出
*
* @param diseaseManageDto 病种目录
* @return
*/
@GetMapping("/information-export")
public R<?> exportDisease(@RequestBody DiseaseManageDto diseaseManageDto) {
return null;
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.controller;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.springframework.web.bind.annotation.*;
import com.core.common.core.domain.R;
import com.openhis.common.enums.ChargeItemContext;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.web.datadictionary.appservice.ItemDefinitionAppService;
import com.openhis.web.datadictionary.dto.ItemDefinitionDto;
import com.openhis.web.datadictionary.dto.ItemDefinitionInitDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* 项目定价
*/
@RestController
@RequestMapping("/dict-dictionary/definition")
@Slf4j
@AllArgsConstructor
public class ItemDefinitionController {
private final ItemDefinitionAppService itemDefinitionAppService;
/**
* 项目定价基础数据初始化
*
* @return 项目定价基础数据
*/
@GetMapping(value = "/init")
public R<?> init() {
ItemDefinitionInitDto itemDefinitionInitDto = new ItemDefinitionInitDto();
// 状态
List<ItemDefinitionInitDto.PublicationStatusOption> publicationStatusOptions =
Stream.of(PublicationStatus.values())
.map(status -> new ItemDefinitionInitDto.PublicationStatusOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
itemDefinitionInitDto.setPublicationStatusOptions(publicationStatusOptions);
// 收费项目类型
List<ItemDefinitionInitDto.ChargeItemContextOption> chargeItemContextOptions =
Stream.of(ChargeItemContext.values())
.map(status -> new ItemDefinitionInitDto.ChargeItemContextOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
itemDefinitionInitDto.setChargeItemContextOptions(chargeItemContextOptions);
return R.ok(itemDefinitionInitDto);
}
/**
* 项目定价 分页
*
* @param itemDefinitionDto dto
* @param searchKey 模糊查询关键字
* @param chargeItemContext 收费项目类型
* @param pageNo 当前页
* @param pageSize 每页多少条
* @return 项目定价
*/
@GetMapping(value = "/charge-item-info")
public R<?> getChargeItemInfo(ItemDefinitionDto itemDefinitionDto,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "chargeItemContext") Integer chargeItemContext,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
return R.ok(itemDefinitionAppService.getChargeItemInfo(itemDefinitionDto, chargeItemContext, searchKey, pageNo,
pageSize));
}
/**
* 项目定价详细
*
* @param id id
* @return 项目定价详细
*/
@GetMapping(value = "/charge-item-info-detail")
public R<?> getChargeItemInfoDetail(@RequestParam Long id) {
return R.ok(itemDefinitionAppService.getChargeItemInfoDetail(id));
}
/**
* 改价
*
* @param id id
* @param price 价格
* @return 结果
*/
@PutMapping(value = "/update-charge-item")
public R<?> updateChargeItemInfo(@RequestParam("id") Long id, @RequestParam("price") BigDecimal price) {
return itemDefinitionAppService.updateChargeItemInfo(id, price);
}
}

View File

@@ -0,0 +1,169 @@
package com.openhis.web.datadictionary.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.appservice.IMedicationManageAppService;
import com.openhis.web.datadictionary.dto.MedicationManageUpDto;
import com.openhis.web.datadictionary.dto.MedicationSearchParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* 已评审 TODO:药品目录
*
* @author lpt
* @date 2025-02-21
*/
@RestController
@RequestMapping("/data-dictionary/medication")
@Slf4j
@AllArgsConstructor
public class MedicationManageController {
@Autowired
private IMedicationManageAppService medicationManageAppService;
/**
* 已评审 药品目录初始化
*
* @return
*/
@GetMapping("/information-init")
public R<?> getMedicationInit() {
return medicationManageAppService.getMedicationInit();
}
/**
* 已评审 查询药品目录分页列表
*
* @param medicationSearchParam 查询条件
* @param searchKey 模糊查询条件
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
@GetMapping("/information-page")
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(medicationSearchParam, searchKey, pageNo, pageSize,
request);
}
/**
* 已评审 根据id查询药品详情
*
* @param id 药品ID
* @return
*/
@GetMapping("/information-one")
public R<?> getMedicationOne(@RequestParam Long id) {
return medicationManageAppService.getMedicationOne(id);
}
/**
* 已评审 药品目录编辑
*
* @param medicationManageUpDto
* @return
*/
@PutMapping("/information")
public R<?> editMedication(@RequestBody MedicationManageUpDto medicationManageUpDto) {
return medicationManageAppService.editMedication(medicationManageUpDto);
}
/**
* 一品神 药品目录停用
*
* @param ids 药品ID列表
* @return
*/
@PutMapping("/information-stop")
public R<?> editMedicationStop(@RequestBody List<Long> ids) {
// todo用动宾短语命名业务方法 如stopMedication
return medicationManageAppService.editMedicationStop(ids);
}
/**
* 药品目录启用
*
* @param ids 药品ID列表
* @return
*/
@PutMapping("/information-start")
public R<?> editMedicationStart(@RequestBody List<Long> ids) {
return medicationManageAppService.editMedicationStart(ids);
}
/**
* 已评审 新增外来药品目录
*
* @param medicationManageUpDto 药品目录信息
* @return
*/
@PostMapping("/information")
public R<?> addMedication(@Validated @RequestBody MedicationManageUpDto medicationManageUpDto) {
return medicationManageAppService.addMedication(medicationManageUpDto);
}
/**
* 新增医保药品目录
*
* @param medicationManageUpDto 药品目录信息
* @return
*/
@PostMapping("/information-yb")
public R<?> addYbMedication(@RequestBody MedicationManageUpDto medicationManageUpDto) {
return null;
}
/**
* 药品目录导出
*
* @param searchKey 查询条件
* @param statusEnum 查询条件-状态
* @param ybMatchFlag 查询条件-是否对码
* @param categoryCode 查询条件-药品分类
* @param response
* @return
*/
@GetMapping("/information-export")
public R<?> exportMedication(@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, HttpServletResponse response) {
return medicationManageAppService.exportMedication(searchKey, ybMatchFlag, statusEnum, categoryCode, response);
}
/**
* 导入药品目录
*
* @param file 文件
* @return 结果
*/
@PostMapping("/import-data")
public R<?> importData(MultipartFile file) {
return medicationManageAppService.importData(file);
}
/**
* 获取导入模板
*
* @param response 响应
*/
@PostMapping("/import-template")
public void importTemplate(HttpServletResponse response) {
medicationManageAppService.importTemplate(response);
}
}

View File

@@ -0,0 +1,121 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.controller;
import java.util.List;
import com.core.common.core.domain.R;
import com.openhis.web.datadictionary.appservice.ISupplierManagementAppService;
import com.openhis.web.datadictionary.dto.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
/**
* TODO:厂商/产地
*
* @author dh
* @date 2025-02-21
*/
@RestController
@RequestMapping("/data-dictionary/supplier")
@Slf4j
@AllArgsConstructor
public class SupplierManagementController {
@Autowired
private ISupplierManagementAppService supplierManagementAppService;
/**
* 厂商/产地初始化
*
* @return
*/
@GetMapping("/information-init")
public R<?> getSupplierInit() {
return supplierManagementAppService.getSupplierInit();
}
/**
* 厂商/产地查询
*
* @param supplierSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param typeEnum 查询条件
* @param pageNo 查询条件
* @param pageSize 查询条件
* @return 厂商/产地查询结果
*/
@GetMapping(value = "/get-supplier-list")
public R<?> getSupplierList(SupplierSearchParam supplierSearchParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "typeEnum", defaultValue = "") Integer typeEnum,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// 返回分页
return supplierManagementAppService.getSupplierList(supplierSearchParam, searchKey,typeEnum, pageNo, pageSize, request);
}
/**
* 添加供应商信息
*
* @param supplierUpDto 供应商信息
*/
@PostMapping("/add-supplier")
public R<?> addSupplyRequest(@Validated @RequestBody SupplierUpDto supplierUpDto) {
return supplierManagementAppService.addSupplyRequest(supplierUpDto);
}
/**
* 编辑供应商信息
*
* @param supplierUpDto 供应商信息
*/
@PutMapping("/edit-supplier")
public R<?> editSupplyRequest(@Validated @RequestBody SupplierUpDto supplierUpDto) {
// 更新供应商信息信息
return supplierManagementAppService.editSupplyRequest(supplierUpDto);
}
/**
* 厂商/产地详细查询
*
* @param id 查询条件
* @return 厂商/产地查询结果
*/
@GetMapping(value = "/get-supplier-detail")
public R<?> getSupplierDetail(@RequestParam Long id) {
return supplierManagementAppService.getSupplierDetail(id);
}
/**
* 厂商/产地停用
*
* @param ids 厂商/产地ID列表
* @return
*/
@PutMapping("/information-stop")
public R<?> editSupplierStop(@RequestBody List<Long> ids) {
// 更新厂商/产地信息
return supplierManagementAppService.editSupplierStop(ids);
}
/**
* 厂商/产地启用
*
* @param ids 厂商/产地ID列表
* @return
*/
@PutMapping("/information-start")
public R<?> editSupplierStart(@RequestBody List<Long> ids) {
// 更新厂商/产地信息
return supplierManagementAppService.editSupplierStart(ids);
}
}

View File

@@ -0,0 +1,25 @@
package com.openhis.web.datadictionary.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 诊疗子项JSON
*/
@Data
@Accessors(chain = true)
public class ActivityChildJsonDto {
/** 诊疗医嘱定义ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long adviceDefinitionId;
/**
* 子项请求数量
*/
private Integer childrenRequestNum;
}

View File

@@ -0,0 +1,109 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import java.util.Date;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 费用定价分页Dto
*
* @author zxy
* @date 2025-02-21
*/
@Data
@Accessors(chain = true)
public class ChargeItemDefPageDto {
/** ID */
private Long id;
/** 费用定价子表主键 */
private Long itemId;
/** 名称 */
private String chargeName;
/** 项目编号 */
private String itemNo;
/** 规格 */
private String totalVolume;
/** 状态 */
private PublicationStatus statusEnum;
/** 状态值 */
private String statusEnumText;
/** 单位 */
private String unitCode;
/** 拆零比 */
private BigDecimal partPercent;
/** 条件 */
private String conditionCode;
/** 命中值 */
private String conditionValue;
/** 价格 */
private BigDecimal price;
/** 有效时间开始 */
private Date effectiveStart;
/** 有效时间结束 */
private Date effectiveEnd;
/** 拆零最小单位 */
private String partMinUnitCode;
/** 拆零指导价 */
private BigDecimal partConditionPrice;
/** 拆零价格 */
private BigDecimal partPrice;
/** 条件价格 */
private BigDecimal amount;
/** 调价说明 */
private String description;
/** 优先级 */
private Integer priority;
/** 条件规则 */
private Integer conditionRuleId;
/** 创建时间 */
private Date createTime;
/** 调价时间 */
private Date updateTime;
/** 总条数 */
private Integer totalCount;
/** 拼音助记码 */
private String pyStr;
/** 收费项目 */
private Integer categoryCode;
/** 编码 */
private String instanceTable;
/** 定价类型 */
private String definitionType;
/** 定价项目 */
private Integer chargeItem;
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 收费项目下拉框
*
* @author zxy
* @date 2025-02-24
*/
@Data
@Accessors(chain = true)
public class ChargeItemOptionDto {
/** 值 */
private Integer value;
/** 标签 */
private String label;
public ChargeItemOptionDto(Integer value, String info) {
this.value = value;
this.label = info;
}
}

View File

@@ -0,0 +1,169 @@
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
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 com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* 器材目录分页检索
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DeviceManageDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 编码 */
private String busNo;
/** 器材名称 */
private String name;
/** 器材名称拼音 */
private String pyStr;
/** 器材五笔拼音 */
private String wbStr;
/** 器材分类 */
@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;
/** 拆零比 */
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;
/** 高值器材标志 */
private Integer hvcmFlag;
private String hvcmFlag_enumText;
/** 销售单位 */
@Dict(dictCode = "unit_code")
private String salesUnitCode;
private String salesUnitCode_dictText;
/** 批准文号 */
private String approvalNumber;
/** 医保标记 */
private Integer ybFlag;
private String ybFlag_enumText;
/** 医保编码 */
private String ybNo;
/** 医药机构目录编码 */
private String ybOrgNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
private String ybMatchFlag_enumText;
/** 状态 */
private Integer statusEnum;
private String statusEnum_enumText;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId;
/** 生产厂商文本 */
private String manufacturerText;
/** 供应商 */
@JsonSerialize(using = ToStringSerializer.class)
@Dict(dictTable = "adm_supplier",dictCode = "id",dictText = "name")
private Long supplyId;
private String supplyId_dictText;
/** 说明 */
private String description;
/** 适用范围 */
private String jurisdiction;
/** 器材版本 */
private String version;
/** 主要成分 */
private String substanceText;
/** 过敏标记 */
private Integer allergenFlag;
private String allergenFlag_enumText;
/** 财务类别 */
@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;
/** 医保等级 */
private Integer chrgitmLv;
/** 最小库存警戒数量(常规单位) */
private BigDecimal itemMinQuantity;
/** 最大库存警戒数量(常规单位) */
private BigDecimal itemMaxQuantity;
}

View File

@@ -0,0 +1,102 @@
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;
/**
* 器材目录初始dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DeviceManageInitDto {
private List<statusEnumOption> statusFlagOptions;
private List<dictCategoryCode> deviceCategories;
private List<exeOrganization> exeOrganizations;
// 供应商
private List<supplierListOption> supplierListOptions;
// 是/否 状态
private List<statusEnumOption> statusYBWeatherOptions;
/**
* 状态
*/
@Data
public static class statusEnumOption {
private Integer value;
private String info;
public statusEnumOption(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 器材分类
*/
@Data
public static class deviceCategory {
private Integer value;
private String info;
List<deviceCategory> children = new ArrayList<>();
public deviceCategory(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 器材分类
*/
@Data
public static class dictCategoryCode {
private String value;
private String info;
private List<dictCategoryCode> children = new ArrayList<>();
public dictCategoryCode(String value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 执行机构
*/
@Data
public static class exeOrganization {
private Long value;
private String label;
public exeOrganization(Long value, String label) {
this.value = value;
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;
}
}
}

View File

@@ -0,0 +1,25 @@
package com.openhis.web.datadictionary.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 器材目录分页检索条件
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DeviceManageSelParam {
/** 器材分类 */
private String categoryCode;
/** 医保对码标记 */
private Integer ybMatchFlag;
/** 状态 */
private Integer statusEnum;
}

View File

@@ -0,0 +1,148 @@
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import javax.validation.constraints.NotBlank;
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;
import lombok.experimental.Accessors;
/**
* 器材目录更新
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DeviceManageUpDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 编码 */
private String busNo;
/** 器材名称 */
@NotBlank(message = "器材名称不能为空")
private String name;
/** 器材名称拼音 */
private String pyStr;
/** 器材五笔拼音 */
private String wbStr;
/** 器材分类 */
private String categoryCode;
/** 器材种类 */
private String typeCode;
/** 包装单位 */
@NotBlank(message = "包装单位不能为空")
private String unitCode;
/** 包装规格 */
private String size;
/** 拆零比 */
private BigDecimal partPercent;
/** 最小使用单位 */
@NotBlank(message = "最小使用单位不能为空")
private String minUnitCode;
/** 所属科室 */
@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;
/** 高值器材标志 */
private Integer hvcmFlag;
/** 销售单位 */
private String salesUnitCode;
/** 批准文号 */
private String approvalNumber;
/** 医保标记 */
private Integer ybFlag;
/** 医保编码 */
private String ybNo;
/** 医药机构目录编码 */
private String ybOrgNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId;
/** 生产厂商文本 */
@JsonSerialize(using = ToStringSerializer.class)
private String manufacturerText;
/** 供应商 */
@JsonSerialize(using = ToStringSerializer.class)
private Long supplyId;
/** 说明 */
private String description;
/** 适用范围 */
private String jurisdiction;
/** 器材版本 */
private String version;
/** 主要成分 */
private String substanceText;
/** 过敏标记 */
private Integer allergenFlag;
/** 购入价 */
private BigDecimal purchasePrice;
/** 零售价 */
private BigDecimal retailPrice;
/** 最高零售价 */
private BigDecimal maximumRetailPrice;
/** 财务类别 */
private String itemTypeCode;
/** 医保类别 */
private String ybType;
/** 医保等级 */
private Integer chrgitmLv;
/** 最小库存警戒数量(常规单位) */
private BigDecimal itemMinQuantity;
/** 最大库存警戒数量(常规单位) */
private BigDecimal itemMaxQuantity;
}

View File

@@ -0,0 +1,127 @@
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;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* 诊疗目录分页检索
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiagnosisTreatmentDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 目录类别 */
@Dict(dictCode = "activity_category_code")
private String categoryCode;
private String categoryCode_dictText;
/** 编码 */
private String busNo;
/** 项目名称 */
private String name;
/** 项目名称拼音 */
private String pyStr;
/** 五笔拼音 */
private String wbStr;
/** 类型 */
private Integer typeEnum;
private String typeEnum_enumText;
/** 使用单位 */
@Dict(dictCode = "unit_code")
private String permittedUnitCode;
private String permittedUnitCode_dictText;
/** 医保标记 */
private Integer ybFlag;
private String ybFlag_enumText;
/** 医保编码 */
private String ybNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
private String ybMatchFlag_enumText;
/** 状态 */
private Integer statusEnum;
private String statusEnum_enumText;
/** 身体部位 */
@Dict(dictTable = "adm_body_structure", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class)
private String bodySiteCode;
private String bodySiteCode_dictText;
/** 所需标本 */
@Dict(dictCode = "specimen_code")
private String specimenCode;
private String specimenCode_dictText;
/** 说明 */
private String descriptionText;
/** 规则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;
/** 财务类别 */
@Dict(dictCode = "fin_type_code")
private String itemTypeCode;
private String itemTypeCode_dictText;
/** 医保类别 */
@Dict(dictCode = "med_chrgitm_type")
private String ybType;
private String ybType_dictText;
// /** 购入价 */
// private BigDecimal purchasePrice;
/** 零售价 */
private BigDecimal retailPrice;
/** 最高零售价 */
private BigDecimal maximumRetailPrice;
/** 医保等级 */
private Integer chrgitmLv;
/** 子项json */
private String childrenJson;
/** 划价标记 */
private Integer pricingFlag;
private String pricingFlag_enumText;
}

View File

@@ -0,0 +1,102 @@
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;
/**
* 诊疗目录初期查询
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiagnosisTreatmentInitDto {
private List<statusEnumOption> statusFlagOptions;
private List<diseaseTreatmentCategory> diseaseTreatmentCategoryList;
private List<exeOrganization> exeOrganizations;
private List<statusEnumOption> typeEnumOptions;
//诊疗目录
private List<dictCategoryCode> diagnosisCategoryOptions;
//是否list
private List<statusEnumOption> statusWeatherOption;
/**
* 状态
*/
@Data
public static class statusEnumOption {
private Integer value;
private String info;
public statusEnumOption(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 诊疗分类
*/
@Data
public static class diseaseTreatmentCategory {
private Integer value;
private String info;
private List<diseaseTreatmentType> children = new ArrayList<>();
public diseaseTreatmentCategory(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 诊疗类型
*/
@Data
public static class diseaseTreatmentType {
private String value;
private String info;
private List<diseaseTreatmentType> children = new ArrayList<>();
public diseaseTreatmentType(String value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 诊疗目录类型
*/
@Data
public static class dictCategoryCode {
private String value;
private String info;
private List<dictCategoryCode> children = new ArrayList<>();
public dictCategoryCode(String value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 执行机构
*/
@Data
public static class exeOrganization {
private Long value;
private String label;
public exeOrganization(Long value, String label) {
this.value = value;
this.label = label;
}
}
}

View File

@@ -0,0 +1,32 @@
package com.openhis.web.datadictionary.dto;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 诊疗目录分页检索条件
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiagnosisTreatmentSelParam {
/** 目录类别 */
private String categoryCode;
/** 类型 */
private Integer typeEnum;
/** 医保对码标记 */
private Integer ybMatchFlag;
/** 规则id */
private Integer ruleId;
/** 状态 */
private Integer statusEnum;
}

View File

@@ -0,0 +1,114 @@
package com.openhis.web.datadictionary.dto;
import javax.validation.constraints.NotBlank;
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;
/**
* 诊疗目录分页更新
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiagnosisTreatmentUpDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 目录类别 */
@NotBlank(message = "目录类别不能为空")
private String categoryCode;
/** 编码 */
private String busNo;
/** 项目名称 */
@NotBlank(message = "项目名称不能为空")
private String name;
/** 项目名称拼音 */
private String pyStr;
/** 五笔拼音 */
private String wbStr;
/** 类型 */
private Integer typeEnum;
/** 使用单位 */
private String permittedUnitCode;
/** 医保标记 */
private Integer ybFlag;
/** 医保编码 */
private String ybNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
/** 身体部位 */
private String bodySiteCode;
/** 所需标本 */
private String specimenCode;
/** 说明 */
private String descriptionText;
/** 规则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;
/** 财务类别 */
@Dict(dictCode = "fin_type_code")
private String itemTypeCode;
private String itemTypeCode_dictText;
/** 医保类别 */
@Dict(dictCode = "med_chrgitm_type")
private String ybType;
private String ybType_dictText;
/** 购入价 */
private BigDecimal purchasePrice;
/** 零售价 */
private BigDecimal retailPrice;
/** 最高零售价 */
private BigDecimal maximumRetailPrice;
/** 医保等级 */
private Integer chrgitmLv;
/** 子项json */
private String childrenJson;
/** 划价标记 */
private Integer pricingFlag;
}

View File

@@ -0,0 +1,64 @@
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.ConditionDefinitionSource;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 疾病目录分页Dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiseaseManageDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 所属分类 */
private Integer sourceEnum;
private String sourceEnum_enumText;
/** 编码 */
private String conditionCode;
/** 诊断名称 */
private String name;
/** 诊断名称拼音 */
private String pyStr;
/** 诊断名称五笔拼音 */
private String wbStr;
/** 类型 */
@Dict(dictCode = "condition_type_code")
private String typeCode;
private String typeCode_dictText;
/** 描述 */
private String description;
/** 医保标记 */
private Integer ybFlag;
private String ybFlag_enumText;
/** 医保编码 */
private String ybNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
private String ybMatchFlag_enumText;
/** 状态 */
private Integer statusEnum;
private String statusEnum_enumText;
}

View File

@@ -0,0 +1,49 @@
package com.openhis.web.datadictionary.dto;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 疾病目录初始dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiseaseManageInitDto {
private List<statusEnumOption> statusFlagOptions;
private List<diseaseCategory> diseaseCategoryList;
/**
* 状态
*/
@Data
public static class statusEnumOption {
private Integer value;
private String info;
public statusEnumOption(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 疾病分类
*/
@Data
public static class diseaseCategory {
private Integer value;
private String info;
List<diseaseCategory> children = new ArrayList<>();
public diseaseCategory(Integer value, String info) {
this.value = value;
this.info = info;
}
}
}

View File

@@ -0,0 +1,22 @@
package com.openhis.web.datadictionary.dto;
import com.openhis.common.enums.ConditionDefinitionSource;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 疾病目录分页检索条件
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiseaseManageSelParam {
/** 所属分类 */
private Integer sourceEnum;
/** 状态 */
private Integer statusEnum;
}

View File

@@ -0,0 +1,56 @@
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.enums.ConditionDefinitionSource;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
/**
* 疾病目录更新Dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class DiseaseManageUpDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 所属分类 */
private Integer sourceEnum;
/** 编码 */
private String conditionCode;
/** 诊断名称 */
@NotBlank(message = "疾病名称不能为空")
private String name;
/** 诊断名称拼音 */
private String pyStr;
/** 诊断名称五笔拼音 */
private String wbStr;
/** 类型 */
private String typeCode;
/** 描述 */
private String description;
/** 医保标记 */
private Integer ybFlag;
/** 医保编码 */
private String ybNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
}

View File

@@ -0,0 +1,25 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 项目定价查询dto
*
* @author zxy
* @date 2025-02-21
*/
@Data
@Accessors(chain = true)
public class ItemDefSearchParam {
/** 定价类型 */
private String definitionType;
/** 定价项目 */
private Integer chargeItem;
/** 模糊搜索条件 */
private String searchKey;
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 收费项目详情 dto
*
* @author zxy
* @date 2025-02-21
*/
@Data
@Accessors(chain = true)
public class ItemDefinitionDetailDto {
/** 条件 */
private Integer conditionCode;
private String conditionCode_enumText;
/** 价格 */
private BigDecimal amount;
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 收费项目 dto
*
* @author zxy
* @date 2025-02-21
*/
@Data
@Accessors(chain = true)
public class ItemDefinitionDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 名称 */
private String chargeName;
/** 状态 */
private Integer statusEnum;
private String statusEnum_enumText;
/** 所属科室 */
@Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
private String orgId_dictText;
/** 财务类别 */
@Dict(dictCode = "fin_type_code")
private String typeCode;
private String typeCode_dictText;
/** 医保类别 */
@Dict(dictCode = "yb_type")
private String ybType;
private String ybType_dictText;
/** 代码 */
private String instanceTable;
/** 基础价格 */
private BigDecimal price;
/**
* 费用明细个数
*/
private Integer detailCount;
}

View File

@@ -0,0 +1,46 @@
package com.openhis.web.datadictionary.dto;
import java.util.List;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 项目定价 init基础数据
*/
@Data
@Accessors(chain = true)
public class ItemDefinitionInitDto {
private List<PublicationStatusOption> publicationStatusOptions;
private List<ChargeItemContextOption> chargeItemContextOptions;
/**
* 状态
*/
@Data
public static class PublicationStatusOption {
private Integer value;
private String label;
public PublicationStatusOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}
/**
* 收费项目类型
*/
@Data
public static class ChargeItemContextOption {
private Integer value;
private String label;
public ChargeItemContextOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}
}

View File

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

View File

@@ -0,0 +1,195 @@
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import com.core.common.annotation.Excel;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 药品目录导入Dto
*
* @author GuoRui
* @date 2025-08-18
*/
@Data
@Accessors(chain = true)
public class MedicationImportDto {
// ---------------------- 药品定义 med_medication_definition -------------------------------------
/** 药品名称 */
@Excel(name = "药品名称")
private String name;
/** 药品版本 */
@Excel(name = "药品版本")
private String version;
/** 英文药名 */
@Excel(name = "英文药名")
private String nameEn;
/** 药品分类 */
@Excel(name = "药品分类", dictType = "med_category_code", comboReadDict = true)
private String categoryCode;
/** 商品名称 */
@Excel(name = "商品名称")
private String merchandiseName;
/** 药品单位 */
@Excel(name = "药品单位", dictType = "unit_code", comboReadDict = true)
private String unitCode;
/** 最小单位 */
@Excel(name = "最小单位", dictType = "unit_code", comboReadDict = true)
private String minUnitCode;
/** 拆零比 */
@Excel(name = "拆零比")
private BigDecimal partPercent;
/** 剂量形式 */
@Excel(name = "剂量形式", dictType = "dose_from_code", comboReadDict = true)
private String doseFrom;
/** 批准文号 */
@Excel(name = "批准文号")
private String approvalNumber;
/** 医保是否对码 */
@Excel(name = "医保是否对码", readConverterExp = "0=否,1=是", combo = "否,是")
private String ybMatchFlag;
/** 医保编码 */
@Excel(name = "医保编码")
private String ybNo;
/** 是否皮试 */
@Excel(name = "是否皮试", readConverterExp = "0=否,1=是", combo = "否,是")
private String skinTestFlag;
/** 是否为注射药物 */
@Excel(name = "是否为注射药物", readConverterExp = "0=否,1=是", combo = "否,是")
private String injectFlag;
/** 生产厂商文本 */
@Excel(name = "生产厂商文本")
private String manufacturerText;
/** 是否限制使用 */
@Excel(name = "是否限制使用", readConverterExp = "0=否,1=是", combo = "否,是")
private String restrictedFlag;
/** 限制使用范围 */
@Excel(name = "限制使用范围")
private String restrictedScope;
/** 儿童用药标志 */
@Excel(name = "儿童用药标志", readConverterExp = "0=否,1=是", combo = "否,是")
private String childrenFlag;
/** 贯标国家编码 */
@Excel(name = "贯标国家编码")
private String nationalDrugCode;
/** 拆分属性 */
@Excel(name = "拆分属性", readConverterExp = "1=门诊按最小单位每次量向上取整,2=门诊按包装单位不可拆分,3=门诊按最小单位总量向上取整,4=门诊按包装单位每次量向上取整",
combo = "门诊按最小单位每次量向上取整,门诊按包装单位不可拆分,门诊按最小单位总量向上取整,门诊按包装单位每次量向上取整")
private String partAttributeEnum;
/** 是否抗生素 */
@Excel(name = "是否抗生素", readConverterExp = "0=否,1=是", combo = "否,是")
private String antibioticFlag;
/** 抗生素分类 */
@Excel(name = "抗生素分类", dictType = "antibiotic_type_code", comboReadDict = true)
private String antibioticCode;
/** 权限限制 */
@Excel(name = "权限限制", readConverterExp = "1=非限制使用,2=限制使用,3=特殊使用", combo = "非限制使用,限制使用,特殊使用")
private String restrictedEnum;
/** 是否自制 */
@Excel(name = "是否自制", readConverterExp = "0=否,1=是", combo = "否,是")
private String selfFlag;
/** 基药标识 */
@Excel(name = "基药标识", readConverterExp = "0=否,1=是", combo = "否,是")
private String basicFlag;
/** 住院临时医嘱拆分属性 */
@Excel(name = "住院临时医嘱拆分属性",
readConverterExp = "1=临时医嘱按最小单位每次量向上取整,2=临时医嘱按包装单位开立,3=临时医嘱按最小单位总量向上取整,4=临时医嘱按包装单位每次量向上取整",
combo = "临时医嘱按最小单位每次量向上取整,临时医嘱按包装单位开立,临时医嘱按最小单位总量向上取整,临时医嘱按包装单位每次量向上取整")
private String thoPartAttributeEnum;
/** 剂量单位换算比 */
@Excel(name = "剂量单位换算比")
private BigDecimal unitConversionRatio;
/** 医保等级 */
@Excel(name = "医保等级", dictType = "chrgitm_lv", comboReadDict = true)
private String chrgitmLv;
/** 处方标志 */
@Excel(name = "处方标志", readConverterExp = "0=否,1=是", combo = "否,是")
private String rxFlag;
// ---------------------- 药品基本信息 med_medication ----------------------------------------------
/** 所在位置名称locationId */
@Excel(name = "所在位置名称")
private String locationName;
/** 规格 */
@Excel(name = "规格")
private String totalVolume;
/** 用法 */
@Excel(name = "用法", dictType = "method_code", comboReadDict = true)
private String methodCode;
/** 用药频次 */
@Excel(name = "用药频次", dictType = "rate_code", comboReadDict = true)
private String rateCode;
/** 单次剂量 */
@Excel(name = "单次剂量")
private BigDecimal dose;
/** 剂量单位 */
@Excel(name = "剂量单位", dictType = "unit_code", comboReadDict = true)
private String doseUnitCode;
/** 单次最大剂量 */
@Excel(name = "单次最大剂量")
private BigDecimal maxUnit;
// ---------------------- 费用定价 adm_charge_item_definition ----------------------------------------------
/** 财务类别 */
@Excel(name = "财务类别", dictType = "fin_type_code", comboReadDict = true)
private String typeCode;
/** 医保费用类别 */
@Excel(name = "医保费用类别", dictType = "med_chrgitm_type", comboReadDict = true)
private String ybType;
// ---------------------- 费用定价子表 adm_charge_item_def_detail ----------------------------------------------
/** 购入价 */
@Excel(name = "购入价")
private BigDecimal purchasePrice;
/** 零售价 */
@Excel(name = "零售价")
private BigDecimal retailPrice;
/** 最高零售价 */
@Excel(name = "最高零售价")
private BigDecimal maximumRetailPrice;
}

View File

@@ -0,0 +1,292 @@
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* 药品目录Dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class MedicationManageDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 药品编码 */
@JsonSerialize(using = ToStringSerializer.class)
private Long medicationDefId;
/** 药品状态 */
private Integer statusEnum;
private String statusEnum_enumText;
/** 所属科室 */
@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;
/** 剂型 */
@Dict(dictCode = "dose_form_code")
private String doseFormCode;
private String doseFormCode_dictText;
/** 规格 */
private String totalVolume;
/** 成分 */
private String ingredientItem;
/** 是否为活性 */
private Integer activeFlag;
private String activeFlag_enumText;
/** 批次号 */
private String lotNumber;
/** 生效日期 */
private Date effectiveDate;
/** 到期日期 */
private Date expirationDate;
/** 用法 */
@Dict(dictCode = "method_code")
private String methodCode;
private String methodCode_dictText;
/** 用药频次 */
@Dict(dictCode = "rate_code")
private String rateCode;
private String rateCode_dictText;
/** 单次剂量 */
private BigDecimal dose;
/** 剂量单位 */
@Dict(dictCode = "unit_code")
private String doseUnitCode;
private String doseUnitCode_dictText;
/** 单次最大剂量 */
private BigDecimal maxUnit;
/** 药品定义 */
private String definition;
/** 用量限定 */
private BigDecimal usageLimit;
/** DDD值 */
@Dict(dictCode = "ddd_code")
private String dddCode;
private String dddCode_dictText;
/** DDD单位 */
@Dict(dictCode = "unit_code")
private String dddUnitCode;
private String dddUnitCode_dictText;
/** 药品编号 */
private String busNo;
/** 药品名称 */
private String name;
/** 适用范围 */
private Integer domainEnum;
private String domainEnum_enumText;
/** 药品版本 */
private String version;
/** 英文药名 */
private String nameEn;
/** 药品名称拼音码 */
private String pyStr;
/** 药品五笔码 */
private String wbStr;
/** 药品分类 */
@Dict(dictCode = "med_category_code")
private String categoryCode;
private String categoryCode_dictText;
/** 商品名称 */
private String merchandiseName;
/** 商品名称拼音码 */
private String merchandisePyStr;
/** 商品五笔码 */
private String merchandiseWbStr;
/** 药品单位 */
@Dict(dictCode = "unit_code")
private String unitCode;
private String unitCode_dictText;
/** 最小单位 */
@Dict(dictCode = "unit_code")
private String minUnitCode;
private String minUnitCode_dictText;
/** 所含耗材 */
private String comprisedText;
/** 拆零比 */
private BigDecimal partPercent;
/** 剂量形式 */
@Dict(dictCode = "dose_form_code")
private Integer doseFrom;
private String doseFrom_dictText;
/** 批准文号 */
private String approvalNumber;
/** 医保是否对码 */
private Integer ybMatchFlag;
private String ybMatchFlag_enumText;;
/** 医保编码 */
private String ybNo;
/** 药理作用分类 */
private String pharmacologyCategoryCode;
/** 是否皮试 */
private Integer skinTestFlag;
private String skinTestFlag_enumText;
/** 是否为注射药物 */
private Integer injectFlag;
private String injectFlag_enumText;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId;
/** 供应商 */
@Dict(dictTable = "adm_supplier", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class)
private Long supplyId;
private String supplyId_dictText;
/** 是否限制使用 */
private Integer restrictedFlag;
private String restrictedFlag_enumText;
/** 限制使用范围 */
private String restrictedScope;
/** 儿童用药标志 */
private Integer childrenFlag;
private String childrenFlag_enumText;
/** 产品特性 */
private Integer characteristic;
private String characteristic_enumText;
/** 贯标国家编码 */
private String nationalDrugCode;
/** 拆分属性 */
private Integer partAttributeEnum;
private String partAttributeEnum_enumText;
/** 抗生素分类 */
@Dict(dictCode = "antibiotic_type_code")
private String antibioticCode;
private String antibioticCode_dictText;
/** 权限限制 */
private Integer restrictedEnum;
private String restrictedEnum_enumText;
/** 是否自制 */
private Integer selfFlag;
private String selfFlag_enumText;
/** 是否抗生素 */
private Integer antibioticFlag;
private String antibioticFlag_enumText;
/** 基药标识 */
private Integer basicFlag;
private String basicFlag_enumText;
/** 生产厂商文本 */
private String manufacturerText;
/** 最小库存警戒数量(常规单位) */
private BigDecimal itemMinQuantity;
/** 最大库存警戒数量(常规单位) */
private BigDecimal itemMaxQuantity;
/** 售价 */
private BigDecimal price;
/** 单次最小用药频次 */
private String minRateCode;
/** 单次最大用药频次 */
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;
/** 剂量单位换算比 */
private BigDecimal unitConversionRatio;
/** 医保等级 */
private Integer chrgitmLv;
/** 处方标志 */
private Integer rxFlag;
}

View File

@@ -0,0 +1,98 @@
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;
/**
* 药品目录初始dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class MedicationManageInitDto {
private List<statusEnumOption> statusFlagOptions;
private List<domainEnumOption> domainFlagOptions;
// 供应商
private List<MedicationManageInitDto.supplierListOption> supplierListOptions;
// 药品类型
private List<MedicationManageInitDto.dictCategoryCode> medicationCategoryCodeOptions;
// 单位编码
private List<MedicationManageInitDto.dictCategoryCode> unitCodeOptions;
// 是/否 状态
private List<statusEnumOption> statusWeatherOptions;
// 权限限制
private List<statusEnumOption> statusRestrictedOptions;
// 拆分属性
private List<statusEnumOption> partAttributeEnumOptions;
//住院临时医嘱拆分属性
private List<statusEnumOption> tempOrderSplitPropertyEnumOptions;
//医保等级list
private List<statusEnumOption> chrgitmLvOptions;
/**
* 状态
*/
@Data
public static class statusEnumOption {
private Integer value;
private String info;
public statusEnumOption(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 适用范围
*/
@Data
public static class domainEnumOption {
private Integer value;
private String info;
public domainEnumOption(Integer value, String info) {
this.value = value;
this.info = info;
}
}
/**
* 供应商
*/
@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;
}
}
/**
* 药品类型
*/
@Data
public static class dictCategoryCode {
private String value;
private String info;
private List<dictCategoryCode> children = new ArrayList<>();
public dictCategoryCode(String value, String info) {
this.value = value;
this.info = info;
}
}
}

View File

@@ -0,0 +1,261 @@
package com.openhis.web.datadictionary.dto;
import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 药品目录Dto
*
* @author lpt
* @date 2025-02-25
*/
@Data
@Accessors(chain = true)
public class MedicationManageUpDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 药品编码 */
@JsonSerialize(using = ToStringSerializer.class)
private Long medicationDefId;
/** 所属科室 */
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
/** 所在位置 */
@JsonSerialize(using = ToStringSerializer.class)
private Long locationId;
/** 剂型 */
private String doseFormCode;
/** 规格 */
private String totalVolume;
/** 成分 */
private String ingredientItem;
/** 是否为活性 */
private Integer activeFlag;
/** 批次号 */
private String lotNumber;
/** 生效日期 */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date effectiveDate;
/** 到期日期 */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date expirationDate;
/** 用法 */
private String methodCode;
/** 用药频次 */
private String rateCode;
/** 单次剂量 */
private BigDecimal dose;
/** 剂量单位 */
@Dict(dictCode = "unit_code")
@NotBlank(message = "剂量单位不能为空")
private String doseUnitCode;
private String doseUnitCode_dictText;
/** 单次最大剂量 */
private BigDecimal maxUnit;
/** 药品定义 */
private String definition;
/** 药品编号 */
private String busNo;
/** 药品名称 */
@NotBlank(message = "药品名称不能为空")
private String name;
/** 适用范围 */
private Integer domainEnum;
/** 药品版本 */
private String version;
/** 英文药名 */
private String nameEn;
/** 药品名称拼音码 */
private String pyStr;
/** 药品五笔码 */
private String wbStr;
/** 药品分类 */
private String categoryCode;
/** 商品名称 */
private String merchandiseName;
/** 商品名称拼音码 */
private String merchandisePyStr;
/** 商品五笔码 */
private String merchandiseWbStr;
/** 药品单位 */
@Dict(dictCode = "unit_code")
private String unitCode;
private String unitCode_dictText;
/** 最小单位 */
private String minUnitCode;
/** 所含耗材 */
private String comprisedText;
/** 成分 */
private String ingredient;
/** 拆零比 */
private BigDecimal partPercent;
/** 剂量形式 */
@Dict(dictCode = "dose_form_code")
private Integer doseFrom;
private String doseFrom_dictText;
/** 批准文号 */
private String approvalNumber;
/** 医保是否对码 */
private Integer ybMatchFlag;
/** 医保编码 */
private String ybNo;
/** 药理作用分类 */
private String pharmacologyCategoryCode;
/** 是否皮试 */
private Integer skinTestFlag;
/** 是否为注射药物 */
private Integer injectFlag;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId;
/** 生产厂商文本 */
private String manufacturerText;
/** 供应商 */
@JsonSerialize(using = ToStringSerializer.class)
private Long supplyId;
/** 是否限制使用 */
private Integer restrictedFlag;
/** 限制使用范围 */
private String restrictedScope;
/** 儿童用药标志 */
private Integer childrenFlag;
/** 产品特性 */
private Integer characteristic;
/** 购入价 */
private BigDecimal purchasePrice;
/** 零售价 */
private BigDecimal retailPrice;
/** 最高零售价 */
private BigDecimal maximumRetailPrice;
/** 医保类别 */
private String ybType;
/** 财务类别 */
@Dict(dictCode = "fin_type_code")
private String typeCode;
private String typeCode_dictText;
/** 单次最小用药频次 */
private String minRateCode;
/** 单次最大用药频次 */
private String maxRateCode;
/** 药品状态 */
private Integer statusEnum;
private String statusEnum_enumText;
/** 拆分属性 */
private Integer partAttributeEnum;
/** 贯标国家编码 */
private String nationalDrugCode;
/** 是否抗生素 */
private Integer antibioticFlag;
/** 是否自制 */
private Integer selfFlag;
/** DDD值 */
private String dddCode;
/** DDD单位 */
private String dddUnitCode;
/** 用量限定 */
private BigDecimal usageLimit;
/** 抗生素分类 */
@Dict(dictCode = "antibiotic_type_code")
private String antibioticCode;
private String antibioticCode_dictText;
/** 权限限制 */
private Integer restrictedEnum;
/** 基药标识 */
private Integer basicFlag;
/** 住院临时医嘱拆分属性 */
private Integer thoPartAttributeEnum;
/** 最小库存警戒数量(常规单位) */
private BigDecimal itemMinQuantity;
/** 最大库存警戒数量(常规单位) */
private BigDecimal itemMaxQuantity;
/** 剂量单位换算比 */
private BigDecimal unitConversionRatio;
/** 医保等级 */
private Integer chrgitmLv;
/** 处方标志 */
private Integer rxFlag;
}

View File

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

View File

@@ -0,0 +1,65 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* 供应商保存dto
*
* @author dh
* @date 2025-02-24
*/
@Data
@Accessors(chain = true)
public class SupplierDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 编号 */
private String busNo;
/** 名称 */
private String name;
/** 类型 */
private Integer typeEnum;
private String typeEnum_enumText;
/** 地址 */
private String address;
/** 拼音码 */
private String pyStr;
/** 五笔码 */
private String wbStr;
/** 联系人电话 */
private String phone;
/** 联系人邮箱 */
private String email;
/** 活动标识 */
private Integer activeFlag;
private String activeFlag_enumText;
/** 机构编号 */
@JsonSerialize(using = ToStringSerializer.class)
@Dict(dictTable = "adm_organization",dictCode = "id",dictText = "name")
private Long orgId;
private String orgId_dictText;
}

View File

@@ -0,0 +1,33 @@
package com.openhis.web.datadictionary.dto;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 厂商/产地初始dto
*
* @author dh
* @date 2025-02-28
*/
@Data
@Accessors(chain = true)
public class SupplierInitDto {
private List<supplierTypeOption> supplierTypeOptions;
/**
* 状态
*/
@Data
public static class supplierTypeOption {
private Integer value;
private String info;
public supplierTypeOption(Integer value, String info) {
this.value = value;
this.info = info;
}
}
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 厂商/产地分页查询条件
*
* @author dh
* @date 2025-02-18
*/
@Data
@Accessors(chain = true)
public class SupplierSearchParam implements Serializable {
/**
* 编号
*/
@Schema(description = "编号")
private String busNo;
/**
* 名称*
*/
@Schema(description = "供应商类型")
private Integer typeEnum;
}

View File

@@ -0,0 +1,61 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.datadictionary.dto;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 供应商保存dto
*
* @author dh
* @date 2025-02-24
*/
@Data
@Accessors(chain = true)
public class SupplierUpDto {
/** ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 编号 */
private String busNo;
/** 名称 */
@NotBlank(message = "名称不能为空")
private String name;
/** 类型 */
@NotNull(message = "类型不能为空")
private Integer typeEnum;
/** 地址 */
private String address;
/** 拼音码 */
private String pyStr;
/** 五笔码 */
private String wbStr;
/** 联系人电话 */
private String phone;
/** 联系人邮箱 */
private String email;
/** 活动标识 */
private Integer activeFlag;
/** 机构编号 */
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
}

View File

@@ -0,0 +1,42 @@
package com.openhis.web.datadictionary.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
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.datadictionary.dto.DiagnosisTreatmentDto;
import java.util.List;
/**
* 诊疗定义管理
*
* @author liuhr
* @date 2025/3/28
*/
@Repository
public interface ActivityDefinitionManageMapper {
/**
* 诊疗目录分页查询
*
* @param page 分页参数
* @param queryWrapper 查询条件
* @return 器材记录
*/
IPage<DiagnosisTreatmentDto> getDiseaseTreatmentPage(@Param("page") Page<DiagnosisTreatmentDto> page,
@Param(Constants.WRAPPER) QueryWrapper<DiagnosisTreatmentDto> queryWrapper);
/**
* 诊疗详情
*
* @param id 诊疗ID
* @param tenantId 租户
* @return
*/
DiagnosisTreatmentDto getDiseaseTreatmentOne(@Param("id") Long id, @Param("tenantId") Integer tenantId);
}

View File

@@ -0,0 +1,52 @@
package com.openhis.web.datadictionary.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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.administration.domain.ChargeItemDefinition;
import com.openhis.web.datadictionary.dto.ChargeItemDefPageDto;
/**
* 费用定价管理Mapper接口
*
* @author system
* @date 2025-02-20
*/
@Repository
public interface ChargeItemDefSearchMapper extends BaseMapper<ChargeItemDefinition> {
/**
* 药品费用定价分页查询
*
* @param page 分页条件
* @param queryWrapper 查询条件
* @return 分页查询
*/
IPage<ChargeItemDefPageDto> getMedList(@Param("page") Page<ChargeItemDefPageDto> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper);
/**
* 器具费用定价分页查询
*
* @param page 分页条件
* @param queryWrapper 查询条件
* @return 分页查询
*/
IPage<ChargeItemDefPageDto> getDevList(@Param("page") Page<ChargeItemDefPageDto> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper);
/**
* 活动费用定价分页查询
*
* @param page 分页条件
* @param queryWrapper 查询条件
* @return 分页查询
*/
IPage<ChargeItemDefPageDto> getActList(@Param("page") Page<ChargeItemDefPageDto> page,
@Param(Constants.WRAPPER) LambdaQueryWrapper<ChargeItemDefPageDto> queryWrapper);
}

View File

@@ -0,0 +1,42 @@
package com.openhis.web.datadictionary.mapper;
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.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;
/**
* 器材目录
*
* @author Wuser
* @date 2025/3/26
*/
@Repository
public interface DeviceManageMapper {
/**
* 器材目录分页查询
*
* @param page 分页参数
* @param queryWrapper 查询条件
* @return 器材记录
*/
IPage<DeviceManageDto> getDevicePage(
@Param("page") Page<DeviceManageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<DeviceManageDto> queryWrapper);
/**
* 器材详情
*
* @param id 器材ID
* @param tenantId 租户
* @return
*/
DeviceManageDto getOne(@Param("id") Long id, @Param("tenantId") Integer tenantId);
}

View File

@@ -0,0 +1,49 @@
package com.openhis.web.datadictionary.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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.datadictionary.dto.ItemDefinitionDetailDto;
import com.openhis.web.datadictionary.dto.ItemDefinitionDto;
/**
* 项目定价 应用Mapper
*/
@Repository
public interface ItemDefinitionAppMapper {
/**
* 查询项目定价信息
*
* @param page 分页参数
* @param chargeItemContext 收费项目类型
* @param MED_MEDICATION_DEFINITION 药品定义
* @param ADM_DEVICE_DEFINITION 器材定义
* @param WOR_ACTIVITY_DEFINITION 活动定义
* @param ADM_HEALTHCARE_SERVICE 服务管理
* @param queryWrapper 查询条件
* @return 项目定价信息
*/
IPage<ItemDefinitionDto> getChargeItemInfo(@Param("page") Page<ItemDefinitionDto> page,
@Param("chargeItemContext") Integer chargeItemContext,
@Param("MED_MEDICATION_DEFINITION") String MED_MEDICATION_DEFINITION,
@Param("ADM_DEVICE_DEFINITION") String ADM_DEVICE_DEFINITION,
@Param("WOR_ACTIVITY_DEFINITION") String WOR_ACTIVITY_DEFINITION,
@Param("ADM_HEALTHCARE_SERVICE") String ADM_HEALTHCARE_SERVICE,
@Param(Constants.WRAPPER) QueryWrapper<ItemDefinitionDto> queryWrapper);
/**
* 项目定价详细
*
* @param id id
* @return 项目定价详细
*/
List<ItemDefinitionDetailDto> getChargeItemInfoDetail(@Param("id") Long id);
}

View File

@@ -0,0 +1,58 @@
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;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.web.datadictionary.dto.MedicationManageDto;
/**
* 药品目录管理Mapper接口
*
* @author lpt
* @date 2025-02-25
*/
@Repository
public interface MedicationManageSearchMapper extends BaseMapper<ChargeItemDefinition> {
/**
* 药品目录分页查询
*
* @param page 分页
* @param queryWrapper 查询条件
* @return
*/
IPage<MedicationManageDto> getPage(
@Param("page") Page<MedicationManageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<MedicationManageDto> queryWrapper);
/**
* 药品详情
*
* @param id 药品ID
* @param tenantId 租户
* @return
*/
MedicationManageDto getOne(@Param("id") Long id, @Param("tenantId") Integer tenantId);
/**
*
* @param searchKey
* @param ybMatchFlag
* @param statusEnum
* @param categoryCode
* @param tenantId
* @return
*/
List<MedicationManageDto> getList(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag,
@Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode,@Param("tenantId") Integer tenantId);
}