医嘱查询代码初始化

This commit is contained in:
Wang.Huan
2025-03-14 18:01:00 +08:00
parent 1cd51b8c09
commit 4e1413521f
11 changed files with 414 additions and 1 deletions

View File

@@ -1,8 +1,14 @@
package com.openhis.web.doctorstation.appservice;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.openhis.web.doctorstation.dto.AdviceBaseDto;
/**
* 医生站-医嘱/处方 应用Service
*/
public interface IDoctorStationAdviceAppService {
IPage<AdviceBaseDto> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, String searchKey, Long locationId,
Integer pageNo, Integer pageSize);
}

View File

@@ -1,8 +1,13 @@
package com.openhis.web.doctorstation.appservice.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.openhis.web.doctorstation.appservice.IDoctorStationAdviceAppService;
import com.openhis.web.doctorstation.dto.AdviceBaseDto;
import com.openhis.web.doctorstation.mapper.DoctorStationAdviceAppMapper;
/**
* 医生站-医嘱/处方 应用实现类
@@ -10,4 +15,23 @@ import com.openhis.web.doctorstation.appservice.IDoctorStationAdviceAppService;
@Service
public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAppService {
@Resource
DoctorStationAdviceAppMapper doctorStationAdviceAppMapper;
/**
*
* @param adviceBaseDto
* @param searchKey
* @param locationId
* @param pageNo
* @param pageSize
* @return
*/
@Override
public IPage<AdviceBaseDto> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto, String searchKey, Long locationId,
Integer pageNo, Integer pageSize) {
return null;
}
}

View File

@@ -3,9 +3,15 @@
*/
package com.openhis.web.doctorstation.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.core.common.core.domain.R;
import com.openhis.web.doctorstation.appservice.IDoctorStationAdviceAppService;
import com.openhis.web.doctorstation.dto.AdviceBaseDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -18,4 +24,15 @@ import lombok.extern.slf4j.Slf4j;
@AllArgsConstructor
public class DoctorStationAdviceController {
private final IDoctorStationAdviceAppService iDoctorStationAdviceAppService;
@GetMapping(value = "/advice-base-info")
public R<?> getAdviceBaseInfo(AdviceBaseDto adviceBaseDto,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "locationId") Long locationId,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
return null;
}
}

View File

@@ -0,0 +1,114 @@
package com.openhis.web.doctorstation.dto;
import java.util.List;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 医嘱基础 dto
*/
@Data
@Accessors(chain = true)
public class AdviceBaseDto {
/** 医嘱类型 */
private String adviceType; // 1:药品 , 2: 耗材 , 3:检查检验
/** 医嘱定义ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long adviceDefinitionId;
/** 医嘱名称 */
private String adviceName;
/**
* 医嘱编码
*/
private String adviceBusNo;
/** 拼音码 */
private String pyStr;
/** 五笔码 */
private String wbStr;
/** 医保编码 */
private String ybNo;
/** 商品名称 */
private String productName;
/** 包装单位 */
@Dict(dictCode = "unit_code")
private String unitCode;
private String unitCode_dictText;
/** 最小单位 */
@Dict(dictCode = "unit_code")
private String minUnitCode;
private String minUnitCode_dictText;
/**
* 规格
*/
private String volume;
/**
* 用法
*/
@Dict(dictCode = "method_code")
private String methodCode;
private String methodCode_dictText;
/**
* 使用频次
*/
@Dict(dictCode = "rate_code")
private String rateCode;
private String rateCode_dictText;
/**
* 单次剂量
*/
private String dose;
/** 剂量单位 */
@Dict(dictCode = "unit_code")
private String doseUnitCode;
private String doseUnitCode_dictText;
/**
* 供应商
*/
private String supplier;
/**
* 生产厂家
*/
private String manufacturer;
/** 费用定价主表ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long chargeItemDefinitionId;
/**
* 医嘱对应表名
*/
private String adviceTableName;
/**
* 医嘱库存集合
*/
private List<AdviceInventoryDto> inventoryList;
/**
* 医嘱价格集合
*/
private List<AdvicePriceDto> priceList;
}

View File

@@ -0,0 +1,50 @@
package com.openhis.web.doctorstation.dto;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 医嘱库存 dto
*/
@Data
@Accessors(chain = true)
public class AdviceInventoryDto {
/** 物理表名 */
private String itemTable;
/** 实例id */
@JsonSerialize(using = ToStringSerializer.class)
private Long itemId;
/** 当前库存数量(包装单位) */
private BigDecimal baseQuantity;
/** 包装单位 */
@Dict(dictCode = "unit_code")
private String baseUnitCode;
private String baseUnitCode_dictText;
/** 当前库存数量(最小单位) */
private BigDecimal minQuantity;
/** 最小单位 */
@Dict(dictCode = "unit_code")
private String minUnitCode;
private String minUnitCode_dictText;
/** 产品批号 */
private String lotNumber;
/**
* 库房名称
*/
private String locationName;
}

View File

@@ -0,0 +1,36 @@
package com.openhis.web.doctorstation.dto;
import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 医嘱价格 dto
*/
@Data
@Accessors(chain = true)
public class AdvicePriceDto {
/**
* 费用定价名称
*/
private String chargeName;
/** 费用定价主表ID */
@JsonSerialize(using = ToStringSerializer.class)
private Long definitionId;
/** 命中条件 */
private String conditionCode;
/** 命中值 */
private String conditionValue;
/** 价格 */
private BigDecimal price;
}

View File

@@ -1,11 +1,33 @@
package com.openhis.web.doctorstation.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.doctorstation.dto.AdviceBaseDto;
/**
* 医生站-医嘱/处方 应用Mapper
*/
@Repository
public interface DoctorStationAdviceAppMapper {
/**
* 查询医嘱信息
*
* @param page 分页参数
* @param medicationTableName 药品定义表名
* @param deviceTableName 耗材定义表名
* @param activityTableName 诊疗定义表名
* @param queryWrapper 查询条件
* @return 医嘱信息
*/
IPage<AdviceBaseDto> getAdviceBaseInfo(@Param("page") Page<AdviceBaseDto> page,
@Param("medicationTableName") String medicationTableName, @Param("deviceTableName") String deviceTableName,
@Param("activityTableName") String activityTableName,
@Param(Constants.WRAPPER) QueryWrapper<AdviceBaseDto> queryWrapper);
}

View File

@@ -4,5 +4,116 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationAdviceAppMapper">
<select id="getAdviceBaseInfo" resultType="com.openhis.web.doctorstation.dto.AdviceBaseDto">
SELECT abi.tenant_id,
abi.advice_type,
abi.advice_definition_id,
abi.advice_name,
abi.advice_bus_no,
abi.py_str,
abi.wb_str,
abi.yb_no,
abi.product_name,
abi.unit_code,
abi.min_unit_code,
abi.volume,
abi.method_code,
abi.rate_code,
abi.dose,
abi.dose_unit_code,
abi.supplier,
abi.manufacturer,
abi.charge_item_definition_id,
abi.advice_table_name
from (
SELECT T1.tenant_id,
'1' AS advice_type,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
T1.merchandise_name AS product_name,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T2.total_volume AS volume,
T2.method_code AS method_code,
T2.rate_code AS rate_code,
CAST(T2.dose AS TEXT) AS dose,
T2.dose_unit_code AS dose_unit_code,
T3.NAME AS supplier,
T4.NAME AS manufacturer,
T5.id AS charge_item_definition_id,
T5.instance_table AS advice_table_name
FROM med_medication_definition AS t1
LEFT JOIN med_medication AS T2 ON T2.medication_def_id = T1.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_supplier AS T3 ON T3.ID = T1.supply_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier AS T4 ON T4.ID = T1.manufacturer_id
AND T4.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T5 ON T5.instance_id = T1.ID
AND T5.delete_flag = '0'
AND T5.instance_table = #{medicationTableName}
WHERE T1.delete_flag = '0'
UNION ALL
SELECT T1.tenant_id,
'2' AS advice_type,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.SIZE AS volume,
'' AS method_code,
'' AS rate_code,
'' AS dose,
'' AS dose_unit_code,
T2.NAME AS supplier,
T3.NAME AS manufacturer,
T4.id AS charge_item_definition_id,
T4.instance_table AS advice_table_name
FROM adm_device_definition AS T1
LEFT JOIN adm_supplier AS T2 ON T2.ID = T1.supply_id
AND T2.delete_flag = '0'
LEFT JOIN adm_supplier AS T3 ON T3.ID = T1.manufacturer_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T4 ON T4.instance_id = T1.ID
AND T4.delete_flag = '0'
AND T4.instance_table = #{deviceTableName}
WHERE T1.delete_flag = '0'
UNION ALL
SELECT T1.tenant_id,
'3' AS advice_type,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
'' AS unit_code,
'' AS min_unit_code,
'' AS volume,
'' AS method_code,
'' AS rate_code,
'' AS dose,
'' AS dose_unit_code,
'' AS supplier,
'' AS manufacturer,
T2.ID AS charge_item_definition_id,
T2.instance_table AS advice_table_name
FROM wor_activity_definition AS T1
LEFT JOIN adm_charge_item_definition AS T2 ON T2.instance_id = T1.ID
AND T2.delete_flag = '0'
AND T2.instance_table = #{activityTableName}
WHERE T1.delete_flag = '0') AS abi
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -130,4 +130,15 @@ public class CommonConstants {
String TCM_DIAGNOSIS = "中医诊断";
}
/**
* sql条件常量
*/
public interface SqlCondition {
/**
* 关于库存的表名str
*/
String ABOUT_INVENTORY_TABLE_STR =
"'med_medication_definition', 'adm_device_definition', 'wor_activity_definition'";
}
}

View File

@@ -1,12 +1,13 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ActivityDefCategory {
public enum ActivityDefCategory implements HisEnumInterface {
MEDICAL_SERVICE_ITEM(1, "medical_service_item", "医疗服务项"),
TREATMENT_SURGERY(2, "treatment_surgery", "手术与治疗");

View File

@@ -0,0 +1,21 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 命中条件枚举
*/
@Getter
@AllArgsConstructor
public enum ConditionCode implements HisEnumInterface {
UNIT_PRODUCT_BATCH_NUM(1, "unit_product_batch_num", "单位,产品批号");
@EnumValue
private final Integer value;
private final String code;
private final String info;
}