目录更新

This commit is contained in:
liuhongrui
2025-03-25 15:32:31 +08:00
parent 539477a935
commit 8307b86d9e
11 changed files with 253 additions and 12 deletions

View File

@@ -0,0 +1,22 @@
package com.openhis.web.datadictionary.appservice;
import com.openhis.medication.domain.MedicationDetail;
import com.openhis.web.datadictionary.dto.MedicationManageUpDto;
/**
* 项目定价
*
* @author liuhr
* @date 2025/3/25
*/
public interface IItemDefinitionService {
/**
* 添加项目定价
*
* @param medicationManageUpDto 药品目录信息
* @param medicationDetail 药品信息
*/
boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail);
}

View File

@@ -0,0 +1,76 @@
package com.openhis.web.datadictionary.appservice.impl;
import com.openhis.administration.domain.ChargeItemDefDetail;
import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.workflow.domain.ServiceRequest;
import liquibase.pro.packaged.S;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.core.common.utils.DateUtils;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.service.IChargeItemDefDetailService;
import com.openhis.administration.service.IChargeItemService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.enums.Whether;
import com.openhis.medication.domain.MedicationDetail;
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
import com.openhis.web.datadictionary.dto.MedicationManageUpDto;
import java.util.ArrayList;
import java.util.List;
/**
* 项目定价 实现
*
* @author liuhr
* @date 2025/3/25
*/
@Service
public class ItemDefinitionServiceImpl implements IItemDefinitionService {
@Autowired
IChargeItemDefinitionService chargeItemDefinitionService;
@Autowired
IChargeItemDefDetailService chargeItemDefDetailService;
/**
* 添加项目定价
*
* @param medicationManageUpDto 药品目录信息
* @param medicationDetail 药品信息
*/
@Override
public boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail) {
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
chargeItemDefinition.setChargeName(medicationDetail.getName())
.setStatusEnum(PublicationStatus.ACTIVE.getValue())
.setInstanceTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setInstanceId(medicationDetail.getMedicationDefId()).setEffectiveStart(DateUtils.getNowDate())
// todo 机构ID后续修改
.setOrgId(1L)
// 财务类别
.setTypeCode(medicationManageUpDto.getMinimalFee())
// 医保类别
.setYbType(medicationManageUpDto.getYbType()).setConditionFlag(Whether.YES.getValue())
.setPrice(medicationManageUpDto.getRetailPrice());
boolean insertCIDSuccess = chargeItemDefinitionService.save(chargeItemDefinition);
if (insertCIDSuccess) {
List<ChargeItemDefDetail> shargeItemDefDetails = new ArrayList<>();
ChargeItemDefDetail chargeItemDefDetail1 = new ChargeItemDefDetail();
chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId())
// 单位+批次unit,pici 用,符号拼装
.setConditionCode(
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber());
// .setAmount(1)
shargeItemDefDetails.add(chargeItemDefDetail1);
}
// 添加子表信息
return false;
}
}

View File

@@ -11,6 +11,13 @@ import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.core.common.core.domain.entity.SysDictData;
import com.core.common.utils.ChineseConvertUtils;
import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.domain.Supplier;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.web.datadictionary.appservice.IItemDefinitionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@@ -25,7 +32,6 @@ import com.core.common.utils.SecurityUtils;
import com.core.common.utils.bean.BeanUtils;
import com.core.common.utils.poi.ExcelUtil;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.AccountStatus;
import com.openhis.common.enums.ApplicableScope;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.utils.EnumUtils;
@@ -57,6 +63,14 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
@Autowired
private MedicationManageSearchMapper medicationManageSearchMapper;
@Autowired
private ISupplierService supplierService;
@Autowired
private ISysDictTypeService sysDictTypeService;
@Autowired
private IItemDefinitionService itemDefinitionServic;
/**
* 药品目录初始化
@@ -75,9 +89,25 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
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
List<MedicationManageInitDto.dictCategoryCode> medicationListOptions = medicalList.stream()
.map(status -> new MedicationManageInitDto.dictCategoryCode(status.getDictValue(), status.getDictLabel()))
.collect(Collectors.toList());
medicationManageInitDto.setStatusFlagOptions(statusEnumOptions);
medicationManageInitDto.setDomainFlagOptions(domainEnumOptions);
medicationManageInitDto.setSupplierListOptions(supplierListOptions);
medicationManageInitDto.setMedicationCategoryCodeOptions(medicationListOptions);
return R.ok(medicationManageInitDto);
}
@@ -117,9 +147,9 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
// 药品状态
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum()));
// 活动标记
// e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag()));
// e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag()));
// 适用范围
// e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum()));
// e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum()));
});
// 返回【药品录列表DTO】分页
@@ -138,6 +168,10 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
Medication medication = new Medication();
BeanUtils.copyProperties(medicationManageUpDto, medication); // 子表信息
BeanUtils.copyProperties(medicationManageUpDto, medicationDefinition);// 主表信息
// 拼音码
medicationDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDefinition.getName()));
// 五笔码
medicationDefinition.setWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDefinition.getName()));
// 更新子表药品信息
if (medicationService.updateById(medication)) {
@@ -223,10 +257,20 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
MedicationDetail medicationDetail = new MedicationDetail();
BeanUtils.copyProperties(medicationManageUpDto, medicationDetail);
// 拼音码
medicationDetail.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(medicationDetail.getName()));
// 五笔码
medicationDetail.setWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDetail.getName()));
// 新增主表外来药品目录
if (medicationDefinitionService.addMedication(medicationDetail)) {
// 新增子表外来药品目录
return medicationService.addMedication(medicationDetail)
boolean insertMedicationSuccess = medicationService.addMedication(medicationDetail);
// 添加药品成功后,添加相应的条件价格表信息
boolean insertItemDefinitionSuccess = itemDefinitionServic.addItem(medicationManageUpDto,medicationDetail);
return (insertMedicationSuccess || insertItemDefinitionSuccess)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
} else {

View File

@@ -10,6 +10,7 @@ import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import com.openhis.common.enums.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -24,10 +25,6 @@ import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.domain.Organization;
import com.openhis.administration.service.IOrganizationService;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.ActivityDefCategory;
import com.openhis.common.enums.OrganizationType;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.enums.Whether;
import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisPageUtils;
import com.openhis.common.utils.HisQueryUtils;
@@ -113,6 +110,13 @@ public class DiagnosisTreatmentController {
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);
return R.ok(diagnosisTreatmentInitDto);
}
@@ -145,6 +149,8 @@ public class DiagnosisTreatmentController {
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()));
});
// 返回【诊疗目录列表DTO】分页

View File

@@ -8,6 +8,8 @@ import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
/**
* 诊疗目录分页检索
*
@@ -37,7 +39,8 @@ public class DiagnosisTreatmentDto {
private String wbStr;
/** 类型 */
private String typeCode;
private Integer typeEnum;
private String typeEnum_enumText;
/** 使用单位 */
private String permittedUnitCode;
@@ -67,4 +70,12 @@ public class DiagnosisTreatmentDto {
/** 规则id */
private Integer ruleId;
/** 归属科室 */
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
/** 所在位置 */
@JsonSerialize(using = ToStringSerializer.class)
private Long locationId;
}

View File

@@ -18,6 +18,7 @@ public class DiagnosisTreatmentInitDto {
private List<statusEnumOption> statusFlagOptions;
private List<diseaseTreatmentCategory> diseaseTreatmentCategoryList;
private List<exeOrganization> exeOrganizations;
private List<statusEnumOption> typeEnumOptions;
/**
* 状态

View File

@@ -110,8 +110,9 @@ public class MedicationManageDto {
private String wbStr;
/** 药品分类 */
@Dict(dictCode = "medicine_category")
@Dict(dictCode = "med_category_code")
private Integer categoryCode;
private String categoryCode_dictText;
/** 商品名称 */
private String merchandiseName;
@@ -144,7 +145,9 @@ public class MedicationManageDto {
private String approvalNumber;
/** 医保是否对码 */
@Dict(dictCode = "sys_yes_no")
private Integer ybMatchFlag;
private String ybMatchFlag_dictText;
/** 医保编码 */
private String ybNo;
@@ -155,10 +158,12 @@ public class MedicationManageDto {
/** 是否皮试 */
@Dict(dictCode = "sys_yes_no")
private Integer skinTestFlag;
private String skinTestFlag_dictText;
/** 是否为注射药物 */
@Dict(dictCode = "sys_yes_no")
private Integer injectFlag;
private String injectFlag_dictText;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
@@ -171,6 +176,7 @@ public class MedicationManageDto {
/** 是否限制使用 */
@Dict(dictCode = "sys_yes_no")
private Integer restrictedFlag;
private String restrictedFlag_dictText;
/** 限制使用范围 */
private String restrictedScope;
@@ -178,6 +184,7 @@ public class MedicationManageDto {
/** 儿童用药标志 */
@Dict(dictCode = "sys_yes_no")
private Integer childrenFlag;
private String childrenFlag_dictText;
/** 产品特性 */
private Integer characteristic;
@@ -213,9 +220,10 @@ public class MedicationManageDto {
private String baseQuantity;
/** 最小单位 */
private String minUnitCode;
private Integer minUnitCode;
/** 当前库存数量(最小单位数量) */
private String minQuantity;
}

View File

@@ -1,7 +1,9 @@
package com.openhis.web.datadictionary.dto;
import java.util.ArrayList;
import java.util.List;
import com.openhis.web.inventorymanage.dto.PurchaseInventoryInitDto;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -16,6 +18,12 @@ import lombok.experimental.Accessors;
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;
/**
* 状态
@@ -44,4 +52,33 @@ public class MedicationManageInitDto {
this.info = info;
}
}
/**
* 供应商
*/
@Data
public static class supplierListOption {
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;
public dictCategoryCode(String value, String info) {
this.value = value;
this.info = info;
}
}
}

View File

@@ -9,6 +9,7 @@ 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;
@@ -31,8 +32,13 @@ public class MedicationManageUpDto {
private Long medicationDefId;
/** 所属科室 */
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
/** 所在位置 */
@JsonSerialize(using = ToStringSerializer.class)
private Long locationId;
/** 剂型 */
private String doseFormCode;
@@ -66,7 +72,9 @@ public class MedicationManageUpDto {
private BigDecimal dose;
/** 剂量单位 */
@Dict(dictCode = "unit_code")
private String doseUnitCode;
private String doseUnitCode_dictText;
/** 单次最大剂量 */
private BigDecimal maxUnit;
@@ -146,9 +154,11 @@ public class MedicationManageUpDto {
private Integer injectFlag;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
private Long manufacturerId;
/** 供应商 */
@JsonSerialize(using = ToStringSerializer.class)
private Long supplyId;
/** 是否限制使用 */
@@ -163,4 +173,19 @@ public class MedicationManageUpDto {
/** 产品特性 */
private Integer characteristic;
/** 购入价 */
private BigDecimal purchasePrice;
/** 零售价 */
private BigDecimal retailPrice;
/** 最高零售价 */
private BigDecimal maximumRetailPrice;
/** 医保类别 */
private String ybType;
/** 最小费用 */
private String minimalFee;
}

View File

@@ -184,6 +184,17 @@ public class CommonConstants {
String TCM_DIAGNOSIS = "中医诊断";
}
/**
* 字典字段名常量
*/
public interface DictName {
/**
* 药品分类
*/
String MED_CATEGORY_CODE = "med_category_code";
}
/**
* sql条件常量
*/

View File

@@ -36,7 +36,7 @@ public class ChargeItemDefinition extends HisBaseEntity {
private String title;
/** 状态 */
private PublicationStatus statusEnum;
private Integer statusEnum;
/** 机构ID */
private Long orgId;