From 5982969401500c7f09331bb8b661b4f9f2abd2de Mon Sep 17 00:00:00 2001 From: "Wang.Huan" Date: Fri, 7 Mar 2025 11:18:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E8=AF=8A=E6=8C=82=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...IOutpatientRegistrationAppServiceImpl.java | 38 +++++--- .../dto/AccountFormData.java | 62 +++++++++++++ .../dto/ChargeItemFormData.java | 87 +++++++++++++++++++ .../dto/OutpatientRegistrationAddParam.java | 3 +- .../common/enums/AccountBillingStatus.java | 2 +- .../common/enums/ChargeItemStatus.java | 2 +- .../openhis/common/enums/EncounterType.java | 2 +- .../administration/domain/ChargeItem.java | 2 +- .../administration/domain/Encounter.java | 5 ++ .../service/IAccountService.java | 7 ++ .../service/IChargeItemService.java | 7 ++ .../service/IEncounterLocationService.java | 4 +- .../service/IEncounterParticipantService.java | 4 +- .../service/IEncounterService.java | 2 +- .../service/impl/AccountServiceImpl.java | 11 +++ .../service/impl/ChargeItemServiceImpl.java | 10 +++ .../impl/EncounterLocationServiceImpl.java | 4 +- .../impl/EncounterParticipantServiceImpl.java | 4 +- .../service/impl/EncounterServiceImpl.java | 12 ++- 19 files changed, 242 insertions(+), 26 deletions(-) create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/AccountFormData.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/ChargeItemFormData.java diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java index da3ed4f3..4cbb6ef7 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java @@ -17,14 +17,9 @@ import com.core.common.core.domain.R; import com.core.common.utils.AgeCalculatorUtil; import com.core.common.utils.MessageUtils; import com.core.common.utils.bean.BeanUtils; -import com.openhis.administration.domain.Encounter; -import com.openhis.administration.domain.EncounterLocation; -import com.openhis.administration.domain.EncounterParticipant; -import com.openhis.administration.domain.Patient; +import com.openhis.administration.domain.*; import com.openhis.administration.mapper.PatientMapper; -import com.openhis.administration.service.IEncounterLocationService; -import com.openhis.administration.service.IEncounterParticipantService; -import com.openhis.administration.service.IEncounterService; +import com.openhis.administration.service.*; import com.openhis.clinical.domain.ConditionDefinition; import com.openhis.clinical.mapper.ConditionDefinitionMapper; import com.openhis.common.constant.CommonConstants; @@ -74,6 +69,12 @@ public class IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistr @Resource IEncounterParticipantService iEncounterParticipantService; + @Resource + IAccountService iAccountService; + + @Resource + IChargeItemService iChargeItemService; + /** * 门诊挂号 - 查询患者信息 * @@ -217,6 +218,10 @@ public class IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistr // 就诊参数者管理-表单数据 EncounterParticipantFormData encounterParticipantFormData = outpatientRegistrationAddParam.getEncounterParticipantFormData(); + // 就诊账户管理-表单数据 + AccountFormData accountFormData = outpatientRegistrationAddParam.getAccountFormData(); + // 费用项管理-表单数据 + ChargeItemFormData chargeItemFormData = outpatientRegistrationAddParam.getChargeItemFormData(); // 患者ID Long patientId = encounterFormData.getPatientId(); @@ -227,22 +232,33 @@ public class IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistr if (num > 0) { return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); } - // 保存就诊信息 Encounter encounter = new Encounter(); BeanUtils.copyProperties(encounterFormData, encounter); // 就诊ID - Long encounterId = iEncounterService.saveEncounter(encounter); + Long encounterId = iEncounterService.saveEncounterByRegister(encounter); // 保存就诊位置信息 encounterLocationFormData.setEncounterId(encounterId); EncounterLocation encounterLocation = new EncounterLocation(); BeanUtils.copyProperties(encounterLocationFormData, encounterLocation); - iEncounterLocationService.saveEncounterLocation(encounterLocation); + iEncounterLocationService.saveEncounterLocationByRegister(encounterLocation); // 保存就诊参数者信息 encounterParticipantFormData.setEncounterId(encounterId); EncounterParticipant encounterParticipant = new EncounterParticipant(); BeanUtils.copyProperties(encounterParticipantFormData, encounterParticipant); - iEncounterParticipantService.saveEncounterParticipant(encounterParticipant); + iEncounterParticipantService.saveEncounterParticipantByRegister(encounterParticipant); + // 保存就诊账户信息 + accountFormData.setEncounterId(encounterId); + Account account = new Account(); + BeanUtils.copyProperties(accountFormData, account); + // 账户ID + Long accountId = iAccountService.saveAccountByRegister(account); + // 保存就诊费用项 + chargeItemFormData.setEncounterId(encounterId); + chargeItemFormData.setAccountId(accountId); + ChargeItem chargeItem = new ChargeItem(); + BeanUtils.copyProperties(chargeItemFormData, chargeItem); + iChargeItemService.saveChargeItemByRegister(chargeItem); return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"挂号"})); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/AccountFormData.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/AccountFormData.java new file mode 100644 index 00000000..77b0ca88 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/AccountFormData.java @@ -0,0 +1,62 @@ +package com.openhis.web.outpatientservice.dto; + +import java.math.BigDecimal; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.enums.AccountBillingStatus; +import com.openhis.common.enums.AccountStatus; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 就诊账号 表单数据 + */ +@Data +@Accessors(chain = true) +public class AccountFormData { + + /** + * 就诊ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long encounterId; + + /** 患者id */ + @JsonSerialize(using = ToStringSerializer.class) + private Long patientId; + + /** 状态枚举 */ + private Integer statusEnum; + + /** 结账状态枚举 */ + private Integer billingStatusEnum; + + /** 账户类型编码 */ + private String typeCode; // 1:个人现金账户, 2:医保账户 + + /** 名称 */ + private String name; // 刷医保卡时应该会带出该信息 + + /** 账户余额 */ + private BigDecimal balanceAmount; // 刷医保卡时应该会带出该信息 + + /** 医保区域编码 */ + private String ybAreaNo; // 刷医保卡时应该会带出该信息 + + /** 合同编码 */ + private String contractNo; // 从选择的费用性质里选择合同编码 + + /** 欠费限制额度 */ + private BigDecimal limitAccount; // 刷医保卡时应该会带出该信息 + + /** + * 设置默认值 + */ + public AccountFormData() { + this.statusEnum = AccountStatus.ACTIVE.getValue(); + this.billingStatusEnum = AccountBillingStatus.OPEN.getValue(); + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/ChargeItemFormData.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/ChargeItemFormData.java new file mode 100644 index 00000000..d1e023f6 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/ChargeItemFormData.java @@ -0,0 +1,87 @@ +package com.openhis.web.outpatientservice.dto; + +import java.math.BigDecimal; +import java.util.Date; + +import com.core.common.utils.SecurityUtils; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.constant.CommonConstants; +import com.openhis.common.enums.ChargeItemStatus; +import com.openhis.common.enums.EncounterClass; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 费用项管理 表单数据 + */ +@Data +@Accessors(chain = true) +public class ChargeItemFormData { + + /** + * 就诊ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long encounterId; + + /** 患者id */ + @JsonSerialize(using = ToStringSerializer.class) + private Long patientId; + + /** 层级 */ + private String busNo; + + /** 状态 */ + private Integer statusEnum; + + /** 类别 */ + private Integer contextEnum; + + /** 发生时间 */ + private Date occurrenceTime; + + /** 执行人Id */ + @JsonSerialize(using = ToStringSerializer.class) + private Long performerId; + + /** 费用定价ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long definitionId; + + /** 开立人ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long entererId; + + /** 开立时间 */ + private Date enteredDate; + + /** 医疗服务类型 */ + private String serviceTable; + + /** 医疗服务ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long serviceId; + + /** 总价 */ + private BigDecimal totalPrice; + + /** 关联账户ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long accountId; + + /** + * 设置默认值 + */ + public ChargeItemFormData() { + this.statusEnum = ChargeItemStatus.BILLED.getValue(); + this.contextEnum = EncounterClass.AMB.getValue(); + this.occurrenceTime = new Date(); + this.performerId = SecurityUtils.getLoginUser().getUserId(); + this.entererId = SecurityUtils.getLoginUser().getUserId(); + this.enteredDate = new Date(); + this.serviceTable = CommonConstants.TableName.ADM_HEALTHCARE_SERVICE; + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java index 9dff159e..49887267 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java @@ -33,9 +33,10 @@ public class OutpatientRegistrationAddParam { /** * 就诊账户管理-表单数据 */ - + private AccountFormData accountFormData; /** * 费用项管理-表单数据 */ + private ChargeItemFormData chargeItemFormData; } diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AccountBillingStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AccountBillingStatus.java index 2ebadf6d..9a754228 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AccountBillingStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/AccountBillingStatus.java @@ -6,7 +6,7 @@ import lombok.Getter; @Getter @AllArgsConstructor -public enum AccountBillingStatus { +public enum AccountBillingStatus implements HisEnumInterface { OPEN (1, "open", "可用"), diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/ChargeItemStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/ChargeItemStatus.java index ec27b381..b64e3c58 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/ChargeItemStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/ChargeItemStatus.java @@ -6,7 +6,7 @@ import lombok.Getter; @Getter @AllArgsConstructor -public enum ChargeItemStatus { +public enum ChargeItemStatus implements HisEnumInterface { PLANNED (1, "planned", "待收费"), BILLABLE(2, "billable", "待结算"), diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterType.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterType.java index 5219e2b2..ecce525d 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterType.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterType.java @@ -6,7 +6,7 @@ import lombok.Getter; @Getter @AllArgsConstructor -public enum EncounterType { +public enum EncounterType implements HisEnumInterface { INITIAL(1, "initial", "初诊"), FOLLOW_UP(2, "follow-up", "复诊"); diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItem.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItem.java index 09228322..42284e0e 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItem.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/ChargeItem.java @@ -30,7 +30,7 @@ public class ChargeItem extends HisBaseEntity { private Long id; /** 状态 */ - private ChargeItemStatus statusEnum; + private Integer statusEnum; /** 层级 */ private String busNo; diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java index 9e31e7ca..0c55a038 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java @@ -105,4 +105,9 @@ public class Encounter extends HisBaseEntity { */ private Integer displayOrder; + /** + * 初复诊 + */ + private Integer firstEnum; + } diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IAccountService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IAccountService.java index d0c6c6d5..0d3b711b 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IAccountService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IAccountService.java @@ -11,4 +11,11 @@ import com.openhis.administration.domain.Account; */ public interface IAccountService extends IService { + /** + * 门诊挂号时保存账号信息 + * + * @param account 账号信息 + */ + Long saveAccountByRegister(Account account); + } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemService.java index 0625b832..ba29da99 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemService.java @@ -25,4 +25,11 @@ public interface IChargeItemService extends IService { * @return 更新结果 */ boolean updateChargeItem(ChargeItem chargeItem); + + /** + * 门诊挂号时保存 费用项 + * + * @param chargeItem 费用项 + */ + void saveChargeItemByRegister(ChargeItem chargeItem); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterLocationService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterLocationService.java index eeceefa4..2537e65d 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterLocationService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterLocationService.java @@ -12,10 +12,10 @@ import com.openhis.administration.domain.EncounterLocation; public interface IEncounterLocationService extends IService { /** - * 保存就诊位置信息 + * 门诊挂号时保存就诊位置信息 * * @param encounterLocation 就诊位置信息 */ - void saveEncounterLocation(EncounterLocation encounterLocation); + void saveEncounterLocationByRegister(EncounterLocation encounterLocation); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterParticipantService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterParticipantService.java index c90d5397..b41d3130 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterParticipantService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterParticipantService.java @@ -12,10 +12,10 @@ import com.openhis.administration.domain.EncounterParticipant; public interface IEncounterParticipantService extends IService { /** - * 保存就诊参与者 + * 门诊挂号时保存就诊参与者 * * @param encounterParticipant 就诊参与者信息 */ - void saveEncounterParticipant(EncounterParticipant encounterParticipant); + void saveEncounterParticipantByRegister(EncounterParticipant encounterParticipant); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterService.java index 2a158c49..94623e66 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IEncounterService.java @@ -16,6 +16,6 @@ public interface IEncounterService extends IService { * @param encounter 就诊信息 * @return 保存后的信息 */ - Long saveEncounter(Encounter encounter); + Long saveEncounterByRegister(Encounter encounter); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/AccountServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/AccountServiceImpl.java index 170ce750..61da4ec8 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/AccountServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/AccountServiceImpl.java @@ -16,4 +16,15 @@ import com.openhis.administration.service.IAccountService; @Service public class AccountServiceImpl extends ServiceImpl implements IAccountService { + /** + * 门诊挂号时保存账号信息 + * + * @param account 账号信息 + */ + @Override + public Long saveAccountByRegister(Account account) { + baseMapper.insert(account); + return account.getId(); + } + } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemServiceImpl.java index 2b137271..2c9816c3 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemServiceImpl.java @@ -55,4 +55,14 @@ public class ChargeItemServiceImpl extends ServiceImpl().eq(Encounter::getPatientId, patientId)); + if (count > 0L) { + encounter.setFirstEnum(EncounterType.FOLLOW_UP.getValue()); + } baseMapper.insert(encounter); return encounter.getId(); }