diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java new file mode 100644 index 00000000..41f69488 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java @@ -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); + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java new file mode 100644 index 00000000..c36fb9dc --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java @@ -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 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; + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java index af080b35..3448bb16 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java @@ -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 domainEnumOptions = Stream.of(ApplicableScope.values()) .map(domain -> new MedicationManageInitDto.domainEnumOption(domain.getValue(), domain.getInfo())) .collect(Collectors.toList()); + // 查询供应商列表 + List supplierList = supplierService.getList(); + // 供应商信息 + List supplierListOptions = supplierList.stream() + .map(supplier -> new MedicationManageInitDto.supplierListOption(supplier.getId(), supplier.getName())) + .collect(Collectors.toList()); + + // 获取药品分类 + List medicalList = + sysDictTypeService.selectDictDataByType(CommonConstants.DictName.MED_CATEGORY_CODE); + // 获取药品分类List + List 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 { diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java index 01578846..1b719c75 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiagnosisTreatmentController.java @@ -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 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】分页 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java index 79c4ed95..881a4132 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentDto.java @@ -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; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentInitDto.java index 6cc44888..77408654 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentInitDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiagnosisTreatmentInitDto.java @@ -18,6 +18,7 @@ public class DiagnosisTreatmentInitDto { private List statusFlagOptions; private List diseaseTreatmentCategoryList; private List exeOrganizations; + private List typeEnumOptions; /** * 状态 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java index 0e47901c..0d258adc 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java @@ -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; + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java index 053b9afd..f01bb2f6 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageInitDto.java @@ -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 statusFlagOptions; private List domainFlagOptions; + //供应商 + private List supplierListOptions; + //药品类型 + private List medicationCategoryCodeOptions; + //单位编码 + private List 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; + } + } + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java index f0c23309..8f90e405 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java @@ -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; + } diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java index e6209cbb..bc9f0656 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/constant/CommonConstants.java @@ -184,6 +184,17 @@ public class CommonConstants { String TCM_DIAGNOSIS = "中医诊断"; } + /** + * 字典字段名常量 + */ + public interface DictName { + /** + * 药品分类 + */ + String MED_CATEGORY_CODE = "med_category_code"; + + } + /** * sql条件常量 */ diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItemDefinition.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItemDefinition.java index fb63ec88..7bb64a9c 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItemDefinition.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItemDefinition.java @@ -36,7 +36,7 @@ public class ChargeItemDefinition extends HisBaseEntity { private String title; /** 状态 */ - private PublicationStatus statusEnum; + private Integer statusEnum; /** 机构ID */ private Long orgId;