Merge branch 'master' of codeup.aliyun.com:61c0318acd8b75daa5a125f7/medical/openhis

This commit is contained in:
Zhang.YC
2025-02-27 15:46:27 +08:00
16 changed files with 194 additions and 63 deletions

View File

@@ -3,21 +3,14 @@
*/
package com.openhis.web.basicservice.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.domain.HealthcareService;
import com.openhis.administration.domain.Location;
import com.openhis.administration.mapper.LocationMapper;
import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.administration.service.IHealthcareServiceService;
import com.openhis.common.enums.AccountStatus;
import com.openhis.common.enums.WhetherContainUnknown;
import com.openhis.common.utils.HisPageUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.medication.domain.Medication;
import com.openhis.medication.domain.MedicationQueryDto;
import com.openhis.web.basicservice.dto.HealthcareServiceAddOrUpdateParam;
import com.openhis.web.basicservice.dto.HealthcareServiceInitDto;
import com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper;
@@ -26,8 +19,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -61,7 +52,7 @@ public class HealthcareServiceController {
.map(status -> new HealthcareServiceInitDto.activeFlagOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
healthcareServiceInitDto.setActiveFlagOptions(activeFlagOptions);
// 构建查询条件
/* // 构建查询条件
QueryWrapper<Location> queryWrapper = HisQueryUtils.buildQueryWrapper(null, searchKey,
new HashSet<>(Arrays.asList("name")), null);
Page<Location> LocationPage = HisPageUtils.selectPage(
@@ -71,7 +62,7 @@ public class HealthcareServiceController {
List<HealthcareServiceInitDto.locationIdOption> locationIdOptions = LocationList.stream()
.map(location -> new HealthcareServiceInitDto.locationIdOption(location.getId(), location.getName()))
.collect(Collectors.toList());
healthcareServiceInitDto.setLocationIdOptions(locationIdOptions);
healthcareServiceInitDto.setLocationIdOptions(locationIdOptions);*/
// 是否需要预约
List<HealthcareServiceInitDto.appointmentRequiredFlagOption> appointmentRequiredFlagOptions = Stream.of(WhetherContainUnknown.values())
.map(wh -> new HealthcareServiceInitDto.appointmentRequiredFlagOption(wh.getValue(), wh.getInfo()))

View File

@@ -14,7 +14,7 @@ public class HealthcareServiceInitDto {
private List<activeFlagOption> activeFlagOptions;
private List<locationIdOption> locationIdOptions;
//private List<locationIdOption> locationIdOptions;
private List<appointmentRequiredFlagOption> appointmentRequiredFlagOptions;
@@ -32,9 +32,9 @@ public class HealthcareServiceInitDto {
}
}
/**
/* *//**
* 位置信息
*/
*//*
@Data
public static class locationIdOption {
private Long value;
@@ -44,7 +44,7 @@ public class HealthcareServiceInitDto {
this.value = value;
this.label = label;
}
}
}*/
/**
* 是否需要预约

View File

@@ -10,11 +10,6 @@ import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import com.openhis.administration.domain.Location;
import com.openhis.common.enums.ConditionDefinitionSource;
import com.openhis.web.basedatamanage.dto.OrganizationQueryDto;
import com.openhis.web.basicservice.dto.HealthcareServiceInitDto;
import com.openhis.web.datadictionary.dto.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -22,15 +17,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.core.domain.entity.SysDictData;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.bean.BeanUtils;
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.utils.HisPageUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentDto;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentInitDto;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentSelParam;
import com.openhis.web.datadictionary.dto.DiagnosisTreatmentUpDto;
import com.openhis.workflow.domain.ActivityDefinition;
import com.openhis.workflow.mapper.ActivityDefinitionMapper;
import com.openhis.workflow.service.IActivityDefinitionService;
@@ -52,6 +54,7 @@ public class DiagnosisTreatmentController {
private final IActivityDefinitionService iActivityDefinitionService;
private final ActivityDefinitionMapper activityDefinitionMapper;
private final IOrganizationService iOrganizationService;
private final ISysDictTypeService iSysDictTypeService;
/**
* 诊疗目录初期查询
@@ -63,19 +66,51 @@ public class DiagnosisTreatmentController {
DiagnosisTreatmentInitDto diagnosisTreatmentInitDto = new DiagnosisTreatmentInitDto();
// 获取状态
List<DiagnosisTreatmentInitDto.statusEnumOption> statusEnumOptions = Stream.of(PublicationStatus.values())
.map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
.map(status -> new DiagnosisTreatmentInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setStatusFlagOptions(statusEnumOptions);
// 获取执行科室
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Organization::getTypeEnum, OrganizationType.HOSPITAL_DEPARTMENT);
List<Organization> organizations = iOrganizationService.list(queryWrapper);
List<DiagnosisTreatmentInitDto.exeOrganization> exeOrganizations = organizations.stream()
.map(exeOrg -> new DiagnosisTreatmentInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName()))
.collect(Collectors.toList());
.map(exeOrg -> new DiagnosisTreatmentInitDto.exeOrganization(exeOrg.getId(), exeOrg.getName()))
.collect(Collectors.toList());
diagnosisTreatmentInitDto.setExeOrganizations(exeOrganizations);
// 获取诊疗分类
// 查询医疗服务项类型
List<SysDictData> medical_service_items =
iSysDictTypeService.selectDictDataByType(ActivityDefCategory.MEDICAL_SERVICE_ITEM.getCode());
// 获取医疗服务项List
List<DiagnosisTreatmentInitDto.diseaseTreatmentType> diseaseTreatmentCategoryList = medical_service_items
.stream().map(status -> new DiagnosisTreatmentInitDto.diseaseTreatmentType(status.getDictValue(),
status.getDictLabel()))
.collect(Collectors.toList());
List<DiagnosisTreatmentInitDto.diseaseTreatmentCategory> diseaseTreatmentCategories = new ArrayList<>();
DiagnosisTreatmentInitDto.diseaseTreatmentCategory diseaseTreatmentCategory =
new DiagnosisTreatmentInitDto.diseaseTreatmentCategory(ActivityDefCategory.MEDICAL_SERVICE_ITEM.getValue(),
ActivityDefCategory.MEDICAL_SERVICE_ITEM.getInfo());
diseaseTreatmentCategory.setChildren(diseaseTreatmentCategoryList);
diseaseTreatmentCategories.add(diseaseTreatmentCategory);
diagnosisTreatmentInitDto.setDiseaseTreatmentCategoryList(diseaseTreatmentCategories);
// 查询手术与治疗类型
List<SysDictData> medical_service_items2 =
iSysDictTypeService.selectDictDataByType(ActivityDefCategory.TREATMENT_SURGERY.getCode());
// 获取手术与治疗List
List<DiagnosisTreatmentInitDto.diseaseTreatmentType> diseaseTreatmentCategoryList2 = medical_service_items2
.stream().map(status -> new DiagnosisTreatmentInitDto.diseaseTreatmentType(status.getDictValue(),
status.getDictLabel()))
.collect(Collectors.toList());
DiagnosisTreatmentInitDto.diseaseTreatmentCategory diseaseTreatmentCategory2 =
new DiagnosisTreatmentInitDto.diseaseTreatmentCategory(ActivityDefCategory.TREATMENT_SURGERY.getValue(),
ActivityDefCategory.TREATMENT_SURGERY.getInfo());
diseaseTreatmentCategory2.setChildren(diseaseTreatmentCategoryList2);
diseaseTreatmentCategories.add(diseaseTreatmentCategory2);
diagnosisTreatmentInitDto.setDiseaseTreatmentCategoryList(diseaseTreatmentCategories);
return R.ok(diagnosisTreatmentInitDto);
}

View File

@@ -6,7 +6,10 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.core.common.utils.poi.ExcelUtil;
import com.core.system.domain.SysOperLog;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -208,14 +211,26 @@ public class MedicationManageController {
return null;
}
/**
* 药品目录导出
*
* @param medicationManageDto 药品目录
* @param searchKey 查询条件
* @param statusEnum 查询条件-状态
* @param ybMatchFlag 查询条件-是否对码
* @param categoryCode 查询条件-药品分类
* @param response
* @return
*/
@GetMapping("/information-export")
public R<?> exportDisease(@RequestBody MedicationManageDto medicationManageDto) {
public R<?> exportMedication(@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag,
@RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum,
@RequestParam(value = "categoryCode", defaultValue = "") String categoryCode, HttpServletResponse response) {
// 获取租户ID
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
List<MedicationManageDto> list = medicationManageSearchMapper.getList(searchKey,ybMatchFlag,statusEnum,categoryCode,tenantId);
ExcelUtil<MedicationManageDto> util = new ExcelUtil<>(MedicationManageDto.class);
util.exportExcel(response, list, "药品目录");
return null;
}
}

View File

@@ -16,9 +16,6 @@ public class DeviceManageSelParam {
/** 器材分类 */
private Integer categoryEnum;
/** 器材种类 */
private String typeCode;
/** 医保对码标记 */
private Integer ybMatchFlag;

View File

@@ -2,6 +2,7 @@ package com.openhis.web.datadictionary.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.enums.ActivityDefCategory;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
@@ -21,7 +22,7 @@ public class DiagnosisTreatmentDto {
private Long id;
/** 目录类别 */
private Integer categoryEnum;
private ActivityDefCategory categoryEnum;
/** 编码 */
private String busNo;
@@ -36,7 +37,7 @@ public class DiagnosisTreatmentDto {
private String wbStr;
/** 类型 */
private Integer typeEnum;
private String typeCode;
/** 使用单位 */
private String permittedUnitCode;

View File

@@ -40,7 +40,7 @@ public class DiagnosisTreatmentInitDto {
public static class diseaseTreatmentCategory {
private Integer value;
private String info;
List<diseaseTreatmentType> children = new ArrayList<>();
private List<diseaseTreatmentType> children = new ArrayList<>();
public diseaseTreatmentCategory(Integer value, String info) {
this.value = value;
@@ -53,11 +53,11 @@ public class DiagnosisTreatmentInitDto {
*/
@Data
public static class diseaseTreatmentType {
private Integer value;
private String value;
private String info;
List<diseaseTreatmentType> children = new ArrayList<>();
private List<diseaseTreatmentType> children = new ArrayList<>();
public diseaseTreatmentType(Integer value, String info) {
public diseaseTreatmentType(String value, String info) {
this.value = value;
this.info = info;
}

View File

@@ -18,7 +18,7 @@ public class DiagnosisTreatmentSelParam {
private Integer categoryEnum;
/** 类型 */
private Integer typeEnum;
private String typeCode;
/** 医保对码标记 */
private Integer ybMatchFlag;

View File

@@ -4,6 +4,7 @@ import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.enums.ActivityDefCategory;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -21,7 +22,7 @@ public class DiagnosisTreatmentUpDto {
private Long id;
/** 目录类别 */
private Integer categoryEnum;
private ActivityDefCategory categoryEnum;
/** 编码 */
@NotBlank(message = "项目编码不能为空")
@@ -38,7 +39,7 @@ public class DiagnosisTreatmentUpDto {
private String wbStr;
/** 类型 */
private Integer typeEnum;
private String typeCode;
/** 使用单位 */
private String permittedUnitCode;

View File

@@ -55,4 +55,7 @@ public interface MedicationManageSearchMapper extends BaseMapper<ChargeItemDefin
* @return
*/
MedicationManageDto getOne(@Param("id") Long id, @Param("tenantId") Integer tenantId);
List<MedicationManageDto> getList(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag,
@Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode,@Param("tenantId") Integer tenantId);
}

View File

@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.core.common.utils.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -11,10 +12,6 @@ import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.enums.AssignSeqEnum;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.StringUtils;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.Patient;
import com.openhis.administration.service.IPatientService;
@@ -183,8 +180,8 @@ public class PatientInformationController {
// 设置五笔首拼
patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patient.getName()));
// 设置地址
String fullAddress = stringUtils.joinStrings(patient.getAddress(), patient.getAddressProvince(),
patient.getAddressCity(), patient.getAddressDistrict(), patient.getAddressStreet());
String fullAddress = stringUtils.joinStrings(patient.getAddressProvince(),
patient.getAddressCity(), patient.getAddressDistrict(), patient.getAddressStreet(),patient.getAddress());
patient.setAddress(fullAddress);
// 调用服务层保存病人信息
@@ -215,8 +212,8 @@ public class PatientInformationController {
// 设置五笔首拼
patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patient.getName()));
// 设置地址
String fullAddress = stringUtils.joinStrings(patient.getAddress(), patient.getAddressProvince(),
patient.getAddressCity(), patient.getAddressDistrict(), patient.getAddressStreet());
String fullAddress = stringUtils.joinStrings(patient.getAddressProvince(),
patient.getAddressCity(), patient.getAddressDistrict(), patient.getAddressStreet(),patient.getAddress());
patient.setAddress(fullAddress);
// 调用服务层更新病人信息

View File

@@ -35,19 +35,19 @@ public class PatientInformationDto {
private String busNo;
/** 性别编码 */
private AdministrativeGender genderEnum;
private Integer genderEnum;
/** 生日 */
private Date birthDate;
/** 死亡时间 */
private Date deceasedDate;
private String deceasedDate;
/** 婚姻状态 */
private MaritalStatus maritalStatusEnum;
private Integer maritalStatusEnum;
/** 职业编码 */
private OccupationType prfsEnum;
private Integer prfsEnum;
/** 电话 */
private String phone;
@@ -83,10 +83,10 @@ public class PatientInformationDto {
private String wbStr;
/** 血型ABO */
private String bloodAbo;
private Integer bloodAbo;
/** 血型RH */
private String bloodRh;
private Integer bloodRh;
/** 工作单位 */
private String workCompany;

View File

@@ -168,4 +168,80 @@
</if>
</where>
</select>
<select id="getList" resultType="com.openhis.web.datadictionary.dto.MedicationManageDto">
SELECT T2.id,
T2.medication_def_id,
T2.status_enum,
T2.org_id,
T2.dose_form_code,
T2.total_volume,
T2.ingredient_item,
T2.active_flag,
T2.lot_number,
T2.effective_date,
T2.expiration_date,
T2.method_code,
T2.rate_code,
T2.dose,
T2.dose_unit_code,
T2.max_unit,
T2.definition,
T1.bus_no,
T1.name,
T1.domain_enum,
T1.version,
T1.name_en,
T1.py_str,
T1.wb_str,
T1.category_code,
T1.merchandise_name,
T1.merchandise_py_str,
T1.merchandise_wb_str,
T1.unit_code,
T1.min_unit_code,
T1.comprised_text,
T1.ingredient,
T1.part_percent,
T1.dose_from,
T1.approval_number,
T1.yb_match_flag,
T1.yb_no,
T1.pharmacology_category_code,
T1.skin_test_flag,
T1.inject_flag,
T1.manufacturer_id,
T1.supply_id,
T1.restricted_flag,
T1.restricted_scope,
T1.children_flag,
T1.characteristic
FROM med_medication_definition T1
LEFT JOIN med_medication T2 on T1.id = T2.medication_def_id
<where>
T1.delete_flag = '0'
<if test="searchKey!=null and searchKey!='' ">
AND ( T1.name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.name_en LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.bus_no LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%'))
</if>
<if test="ybMatchFlag!= -1">
AND T1.yb_match_flag = #{ybMatchFlag}
</if>
<if test="statusEnum!= -1">
AND T2.status_enum = #{statusEnum}
</if>
<if test="categoryCode!=null and categoryCode!='' ">
AND T1.category_code = #{categoryCode}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where>
ORDER BY T1.bus_no
</select>
</mapper>

View File

@@ -0,0 +1,18 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ActivityDefCategory {
MEDICAL_SERVICE_ITEM(1, "medical_service_item", "医疗服务项"),
TREATMENT_SURGERY(2, "treatment_surgery", "手术与治疗");
@EnumValue
private final Integer value;
private final String code;
private final String info;
}

View File

@@ -1,16 +1,13 @@
package com.openhis.administration.domain;
import java.math.BigDecimal;
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.AdministrativeGender;
import com.openhis.common.enums.MaritalStatus;
import com.openhis.common.enums.OccupationType;
import com.openhis.common.enums.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -95,10 +92,10 @@ public class Patient extends HisBaseEntity {
private String wbStr;
/** 血型ABO */
private String bloodAbo;
private BloodTypeABO bloodAbo;
/** 血型RH */
private String bloodRh;
private BloodTypeRH bloodRh;
/** 工作单位 */
private String workCompany;
@@ -124,5 +121,4 @@ public class Patient extends HisBaseEntity {
/** 机构Id */
private Long organizationId;
}

View File

@@ -4,6 +4,7 @@ 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.ActivityDefCategory;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
@@ -27,7 +28,7 @@ public class ActivityDefinition extends HisBaseEntity {
private Long id;
/** 目录类别 */
private Integer categoryEnum;
private ActivityDefCategory categoryEnum;
/** 编码 */
private String busNo;
@@ -42,7 +43,7 @@ public class ActivityDefinition extends HisBaseEntity {
private String wbStr;
/** 类型 */
private Integer typeEnum;
private String typeCode;
/** 使用单位 */
private String permittedUnitCode;