Merge branch 'master' of https://codeup.aliyun.com/61c0318acd8b75daa5a125f7/medical/openhis
# Conflicts: # openhis-server/openhis-common/src/main/java/com/openhis/common/constant/PromptMsgConstant.java # openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemService.java
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.openhis.web.basedatamanage.appservice;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.web.basedatamanage.dto.LocationQueryDto;
|
||||
|
||||
/**
|
||||
* Location 应该服务类
|
||||
*/
|
||||
public interface ILocationAppService {
|
||||
// 查询位置树
|
||||
Page<LocationQueryDto> getLocationTree(Integer formKey, Integer pageNo, Integer pageSize);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.openhis.web.basedatamanage.appservice;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.web.basedatamanage.dto.OrganizationQueryDto;
|
||||
|
||||
/**
|
||||
* Organization 应该服务类
|
||||
*/
|
||||
public interface IOrganizationAppService {
|
||||
// 查询机构树
|
||||
Page<OrganizationQueryDto> getOrganizationTree(Integer pageNo, Integer pageSize);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.openhis.web.basedatamanage.appservice.impl;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import com.openhis.common.enums.LocationBedStatus;
|
||||
import com.openhis.common.enums.LocationMode;
|
||||
import com.openhis.common.enums.LocationStatus;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.administration.domain.Location;
|
||||
import com.openhis.administration.service.ILocationService;
|
||||
import com.openhis.common.enums.LocationForm;
|
||||
import com.openhis.common.utils.EnumUtils;
|
||||
import com.openhis.web.basedatamanage.appservice.ILocationAppService;
|
||||
import com.openhis.web.basedatamanage.dto.LocationQueryDto;
|
||||
|
||||
@Service
|
||||
public class ILocationAppServiceImpl implements ILocationAppService {
|
||||
|
||||
@Resource
|
||||
ILocationService locationService;
|
||||
|
||||
@Override
|
||||
public Page<LocationQueryDto> getLocationTree(Integer formKey, Integer pageNo, Integer pageSize) {
|
||||
|
||||
QueryWrapper<Location> queryWrapper = new QueryWrapper<>();
|
||||
if (formKey != null) {
|
||||
queryWrapper.eq("form_enum", formKey);
|
||||
}
|
||||
|
||||
// 查询位置列表
|
||||
Page<Location> page = locationService.page(new Page<>(pageNo, pageSize), queryWrapper);
|
||||
List<Location> locationList = page.getRecords();
|
||||
// 将位置列表转为树结构
|
||||
List<LocationQueryDto> locationTree = buildTree(locationList);
|
||||
Page<LocationQueryDto> locationQueryDtoPage = new Page<>(pageNo, pageSize, page.getTotal());
|
||||
locationQueryDtoPage.setRecords(locationTree);
|
||||
|
||||
locationQueryDtoPage.getRecords().forEach(e -> {
|
||||
// 物理形式枚举回显赋值
|
||||
e.setFormEnum_enumText(EnumUtils.getInfoByValue(LocationForm.class, e.getFormEnum()));
|
||||
// 状态编码回显赋值
|
||||
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(LocationStatus.class, e.getStatusEnum()));
|
||||
// 操作状态回显赋值
|
||||
e.setOperationalEnum_enumText(EnumUtils.getInfoByValue(LocationBedStatus.class, e.getOperationalEnum()));
|
||||
// 模式编码回显赋值
|
||||
e.setModeEnum_enumText(EnumUtils.getInfoByValue(LocationMode.class, e.getModeEnum()));
|
||||
});
|
||||
|
||||
return locationQueryDtoPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将位置列表转换为树结构
|
||||
*
|
||||
* @param records 位置列表
|
||||
* @return tree
|
||||
*/
|
||||
private List<LocationQueryDto> buildTree(List<Location> records) {
|
||||
// 按b_no的层级排序,确保父节点先处理
|
||||
List<Location> sortedRecords = records.stream()
|
||||
.sorted(Comparator.comparingInt(r -> r.getBusNo().split("\\.").length)).collect(Collectors.toList());
|
||||
|
||||
Map<String, LocationQueryDto> nodeMap = new HashMap<>();
|
||||
List<LocationQueryDto> tree = new ArrayList<>();
|
||||
|
||||
for (Location record : sortedRecords) {
|
||||
String bNo = record.getBusNo();
|
||||
String[] parts = bNo.split("\\.");
|
||||
LocationQueryDto node = new LocationQueryDto();
|
||||
BeanUtils.copyProperties(record, node);
|
||||
// 将当前节点加入映射
|
||||
nodeMap.put(bNo, node);
|
||||
|
||||
if (parts.length == 1) {
|
||||
// 根节点
|
||||
tree.add(node);
|
||||
} else {
|
||||
// 获取父节点的b_no(去掉最后一部分)
|
||||
String parentBNo = String.join(".", Arrays.copyOf(parts, parts.length - 1));
|
||||
LocationQueryDto parent = nodeMap.get(parentBNo);
|
||||
|
||||
if (parent != null) {
|
||||
parent.getChildren().add(node);
|
||||
} else {
|
||||
// 处理父节点不存在的情况(例如数据缺失)
|
||||
// 可根据需求调整为将节点加入根或抛出异常
|
||||
tree.add(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.openhis.web.basedatamanage.appservice.impl;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.administration.domain.Organization;
|
||||
import com.openhis.administration.service.IOrganizationService;
|
||||
import com.openhis.web.basedatamanage.appservice.IOrganizationAppService;
|
||||
import com.openhis.web.basedatamanage.dto.OrganizationQueryDto;
|
||||
|
||||
@Service
|
||||
public class IOrganizationAppServiceImpl implements IOrganizationAppService {
|
||||
|
||||
@Resource
|
||||
IOrganizationService organizationService;
|
||||
|
||||
@Override
|
||||
public Page<OrganizationQueryDto> getOrganizationTree(Integer pageNo, Integer pageSize) {
|
||||
// 查询机构列表
|
||||
Page<Organization> page = organizationService.page(new Page<>(pageNo, pageSize));
|
||||
List<Organization> organizationList = page.getRecords();
|
||||
// 将机构列表转为树结构
|
||||
List<OrganizationQueryDto> orgTree = buildTree(organizationList);
|
||||
Page<OrganizationQueryDto> orgQueryDtoPage = new Page<>(pageNo, pageSize, page.getTotal());
|
||||
orgQueryDtoPage.setRecords(orgTree);
|
||||
return orgQueryDtoPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将机构列表转换为树结构
|
||||
*
|
||||
* @param records 机构列表
|
||||
* @return tree
|
||||
*/
|
||||
private List<OrganizationQueryDto> buildTree(List<Organization> records) {
|
||||
// 按b_no的层级排序,确保父节点先处理
|
||||
List<Organization> sortedRecords = records.stream()
|
||||
.sorted(Comparator.comparingInt(r -> r.getBusNo().split("\\.").length)).collect(Collectors.toList());
|
||||
|
||||
Map<String, OrganizationQueryDto> nodeMap = new HashMap<>();
|
||||
List<OrganizationQueryDto> tree = new ArrayList<>();
|
||||
|
||||
for (Organization record : sortedRecords) {
|
||||
String bNo = record.getBusNo();
|
||||
String[] parts = bNo.split("\\.");
|
||||
OrganizationQueryDto node = new OrganizationQueryDto();
|
||||
BeanUtils.copyProperties(record, node);
|
||||
// 将当前节点加入映射
|
||||
nodeMap.put(bNo, node);
|
||||
|
||||
if (parts.length == 1) {
|
||||
// 根节点
|
||||
tree.add(node);
|
||||
} else {
|
||||
// 获取父节点的b_no(去掉最后一部分)
|
||||
String parentBNo = String.join(".", Arrays.copyOf(parts, parts.length - 1));
|
||||
OrganizationQueryDto parent = nodeMap.get(parentBNo);
|
||||
|
||||
if (parent != null) {
|
||||
parent.getChildren().add(node);
|
||||
} else {
|
||||
// 处理父节点不存在的情况(例如数据缺失)
|
||||
// 可根据需求调整为将节点加入根或抛出异常
|
||||
}
|
||||
}
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,29 +3,23 @@
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
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.utils.MessageUtils;
|
||||
import com.core.common.utils.bean.BeanUtils;
|
||||
import com.openhis.administration.domain.Location;
|
||||
import com.openhis.administration.mapper.LocationMapper;
|
||||
import com.openhis.administration.service.ILocationService;
|
||||
import com.openhis.common.constant.PromptMsgConstant;
|
||||
import com.openhis.common.enums.LocationBedStatus;
|
||||
import com.openhis.common.enums.LocationForm;
|
||||
import com.openhis.common.utils.HisPageUtils;
|
||||
import com.openhis.common.utils.HisQueryUtils;
|
||||
import com.openhis.common.enums.LocationMode;
|
||||
import com.openhis.common.enums.LocationStatus;
|
||||
import com.openhis.web.basedatamanage.appservice.ILocationAppService;
|
||||
import com.openhis.web.basedatamanage.dto.LocationQueryDto;
|
||||
import com.openhis.web.basedatamanage.dto.LocationQueryParam;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -43,6 +37,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
public class CabinetLocationController {
|
||||
|
||||
private final ILocationService locationService;
|
||||
private final ILocationAppService iLocationAppService;
|
||||
|
||||
@Autowired
|
||||
private LocationMapper locationMapper;
|
||||
@@ -50,32 +45,18 @@ public class CabinetLocationController {
|
||||
/**
|
||||
* 位置分页列表
|
||||
*
|
||||
* @param locationQueryParam 查询字段
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页码
|
||||
* @param pageSize 查询条数
|
||||
* @param request 请求数据
|
||||
* @return 位置分页列表
|
||||
*/
|
||||
@GetMapping(value = "/cabinet-location")
|
||||
public R<?> getLocationPage(LocationQueryParam locationQueryParam,
|
||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
public R<?> getLocationPage(@RequestParam(required = false, value = "formKey", defaultValue = "") Integer formKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
|
||||
// 构建查询条件
|
||||
QueryWrapper<Location> queryWrapper = HisQueryUtils.buildQueryWrapper(locationQueryParam, searchKey,
|
||||
new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), request);
|
||||
Page<LocationQueryDto> locationTree = iLocationAppService.getLocationTree(formKey, pageNo, pageSize);
|
||||
return R.ok(locationTree, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"}));
|
||||
|
||||
// 设置排序
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
|
||||
// 执行分页查询并转换为 locationQueryDtoPage
|
||||
Page<LocationQueryDto> locationQueryDtoPage =
|
||||
HisPageUtils.selectPage(locationMapper, queryWrapper, pageNo, pageSize, LocationQueryDto.class);
|
||||
|
||||
return R.ok(locationQueryDtoPage,
|
||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"位置信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,12 +69,15 @@ public class CabinetLocationController {
|
||||
|
||||
// 设置为库房
|
||||
// LocationQueryDto locationQuery = new LocationQueryDto(LocationForm.CABINET);
|
||||
Location location = new Location();
|
||||
locationQueryDto.setFormEnum(LocationForm.CABINET);
|
||||
BeanUtils.copyProperties(locationQueryDto, location);
|
||||
// locationQueryDto.setFormEnum(LocationForm.CABINET);
|
||||
// BeanUtils.copyProperties(locationQueryDto, location);
|
||||
Location location = new Location(locationQueryDto.getId(), locationQueryDto.getBusNo(),
|
||||
locationQueryDto.getName(), LocationStatus.ACTIVE.getValue(), LocationBedStatus.U.getValue(),
|
||||
LocationMode.INSTANCE.getValue(), locationQueryDto.getTypeCode(), locationQueryDto.getTypeJson(),
|
||||
locationQueryDto.getPyStr(), locationQueryDto.getWbStr(), LocationForm.CABINET.getValue(),
|
||||
locationQueryDto.getOrganizationId(), locationQueryDto.getDisplayOrder());
|
||||
|
||||
boolean saveLocationSuccess = locationService.save(location);
|
||||
|
||||
return saveLocationSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"位置信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00003, new Object[] {"位置信息"}));
|
||||
@@ -114,13 +98,18 @@ public class CabinetLocationController {
|
||||
/**
|
||||
* 编辑库房位置信息
|
||||
*
|
||||
* @param location 库房位置信息
|
||||
* @param locationQueryDto 库房位置信息
|
||||
*/
|
||||
@PutMapping("/cabinet-location")
|
||||
public R<?> editLocation(@Validated @RequestBody Location location) {
|
||||
public R<?> editLocation(@Validated @RequestBody LocationQueryDto locationQueryDto) {
|
||||
|
||||
Location location = new Location(locationQueryDto.getId(), locationQueryDto.getBusNo(),
|
||||
locationQueryDto.getName(), LocationStatus.ACTIVE.getValue(), LocationBedStatus.U.getValue(),
|
||||
LocationMode.INSTANCE.getValue(), locationQueryDto.getTypeCode(), locationQueryDto.getTypeJson(),
|
||||
locationQueryDto.getPyStr(), locationQueryDto.getWbStr(), LocationForm.CABINET.getValue(),
|
||||
locationQueryDto.getOrganizationId(), locationQueryDto.getDisplayOrder());
|
||||
|
||||
boolean updateLocationSuccess = locationService.updateById(location);
|
||||
|
||||
return updateLocationSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"位置信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"位置信息"}));
|
||||
|
||||
@@ -3,16 +3,6 @@
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.controller;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
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.utils.AssignSeqUtil;
|
||||
@@ -22,12 +12,18 @@ import com.openhis.administration.mapper.OrganizationMapper;
|
||||
import com.openhis.administration.service.IOrganizationService;
|
||||
import com.openhis.common.constant.PromptMsgConstant;
|
||||
import com.openhis.common.enums.OrganizationType;
|
||||
import com.openhis.web.basedatamanage.dto.OrgQueryParam;
|
||||
import com.openhis.web.basedatamanage.appservice.IOrganizationAppService;
|
||||
import com.openhis.web.basedatamanage.dto.OrganizationInitDto;
|
||||
import com.openhis.web.basedatamanage.dto.OrganizationQueryDto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 机构管理controller
|
||||
@@ -42,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
public class OrganizationController {
|
||||
|
||||
private final IOrganizationService organizationService;
|
||||
private final IOrganizationAppService iOrganizationAppService;
|
||||
|
||||
@Autowired
|
||||
private OrganizationMapper organizationMapper;
|
||||
@@ -63,38 +60,17 @@ public class OrganizationController {
|
||||
/**
|
||||
* 机构分页列表
|
||||
*
|
||||
* @param orgQueryParam 查询字段
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页码
|
||||
* @param pageNo 当前页码
|
||||
* @param pageSize 查询条数
|
||||
* @param request 请求数据
|
||||
* @return 机构分页列表
|
||||
*/
|
||||
@GetMapping(value = "/organization")
|
||||
public R<?> getOrganizationPage(OrgQueryParam orgQueryParam,
|
||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
||||
|
||||
// // 构建查询条件
|
||||
// QueryWrapper<Organization> queryWrapper = HisQueryUtils.buildQueryWrapper(orgQueryParam, searchKey,
|
||||
// new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), request);
|
||||
//
|
||||
// // 设置排序
|
||||
// queryWrapper.orderByDesc("create_time");
|
||||
// // 执行分页查询并转换为 orgQueryDtoPage
|
||||
// Page<OrganizationQueryDto> orgQueryDtoPage =
|
||||
// HisPageUtils.selectPage(organizationMapper, queryWrapper, pageNo, pageSize, OrganizationQueryDto.class);
|
||||
// 查询机构列表
|
||||
Page<Organization> page = organizationService.page(new Page<>(pageNo, pageSize));
|
||||
List<Organization> organizationList = page.getRecords();
|
||||
// 将机构列表转为树结构
|
||||
List<OrganizationQueryDto> orgTree = buildTree(organizationList);
|
||||
Page<OrganizationQueryDto> orgQueryDtoPage = new Page<>(pageNo, pageSize, page.getTotal());
|
||||
orgQueryDtoPage.setRecords(orgTree);
|
||||
|
||||
return R.ok(orgQueryDtoPage,
|
||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"}));
|
||||
public R<?> getOrganizationPage(
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<OrganizationQueryDto> organizationTree = iOrganizationAppService.getOrganizationTree(pageNo, pageSize);
|
||||
return R.ok(organizationTree,
|
||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[]{"机构信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,8 +92,8 @@ public class OrganizationController {
|
||||
boolean saveOrgSuccess = organizationService.save(organization);
|
||||
|
||||
return saveOrgSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"机构信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00003, new Object[] {"机构信息"}));
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[]{"机构信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00003, new Object[]{"机构信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -129,7 +105,7 @@ public class OrganizationController {
|
||||
public R<?> getOrganizationById(@Validated @RequestParam Long orgId) {
|
||||
|
||||
Organization organization = organizationService.getById(orgId);
|
||||
return R.ok(organization, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"机构信息"}));
|
||||
return R.ok(organization, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[]{"机构信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,8 +121,8 @@ public class OrganizationController {
|
||||
|
||||
boolean updateOrgSuccess = organizationService.updateById(organization);
|
||||
return updateOrgSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"机构信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"机构信息"}));
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"机构信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[]{"机构信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -166,8 +142,8 @@ public class OrganizationController {
|
||||
boolean deleteOrgSuccess = organizationService.removeByIds(orgIdList);
|
||||
|
||||
return deleteOrgSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] {"机构信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00006, new Object[] {"机构信息"}));
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[]{"机构信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00006, new Object[]{"机构信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,8 +157,8 @@ public class OrganizationController {
|
||||
boolean activeSuccess = organizationService.activeChange(orgId);
|
||||
|
||||
return activeSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"启用"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"启用"}));
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"启用"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[]{"启用"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,49 +172,9 @@ public class OrganizationController {
|
||||
boolean inActiveSuccess = organizationService.activeChange(orgId);
|
||||
|
||||
return inActiveSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"停用"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"停用"}));
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"停用"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[]{"停用"}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 将机构列表转换为树结构
|
||||
*
|
||||
* @param records 机构列表
|
||||
* @return tree
|
||||
*/
|
||||
private List<OrganizationQueryDto> buildTree(List<Organization> records) {
|
||||
// 按b_no的层级排序,确保父节点先处理
|
||||
List<Organization> sortedRecords = records.stream()
|
||||
.sorted(Comparator.comparingInt(r -> r.getBusNo().split("\\.").length)).collect(Collectors.toList());
|
||||
|
||||
Map<String, OrganizationQueryDto> nodeMap = new HashMap<>();
|
||||
List<OrganizationQueryDto> tree = new ArrayList<>();
|
||||
|
||||
for (Organization record : sortedRecords) {
|
||||
String bNo = record.getBusNo();
|
||||
String[] parts = bNo.split("\\.");
|
||||
OrganizationQueryDto node = new OrganizationQueryDto();
|
||||
BeanUtils.copyProperties(record, node);
|
||||
// 将当前节点加入映射
|
||||
nodeMap.put(bNo, node);
|
||||
|
||||
if (parts.length == 1) {
|
||||
// 根节点
|
||||
tree.add(node);
|
||||
} else {
|
||||
// 获取父节点的b_no(去掉最后一部分)
|
||||
String parentBNo = String.join(".", Arrays.copyOf(parts, parts.length - 1));
|
||||
OrganizationQueryDto parent = nodeMap.get(parentBNo);
|
||||
|
||||
if (parent != null) {
|
||||
parent.getChildren().add(node);
|
||||
} else {
|
||||
// 处理父节点不存在的情况(例如数据缺失)
|
||||
// 可根据需求调整为将节点加入根或抛出异常
|
||||
}
|
||||
}
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
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.utils.MessageUtils;
|
||||
import com.openhis.administration.domain.Practitioner;
|
||||
import com.openhis.administration.domain.PractitionerRole;
|
||||
import com.openhis.administration.mapper.PractitionerMapper;
|
||||
import com.openhis.administration.mapper.PractitionerRoleMapper;
|
||||
import com.openhis.administration.service.IPractitionerService;
|
||||
import com.openhis.common.constant.PromptMsgConstant;
|
||||
import com.openhis.common.enums.AccountStatus;
|
||||
import com.openhis.common.enums.AdministrativeGender;
|
||||
import com.openhis.common.utils.EnumUtils;
|
||||
import com.openhis.common.utils.HisPageUtils;
|
||||
import com.openhis.common.utils.HisQueryUtils;
|
||||
import com.openhis.web.basedatamanage.dto.PractSearchParam;
|
||||
import com.openhis.web.basedatamanage.dto.PractitionerDto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 员工管理Controller业务层处理
|
||||
*
|
||||
* @author
|
||||
* @date 2025-02-21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/basedatamanage/practitioner")
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
public class PractitionerController {
|
||||
|
||||
private final IPractitionerService practitionerService;
|
||||
|
||||
@Autowired
|
||||
private PractitionerMapper practitionerMapper;
|
||||
|
||||
@Autowired
|
||||
private PractitionerRoleMapper practitionerRoleMapper;
|
||||
|
||||
/**
|
||||
* 员工分页列表
|
||||
*
|
||||
* @param practSearchParam 查询条件
|
||||
* @param pageNo 当前页码
|
||||
* @param pageSize 查询条数
|
||||
* @param request 请求数据
|
||||
* @return 员工分页列表
|
||||
*/
|
||||
@GetMapping(value = "/practitioner")
|
||||
public R<?> getPractitionerPage(PractSearchParam practSearchParam,
|
||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
|
||||
|
||||
// 构建查询条件
|
||||
QueryWrapper<Practitioner> queryWrapper = HisQueryUtils.buildQueryWrapper(practSearchParam, searchKey,
|
||||
new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), request);
|
||||
|
||||
// 设置排序
|
||||
queryWrapper.orderByDesc("name");
|
||||
|
||||
// 执行分页查询并转换为 practitionerDtoPage
|
||||
Page<PractitionerDto> practitionerDtoPage =
|
||||
HisPageUtils.selectPage(practitionerMapper, queryWrapper, pageNo, pageSize, PractitionerDto.class);
|
||||
|
||||
practitionerDtoPage.getRecords().forEach(e -> {
|
||||
// 性别回显赋值
|
||||
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
|
||||
});
|
||||
|
||||
return R.ok(practitionerDtoPage,
|
||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"员工信息"}));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加员工信息
|
||||
*
|
||||
* @param practitionerDto 员工信息
|
||||
*/
|
||||
@PostMapping("/practitioner")
|
||||
public R<?> addPractitioner(@Validated @RequestBody PractitionerDto practitionerDto) {
|
||||
|
||||
// 新增practitioner信息
|
||||
Practitioner practitioner = new Practitioner();
|
||||
BeanUtils.copyProperties(practitionerDto, practitioner);
|
||||
practitioner.setActiveFlag(AccountStatus.ACTIVE.getValue());
|
||||
|
||||
boolean savePractitionerSuccess = practitionerService.save(practitioner);
|
||||
|
||||
PractitionerRole practitionerRole = new PractitionerRole();
|
||||
practitionerRole.setPractitionerId(practitioner.getId());
|
||||
practitionerRole.setName(practitioner.getName());
|
||||
Integer saveProleSuccess = practitionerRoleMapper.insert(practitionerRole);
|
||||
|
||||
boolean saveFlag;
|
||||
if (savePractitionerSuccess && saveProleSuccess == 1) {
|
||||
saveFlag = true;
|
||||
} else {
|
||||
saveFlag = false;
|
||||
}
|
||||
|
||||
return saveFlag ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"员工信息"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"员工信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取员工需要编辑的信息
|
||||
*
|
||||
* @param practitionerId 员工信息
|
||||
*/
|
||||
@GetMapping("/practitioner-getById")
|
||||
public R<?> getPractitionerById(@Validated @RequestParam Long practitionerId) {
|
||||
|
||||
Practitioner practitioner = practitionerService.getById(practitionerId);
|
||||
if (practitioner != null) {
|
||||
return R.ok(practitioner,
|
||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"员工信息"}));
|
||||
} else {
|
||||
return R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"员工信息查新失败"}));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑员工信息
|
||||
*
|
||||
* @param practitionerDto 员工信息
|
||||
*/
|
||||
@PutMapping("/practitioner")
|
||||
public R<?> editPractitioner(@Validated @RequestBody PractitionerDto practitionerDto) {
|
||||
|
||||
// 编辑practitioner信息
|
||||
Practitioner practitioner = new Practitioner();
|
||||
BeanUtils.copyProperties(practitionerDto, practitioner);
|
||||
|
||||
boolean editPractitionerSuccess = practitionerService.updateById(practitioner);
|
||||
|
||||
return editPractitionerSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"员工信息"}))
|
||||
: R.fail(PromptMsgConstant.Common.M00007, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除员工信息
|
||||
*
|
||||
* @param practitionerId 主表id
|
||||
*/
|
||||
@DeleteMapping("/practitioner")
|
||||
public R<?> deletePractitioner(@RequestParam Long practitionerId) {
|
||||
|
||||
boolean delPractitionerSuccess = practitionerService.removeById(practitionerId);
|
||||
|
||||
return delPractitionerSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] {"员工信息"}))
|
||||
: R.fail(PromptMsgConstant.Common.M00006, null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import java.util.HashSet;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import com.openhis.administration.domain.Organization;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -78,24 +77,24 @@ public class PractitionerRoleController {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加岗位信息
|
||||
*
|
||||
* @param practitionerRoleDto 岗位信息
|
||||
*/
|
||||
@PostMapping("/practitioner-role")
|
||||
public R<?> addPractitionerRole(@Validated @RequestBody PractitionerRoleDto practitionerRoleDto) {
|
||||
|
||||
// 新增practitionerRole信息
|
||||
PractitionerRole practitionerRole = new PractitionerRole();
|
||||
BeanUtils.copyProperties(practitionerRoleDto, practitionerRole);
|
||||
|
||||
boolean savePractitionerRoleSuccess = practitionerRoleService.save(practitionerRole);
|
||||
|
||||
return savePractitionerRoleSuccess
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"岗位信息"}))
|
||||
: R.fail(PromptMsgConstant.Common.M00007, null);
|
||||
}
|
||||
// /**
|
||||
// * 添加岗位信息
|
||||
// *
|
||||
// * @param practitionerRoleDto 岗位信息
|
||||
// */
|
||||
// @PostMapping("/practitioner-role")
|
||||
// public R<?> addPractitionerRole(@Validated @RequestBody CreatePractitionerRoleDto practitionerRoleDto) {
|
||||
//
|
||||
// // 新增practitionerRole信息
|
||||
// PractitionerRole practitionerRole = new PractitionerRole();
|
||||
// BeanUtils.copyProperties(practitionerRoleDto, practitionerRole);
|
||||
//
|
||||
// boolean savePractitionerRoleSuccess = practitionerRoleService.save(practitionerRole);
|
||||
//
|
||||
// return savePractitionerRoleSuccess
|
||||
// ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"岗位信息"}))
|
||||
// : R.fail(PromptMsgConstant.Common.M00007, null);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取岗位需要编辑的信息
|
||||
@@ -106,7 +105,8 @@ public class PractitionerRoleController {
|
||||
public R<?> getPractitionerRoleById(@Validated @RequestParam Long proleId) {
|
||||
|
||||
PractitionerRole practitionerRole = practitionerRoleService.getById(proleId);
|
||||
return R.ok(practitionerRole, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"岗位信息"}));
|
||||
return R.ok(practitionerRole,
|
||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00009, new Object[] {"岗位信息"}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -120,6 +120,15 @@ public class PractitionerRoleController {
|
||||
// 编辑practitionerRole信息
|
||||
PractitionerRole practitionerRole = new PractitionerRole();
|
||||
BeanUtils.copyProperties(practitionerRoleDto, practitionerRole);
|
||||
if (practitionerRole.getRole_code() == null) {
|
||||
return R.fail(PromptMsgConstant.Common.M00007, "角色编码不能为空");
|
||||
}
|
||||
if (practitionerRole.getOrgId() == null) {
|
||||
return R.fail(PromptMsgConstant.Common.M00007, "科室不能为空");
|
||||
}
|
||||
if (practitionerRole.getLocationId() == null) {
|
||||
return R.fail(PromptMsgConstant.Common.M00007, "位置不能为空");
|
||||
}
|
||||
|
||||
boolean editPractitionerRoleSuccess = practitionerRoleService.updateById(practitionerRole);
|
||||
|
||||
|
||||
@@ -3,10 +3,15 @@
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.dto;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.enums.LocationBedStatus;
|
||||
import com.openhis.common.enums.LocationForm;
|
||||
import com.openhis.common.enums.LocationMode;
|
||||
import com.openhis.common.enums.LocationStatus;
|
||||
|
||||
@@ -20,30 +25,41 @@ import lombok.experimental.Accessors;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class LocationQueryDto {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/** 编码 */
|
||||
@NotBlank(message = "位置编码不能为空")
|
||||
private String busNo;
|
||||
|
||||
/** 名称 */
|
||||
@NotBlank(message = "位置名称不能为空")
|
||||
private String name;
|
||||
|
||||
/** 状态编码 */
|
||||
private LocationStatus statusEnum;
|
||||
@NotNull(message = "状态编码不能为空")
|
||||
// private LocationStatus statusEnum;
|
||||
private Integer statusEnum;
|
||||
private String statusEnum_enumText;
|
||||
|
||||
/** 操作状态 */
|
||||
private LocationBedStatus operationalEnum;
|
||||
@NotNull(message = "操作状态不能为空")
|
||||
// private LocationBedStatus operationalEnum;
|
||||
private Integer operationalEnum;
|
||||
private String operationalEnum_enumText;
|
||||
|
||||
/** 模式编码 */
|
||||
private LocationMode modeEnum;
|
||||
@NotNull(message = "模式编码不能为空")
|
||||
// private LocationMode modeEnum;
|
||||
private Integer modeEnum;
|
||||
private String modeEnum_enumText;
|
||||
|
||||
/** 模式编码 */
|
||||
private String typeCode;
|
||||
|
||||
/** 功能编码 */
|
||||
@NotBlank(message = "功能编码不能为空")
|
||||
private String typeJson;
|
||||
|
||||
/** 拼音码 */
|
||||
@@ -53,18 +69,20 @@ public class LocationQueryDto {
|
||||
private String wbStr;
|
||||
|
||||
/** 物理形式枚举 */
|
||||
private LocationForm formEnum;
|
||||
@NotNull(message = "物理形式枚举不能为空")
|
||||
// private LocationForm formEnum;
|
||||
private Integer formEnum;
|
||||
private String formEnum_enumText;
|
||||
|
||||
/** 机构编码 */
|
||||
@NotNull(message = "机构编码不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long organizationId;
|
||||
|
||||
/** 显示顺序 */
|
||||
private Integer displayOrder;
|
||||
|
||||
// public LocationQueryDto(LocationForm form, String busNo, LocationMode mode) {
|
||||
// public LocationQueryDto(LocationForm form) {
|
||||
// this.statusEnum = LocationStatus.ACTIVE;
|
||||
// this.formEnum = form;
|
||||
// this.modeEnum = mode;
|
||||
// }
|
||||
/** 子集合 */
|
||||
private List<LocationQueryDto> children = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.openhis.common.enums.OrganizationClass;
|
||||
import com.openhis.common.enums.OrganizationType;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 科室分页查询条件
|
||||
*
|
||||
* @author
|
||||
* @date 2025-02-21
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class OrgQueryParam implements Serializable {
|
||||
|
||||
/** 活动标识 */
|
||||
private Integer activeFlag;
|
||||
|
||||
/** 机构类型枚举 */
|
||||
private OrganizationType typeEnum;
|
||||
|
||||
/** 机构分类枚举 */
|
||||
private OrganizationClass classEnum;
|
||||
|
||||
}
|
||||
@@ -8,6 +8,8 @@ import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.enums.OrganizationClass;
|
||||
import com.openhis.common.enums.OrganizationType;
|
||||
|
||||
@@ -23,7 +25,7 @@ import lombok.experimental.Accessors;
|
||||
public class OrganizationQueryDto {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/** 编码 */
|
||||
|
||||
@@ -18,9 +18,6 @@ import lombok.experimental.Accessors;
|
||||
@Accessors(chain = true)
|
||||
public class PractRoleSearchParam implements Serializable {
|
||||
|
||||
/** 名称 */
|
||||
private String name;
|
||||
|
||||
/** 专业编码枚举 */
|
||||
private Integer specialtyEnum;
|
||||
|
||||
|
||||
@@ -5,21 +5,20 @@ package com.openhis.web.basedatamanage.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.openhis.common.enums.LocationMode;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 科室分页查询条件
|
||||
* 员工分页查询条件
|
||||
*
|
||||
* @author
|
||||
* @date 2025-02-21
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class LocationQueryParam implements Serializable {
|
||||
/** 模式编码 */
|
||||
private LocationMode modeEnum;
|
||||
public class PractSearchParam implements Serializable {
|
||||
|
||||
/** 活动标记 */
|
||||
private Integer activeFlag;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.dto;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @date 2025-02-21
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PractitionerDto {
|
||||
|
||||
/** 姓名 */
|
||||
@NotBlank(message = "姓名不能为空")
|
||||
private String name;
|
||||
|
||||
/** 其他名称 */
|
||||
private String nameJson;
|
||||
|
||||
/** 性别编码 */
|
||||
// @NotBlank(message = "性别不能为空")
|
||||
// private AdministrativeGender genderEnum;
|
||||
private Integer genderEnum;
|
||||
private String genderEnum_enumText;
|
||||
|
||||
/** 生日 */
|
||||
private Date birthDate;
|
||||
|
||||
/** 死亡时间 */
|
||||
private Date deceasedDate;
|
||||
|
||||
/** 电话 */
|
||||
private String phone;
|
||||
|
||||
/** 地址 */
|
||||
private String address;
|
||||
|
||||
/** 地址省 */
|
||||
private String addressProvince;
|
||||
|
||||
/** 地址市 */
|
||||
private String addressCity;
|
||||
|
||||
/** 地址区 */
|
||||
private String addressDistrict;
|
||||
|
||||
/** 地址街道 */
|
||||
private String addressStreet;
|
||||
|
||||
/** 患者其他地址 */
|
||||
private String addressJson;
|
||||
|
||||
/** 拼音码 */
|
||||
private String pyStr;
|
||||
|
||||
/** 五笔码 */
|
||||
private String wbStr;
|
||||
|
||||
/** 患者院内编码/病历号 */
|
||||
private String busNo;
|
||||
|
||||
/** 医保码 */
|
||||
private String ybNo;
|
||||
|
||||
/** 系统用户id */
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long userId;
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright ©2023 CJB-CNIT Team. All rights reserved
|
||||
*/
|
||||
package com.openhis.web.basedatamanage.dto;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @author
|
||||
* @date 2025-02-21
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PractitionerRoleDto {
|
||||
|
||||
/** ID */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 名称 */
|
||||
private String name;
|
||||
|
||||
/** 角色编码 */
|
||||
private String role_code;
|
||||
|
||||
/** 活动标识 */
|
||||
private Integer activeFlag;
|
||||
|
||||
/** 参与者Id */
|
||||
private Long practitionerId;
|
||||
|
||||
/** 机构 */
|
||||
private Long orgId;
|
||||
|
||||
/** 位置ID */
|
||||
private Long locationId;
|
||||
|
||||
/** 服务id */
|
||||
private Long healthcareServiceId;
|
||||
|
||||
/** 专业编码枚举 */
|
||||
private Integer specialtyEnum;
|
||||
|
||||
/** 岗位类型 */
|
||||
private String typeCode;
|
||||
|
||||
/** 有效时间 */
|
||||
private String availabilityJson;
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.openhis.web.basicservice.dto;
|
||||
|
||||
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;
|
||||
@@ -15,6 +17,7 @@ public class HealthcareServiceDto {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
@@ -27,6 +30,7 @@ public class HealthcareServiceDto {
|
||||
* 提供部门ID
|
||||
*/
|
||||
@Dict(dictTable = "adm_organization",dictCode = "id",dictText = "name")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long offeredOrgId;
|
||||
private String offeredOrgId_dictText;
|
||||
|
||||
@@ -55,6 +59,7 @@ public class HealthcareServiceDto {
|
||||
* 地点
|
||||
*/
|
||||
@Dict(dictTable = "adm_location",dictCode = "id",dictText = "name")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long locationId;
|
||||
private String locationId_dictText;
|
||||
|
||||
@@ -84,6 +89,12 @@ public class HealthcareServiceDto {
|
||||
private Integer appointmentRequiredFlag;
|
||||
private String appointmentRequiredFlag_enumText;
|
||||
|
||||
/**
|
||||
* 费用定价ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long definitionId;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
|
||||
@@ -142,7 +142,7 @@ public class DiseaseManageController {
|
||||
for (Long detail : ids) {
|
||||
ConditionDefinition conditionDefinition = new ConditionDefinition();
|
||||
conditionDefinition.setId(detail);
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.RETIRED);
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.RETIRED.getValue());
|
||||
conditionDefinitionList.add(conditionDefinition);
|
||||
}
|
||||
// 更新病种信息
|
||||
@@ -165,7 +165,7 @@ public class DiseaseManageController {
|
||||
for (Long detail : ids) {
|
||||
ConditionDefinition conditionDefinition = new ConditionDefinition();
|
||||
conditionDefinition.setId(detail);
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE);
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
|
||||
conditionDefinitionList.add(conditionDefinition);
|
||||
}
|
||||
// 更新病种信息
|
||||
@@ -185,7 +185,7 @@ public class DiseaseManageController {
|
||||
ConditionDefinition conditionDefinition = new ConditionDefinition();
|
||||
BeanUtils.copyProperties(diseaseManageUpDto, conditionDefinition);
|
||||
// 新增外来病种目录
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.DRAFT);
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.DRAFT.getValue());
|
||||
return iConditionDefinitionService.addDisease(conditionDefinition)
|
||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
|
||||
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
|
||||
|
||||
@@ -15,6 +15,7 @@ import javax.validation.constraints.NotBlank;
|
||||
* @author lpt
|
||||
* @date 2025-02-25
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class DiseaseManageUpDto {
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.openhis.web.outpatientservice.appservice;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.core.common.core.domain.R;
|
||||
import com.openhis.web.basicservice.dto.HealthcareServiceDto;
|
||||
import com.openhis.web.outpatientservice.dto.*;
|
||||
|
||||
/**
|
||||
* 门诊挂号 应用Service
|
||||
*/
|
||||
public interface IOutpatientRegistrationAppService {
|
||||
|
||||
/**
|
||||
* 查询患者信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 患者信息
|
||||
*/
|
||||
Page<PatientMetadata> getPatientMetadataBySearchKey(String searchKey, Integer pageNo, Integer pageSize);
|
||||
|
||||
/**
|
||||
* 查询费用性质
|
||||
*
|
||||
* @return 费用性质
|
||||
*/
|
||||
List<ContractMetadata> getContractMetadata();
|
||||
|
||||
/**
|
||||
* 查询诊断信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 诊断信息
|
||||
*/
|
||||
Page<ConditionDefinitionMetadata> getConditionDefinitionMetadataSearchKey(String searchKey, Integer pageNo,
|
||||
Integer pageSize);
|
||||
|
||||
/**
|
||||
* 根据位置id筛选医生
|
||||
*
|
||||
* @param locationId 位置ID
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 筛选医生
|
||||
*/
|
||||
IPage<PractitionerMetadata> getPractitionerMetadataByLocationId(Long locationId, String searchKey, Integer pageNo,
|
||||
Integer pageSize);
|
||||
|
||||
/**
|
||||
* 根据机构id筛选服务项目
|
||||
*
|
||||
* @param organizationId 机构id
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 服务项目
|
||||
*/
|
||||
IPage<HealthcareServiceDto> getHealthcareMetadataByOrganizationId(Long organizationId, String searchKey,
|
||||
Integer pageNo, Integer pageSize);
|
||||
|
||||
/**
|
||||
* 保存挂号
|
||||
*
|
||||
* @param outpatientRegistrationAddParam 就诊表单信息
|
||||
* @return 结果
|
||||
*/
|
||||
R<?> saveRegister(OutpatientRegistrationAddParam outpatientRegistrationAddParam);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
package com.openhis.web.outpatientservice.appservice.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import com.openhis.common.enums.*;
|
||||
import com.openhis.common.enums.PractitionerRole;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.*;
|
||||
import com.openhis.administration.mapper.PatientMapper;
|
||||
import com.openhis.administration.service.*;
|
||||
import com.openhis.clinical.domain.ConditionDefinition;
|
||||
import com.openhis.clinical.mapper.ConditionDefinitionMapper;
|
||||
import com.openhis.common.constant.CommonConstants;
|
||||
import com.openhis.common.constant.PromptMsgConstant;
|
||||
import com.openhis.common.utils.EnumUtils;
|
||||
import com.openhis.common.utils.HisPageUtils;
|
||||
import com.openhis.common.utils.HisQueryUtils;
|
||||
import com.openhis.financial.domain.Contract;
|
||||
import com.openhis.financial.mapper.ContractMapper;
|
||||
import com.openhis.web.basicservice.dto.HealthcareServiceDto;
|
||||
import com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper;
|
||||
import com.openhis.web.outpatientservice.appservice.IOutpatientRegistrationAppService;
|
||||
import com.openhis.web.outpatientservice.dto.*;
|
||||
import com.openhis.web.outpatientservice.mapper.OutpatientRegistrationAppMapper;
|
||||
|
||||
/**
|
||||
* 门诊挂号 应用实现类
|
||||
*/
|
||||
@Service
|
||||
public class IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistrationAppService {
|
||||
|
||||
@Resource
|
||||
PatientMapper patientMapper;
|
||||
|
||||
@Resource
|
||||
ContractMapper contractMapper;
|
||||
|
||||
@Resource
|
||||
ConditionDefinitionMapper conditionDefinitionMapper;
|
||||
|
||||
@Resource
|
||||
OutpatientRegistrationAppMapper outpatientRegistrationAppMapper;
|
||||
|
||||
@Resource
|
||||
HealthcareServiceBizMapper healthcareServiceBizMapper;
|
||||
|
||||
@Resource
|
||||
IEncounterService iEncounterService;
|
||||
|
||||
@Resource
|
||||
IEncounterLocationService iEncounterLocationService;
|
||||
|
||||
@Resource
|
||||
IEncounterParticipantService iEncounterParticipantService;
|
||||
|
||||
@Resource
|
||||
IAccountService iAccountService;
|
||||
|
||||
@Resource
|
||||
IChargeItemService iChargeItemService;
|
||||
|
||||
/**
|
||||
* 门诊挂号 - 查询患者信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 患者信息
|
||||
*/
|
||||
@Override
|
||||
public Page<PatientMetadata> getPatientMetadataBySearchKey(String searchKey, Integer pageNo, Integer pageSize) {
|
||||
// 构建查询条件
|
||||
QueryWrapper<Patient> queryWrapper = HisQueryUtils.buildQueryWrapper(null, searchKey,
|
||||
new HashSet<>(Arrays.asList("id_card", "name", "py_str", "wb_str")), null);
|
||||
// 设置排序
|
||||
queryWrapper.orderByDesc("update_time");
|
||||
// 患者信息
|
||||
Page<PatientMetadata> patientMetadataPage =
|
||||
HisPageUtils.selectPage(patientMapper, queryWrapper, pageNo, pageSize, PatientMetadata.class);
|
||||
// 现有就诊过的患者id集合
|
||||
List<Long> patientIdList =
|
||||
iEncounterService.list().stream().map(e -> e.getPatientId()).collect(Collectors.toList());
|
||||
|
||||
patientMetadataPage.getRecords().forEach(e -> {
|
||||
// 性别枚举
|
||||
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
|
||||
// 计算年龄
|
||||
e.setAge(AgeCalculatorUtil.getAge(e.getBirthDate()));
|
||||
// 初复诊
|
||||
e.setFirstEnum_enumText(patientIdList.contains(e.getId()) ? EncounterType.FOLLOW_UP.getInfo()
|
||||
: EncounterType.INITIAL.getInfo());
|
||||
|
||||
});
|
||||
return patientMetadataPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询费用性质
|
||||
*
|
||||
* @return 费用性质
|
||||
*/
|
||||
@Override
|
||||
public List<ContractMetadata> getContractMetadata() {
|
||||
// TODO: Contract表的基础数据维护还没做,具体不知道状态字段的取值是什么,先查询默认值为0的数据
|
||||
List<Contract> ContractList =
|
||||
contractMapper.selectList(new LambdaQueryWrapper<Contract>().eq(Contract::getStatusEnum, 0));
|
||||
// 复制同名字段并 return
|
||||
return ContractList.stream().map(contract -> {
|
||||
ContractMetadata metadata = new ContractMetadata();
|
||||
try {
|
||||
BeanUtils.copyProperties(contract, metadata);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return metadata;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询诊断信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 诊断信息
|
||||
*/
|
||||
@Override
|
||||
public Page<ConditionDefinitionMetadata> getConditionDefinitionMetadataSearchKey(String searchKey, Integer pageNo,
|
||||
Integer pageSize) {
|
||||
// 构建查询条件
|
||||
ConditionDefinition conditionDefinition = new ConditionDefinition();
|
||||
// 查询状态是有效的
|
||||
conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
|
||||
QueryWrapper<ConditionDefinition> queryWrapper = HisQueryUtils.buildQueryWrapper(conditionDefinition, searchKey,
|
||||
new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), null);
|
||||
// 设置排序
|
||||
queryWrapper.orderByDesc("update_time");
|
||||
// 诊断信息
|
||||
Page<ConditionDefinitionMetadata> conditionDefinitionMetadataPage = HisPageUtils
|
||||
.selectPage(conditionDefinitionMapper, queryWrapper, pageNo, pageSize, ConditionDefinitionMetadata.class);
|
||||
conditionDefinitionMetadataPage.getRecords().forEach(e -> {
|
||||
// 医保标记
|
||||
e.setYbFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getYbFlag()));
|
||||
// 医保对码标记
|
||||
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getYbMatchFlag()));
|
||||
});
|
||||
return conditionDefinitionMetadataPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据位置id筛选医生
|
||||
*
|
||||
* @param locationId 位置ID
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 筛选医生
|
||||
*/
|
||||
@Override
|
||||
public IPage<PractitionerMetadata> getPractitionerMetadataByLocationId(Long locationId, String searchKey,
|
||||
Integer pageNo, Integer pageSize) {
|
||||
// 构建查询条件
|
||||
QueryWrapper<PractitionerMetadata> queryWrapper = HisQueryUtils.buildQueryWrapper(null, searchKey,
|
||||
new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), null);
|
||||
IPage<PractitionerMetadata> practitionerMetadataPage =
|
||||
outpatientRegistrationAppMapper.getPractitionerMetadataPage(new Page<>(pageNo, pageSize), locationId,
|
||||
PractitionerRole.DOCTOR.getCode(), queryWrapper);
|
||||
practitionerMetadataPage.getRecords().forEach(e -> {
|
||||
// 性别
|
||||
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
|
||||
});
|
||||
return practitionerMetadataPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据机构id筛选服务项目
|
||||
*
|
||||
* @param organizationId 机构id
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 服务项目
|
||||
*/
|
||||
@Override
|
||||
public IPage<HealthcareServiceDto> getHealthcareMetadataByOrganizationId(Long organizationId, String searchKey,
|
||||
Integer pageNo, Integer pageSize) {
|
||||
// 构建查询条件
|
||||
HealthcareServiceDto healthcareServiceDto = new HealthcareServiceDto();
|
||||
healthcareServiceDto.setOfferedOrgId(organizationId);
|
||||
QueryWrapper<HealthcareServiceDto> queryWrapper = HisQueryUtils.buildQueryWrapper(healthcareServiceDto,
|
||||
searchKey, new HashSet<>(Arrays.asList("name", "charge_name")), null);
|
||||
return healthcareServiceBizMapper.getHealthcareServicePage(new Page<>(pageNo, pageSize),
|
||||
CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存挂号
|
||||
*
|
||||
* @param outpatientRegistrationAddParam 就诊表单信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public R<?> saveRegister(OutpatientRegistrationAddParam outpatientRegistrationAddParam) {
|
||||
// 就诊管理-表单数据
|
||||
EncounterFormData encounterFormData = outpatientRegistrationAddParam.getEncounterFormData();
|
||||
// 就诊位置管理-表单数据
|
||||
EncounterLocationFormData encounterLocationFormData =
|
||||
outpatientRegistrationAddParam.getEncounterLocationFormData();
|
||||
// 就诊参数者管理-表单数据
|
||||
EncounterParticipantFormData encounterParticipantFormData =
|
||||
outpatientRegistrationAddParam.getEncounterParticipantFormData();
|
||||
// 就诊账户管理-表单数据
|
||||
AccountFormData accountFormData = outpatientRegistrationAddParam.getAccountFormData();
|
||||
// 费用项管理-表单数据
|
||||
ChargeItemFormData chargeItemFormData = outpatientRegistrationAddParam.getChargeItemFormData();
|
||||
|
||||
// 患者ID
|
||||
Long patientId = encounterFormData.getPatientId();
|
||||
// 服务项目ID
|
||||
Long serviceTypeId = encounterFormData.getServiceTypeId();
|
||||
// 校验是否重复挂号
|
||||
Integer num = outpatientRegistrationAppMapper.getNumByPatientIdAndOrganizationId(patientId, serviceTypeId);
|
||||
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.saveEncounterByRegister(encounter);
|
||||
// 保存就诊位置信息
|
||||
encounterLocationFormData.setEncounterId(encounterId);
|
||||
EncounterLocation encounterLocation = new EncounterLocation();
|
||||
BeanUtils.copyProperties(encounterLocationFormData, encounterLocation);
|
||||
iEncounterLocationService.saveEncounterLocationByRegister(encounterLocation);
|
||||
// 保存就诊参数者信息
|
||||
encounterParticipantFormData.setEncounterId(encounterId);
|
||||
EncounterParticipant encounterParticipant = new EncounterParticipant();
|
||||
BeanUtils.copyProperties(encounterParticipantFormData, 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[] {"挂号"}));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,21 +3,25 @@
|
||||
*/
|
||||
package com.openhis.web.outpatientservice.controller;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.openhis.common.enums.PriorityLevel;
|
||||
import com.openhis.web.outpatientservice.controller.appservice.IOutpatientRegistrationService;
|
||||
import com.openhis.web.outpatientservice.dto.OutpatientRegistrationInitDto;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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 java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.openhis.common.enums.LocationForm;
|
||||
import com.openhis.common.enums.PriorityLevel;
|
||||
import com.openhis.web.basedatamanage.appservice.ILocationAppService;
|
||||
import com.openhis.web.outpatientservice.appservice.IOutpatientRegistrationAppService;
|
||||
import com.openhis.web.outpatientservice.dto.OutpatientRegistrationAddParam;
|
||||
import com.openhis.web.outpatientservice.dto.OutpatientRegistrationInitDto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* 门诊挂号 controller
|
||||
*/
|
||||
@@ -27,16 +31,18 @@ import java.util.stream.Stream;
|
||||
@AllArgsConstructor
|
||||
public class OutpatientRegistrationController {
|
||||
|
||||
private final IOutpatientRegistrationService iOutpatientRegistrationService;
|
||||
private final IOutpatientRegistrationAppService iOutpatientRegistrationAppService;
|
||||
private final ILocationAppService iLocationAppService;
|
||||
|
||||
/**
|
||||
* 门诊挂号基础数据初始化
|
||||
* 基础数据初始化
|
||||
*/
|
||||
@GetMapping(value = "/init")
|
||||
public R<?> init() {
|
||||
OutpatientRegistrationInitDto outpatientRegistrationInitDto = new OutpatientRegistrationInitDto();
|
||||
// 优先级
|
||||
List<OutpatientRegistrationInitDto.priorityLevelOption> priorityLevelOptionOptions = Stream.of(PriorityLevel.values())
|
||||
List<OutpatientRegistrationInitDto.priorityLevelOption> priorityLevelOptionOptions =
|
||||
Stream.of(PriorityLevel.values())
|
||||
.map(e -> new OutpatientRegistrationInitDto.priorityLevelOption(e.getValue(), e.getInfo()))
|
||||
.collect(Collectors.toList());
|
||||
outpatientRegistrationInitDto.setPriorityLevelOptionOptions(priorityLevelOptionOptions);
|
||||
@@ -44,19 +50,88 @@ public class OutpatientRegistrationController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 门诊挂号 - 查询患者信息
|
||||
* 查询患者信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 患者信息
|
||||
*/
|
||||
@GetMapping(value = "/patient-metadata")
|
||||
public R<?> getPatientMetadata(@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R.ok(iOutpatientRegistrationService.getPatientMetadataBySearchKey(searchKey, pageNo, pageSize));
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R.ok(iOutpatientRegistrationAppService.getPatientMetadataBySearchKey(searchKey, pageNo, pageSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询费用性质
|
||||
*
|
||||
* @return 费用性质
|
||||
*/
|
||||
@GetMapping(value = "/contract-list")
|
||||
public R<?> getContractList() {
|
||||
return R.ok(iOutpatientRegistrationAppService.getContractMetadata());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询诊断信息
|
||||
*/
|
||||
@GetMapping(value = "/condition-definition-metadata")
|
||||
public R<?> getConditionDefinitionMetadata(@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R
|
||||
.ok(iOutpatientRegistrationAppService.getConditionDefinitionMetadataSearchKey(searchKey, pageNo, pageSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询就诊位置
|
||||
*
|
||||
* @param pageNo 当前页码
|
||||
* @param pageSize 查询条数
|
||||
* @return 位置分页列表
|
||||
*/
|
||||
@GetMapping(value = "/location-tree")
|
||||
public R<?> getLocationTree(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R.ok(iLocationAppService.getLocationTree(LocationForm.ROOM.getValue(), pageNo, pageSize));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据位置id筛选医生
|
||||
*/
|
||||
@GetMapping(value = "/practitioner-metadata")
|
||||
public R<?> getPractitionerMetadata(@RequestParam(value = "locationId") Long locationId,
|
||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R.ok(iOutpatientRegistrationAppService.getPractitionerMetadataByLocationId(locationId, searchKey, pageNo,
|
||||
pageSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据机构id筛选服务项目
|
||||
*/
|
||||
@GetMapping(value = "/healthcare-metadata")
|
||||
public R<?> getHealthcareMetadata(@RequestParam(value = "organizationId") Long organizationId,
|
||||
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
return R.ok(iOutpatientRegistrationAppService.getHealthcareMetadataByOrganizationId(organizationId, searchKey,
|
||||
pageNo, pageSize));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存挂号
|
||||
*
|
||||
* @param outpatientRegistrationAddParam 就诊表单信息
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping(value = "/save")
|
||||
public R<?> saveRegister(@Valid @RequestBody OutpatientRegistrationAddParam outpatientRegistrationAddParam) {
|
||||
return iOutpatientRegistrationAppService.saveRegister(outpatientRegistrationAddParam);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.openhis.web.outpatientservice.controller.appservice;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.web.outpatientservice.dto.PatientMetadata;
|
||||
|
||||
/**
|
||||
* 门诊挂号 Service
|
||||
*/
|
||||
public interface IOutpatientRegistrationService {
|
||||
|
||||
/**
|
||||
* 门诊挂号 - 查询患者信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 患者信息
|
||||
*/
|
||||
Page<PatientMetadata> getPatientMetadataBySearchKey(String searchKey, Integer pageNo, Integer pageSize);
|
||||
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
package com.openhis.web.outpatientservice.controller.appservice.impl;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.openhis.administration.domain.Patient;
|
||||
import com.openhis.administration.mapper.PatientMapper;
|
||||
import com.openhis.common.enums.AdministrativeGender;
|
||||
import com.openhis.common.utils.EnumUtils;
|
||||
import com.openhis.common.utils.HisPageUtils;
|
||||
import com.openhis.common.utils.HisQueryUtils;
|
||||
import com.openhis.web.outpatientservice.controller.appservice.IOutpatientRegistrationService;
|
||||
import com.openhis.web.outpatientservice.dto.PatientMetadata;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* 门诊挂号 实现类
|
||||
*/
|
||||
@Service
|
||||
public class IOutpatientRegistrationServiceImpl implements IOutpatientRegistrationService {
|
||||
|
||||
@Resource
|
||||
PatientMapper patientMapper;
|
||||
|
||||
/**
|
||||
* 门诊挂号 - 查询患者信息
|
||||
*
|
||||
* @param searchKey 模糊查询关键字
|
||||
* @param pageNo 当前页
|
||||
* @param pageSize 每页多少条
|
||||
* @return 患者信息
|
||||
*/
|
||||
@Override
|
||||
public Page<PatientMetadata> getPatientMetadataBySearchKey(String searchKey, Integer pageNo, Integer pageSize) {
|
||||
// 构建查询条件
|
||||
QueryWrapper<Patient> queryWrapper = HisQueryUtils.buildQueryWrapper(null,
|
||||
searchKey, new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), null
|
||||
);
|
||||
// 设置排序
|
||||
queryWrapper.orderByDesc("update_time");
|
||||
// 患者信息
|
||||
Page<PatientMetadata> patientMetadataPage = HisPageUtils.selectPage(patientMapper,
|
||||
queryWrapper, pageNo, pageSize, PatientMetadata.class);
|
||||
|
||||
patientMetadataPage.getRecords().forEach(e -> {
|
||||
// 性别枚举
|
||||
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
|
||||
});
|
||||
return patientMetadataPage;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 诊断 元数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ConditionDefinitionMetadata {
|
||||
|
||||
/** ID */
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/** 编码 */
|
||||
private String conditionCode;
|
||||
|
||||
/** 诊断名称 */
|
||||
private String name;
|
||||
|
||||
/** 医保标记 */
|
||||
private Integer ybFlag;
|
||||
private String ybFlag_enumText;
|
||||
|
||||
/** 医保编码 */
|
||||
private String ybNo;
|
||||
|
||||
/** 医保对码标记 */
|
||||
private Integer ybMatchFlag;
|
||||
private String ybMatchFlag_enumText;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 费用性质 元数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class ContractMetadata {
|
||||
/** 合同名称 */
|
||||
private String contractName;
|
||||
/** 合同编码 */
|
||||
private String busNo;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 就诊诊断 表单数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class EncounterDiagnosisFormData {
|
||||
|
||||
/**
|
||||
* 就诊ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long encounterId;
|
||||
|
||||
/**
|
||||
* 诊断ID
|
||||
*/
|
||||
@NotBlank(message = "诊断ID不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long conditionId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.enums.*;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 就诊 表单数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class EncounterFormData {
|
||||
|
||||
/**
|
||||
* 患者ID
|
||||
*/
|
||||
@NotBlank(message = "患者ID不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long patientId;
|
||||
|
||||
/**
|
||||
* 状态编码
|
||||
*/
|
||||
private Integer statusEnum;
|
||||
|
||||
/**
|
||||
* 类别编码
|
||||
*/
|
||||
private Integer classEnum;
|
||||
|
||||
/**
|
||||
* 类别医保编码
|
||||
*/
|
||||
private Integer ybClassEnum;
|
||||
|
||||
/**
|
||||
* 优先级编码
|
||||
*/
|
||||
@NotBlank(message = "优先级编码不能为空")
|
||||
private Integer priorityEnum;
|
||||
|
||||
/**
|
||||
* 分类编码
|
||||
*/
|
||||
private Integer typeEnum;
|
||||
|
||||
/**
|
||||
* 服务ID
|
||||
*/
|
||||
@NotBlank(message = "服务ID不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long serviceTypeId;
|
||||
|
||||
/**
|
||||
* 就诊对象状态
|
||||
*/
|
||||
private Integer subjectStatusEnum;
|
||||
|
||||
/**
|
||||
* 机构ID
|
||||
*/
|
||||
@NotBlank(message = "机构ID不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long organizationId;
|
||||
|
||||
/**
|
||||
* 设置默认值
|
||||
*/
|
||||
public EncounterFormData() {
|
||||
this.statusEnum = EncounterStatus.PLANNED.getValue();
|
||||
this.classEnum = EncounterClass.AMB.getValue();
|
||||
this.ybClassEnum = EncounterYbClass.ORDINARY_OUTPATIENT.getValue();
|
||||
this.typeEnum = OutpatientClass.GENERAL_OUTPATIENT_SERVICE.getValue();
|
||||
this.subjectStatusEnum = EncounterSubjectStatus.TRIAGED.getValue();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.enums.EncounterLocationStatus;
|
||||
import com.openhis.common.enums.LocationForm;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 就诊位置 表单数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class EncounterLocationFormData {
|
||||
|
||||
/**
|
||||
* 就诊ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long encounterId;
|
||||
|
||||
/**
|
||||
* 位置ID
|
||||
*/
|
||||
@NotBlank(message = "位置ID不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long locationId;
|
||||
|
||||
/** 状态枚举 */
|
||||
private Integer statusEnum;
|
||||
|
||||
/** 物理形式枚举 */
|
||||
private Integer formEnum;
|
||||
|
||||
/**
|
||||
* 设置默认值
|
||||
*/
|
||||
public EncounterLocationFormData() {
|
||||
this.statusEnum = EncounterLocationStatus.PLANNED.getValue();
|
||||
this.formEnum = LocationForm.ROOM.getValue();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.enums.ParticipantType;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 就诊参数者 表单数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class EncounterParticipantFormData {
|
||||
|
||||
/**
|
||||
* 就诊ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long encounterId;
|
||||
|
||||
/** 参与者类型 */
|
||||
private String typeCode;
|
||||
|
||||
/** 参与者ID */
|
||||
@NotBlank(message = "参与者ID不能为空")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long practitionerId;
|
||||
|
||||
/**
|
||||
* 设置默认值
|
||||
*/
|
||||
public EncounterParticipantFormData() {
|
||||
this.typeCode = ParticipantType.ADMITTER.getCode();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,19 +4,39 @@ import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 门诊挂号 新增数据
|
||||
* 门诊挂号 新增参数
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class OutpatientRegistrationAddParam {
|
||||
|
||||
// 就诊管理-表单数据
|
||||
/**
|
||||
* 就诊管理-表单数据
|
||||
*/
|
||||
private EncounterFormData encounterFormData;
|
||||
|
||||
// 就诊诊断管理-表单数据
|
||||
// /**
|
||||
// * 就诊诊断管理-表单数据
|
||||
// */
|
||||
// private EncounterDiagnosisFormData encounterDiagnosisFormData;
|
||||
|
||||
// 就诊位置管理-表单数据
|
||||
/**
|
||||
* 就诊位置管理-表单数据
|
||||
*/
|
||||
private EncounterLocationFormData encounterLocationFormData;
|
||||
|
||||
// 就诊参数者管理-表单数据
|
||||
/**
|
||||
* 就诊参数者管理-表单数据
|
||||
*/
|
||||
private EncounterParticipantFormData encounterParticipantFormData;
|
||||
|
||||
/**
|
||||
* 就诊账户管理-表单数据
|
||||
*/
|
||||
private AccountFormData accountFormData;
|
||||
/**
|
||||
* 费用项管理-表单数据
|
||||
*/
|
||||
private ChargeItemFormData chargeItemFormData;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 患者信息 元数据
|
||||
*/
|
||||
@@ -12,6 +16,7 @@ public class PatientMetadata {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
@@ -25,4 +30,30 @@ public class PatientMetadata {
|
||||
private Integer genderEnum;
|
||||
private String genderEnum_enumText;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 生日
|
||||
*/
|
||||
|
||||
private Date birthDate;
|
||||
|
||||
/**
|
||||
* 年龄
|
||||
*/
|
||||
private String age;
|
||||
|
||||
/**
|
||||
* 初复诊
|
||||
*/
|
||||
private String firstEnum_enumText;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.openhis.web.outpatientservice.dto;
|
||||
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 参与者 元数据
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class PractitionerMetadata {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
/** 姓名 */
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 性别编码
|
||||
*/
|
||||
private Integer genderEnum;
|
||||
private String genderEnum_enumText;
|
||||
|
||||
/** 拼音码 */
|
||||
private String pyStr;
|
||||
|
||||
/** 五笔码 */
|
||||
private String wbStr;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.openhis.web.outpatientservice.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.outpatientservice.dto.PractitionerMetadata;
|
||||
|
||||
/**
|
||||
* 门诊挂号 应用Mapper
|
||||
*/
|
||||
@Repository
|
||||
public interface OutpatientRegistrationAppMapper {
|
||||
/**
|
||||
* 查询医生
|
||||
*/
|
||||
IPage<PractitionerMetadata> getPractitionerMetadataPage(@Param("page") Page<PractitionerMetadata> page,
|
||||
@Param("locationId") Long locationId, @Param("RoleCode") String RoleCode,
|
||||
@Param(Constants.WRAPPER) QueryWrapper<PractitionerMetadata> queryWrapper);
|
||||
|
||||
/**
|
||||
* 根据病人id和科室id查询当日挂号次数
|
||||
*/
|
||||
Integer getNumByPatientIdAndOrganizationId(@Param("patientId") Long patientId,
|
||||
@Param("serviceTypeId") Long serviceTypeId);
|
||||
|
||||
}
|
||||
@@ -52,7 +52,7 @@ public class OutpatientRecordController {
|
||||
* @param pageSize 每页大小(默认为10)
|
||||
*/
|
||||
@GetMapping("/outpatient-record-page")
|
||||
public R<?> getPatient(@RequestParam(required = false) OutpatientRecordSearchParam outpatientRecordSearchParam,
|
||||
public R<?> getPatient(OutpatientRecordSearchParam outpatientRecordSearchParam,
|
||||
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
|
||||
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
|
||||
|
||||
@@ -25,9 +25,9 @@ public class OutpatientRecordSearchParam {
|
||||
private String doctorName;
|
||||
|
||||
/** 筛选开始时间 */
|
||||
private Date beginTime;
|
||||
private String beginTime;
|
||||
|
||||
/** 筛选结束时间 */
|
||||
private Date endTime;
|
||||
private String endTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
T3.extra_details,
|
||||
T3.contact,
|
||||
T3.appointment_required_flag,
|
||||
T3.definition_id,
|
||||
T3.charge_name,
|
||||
T3.price
|
||||
FROM
|
||||
@@ -37,12 +38,14 @@
|
||||
T1.extra_details,
|
||||
T1.contact,
|
||||
T1.appointment_required_flag,
|
||||
T2.id AS definition_id,
|
||||
T2.charge_name,
|
||||
T2.price
|
||||
FROM
|
||||
adm_healthcare_service AS T1
|
||||
LEFT JOIN adm_charge_item_definition AS T2 ON T2.instance_id = T1.ID
|
||||
AND T2.instance_table = #{tableName}
|
||||
WHERE T1.delete_flag = '0'
|
||||
ORDER BY
|
||||
T1.create_time DESC
|
||||
) AS T3
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.openhis.web.outpatientservice.mapper.OutpatientRegistrationAppMapper">
|
||||
|
||||
<select id="getPractitionerMetadataPage" resultType="com.openhis.web.outpatientservice.dto.PractitionerMetadata">
|
||||
SELECT T3.tenant_id,
|
||||
T3.ID,
|
||||
T3.NAME,
|
||||
T3.gender_enum,
|
||||
T3.py_str,
|
||||
T3.wb_str
|
||||
FROM (
|
||||
SELECT T1.tenant_id,
|
||||
T1.ID,
|
||||
T1.NAME,
|
||||
T1.gender_enum,
|
||||
T1.py_str,
|
||||
T1.wb_str
|
||||
FROM adm_practitioner AS T1
|
||||
WHERE T1.delete_flag = '0'
|
||||
AND EXISTS(SELECT 1
|
||||
FROM adm_practitioner_role AS T2
|
||||
WHERE T2.practitioner_id = T1.ID
|
||||
AND T2.location_id = #{locationId}
|
||||
AND T2.ROLE_code = #{RoleCode})
|
||||
) AS T3
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="getNumByPatientIdAndOrganizationId" resultType="Integer">
|
||||
SELECT COUNT
|
||||
(1)
|
||||
FROM adm_encounter
|
||||
WHERE delete_flag = '0'
|
||||
AND patient_id = #{patientId}
|
||||
AND service_type_id = #{serviceTypeId}
|
||||
AND create_time > CURRENT_DATE
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -139,13 +139,14 @@
|
||||
|
||||
<!-- 如果传入phone参数,且不为空 -->
|
||||
<if test="OutpatientRecordSearchParam != null and OutpatientRecordSearchParam.phone != null and OutpatientRecordSearchParam.phone != ''">
|
||||
AND pt.phone LIKE CONCAT('%',#{phone}, '%')
|
||||
AND pt.phone LIKE CONCAT('%',#{OutpatientRecordSearchParam.phone}, '%')
|
||||
</if>
|
||||
|
||||
<!-- 时间筛选 -->
|
||||
<if test="OutpatientRecordSearchParam != null and OutpatientRecordSearchParam.startTime != null and OutpatientRecordSearchParam.endTime != null">
|
||||
AND e.start_time BETWEEN #{OutpatientRecordSearchParam.startTime} AND
|
||||
#{OutpatientRecordSearchParam.endTime}
|
||||
<if test="OutpatientRecordSearchParam != null and OutpatientRecordSearchParam.beginTime != null and OutpatientRecordSearchParam.endTime != null">
|
||||
AND e.start_time BETWEEN
|
||||
TO_TIMESTAMP(#{OutpatientRecordSearchParam.beginTime} || ' 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
|
||||
TO_TIMESTAMP(#{OutpatientRecordSearchParam.endTime} || ' 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
|
||||
</if>
|
||||
|
||||
<!-- 如果传入doctorName参数,且不为空 -->
|
||||
@@ -184,13 +185,14 @@
|
||||
|
||||
<!-- 如果传入phone参数,且不为空 -->
|
||||
<if test="OutpatientRecordSearchParam != null and OutpatientRecordSearchParam.phone != null and OutpatientRecordSearchParam.phone != ''">
|
||||
AND pt.phone LIKE CONCAT('%',#{phone}, '%')
|
||||
AND pt.phone LIKE CONCAT('%',#{OutpatientRecordSearchParam.phone}, '%')
|
||||
</if>
|
||||
|
||||
<!-- 时间筛选 -->
|
||||
<if test="OutpatientRecordSearchParam != null and OutpatientRecordSearchParam.startTime != null and OutpatientRecordSearchParam.endTime != null">
|
||||
AND e.start_time BETWEEN #{OutpatientRecordSearchParam.startTime} AND
|
||||
#{OutpatientRecordSearchParam.endTime}
|
||||
<if test="OutpatientRecordSearchParam != null and OutpatientRecordSearchParam.beginTime != null and OutpatientRecordSearchParam.endTime != null">
|
||||
AND e.start_time BETWEEN
|
||||
TO_TIMESTAMP(#{OutpatientRecordSearchParam.beginTime} || ' 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
|
||||
TO_TIMESTAMP(#{OutpatientRecordSearchParam.endTime} || ' 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
|
||||
</if>
|
||||
|
||||
<!-- 如果传入doctorName参数,且不为空 -->
|
||||
|
||||
Reference in New Issue
Block a user