2025-12-24 发版,具体内容见发版日志
This commit is contained in:
@@ -5,10 +5,8 @@ import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import com.openhis.common.enums.AccountBillingStatus;
|
||||
import com.openhis.common.enums.AccountStatus;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -66,4 +64,7 @@ public class Account extends HisBaseEntity {
|
||||
/** 是否为就诊登记使用 */
|
||||
private Integer encounterFlag;
|
||||
|
||||
/** 险种类型 */
|
||||
private String insutype;
|
||||
|
||||
}
|
||||
|
||||
@@ -6,9 +6,8 @@ import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import com.openhis.common.enums.PublicationStatus;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -67,4 +66,9 @@ public class ChargeItemDefinition extends HisBaseEntity {
|
||||
|
||||
/** 基础价格 */
|
||||
private BigDecimal price;
|
||||
|
||||
/**
|
||||
* 物价编码
|
||||
*/
|
||||
private String priceCode;
|
||||
}
|
||||
|
||||
@@ -6,13 +6,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.enums.ActPriority;
|
||||
import com.openhis.common.enums.PublicationStatus;
|
||||
import com.openhis.common.enums.SupplyCategory;
|
||||
import com.openhis.common.enums.SupplyStatus;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
@@ -132,9 +128,4 @@ public class Patient extends HisBaseEntity {
|
||||
/** 机构Id */
|
||||
private Long organizationId;
|
||||
|
||||
public Patient() {
|
||||
// 活动标识:启用
|
||||
this.activeFlag = PublicationStatus.ACTIVE.getValue();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -61,4 +61,10 @@ public class ChargeItemDefInfo extends ChargeItem {
|
||||
|
||||
/** 基础价格 */
|
||||
private BigDecimal price;
|
||||
|
||||
/** 基础价格 */
|
||||
private BigDecimal manualAdjustedPrice;
|
||||
|
||||
/** 基础价格 */
|
||||
private BigDecimal systemDiscountPrice;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.openhis.administration.dto;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.core.common.annotation.Excel;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 费用明细Dto
|
||||
*
|
||||
* @author swb
|
||||
* @date 2025-12-16
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CostDetailDto {
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
@Excel(name = "项目名称", sort = 2)
|
||||
private String chargeName;
|
||||
|
||||
/**
|
||||
* 费用类型
|
||||
*/
|
||||
private Integer chargeItemEnum;
|
||||
@Excel(name = "费用类型", sort = 3)
|
||||
private String chargeItemEnum_enumText;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
@Excel(name = "单价", sort = 4, scale = 2)
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@Excel(name = "数量", sort = 5, scale = 0)
|
||||
private BigDecimal quantityValue;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
@Excel(name = "金额", sort = 6, scale = 2)
|
||||
private BigDecimal totalPrice;
|
||||
|
||||
/**
|
||||
* 执行科室
|
||||
*/
|
||||
private Long orgId;
|
||||
@Excel(name = "执行科室", sort = 7)
|
||||
private String orgName;
|
||||
|
||||
/**
|
||||
* 执行人
|
||||
*/
|
||||
@Excel(name = "执行人", sort = 8)
|
||||
private String practitioner;
|
||||
|
||||
/**
|
||||
* 执行日期
|
||||
*/
|
||||
@Excel(name = "执行日期", sort = 9, dateFormat = "yyyy-MM-dd")
|
||||
private Date recordedTime;
|
||||
|
||||
/**
|
||||
* 医保类型
|
||||
*/
|
||||
private Integer chrgitmLv;
|
||||
@Excel(name = "医保类型", sort = 10)
|
||||
private String chrgitmLv_enumText;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Excel(name = "备注", sort = 11)
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 住院患者id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long encounterId;
|
||||
|
||||
/**
|
||||
* 患者id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long patientId;
|
||||
/**
|
||||
* 患者姓名
|
||||
*/
|
||||
private String patientName;
|
||||
|
||||
/**
|
||||
* 生日
|
||||
*/
|
||||
private Date birthDate;
|
||||
|
||||
/**
|
||||
* 年龄
|
||||
*/
|
||||
private String age;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private Integer genderEnum;
|
||||
private String genderEnum_enumText;
|
||||
|
||||
/**
|
||||
* 诊断
|
||||
*/
|
||||
private String conditionNames;
|
||||
/**
|
||||
* 住院医生
|
||||
*/
|
||||
private String admittingDoctorName;
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
private BigDecimal balanceAmount;
|
||||
|
||||
/**
|
||||
* 住院号
|
||||
*/
|
||||
private String BusNo;
|
||||
|
||||
/**
|
||||
* 床位名称
|
||||
*/
|
||||
private String bedName;
|
||||
|
||||
/**
|
||||
* 费别
|
||||
*/
|
||||
private String contractName;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.openhis.administration.dto;
|
||||
|
||||
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 swb
|
||||
* @date 2025-12-15
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CostDetailSearchParam {
|
||||
/**
|
||||
* 就诊ID列表
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private List<Long> encounterIds;
|
||||
|
||||
/**
|
||||
* 科室ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long orgId;
|
||||
|
||||
/**
|
||||
* 费用类型ID
|
||||
*/
|
||||
private String chargeItemEnum;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.openhis.administration.dto;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 药品追溯患者信息Dto
|
||||
*
|
||||
* @author swb
|
||||
* @date 2025-12-15
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class TracePatientInfoDto {
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private Integer genderEnum;
|
||||
private String genderEnum_enumText;
|
||||
|
||||
/**
|
||||
* 生日
|
||||
*/
|
||||
private Date birthDate;
|
||||
/**
|
||||
* 年龄
|
||||
*/
|
||||
private String age;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 挂号时间
|
||||
*/
|
||||
|
||||
private Date registerTime;
|
||||
}
|
||||
@@ -5,10 +5,14 @@ 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.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.openhis.administration.domain.ChargeItem;
|
||||
import com.openhis.administration.dto.ChargeItemBaseInfoDto;
|
||||
import com.openhis.administration.dto.ChargeItemDefInfo;
|
||||
import com.openhis.administration.dto.CostDetailDto;
|
||||
import com.openhis.administration.dto.CostDetailSearchParam;
|
||||
|
||||
/**
|
||||
* 费用项管理Mapper接口
|
||||
@@ -34,4 +38,22 @@ public interface ChargeItemMapper extends BaseMapper<ChargeItem> {
|
||||
* @return 集合
|
||||
*/
|
||||
List<ChargeItemDefInfo> getChargeItemDefInfoByIds(@Param("chargeItemIds") List<Long> chargeItemIds);
|
||||
|
||||
/**
|
||||
* 查询费用明细
|
||||
*
|
||||
* @param queryWrapper 查询条件
|
||||
* @param billable 待结算
|
||||
* @param billed 已收费
|
||||
* @param refunded 已退费
|
||||
* @param active 使用中
|
||||
* @param bed 床位
|
||||
* @param admittingDoctor 住院医生
|
||||
* @param personalCashAccount 个人现金账户
|
||||
* @return 费用明细分页列表
|
||||
*/
|
||||
List<CostDetailDto> getCostDetails(@Param(Constants.WRAPPER) QueryWrapper<CostDetailSearchParam> queryWrapper,
|
||||
@Param("billable") Integer billable, @Param("billed") Integer billed, @Param("refunded") Integer refunded,
|
||||
@Param("active") Integer active, @Param("bed") Integer bed, @Param("admittingDoctor") String admittingDoctor,
|
||||
@Param("personalCashAccount") String personalCashAccount);
|
||||
}
|
||||
@@ -20,20 +20,35 @@ import com.openhis.administration.dto.PatientBedInfoDto;
|
||||
public interface LocationMapper extends BaseMapper<Location> {
|
||||
/**
|
||||
* Desc: 根据区域id数组查询 区域表
|
||||
*
|
||||
* @param locationIds
|
||||
* @Author raymond
|
||||
* @Date 07:46 2025/10/28
|
||||
* @return java.util.List<com.openhis.administration.dto.LocationDataDto>
|
||||
**/
|
||||
List<LocationDataDto> searchLocationDataByIds(@Param("locationIds") List<Long> locationIds);
|
||||
|
||||
/**
|
||||
* Desc: 根据病区bus_no 查询病床
|
||||
*
|
||||
* @param busNo
|
||||
* @param formEnum
|
||||
* @Author raymond
|
||||
* @Date 14:01 2025/10/28
|
||||
* @return java.util.List<com.openhis.administration.dto.LocationDataDto>
|
||||
**/
|
||||
List<PatientBedInfoDto> searchLocationDataByBusNo(@Param("busNo") String busNo, @Param("formEnum") Integer formEnum, @Param("statusEnum") Integer statusEnum);
|
||||
List<PatientBedInfoDto> searchLocationDataByBusNo(@Param("busNo") String busNo, @Param("formEnum") Integer formEnum,
|
||||
@Param("statusEnum") Integer statusEnum);
|
||||
|
||||
/**
|
||||
* 判断是否存在相同名字
|
||||
*
|
||||
* @param name 名字
|
||||
* @param busNo 病区号/病房号/病床号
|
||||
* @param locId 病区ID/病房ID/病床ID
|
||||
* @param delFlag 删除标志
|
||||
* @return true/false
|
||||
*/
|
||||
boolean isExistName(@Param("name") String name, @Param("busNo") String busNo, @Param("locId") Long locId,
|
||||
@Param("delFlag") String delFlag);
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.openhis.administration.domain.TraceNoManage;
|
||||
import com.openhis.administration.dto.TracePatientInfoDto;
|
||||
|
||||
/**
|
||||
* 【追溯码管理】Mapper接口
|
||||
@@ -28,4 +29,14 @@ public interface TraceNoManageMapper extends BaseMapper<TraceNoManage> {
|
||||
*/
|
||||
List<TraceNoManage> getItemTraceNoInfo(@Param("itemTable") String itemTable, @Param("itemId") Long itemId,
|
||||
@Param("locationId") Long locationId, @Param("lotNumber") String lotNumber);
|
||||
|
||||
/**
|
||||
* 追溯患者信息
|
||||
*
|
||||
* @param medId 药品定义ID
|
||||
* @param dispenseStatus 药品发放状态
|
||||
* @return 患者信息列表
|
||||
*/
|
||||
List<TracePatientInfoDto> tracePatient(@Param("medId") Long medId, @Param("dispenseStatus") Integer dispenseStatus,
|
||||
@Param("traceNo") String traceNo);
|
||||
}
|
||||
@@ -2,10 +2,13 @@ package com.openhis.administration.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.administration.domain.ChargeItem;
|
||||
import com.openhis.administration.dto.ChargeItemBaseInfoDto;
|
||||
import com.openhis.administration.dto.ChargeItemDefInfo;
|
||||
import com.openhis.administration.dto.CostDetailDto;
|
||||
import com.openhis.administration.dto.CostDetailSearchParam;
|
||||
|
||||
/**
|
||||
* 费用项管理Service接口
|
||||
@@ -138,5 +141,22 @@ public interface IChargeItemService extends IService<ChargeItem> {
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
List<ChargeItem> getChargeItemByEncounterId(Long id,String tableName,List<Long> serviceId);
|
||||
List<ChargeItem> getChargeItemByEncounterId(Long id, String tableName, List<Long> serviceId);
|
||||
|
||||
/**
|
||||
* 查询费用明细
|
||||
*
|
||||
* @param queryWrapper 查询条件
|
||||
* @param billable 待结算
|
||||
* @param billed 已收费
|
||||
* @param refunded 已退费
|
||||
* @param active 使用中
|
||||
* @param bed 床位
|
||||
* @param admittingDoctor 住院医生
|
||||
* @param personalCashAccount 个人现金账户
|
||||
* @return 费用明细分页列表
|
||||
*/
|
||||
List<CostDetailDto> getCostDetails(QueryWrapper<CostDetailSearchParam> queryWrapper, Integer billable,
|
||||
Integer billed, Integer refunded, Integer active, Integer bed, String admittingDoctor,
|
||||
String personalCashAccount);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@ package com.openhis.administration.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.administration.domain.Location;
|
||||
import com.openhis.administration.dto.LocationDataDto;
|
||||
import liquibase.pro.packaged.L;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 位置管理Service接口
|
||||
@@ -37,7 +37,6 @@ public interface ILocationService extends IService<Location> {
|
||||
*/
|
||||
List<Location> getWarehouseList();
|
||||
|
||||
|
||||
/**
|
||||
* 获取药房药库列表
|
||||
*
|
||||
@@ -89,9 +88,10 @@ public interface ILocationService extends IService<Location> {
|
||||
* 根据科室ID集合,查询对应信息
|
||||
*
|
||||
* @param ids 科室ID集合
|
||||
* @param status 状态列表
|
||||
* @return 科室信息列表
|
||||
*/
|
||||
List<Location> getLocationList(List<Long> ids);
|
||||
List<Location> getLocationList(List<Long> ids, List<Integer> status);
|
||||
|
||||
/**
|
||||
* 根据locationId,更新状态
|
||||
@@ -104,6 +104,7 @@ public interface ILocationService extends IService<Location> {
|
||||
|
||||
/**
|
||||
* Desc: 根据区域id数组查询 区域表
|
||||
*
|
||||
* @param locationIds
|
||||
* @Author raymond
|
||||
* @Date 07:46 2025/10/28
|
||||
@@ -116,6 +117,15 @@ public interface ILocationService extends IService<Location> {
|
||||
*
|
||||
* @return 所有位置信息列表
|
||||
*/
|
||||
List< Location> getLocationList();
|
||||
List<Location> getLocationList();
|
||||
|
||||
/**
|
||||
* 判断是否存在相同名字
|
||||
*
|
||||
* @param name 名字
|
||||
* @param busNo 病区号/病房号/病床号
|
||||
* @param locId 病区ID/病房ID/病床ID
|
||||
* @return true/false
|
||||
*/
|
||||
boolean isExistName(String name, String busNo, Long locId);
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.openhis.administration.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.administration.domain.Encounter;
|
||||
import com.openhis.administration.domain.Patient;
|
||||
import com.openhis.administration.domain.PatientIdentifier;
|
||||
|
||||
/**
|
||||
* 患者管理Service接口
|
||||
@@ -27,19 +25,4 @@ public interface IPatientService extends IService<Patient> {
|
||||
*/
|
||||
boolean savePatient(Patient patient);
|
||||
|
||||
/**
|
||||
* 添加病人
|
||||
*
|
||||
* @param patient 患者实体
|
||||
*/
|
||||
boolean addPatient(Patient patient);
|
||||
|
||||
/**
|
||||
* 更新病人
|
||||
*
|
||||
* @param patient 患者实体
|
||||
*/
|
||||
boolean updatePatient(Patient patient);
|
||||
|
||||
|
||||
}
|
||||
@@ -10,21 +10,25 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.core.common.exception.ServiceException;
|
||||
import com.core.common.utils.AgeCalculatorUtil;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.core.common.utils.StringUtils;
|
||||
import com.openhis.administration.domain.ChargeItem;
|
||||
import com.openhis.administration.domain.ChargeItemDefinition;
|
||||
import com.openhis.administration.dto.ChargeItemBaseInfoDto;
|
||||
import com.openhis.administration.dto.ChargeItemDefInfo;
|
||||
import com.openhis.administration.dto.CostDetailDto;
|
||||
import com.openhis.administration.dto.CostDetailSearchParam;
|
||||
import com.openhis.administration.mapper.ChargeItemDefinitionMapper;
|
||||
import com.openhis.administration.mapper.ChargeItemMapper;
|
||||
import com.openhis.administration.service.IChargeItemService;
|
||||
import com.openhis.common.enums.ChargeItemContext;
|
||||
import com.openhis.common.enums.ChargeItemStatus;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.openhis.common.enums.*;
|
||||
import com.openhis.common.utils.EnumUtils;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
@@ -263,7 +267,51 @@ public class ChargeItemServiceImpl extends ServiceImpl<ChargeItemMapper, ChargeI
|
||||
@Override
|
||||
public List<ChargeItem> getChargeItemByEncounterId(Long id, String tableName, List<Long> serviceId) {
|
||||
return baseMapper.selectList(new LambdaUpdateWrapper<ChargeItem>().eq(ChargeItem::getEncounterId, id)
|
||||
.in(ChargeItem::getEncounterId, serviceId)
|
||||
.eq(ChargeItem::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
.in(ChargeItem::getEncounterId, serviceId).eq(ChargeItem::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询费用明细
|
||||
*
|
||||
* @param queryWrapper 查询条件
|
||||
* @param billable 待结算
|
||||
* @param billed 已收费
|
||||
* @param refunded 已退费
|
||||
* @param active 使用中
|
||||
* @param bed 床位
|
||||
* @param admittingDoctor 住院医生
|
||||
* @param personalCashAccount 个人现金账户
|
||||
* @return 费用明细分页列表
|
||||
*/
|
||||
@Override
|
||||
public List<CostDetailDto> getCostDetails(QueryWrapper<CostDetailSearchParam> queryWrapper, Integer billable,
|
||||
Integer billed, Integer refunded, Integer active, Integer bed, String admittingDoctor,
|
||||
String personalCashAccount) {
|
||||
// 查询费用明细
|
||||
List<CostDetailDto> costDetails = baseMapper.getCostDetails(queryWrapper, billable, billed, refunded, active,
|
||||
bed, admittingDoctor, personalCashAccount);
|
||||
// 翻译字段
|
||||
costDetails.forEach(costDetail -> {
|
||||
// 医保类型
|
||||
if (costDetail.getChrgitmLv() != null) {
|
||||
costDetail
|
||||
.setChrgitmLv_enumText(EnumUtils.getInfoByValue(InsuranceLevel.class, costDetail.getChrgitmLv()));
|
||||
}
|
||||
// 性别枚举
|
||||
if (costDetail.getGenderEnum() != null) {
|
||||
costDetail.setGenderEnum_enumText(
|
||||
EnumUtils.getInfoByValue(AdministrativeGender.class, costDetail.getGenderEnum()));
|
||||
}
|
||||
// 计算年龄
|
||||
if (costDetail.getBirthDate() != null) {
|
||||
costDetail.setAge(AgeCalculatorUtil.getAge(costDetail.getBirthDate()));
|
||||
}
|
||||
// 费用类型
|
||||
if (costDetail.getChargeItemEnum() != null) {
|
||||
costDetail
|
||||
.setChargeItemEnum_enumText(ChargeItemEnum.getByValue(costDetail.getChargeItemEnum()).getInfo());
|
||||
}
|
||||
});
|
||||
return costDetails;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,21 +2,21 @@ package com.openhis.administration.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.openhis.administration.dto.LocationDataDto;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.openhis.administration.domain.Location;
|
||||
import com.openhis.administration.dto.LocationDataDto;
|
||||
import com.openhis.administration.mapper.LocationMapper;
|
||||
import com.openhis.administration.service.ILocationService;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.openhis.common.enums.LocationForm;
|
||||
import com.openhis.common.enums.LocationStatus;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 位置管理Service业务层处理
|
||||
*
|
||||
@@ -49,6 +49,7 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<Location>().eq(Location::getFormEnum, LocationForm.CABINET.getValue()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取仓库列表
|
||||
*
|
||||
@@ -56,8 +57,8 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
|
||||
*/
|
||||
@Override
|
||||
public List<Location> getWarehouseList() {
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<Location>().eq(Location::getFormEnum, LocationForm.WAREHOUSE.getValue()));
|
||||
return baseMapper.selectList(
|
||||
new LambdaQueryWrapper<Location>().eq(Location::getFormEnum, LocationForm.WAREHOUSE.getValue()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,10 +152,11 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
|
||||
* 根据科室ID集合,查询对应信息
|
||||
*
|
||||
* @param ids 科室ID集合
|
||||
* @param status 状态列表
|
||||
* @return 科室信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<Location> getLocationList(List<Long> ids) {
|
||||
public List<Location> getLocationList(List<Long> ids, List<Integer> status) {
|
||||
// // 如果 ids 是空的,获取当前登录用户的 orgId
|
||||
// if (ids == null || ids.isEmpty()) {
|
||||
// Long orgId = SecurityUtils.getLoginUser().getOrgId();
|
||||
@@ -166,7 +168,7 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
|
||||
LambdaQueryWrapper<Location> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(Location::getId, Location::getName, Location::getFormEnum, Location::getBusNo)
|
||||
.in(Location::getId, ids).eq(Location::getDeleteFlag, DelFlag.NO.getCode())
|
||||
.eq(Location::getStatusEnum, LocationStatus.ACTIVE.getValue());
|
||||
.in(Location::getStatusEnum, status);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@@ -195,8 +197,22 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i
|
||||
*
|
||||
* @return 所有位置信息列表
|
||||
*/
|
||||
@Override public List<Location> getLocationList() {
|
||||
@Override
|
||||
public List<Location> getLocationList() {
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<Location>());
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否存在相同名字
|
||||
*
|
||||
* @param name 名字
|
||||
* @param busNo 病区号/病房号/病床号
|
||||
* @param locId 病区ID/病房ID/病床ID
|
||||
* @return true/false
|
||||
*/
|
||||
@Override
|
||||
public boolean isExistName(String name, String busNo, Long locId) {
|
||||
return locationMapper.isExistName(name, busNo, locId, DelFlag.NO.getCode());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,20 +2,20 @@ package com.openhis.administration.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.openhis.administration.dto.OrgDataDto;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.openhis.administration.domain.Organization;
|
||||
import com.openhis.administration.dto.OrgDataDto;
|
||||
import com.openhis.administration.mapper.OrganizationMapper;
|
||||
import com.openhis.administration.service.IOrganizationService;
|
||||
import com.openhis.common.enums.AccountStatus;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 机构管理Service业务层处理
|
||||
*
|
||||
@@ -27,6 +27,7 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
|
||||
implements IOrganizationService {
|
||||
@Resource
|
||||
private OrganizationMapper organizationMapper;
|
||||
|
||||
/**
|
||||
* 机构启用
|
||||
*
|
||||
@@ -63,8 +64,10 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
|
||||
@Override
|
||||
public List<Organization> getList(Integer organizationType, Integer organizationClass) {
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<Organization>()
|
||||
.select(Organization::getId, Organization::getName).eq(Organization::getTypeEnum, organizationType)
|
||||
.eq(organizationClass != null, Organization::getClassEnum, organizationClass));
|
||||
.select(Organization::getId, Organization::getName, Organization::getDisplayOrder)
|
||||
.eq(Organization::getTypeEnum, organizationType)
|
||||
.eq(organizationClass != null, Organization::getClassEnum, organizationClass)
|
||||
.orderByAsc(Organization::getDisplayOrder)); // 按 displayOrder 升序排序
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +79,7 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
|
||||
@Override
|
||||
public List<Organization> getOrganizationListById(List<Long> collect) {
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<Organization>().in(Organization::getId, collect)
|
||||
.eq(Organization::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
.eq(Organization::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -123,51 +123,4 @@ public class PatientServiceImpl extends ServiceImpl<PatientMapper, Patient> impl
|
||||
return patientExists;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加病人
|
||||
*
|
||||
* @param patient 患者实体
|
||||
*/
|
||||
@Override
|
||||
public boolean addPatient(Patient patient) {
|
||||
Long organizationId = SecurityUtils.getLoginUser().getHospitalId();
|
||||
// 设置机构ID
|
||||
patient.setOrganizationId(organizationId);
|
||||
// 设置拼音首拼
|
||||
patient.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(patient.getName()));
|
||||
// 设置五笔首拼
|
||||
patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patient.getName()));
|
||||
// 不存在重复的证件号,新增患者
|
||||
if (patient.getIdCard() == null || patient.getIdCard().isEmpty() ||idCardExists(patient) == null) {
|
||||
// 添加患者
|
||||
return baseMapper.insert(patient) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新病人
|
||||
*
|
||||
* @param patient 患者实体
|
||||
*/
|
||||
@Override
|
||||
public boolean updatePatient(Patient patient) {
|
||||
Patient patientExists = idCardExists(patient);
|
||||
Long organizationId = SecurityUtils.getLoginUser().getHospitalId();
|
||||
// 设置机构ID
|
||||
patient.setOrganizationId(organizationId);
|
||||
// 设置拼音首拼
|
||||
patient.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(patient.getName()));
|
||||
// 设置五笔首拼
|
||||
patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patient.getName()));
|
||||
// 根据证件号查询,不存在重复的证件号
|
||||
if (patientExists == null) {
|
||||
// 患者修改了证件号码且不重复,更新患者
|
||||
return baseMapper.updateById(patient) > 0;
|
||||
} else if (patientExists.getId().compareTo(patient.getId()) == 0) {
|
||||
// 患者未修改证件号码,更新患者
|
||||
return baseMapper.updateById(patient) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.openhis.medication.domain;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
@@ -173,4 +174,10 @@ public class MedicationDefinition extends HisBaseEntity {
|
||||
*/
|
||||
private String dosageInstruction;
|
||||
|
||||
/**
|
||||
* 药品69码
|
||||
*/
|
||||
@TableField("drug_69_code")
|
||||
private String drug69Code;
|
||||
|
||||
}
|
||||
@@ -14,8 +14,6 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 药品信息详情
|
||||
*
|
||||
@@ -220,4 +218,9 @@ public class MedicationDetail extends HisBaseEntity {
|
||||
*/
|
||||
private String dosageInstruction;
|
||||
|
||||
/**
|
||||
* 药品69码
|
||||
*/
|
||||
private String drug69Code;
|
||||
|
||||
}
|
||||
|
||||
@@ -13,11 +13,11 @@ import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.core.common.utils.AssignSeqUtil;
|
||||
import com.core.common.utils.DateUtils;
|
||||
import com.openhis.common.enums.AssignSeqEnum;
|
||||
import com.openhis.common.enums.DbOpType;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.openhis.common.enums.DispenseStatus;
|
||||
import com.openhis.medication.domain.MedicationDispense;
|
||||
import com.openhis.medication.domain.MedicationRequest;
|
||||
@@ -97,12 +97,14 @@ public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispens
|
||||
// 设置限制发药时间
|
||||
medicationDispense.setLimitTime(limitTime);
|
||||
|
||||
if (DbOpType.INSERT.getCode().equals(dbOpType)) {
|
||||
baseMapper.insert(medicationDispense);
|
||||
} else if (DbOpType.UPDATE.getCode().equals(dbOpType)) {
|
||||
baseMapper.update(medicationDispense, new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.eq(MedicationDispense::getMedReqId, medicationRequest.getId()));
|
||||
}
|
||||
baseMapper.insert(medicationDispense);
|
||||
|
||||
// if (DbOpType.INSERT.getCode().equals(dbOpType)) {
|
||||
// baseMapper.insert(medicationDispense);
|
||||
// } else if (DbOpType.UPDATE.getCode().equals(dbOpType)) {
|
||||
// baseMapper.update(medicationDispense, new LambdaUpdateWrapper<MedicationDispense>()
|
||||
// .eq(MedicationDispense::getMedReqId, medicationRequest.getId()));
|
||||
// }
|
||||
|
||||
return medicationDispense.getId();
|
||||
}
|
||||
@@ -325,6 +327,7 @@ public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispens
|
||||
public List<MedicationDispense> getMedDispenseBySummaryNo(List<String> summaryNoList) {
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode())
|
||||
.eq(MedicationDispense::getStatusEnum, DispenseStatus.SUMMARIZED.getValue()));
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.openhis.administration.domain.Practitioner;
|
||||
import com.openhis.medication.domain.MedicationDispense;
|
||||
import com.openhis.workflow.domain.DeviceDispense;
|
||||
import com.openhis.workflow.domain.DeviceRequest;
|
||||
|
||||
@@ -18,7 +17,6 @@ import com.openhis.workflow.domain.DeviceRequest;
|
||||
*/
|
||||
public interface IDeviceDispenseService extends IService<DeviceDispense> {
|
||||
|
||||
|
||||
/**
|
||||
* 处理器材发放信息
|
||||
*
|
||||
@@ -40,6 +38,18 @@ public interface IDeviceDispenseService extends IService<DeviceDispense> {
|
||||
Long generateDeviceDispense(DeviceRequest deviceRequest, Long procedureId, Long locationId,
|
||||
Date plannedDispenseTime);
|
||||
|
||||
/**
|
||||
* 医嘱执行生成耗材发放,状态为已发放
|
||||
*
|
||||
* @param deviceRequest 耗材医嘱请求
|
||||
* @param procedureId 执行记录id
|
||||
* @param locationId 发放器材房
|
||||
* @param plannedDispenseTime 预定发药时间
|
||||
* @return 发放id
|
||||
*/
|
||||
Long generateIssuedDeviceDispense(DeviceRequest deviceRequest, Long procedureId, Long locationId,
|
||||
Date plannedDispenseTime);
|
||||
|
||||
/**
|
||||
* 删除器材发放信息
|
||||
*
|
||||
|
||||
@@ -25,6 +25,14 @@ public interface ISupplyRequestService extends IService<SupplyRequest> {
|
||||
*/
|
||||
List<SupplyRequest> getSupplyByBusNo(String busNo);
|
||||
|
||||
/**
|
||||
* 通过单据号批量查询单据信息
|
||||
*
|
||||
* @param busNoList 单据号
|
||||
* @return 单据信息
|
||||
*/
|
||||
List<SupplyRequest> getSupplyByBusNoBatch(List<String> busNoList);
|
||||
|
||||
/**
|
||||
* 通过原始单据号查询单据信息
|
||||
*
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.openhis.workflow.service.impl;
|
||||
|
||||
import static com.core.common.utils.SecurityUtils.getLoginUser;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
@@ -13,11 +15,11 @@ import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.core.domain.model.LoginUser;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.core.common.utils.AssignSeqUtil;
|
||||
import com.openhis.administration.domain.Practitioner;
|
||||
import com.openhis.common.enums.AssignSeqEnum;
|
||||
import com.openhis.common.enums.DbOpType;
|
||||
import com.openhis.common.enums.DispenseStatus;
|
||||
import com.openhis.workflow.domain.DeviceDispense;
|
||||
import com.openhis.workflow.domain.DeviceRequest;
|
||||
@@ -87,12 +89,14 @@ public class DeviceDispenseServiceImpl extends ServiceImpl<DeviceDispenseMapper,
|
||||
// 设置限制发药时间
|
||||
deviceDispense.setLimitTime(limitTime);
|
||||
|
||||
if (DbOpType.INSERT.getCode().equals(dbOpType)) {
|
||||
baseMapper.insert(deviceDispense);
|
||||
} else if (DbOpType.UPDATE.getCode().equals(dbOpType)) {
|
||||
baseMapper.update(deviceDispense,
|
||||
new LambdaUpdateWrapper<DeviceDispense>().eq(DeviceDispense::getDeviceReqId, deviceRequest.getId()));
|
||||
}
|
||||
baseMapper.insert(deviceDispense);
|
||||
|
||||
// if (DbOpType.INSERT.getCode().equals(dbOpType)) {
|
||||
// baseMapper.insert(deviceDispense);
|
||||
// } else if (DbOpType.UPDATE.getCode().equals(dbOpType)) {
|
||||
// baseMapper.update(deviceDispense,
|
||||
// new LambdaUpdateWrapper<DeviceDispense>().eq(DeviceDispense::getDeviceReqId, deviceRequest.getId()));
|
||||
// }
|
||||
|
||||
return deviceDispense.getId();
|
||||
}
|
||||
@@ -347,4 +351,69 @@ public class DeviceDispenseServiceImpl extends ServiceImpl<DeviceDispenseMapper,
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<DeviceDispense>()
|
||||
.in(DeviceDispense::getDeviceReqId, requestIdList).eq(DeviceDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 医嘱执行生成耗材发放,状态为已完成
|
||||
*
|
||||
* @param deviceRequest 耗材医嘱请求
|
||||
* @param procedureId 执行记录id
|
||||
* @param locationId 发放器材房
|
||||
* @param plannedDispenseTime 预定发药时间
|
||||
* @return 发放id
|
||||
*/
|
||||
@Override
|
||||
public Long generateIssuedDeviceDispense(DeviceRequest deviceRequest, Long procedureId, Long locationId,
|
||||
Date plannedDispenseTime) {
|
||||
DeviceDispense deviceDispense = new DeviceDispense();
|
||||
// 执行id
|
||||
deviceDispense.setProcedureId(procedureId);
|
||||
// 预定发药时间
|
||||
deviceDispense.setPlannedDispenseTime(plannedDispenseTime);
|
||||
// 设置发放时间
|
||||
deviceDispense.setDispenseTime(plannedDispenseTime);
|
||||
// 器材发放id
|
||||
deviceDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_DIS_NO.getPrefix(), 4));
|
||||
// 器材请求id
|
||||
deviceDispense.setDeviceReqId(deviceRequest.getId());
|
||||
// 器材发放状态
|
||||
deviceDispense.setStatusEnum(DispenseStatus.COMPLETED.getValue());
|
||||
// 发药类型
|
||||
deviceDispense.setDispenseCategoryEnum(deviceRequest.getCategoryEnum());
|
||||
// 器材编码
|
||||
deviceDispense.setDeviceDefId(deviceRequest.getDeviceDefId());
|
||||
// 领药患者
|
||||
deviceDispense.setPatientId(deviceRequest.getPatientId());
|
||||
// 相关诊疗
|
||||
deviceDispense.setEncounterId(deviceRequest.getEncounterId());
|
||||
// 发放数量
|
||||
deviceDispense.setQuantity(deviceRequest.getQuantity());
|
||||
// 发放单位
|
||||
deviceDispense.setUnitCode(deviceRequest.getUnitCode());
|
||||
// 产品批号
|
||||
deviceDispense.setLotNumber(deviceRequest.getLotNumber());
|
||||
// 发药人
|
||||
// todo 存疑,是否用请求人作为发药人
|
||||
LoginUser loginUser = getLoginUser();
|
||||
deviceDispense.setPerformerId(loginUser.getPractitionerId());
|
||||
// 发放器材房
|
||||
deviceDispense.setLocationId(locationId);
|
||||
// 支持用药信息
|
||||
deviceDispense.setSupportInfo(deviceRequest.getSupportInfo());
|
||||
// 已发药数量
|
||||
deviceDispense.setDispenseQuantity(deviceRequest.getQuantity());
|
||||
// 发药频次
|
||||
deviceDispense.setDispenseFrequencyCode(deviceRequest.getRateCode());
|
||||
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 增加12小时
|
||||
LocalDateTime newTime = now.plusHours(12);
|
||||
// 转换为Date对象(如果需要保持使用Date类型)
|
||||
Date limitTime = Date.from(newTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
// 设置限制发药时间
|
||||
deviceDispense.setLimitTime(limitTime);
|
||||
baseMapper.insert(deviceDispense);
|
||||
|
||||
return deviceDispense.getId();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.core.common.utils.DateUtils;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.openhis.common.constant.CommonConstants;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.openhis.common.enums.SupplyCategory;
|
||||
import com.openhis.common.enums.SupplyStatus;
|
||||
import com.openhis.common.enums.SupplyType;
|
||||
@@ -53,6 +53,17 @@ public class SupplyRequestServiceImpl extends ServiceImpl<SupplyRequestMapper, S
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<SupplyRequest>().eq(SupplyRequest::getBusNo, busNo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过单据号批量查询单据信息
|
||||
*
|
||||
* @param busNoList 单据号
|
||||
* @return 单据信息
|
||||
*/
|
||||
@Override
|
||||
public List<SupplyRequest> getSupplyByBusNoBatch(List<String> busNoList) {
|
||||
return baseMapper.selectList(new LambdaQueryWrapper<SupplyRequest>().in(SupplyRequest::getBusNo, busNoList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过原始单据号查询单据信息
|
||||
*
|
||||
|
||||
@@ -164,6 +164,8 @@
|
||||
T1.create_by,
|
||||
T1.update_time,
|
||||
T1.update_by,
|
||||
T1.system_discount_price,
|
||||
T1.manual_adjusted_price,
|
||||
T2.charge_name,
|
||||
T2.title,
|
||||
T2.status_enum,
|
||||
@@ -188,4 +190,164 @@
|
||||
</foreach>
|
||||
AND T1.delete_flag = '0'
|
||||
</select>
|
||||
|
||||
<!-- 查询费用明细 -->
|
||||
<select id="getCostDetails" resultType="com.openhis.administration.dto.CostDetailDto">
|
||||
SELECT final_res.charge_name,
|
||||
final_res.charge_item_enum,
|
||||
final_res.unit_price,
|
||||
final_res.quantity_value,
|
||||
final_res.total_price,
|
||||
final_res.org_id,
|
||||
final_res.practitioner,
|
||||
final_res.recorded_time,
|
||||
final_res.chrgitm_lv,
|
||||
final_res.remark,
|
||||
final_res.encounter_id,
|
||||
final_res.patient_id,
|
||||
final_res.patient_name,
|
||||
final_res.birth_date,
|
||||
final_res.gender_enum,
|
||||
final_res.bus_no,
|
||||
final_res.bed_name,
|
||||
final_res.condition_names,
|
||||
final_res.admitting_doctor_name,
|
||||
final_res.balance_amount,
|
||||
final_res.contract_name
|
||||
FROM (WITH execution_table AS (SELECT cp.request_id,
|
||||
cp.org_id,
|
||||
ap.NAME,
|
||||
cp.occurrence_time AS recorded_time
|
||||
FROM cli_procedure cp
|
||||
LEFT JOIN cli_procedure_performer cpp ON cpp.procedure_id = cp.ID
|
||||
AND cpp.delete_flag = '0'
|
||||
LEFT JOIN adm_practitioner ap ON ap.ID = cpp.practitioner_id
|
||||
AND ap.active_flag = 1
|
||||
AND ap.delete_flag = '0'
|
||||
WHERE cp.delete_flag = '0'),
|
||||
diagnosis AS (SELECT aed.encounter_id,
|
||||
STRING_AGG(ccd.NAME, ', ') AS condition_names
|
||||
FROM adm_encounter_diagnosis aed
|
||||
INNER JOIN cli_condition cc ON cc.ID = aed.condition_id
|
||||
AND cc.delete_flag = '0'
|
||||
INNER JOIN cli_condition_definition ccd ON ccd.ID = cc.definition_id
|
||||
AND ccd.delete_flag = '0'
|
||||
WHERE aed.delete_flag = '0'
|
||||
GROUP BY aed.encounter_id),
|
||||
hospitalization AS (SELECT aep.encounter_id,
|
||||
pra.NAME
|
||||
FROM adm_encounter_participant aep
|
||||
LEFT JOIN adm_practitioner pra ON aep.practitioner_id = pra.ID
|
||||
AND pra.delete_flag = '0'
|
||||
WHERE aep.delete_flag = '0'
|
||||
AND aep.status_enum = #{ active }
|
||||
AND aep.type_code = #{ admittingDoctor }),
|
||||
account AS (SELECT aa.ID,
|
||||
aa.encounter_id,
|
||||
(
|
||||
aa.balance_amount - COALESCE(SUM(CASE
|
||||
WHEN aci.status_enum IN (#{ billed }, #{ billable })
|
||||
THEN aci.total_price
|
||||
ELSE 0 END), 0) + COALESCE(
|
||||
SUM(CASE WHEN aci.status_enum = #{refunded} THEN aci.total_price ELSE 0 END),
|
||||
0)
|
||||
) AS balance_amount
|
||||
FROM adm_account aa
|
||||
LEFT JOIN adm_charge_item aci ON aa.encounter_id = aci.encounter_id
|
||||
AND aci.delete_flag = '0'
|
||||
WHERE aa.type_code = #{ personalCashAccount }
|
||||
AND aa.delete_flag = '0'
|
||||
GROUP BY aa.ID,
|
||||
aa.encounter_id,
|
||||
aa.balance_amount),
|
||||
contract AS (SELECT fc.contract_name, aa.encounter_id
|
||||
FROM adm_account aa
|
||||
LEFT JOIN fin_contract fc ON aa.contract_no = fc.bus_no AND fc.delete_flag = '0'
|
||||
WHERE aa.encounter_flag = 1
|
||||
AND aa.delete_flag = '0')
|
||||
SELECT T1.tenant_id,
|
||||
T2.charge_name,
|
||||
T2.yb_type AS charge_item_enum,
|
||||
T1.unit_price,
|
||||
T1.quantity_value,
|
||||
T1.total_price,
|
||||
T6.org_id,
|
||||
T6.NAME AS practitioner,
|
||||
T6.recorded_time,
|
||||
CASE
|
||||
WHEN T2.instance_table = 'adm_device_definition' THEN
|
||||
T3.chrgitm_lv
|
||||
WHEN T2.instance_table = 'med_medication_definition' THEN
|
||||
T4.chrgitm_lv
|
||||
WHEN T2.instance_table = 'wor_activity_definition' THEN
|
||||
T5.chrgitm_lv
|
||||
ELSE NULL
|
||||
END AS chrgitm_lv,
|
||||
'' AS remark,
|
||||
T1.encounter_id,
|
||||
T1.patient_id,
|
||||
T7.NAME AS patient_name,
|
||||
T7.birth_date,
|
||||
T7.gender_enum,
|
||||
T8.bus_no,
|
||||
T10.NAME AS bed_name,
|
||||
T11.condition_names,
|
||||
T12.NAME AS admitting_doctor_name,
|
||||
T13.balance_amount,
|
||||
T14.contract_name
|
||||
FROM adm_charge_item T1
|
||||
LEFT JOIN adm_charge_item_definition T2 ON T2.ID = T1.definition_id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition T3 ON T2.instance_id = T3.ID
|
||||
AND T2.instance_table = 'adm_device_definition'
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition T4 ON T2.instance_id = T4.ID
|
||||
AND T2.instance_table = 'med_medication_definition'
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN wor_activity_definition T5 ON T2.instance_id = T5.ID
|
||||
AND T2.instance_table = 'wor_activity_definition'
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN execution_table T6 ON T6.request_id = T1.service_id
|
||||
LEFT JOIN adm_patient T7 ON T7.ID = T1.patient_id
|
||||
AND T7.delete_flag = '0'
|
||||
LEFT JOIN adm_encounter T8 ON T8.ID = T1.encounter_id
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN adm_encounter_location T9 ON T8.ID = T9.encounter_id
|
||||
AND T9.delete_flag = '0'
|
||||
AND T9.status_enum = #{active}
|
||||
AND T9.form_enum = #{bed}
|
||||
LEFT JOIN adm_location T10 ON T9.location_id = T10.ID
|
||||
AND T10.delete_flag = '0'
|
||||
LEFT JOIN diagnosis T11 ON T1.encounter_id = T11.encounter_id
|
||||
LEFT JOIN hospitalization T12 ON T1.encounter_id = T12.encounter_id
|
||||
LEFT JOIN account T13 ON T1.encounter_id = T13.encounter_id
|
||||
LEFT JOIN contract T14 ON T1.encounter_id = T14.encounter_id
|
||||
WHERE T1.delete_flag = '0'
|
||||
GROUP BY T1.tenant_id,
|
||||
T2.charge_name,
|
||||
T2.yb_type,
|
||||
T1.unit_price,
|
||||
T1.quantity_value,
|
||||
T1.total_price,
|
||||
T6.org_id,
|
||||
T6.NAME,
|
||||
T6.recorded_time,
|
||||
T2.instance_table,
|
||||
T3.chrgitm_lv,
|
||||
T4.chrgitm_lv,
|
||||
T5.chrgitm_lv,
|
||||
T1.encounter_id,
|
||||
T1.patient_id,
|
||||
T7.NAME,
|
||||
T7.birth_date,
|
||||
T7.gender_enum,
|
||||
T8.bus_no,
|
||||
T10.NAME,
|
||||
T11.condition_names,
|
||||
T12.NAME,
|
||||
T13.balance_amount,
|
||||
T14.contract_name
|
||||
ORDER BY T6.recorded_time DESC) final_res
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -22,17 +22,31 @@
|
||||
|
||||
<!-- 根据区域id数组查询 区域表 -->
|
||||
<select id="searchLocationDataByBusNo" resultType="com.openhis.administration.dto.PatientBedInfoDto">
|
||||
select id as bedLocationId,
|
||||
bus_no as busNo,
|
||||
name as bedName,
|
||||
status_enum as statusEnum,
|
||||
mode_enum as modeEnum,
|
||||
operational_enum as operationalEnum
|
||||
select id as bedLocationId,
|
||||
bus_no as busNo,
|
||||
name as bedName,
|
||||
status_enum as statusEnum,
|
||||
mode_enum as modeEnum,
|
||||
operational_enum as operationalEnum
|
||||
from adm_location
|
||||
where delete_flag = '0'
|
||||
and bus_no like concat (#{busNo}, '%') and form_enum = #{formEnum} and status_enum = #{statusEnum}
|
||||
and bus_no like concat(#{busNo}, '%')
|
||||
and form_enum = #{formEnum}
|
||||
and status_enum = #{statusEnum}
|
||||
</select>
|
||||
|
||||
<select id="isExistName" resultType="java.lang.Boolean">
|
||||
SELECT EXISTS (SELECT 1
|
||||
FROM adm_location
|
||||
WHERE REPLACE(REPLACE(name, ' ', ''), ' ', '') = #{name}
|
||||
<if test="locId != null">
|
||||
AND id != #{locId}
|
||||
</if>
|
||||
<if test="busNo != null">
|
||||
AND bus_no like CONCAT(#{busNo}, '%')
|
||||
</if>
|
||||
AND delete_flag = #{delFlag}) AS exists_flag;
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -15,17 +15,16 @@
|
||||
AND item_id = #{itemId}
|
||||
AND location_id = #{locationId}
|
||||
AND lot_number = #{lotNumber}
|
||||
AND (trace_no) IN (
|
||||
SELECT trace_no
|
||||
FROM adm_trace_no_manage
|
||||
WHERE item_table = #{itemTable}
|
||||
AND item_id = #{itemId}
|
||||
AND location_id = #{locationId}
|
||||
AND lot_number = #{lotNumber}
|
||||
AND delete_flag = '0'
|
||||
GROUP BY trace_no
|
||||
HAVING SUM(CASE WHEN status_enum = 1 THEN 1 ELSE 0 END) > -- 进库次数
|
||||
SUM(CASE WHEN status_enum = 2 THEN 1 ELSE 0 END) -- 出库次数
|
||||
AND (trace_no) IN (SELECT trace_no
|
||||
FROM adm_trace_no_manage
|
||||
WHERE item_table = #{itemTable}
|
||||
AND item_id = #{itemId}
|
||||
AND location_id = #{locationId}
|
||||
AND lot_number = #{lotNumber}
|
||||
AND delete_flag = '0'
|
||||
GROUP BY trace_no
|
||||
HAVING SUM(CASE WHEN status_enum = 1 THEN 1 ELSE 0 END) > -- 进库次数
|
||||
SUM(CASE WHEN status_enum = 2 THEN 1 ELSE 0 END) -- 出库次数
|
||||
)
|
||||
AND delete_flag = '0'
|
||||
GROUP BY item_table,
|
||||
@@ -34,4 +33,22 @@
|
||||
lot_number,
|
||||
trace_no
|
||||
</select>
|
||||
|
||||
<select id="tracePatient" resultType="com.openhis.administration.dto.TracePatientInfoDto">
|
||||
SELECT T2.name,
|
||||
T2.gender_enum,
|
||||
T2.birth_date,
|
||||
T2.phone,
|
||||
T3.create_time AS register_time
|
||||
FROM med_medication_dispense T1
|
||||
LEFT JOIN adm_patient T2 ON T2.ID = T1.patient_id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN adm_encounter T3 ON T3.ID = T1.encounter_id
|
||||
AND T3.delete_flag = '0'
|
||||
WHERE T1.medication_id = #{ medId }
|
||||
<if test="dispenseStatus != null">
|
||||
AND T1.status_enum = #{dispenseStatus}
|
||||
</if>
|
||||
AND T1.trace_no = #{traceNo}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -44,7 +44,7 @@
|
||||
</select>
|
||||
<!-- 根据关键字查询 如果关键字为空,查询10条,否则返回查询到的所有 -->
|
||||
<select id="searchMedListByKeyWord" resultType="com.openhis.medication.dto.AdjustPriceMedListDto">
|
||||
select med.id as targetId, med_def.name as name, med.total_volume as volume, details.amount as
|
||||
select med_def.id as targetId, med_def.name as name, med.total_volume as volume, details.amount as
|
||||
originRetailPrice,def_details.amount as originBuyingPrice,med_def.bus_no as busNo,med_def.min_unit_code as unitCode
|
||||
from med_medication med
|
||||
inner join med_medication_definition med_def on med.medication_def_id = med_def.id
|
||||
|
||||
Reference in New Issue
Block a user