diff --git a/openhis-server/core-common/src/main/java/com/core/common/utils/AgeCalculatorUtil.java b/openhis-server/core-common/src/main/java/com/core/common/utils/AgeCalculatorUtil.java index 7dd186d4..2a43840b 100644 --- a/openhis-server/core-common/src/main/java/com/core/common/utils/AgeCalculatorUtil.java +++ b/openhis-server/core-common/src/main/java/com/core/common/utils/AgeCalculatorUtil.java @@ -2,7 +2,9 @@ package com.core.common.utils; import java.time.LocalDateTime; import java.time.Period; +import java.time.ZoneId; import java.time.temporal.ChronoUnit; +import java.util.Date; /** * 根据出生日期算年龄 @@ -15,7 +17,9 @@ public final class AgeCalculatorUtil { /** * 当前年龄取得(床位列表表示年龄用) */ - public static String getAge(LocalDateTime dateTime) { + public static String getAge(Date date) { + // 将 Date 转换为 LocalDateTime + LocalDateTime dateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); LocalDateTime now = LocalDateTime.now(); int years = now.getYear() - dateTime.getYear(); if (years > 2) { @@ -78,5 +82,4 @@ public final class AgeCalculatorUtil { private static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } - -} +} \ No newline at end of file diff --git a/openhis-server/core-framework/src/main/java/com/core/framework/aspectj/TransactionAspect.java b/openhis-server/core-framework/src/main/java/com/core/framework/aspectj/TransactionAspect.java index a3b17784..1a7e711d 100644 --- a/openhis-server/core-framework/src/main/java/com/core/framework/aspectj/TransactionAspect.java +++ b/openhis-server/core-framework/src/main/java/com/core/framework/aspectj/TransactionAspect.java @@ -1,9 +1,9 @@ package com.core.framework.aspectj; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; @@ -17,7 +17,7 @@ import org.springframework.transaction.support.DefaultTransactionDefinition; public class TransactionAspect { private final PlatformTransactionManager transactionManager; - private TransactionStatus transactionStatus; + private final ThreadLocal transactionStatus = new ThreadLocal<>(); public TransactionAspect(PlatformTransactionManager transactionManager) { this.transactionManager = transactionManager; @@ -28,7 +28,8 @@ public class TransactionAspect { "@annotation(org.springframework.web.bind.annotation.PutMapping) || " + "@annotation(org.springframework.web.bind.annotation.DeleteMapping)") public void beginTransaction() { - transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); + transactionStatus.set(status); } @AfterReturning("@annotation(org.springframework.web.bind.annotation.PostMapping) || " + @@ -36,8 +37,10 @@ public class TransactionAspect { "@annotation(org.springframework.web.bind.annotation.PutMapping) || " + "@annotation(org.springframework.web.bind.annotation.DeleteMapping)") public void commitTransaction() { - if (transactionStatus != null && !transactionStatus.isCompleted()) { - transactionManager.commit(transactionStatus); + TransactionStatus status = transactionStatus.get(); + if (status != null && !status.isCompleted()) { + transactionManager.commit(status); + transactionStatus.remove(); // 清除 ThreadLocal 中的状态 } } @@ -47,8 +50,10 @@ public class TransactionAspect { "@annotation(org.springframework.web.bind.annotation.DeleteMapping)", throwing = "ex") public void rollbackTransaction(Exception ex) { - if (transactionStatus != null && !transactionStatus.isCompleted()) { - transactionManager.rollback(transactionStatus); + TransactionStatus status = transactionStatus.get(); + if (status != null && !status.isCompleted()) { + transactionManager.rollback(status); + transactionStatus.remove(); // 清除 ThreadLocal 中的状态 } } -} +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java new file mode 100644 index 00000000..d3f187d2 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IOrganizationAppService.java @@ -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 getOrganizationTree(Integer pageNo, Integer pageSize); + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/IOrganizationAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/IOrganizationAppServiceImpl.java new file mode 100644 index 00000000..db9d3ae7 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/IOrganizationAppServiceImpl.java @@ -0,0 +1,74 @@ +package com.openhis.web.basedatamanage.appservice.impl; + +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; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class IOrganizationAppServiceImpl implements IOrganizationAppService { + + @Resource + IOrganizationService organizationService; + + @Override + public Page getOrganizationTree(Integer pageNo, Integer pageSize) { + // 查询机构列表 + Page page = organizationService.page(new Page<>(pageNo, pageSize)); + List organizationList = page.getRecords(); + // 将机构列表转为树结构 + List orgTree = buildTree(organizationList); + Page orgQueryDtoPage = new Page<>(pageNo, pageSize, page.getTotal()); + orgQueryDtoPage.setRecords(orgTree); + return orgQueryDtoPage; + } + + /** + * 将机构列表转换为树结构 + * + * @param records 机构列表 + * @return tree + */ + private List buildTree(List records) { + // 按b_no的层级排序,确保父节点先处理 + List sortedRecords = records.stream() + .sorted(Comparator.comparingInt(r -> r.getBusNo().split("\\.").length)).collect(Collectors.toList()); + + Map nodeMap = new HashMap<>(); + List 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; + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java index 266f983b..0c27539e 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/OrganizationController.java @@ -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 queryWrapper = HisQueryUtils.buildQueryWrapper(orgQueryParam, searchKey, - // new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), request); - // - // // 设置排序 - // queryWrapper.orderByDesc("create_time"); - // // 执行分页查询并转换为 orgQueryDtoPage - // Page orgQueryDtoPage = - // HisPageUtils.selectPage(organizationMapper, queryWrapper, pageNo, pageSize, OrganizationQueryDto.class); - // 查询机构列表 - Page page = organizationService.page(new Page<>(pageNo, pageSize)); - List organizationList = page.getRecords(); - // 将机构列表转为树结构 - List orgTree = buildTree(organizationList); - Page 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 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 buildTree(List records) { - // 按b_no的层级排序,确保父节点先处理 - List sortedRecords = records.stream() - .sorted(Comparator.comparingInt(r -> r.getBusNo().split("\\.").length)).collect(Collectors.toList()); - - Map nodeMap = new HashMap<>(); - List 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; - } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/OrganizationQueryDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/OrganizationQueryDto.java index c1f9f8fd..f8d4348d 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/OrganizationQueryDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/OrganizationQueryDto.java @@ -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; @@ -24,6 +26,7 @@ public class OrganizationQueryDto { /** ID */ @TableId(type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** 编码 */ diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/controller/HealthcareServiceController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/controller/HealthcareServiceController.java index 29c47053..77ec2fa2 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/controller/HealthcareServiceController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/controller/HealthcareServiceController.java @@ -9,6 +9,7 @@ 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.MessageUtils; +import com.core.common.utils.bean.BeanUtils; import com.openhis.administration.domain.ChargeItemDefinition; import com.openhis.administration.domain.HealthcareService; import com.openhis.administration.service.IChargeItemDefinitionService; @@ -19,9 +20,7 @@ import com.openhis.common.enums.AccountStatus; import com.openhis.common.enums.WhetherContainUnknown; import com.openhis.common.utils.EnumUtils; import com.openhis.common.utils.HisQueryUtils; -import com.openhis.web.basicservice.dto.HealthcareServiceAddOrUpdateParam; -import com.openhis.web.basicservice.dto.HealthcareServiceDto; -import com.openhis.web.basicservice.dto.HealthcareServiceInitDto; +import com.openhis.web.basicservice.dto.*; import com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -29,6 +28,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; @@ -74,13 +74,17 @@ public class HealthcareServiceController { @PostMapping(value = "/healthcare-service") public R add(@Validated @RequestBody HealthcareServiceAddOrUpdateParam healthcareServiceAddOrUpdateParam) { // 服务管理-表单数据 - HealthcareService healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData(); + HealthcareServiceFormData healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData(); // 费用定价-表单数据 - ChargeItemDefinition chargeItemDefinitionFormData = healthcareServiceAddOrUpdateParam.getChargeItemDefinitionFormData(); + ChargeItemDefinitionFormData chargeItemDefinitionFormData = healthcareServiceAddOrUpdateParam.getChargeItemDefinitionFormData(); // 服务管理-新增 - HealthcareService healthcareService = iHealthcareServiceService.addHealthcareService(healthcareServiceFormData); + HealthcareService healthcareService = new HealthcareService(); + BeanUtils.copyProperties(healthcareServiceFormData, healthcareService); + HealthcareService healthcareServiceAfterAdd = iHealthcareServiceService.addHealthcareService(healthcareService); // 同时保存费用定价 - boolean res = iChargeItemDefinitionService.addChargeItemDefinitionByHealthcareService(healthcareService, chargeItemDefinitionFormData); + ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition(); + BeanUtils.copyProperties(chargeItemDefinitionFormData, chargeItemDefinition); + boolean res = iChargeItemDefinitionService.addChargeItemDefinitionByHealthcareService(healthcareServiceAfterAdd, chargeItemDefinition); return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[]{"服务管理"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); } @@ -105,13 +109,38 @@ public class HealthcareServiceController { new HashSet<>(Arrays.asList("name", "charge_name")), request); IPage healthcareServicePage = healthcareServiceBizMapper.getHealthcareServicePage( new Page<>(pageNo, pageSize), CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper); - // 活动标记-枚举类回显赋值 - healthcareServicePage.getRecords().forEach(e -> - e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag())) + healthcareServicePage.getRecords().forEach(e -> { + // 活动标记-枚举类回显赋值 + e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag())); + // 预约要求-枚举类回显赋值 + e.setAppointmentRequiredFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getAppointmentRequiredFlag())); + } ); return R.ok(healthcareServicePage, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, null)); } + /** + * 服务管理 详情 + * + * @param id 主键 + * @return 详情 + */ + @GetMapping(value = "/healthcare-service-detail/{id}") + public R getHealthcareServiceDetail(@PathVariable("id") Long id) { + HealthcareServiceDto healthcareServiceDto = new HealthcareServiceDto(); + healthcareServiceDto.setId(id); + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(healthcareServiceDto, null, + null, null); + IPage healthcareServicePage = healthcareServiceBizMapper.getHealthcareServicePage( + new Page<>(1, 1), CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper); + HealthcareServiceDto healthcareServiceDtoDetail = healthcareServicePage.getRecords().get(0); + // 枚举赋值 + healthcareServiceDtoDetail.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, healthcareServiceDtoDetail.getActiveFlag())) + .setAppointmentRequiredFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, healthcareServiceDtoDetail.getAppointmentRequiredFlag())); + return R.ok(healthcareServiceDtoDetail); + } + /** * 服务管理 编辑 @@ -122,8 +151,10 @@ public class HealthcareServiceController { @PutMapping(value = "/healthcare-service") public R edit(@Validated @RequestBody HealthcareServiceAddOrUpdateParam healthcareServiceAddOrUpdateParam) { // 服务管理-表单数据 - HealthcareService healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData(); - boolean res = iHealthcareServiceService.updateHealthcareService(healthcareServiceFormData); + HealthcareServiceFormData healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData(); + HealthcareService healthcareService = new HealthcareService(); + BeanUtils.copyProperties(healthcareServiceFormData, healthcareService); + boolean res = iHealthcareServiceService.updateHealthcareService(healthcareService); return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"服务管理"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); } @@ -131,17 +162,23 @@ public class HealthcareServiceController { /** * 服务管理 删除 * - * @param id ID + * @param ids ID * @return 删除结果 */ @DeleteMapping(value = "/healthcare-service") - public R delete(@RequestParam Long id) { - boolean res = iHealthcareServiceService.removeById(id); + public R delete(@RequestParam String ids) { + List idsList = new ArrayList<>(); + if (ids != null) { + idsList = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()); + } + boolean res = iHealthcareServiceService.removeByIds(idsList); // 同时删除非同定价 - LambdaQueryWrapper QueryWrapper = new LambdaQueryWrapper<>(); - QueryWrapper.eq(ChargeItemDefinition::getInstanceId, id). - eq(ChargeItemDefinition::getInstanceTable, CommonConstants.TableName.ADM_HEALTHCARE_SERVICE); - iChargeItemDefinitionService.remove(QueryWrapper); + for (Long id : idsList) { + LambdaQueryWrapper QueryWrapper = new LambdaQueryWrapper<>(); + QueryWrapper.eq(ChargeItemDefinition::getInstanceId, id). + eq(ChargeItemDefinition::getInstanceTable, CommonConstants.TableName.ADM_HEALTHCARE_SERVICE); + iChargeItemDefinitionService.remove(QueryWrapper); + } return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[]{"服务管理"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00006, null)); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/ChargeItemDefinitionFormData.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/ChargeItemDefinitionFormData.java new file mode 100644 index 00000000..5ab79878 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/ChargeItemDefinitionFormData.java @@ -0,0 +1,95 @@ +package com.openhis.web.basicservice.dto; + +import com.openhis.common.enums.PublicationStatus; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 费用定价管理表单数据 + * + * @author system + * @date 2025-02-20 + */ +@Data +public class ChargeItemDefinitionFormData { + + /** + * ID + */ + private Long id; + + /** + * 名称 + */ + @NotBlank(message = "名称不能为空") + private String chargeName; + + /** + * 标题 + */ + private String title; + + /** + * 状态 + */ + private PublicationStatus statusEnum; + + /** + * 机构ID + */ + @NotBlank(message = "机构ID不能为空") + private Long orgId; + + /** + * 描述 + */ + @NotBlank(message = "描述不能为空") + private String description; + + /** + * 代码 + */ + private String instanceTable; + + /** + * 关联项目 + */ + private Long instanceId; + + /** + * 有效时间开始 + */ + private Date effectiveStart; + + /** + * 有效时间结束 + */ + private Date effectiveEnd; + + /** + * 财务类别 + */ + @NotBlank(message = "财务类别不能为空") + private String typeCode; + + /** + * 医保类别 + */ + @NotBlank(message = "医保类别不能为空") + private String ybType; + + /** + * 是否使用详细价格规则 + */ + @NotBlank(message = "是否使用详细价格规则不能为空") + private Integer conditionFlag; + + /** + * 基础价格 + */ + @NotBlank(message = "基础价格不能为空") + private BigDecimal price; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceAddOrUpdateParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceAddOrUpdateParam.java index f5c6f77e..aca33c3f 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceAddOrUpdateParam.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceAddOrUpdateParam.java @@ -1,7 +1,5 @@ package com.openhis.web.basicservice.dto; -import com.openhis.administration.domain.ChargeItemDefinition; -import com.openhis.administration.domain.HealthcareService; import lombok.Data; /** @@ -11,15 +9,15 @@ import lombok.Data; * @date 2025-02-20 */ @Data -public class HealthcareServiceAddOrUpdateParam{ +public class HealthcareServiceAddOrUpdateParam { /** - * 服务管理 + * 服务管理 */ - private HealthcareService healthcareServiceFormData; + private HealthcareServiceFormData healthcareServiceFormData; /** - * 费用定价 + * 费用定价 */ - private ChargeItemDefinition chargeItemDefinitionFormData; + private ChargeItemDefinitionFormData chargeItemDefinitionFormData; } \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceDto.java index 846d0743..38445ce8 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceDto.java @@ -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; @@ -82,6 +87,7 @@ public class HealthcareServiceDto { * 预约要求 */ private Integer appointmentRequiredFlag; + private String appointmentRequiredFlag_enumText; /** * 名称 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceFormData.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceFormData.java new file mode 100644 index 00000000..c85dc4ec --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basicservice/dto/HealthcareServiceFormData.java @@ -0,0 +1,86 @@ +package com.openhis.web.basicservice.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 服务项目管理表单数据 + * + * @author system + * @date 2025-02-20 + */ +@Data +public class HealthcareServiceFormData { + + /** + * ID + */ + private Long id; + + /** + * 活动标记 + */ + @NotBlank(message = "活动标记不能为空") + private Integer activeFlag; + + /** + * 提供部门ID + */ + @NotBlank(message = "提供部门ID不能为空") + private Long offeredOrgId; + + /** + * 服务分类 + */ + @NotBlank(message = "服务分类不能为空") + private String categoryCode; + + /** + * 服务类型 + */ + @NotBlank(message = "服务类型不能为空") + private String typeCode; + + /** + * 服务专业 + */ + @NotBlank(message = "服务专业不能为空") + private String specialtyCode; + + /** + * 地点 + */ + @NotBlank(message = "地点不能为空") + private Long locationId; + + /** + * 服务名称 + */ + @NotBlank(message = "服务名称不能为空") + private String name; + + /** + * 说明 + */ + private String comment; + + /** + * 额外细节 + */ + private String extraDetails; + + /** + * 联系方式 + */ + @NotBlank(message = "联系方式不能为空") + private String contact; + + /** + * 预约要求 + */ + @NotBlank(message = "预约要求不能为空") + private Integer appointmentRequiredFlag; + + +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/IOutpatientRegistrationAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/IOutpatientRegistrationAppService.java new file mode 100644 index 00000000..48727976 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/IOutpatientRegistrationAppService.java @@ -0,0 +1,17 @@ +package com.openhis.web.outpatientservice.appservice; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.openhis.web.outpatientservice.dto.PatientMetadata; + +public interface IOutpatientRegistrationAppService { + + /** + * 门诊挂号 - 查询患者信息 + * + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 患者信息 + */ + Page getPatientMetadataBySearchKey(String searchKey, Integer pageNo, Integer pageSize); +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java new file mode 100644 index 00000000..f83afd27 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/appservice/impl/IOutpatientRegistrationAppServiceImpl.java @@ -0,0 +1,59 @@ +package com.openhis.web.outpatientservice.appservice.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.utils.AgeCalculatorUtil; +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.appservice.IOutpatientRegistrationAppService; +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 IOutpatientRegistrationAppServiceImpl implements IOutpatientRegistrationAppService { + + @Resource + PatientMapper patientMapper; + + /** + * 门诊挂号 - 查询患者信息 + * + * @param searchKey 模糊查询关键字 + * @param pageNo 当前页 + * @param pageSize 每页多少条 + * @return 患者信息 + */ + @Override + public Page getPatientMetadataBySearchKey(String searchKey, Integer pageNo, Integer pageSize) { + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(null, + searchKey, new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), null + ); + // 设置排序 + queryWrapper.orderByDesc("update_time"); + // 患者信息 + Page patientMetadataPage = HisPageUtils.selectPage(patientMapper, + queryWrapper, pageNo, pageSize, PatientMetadata.class); + + patientMetadataPage.getRecords().forEach(e -> { + // 性别枚举 + e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum())); + // 计算年龄 + e.setAge(AgeCalculatorUtil.getAge(e.getBirthDate())); + }); + return patientMetadataPage; + } + +} + diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/controller/OutpatientRegistrationController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/controller/OutpatientRegistrationController.java new file mode 100644 index 00000000..3dfb0116 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/controller/OutpatientRegistrationController.java @@ -0,0 +1,78 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.outpatientservice.controller; + +import com.core.common.core.domain.R; +import com.openhis.common.enums.PriorityLevel; +import com.openhis.web.basedatamanage.appservice.IOrganizationAppService; +import com.openhis.web.outpatientservice.appservice.IOutpatientRegistrationAppService; +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; + +/** + * 门诊挂号 controller + */ +@RestController +@RequestMapping("/outpatient-service/register") +@Slf4j +@AllArgsConstructor +public class OutpatientRegistrationController { + + private final IOutpatientRegistrationAppService iOutpatientRegistrationAppService; + private final IOrganizationAppService iOrganizationAppService; + + /** + * 门诊挂号 - 基础数据初始化 + */ + @GetMapping(value = "/init") + public R init() { + OutpatientRegistrationInitDto outpatientRegistrationInitDto = new OutpatientRegistrationInitDto(); + // 优先级 + List priorityLevelOptionOptions = Stream.of(PriorityLevel.values()) + .map(e -> new OutpatientRegistrationInitDto.priorityLevelOption(e.getValue(), e.getInfo())) + .collect(Collectors.toList()); + outpatientRegistrationInitDto.setPriorityLevelOptionOptions(priorityLevelOptionOptions); + return R.ok(outpatientRegistrationInitDto); + } + + /** + * 门诊挂号 - 查询患者信息 + * + * @param searchKey 模糊查询关键字 + * @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(iOutpatientRegistrationAppService.getPatientMetadataBySearchKey(searchKey, pageNo, pageSize)); + } + + /** + * 门诊挂号 - 查询机构树 + * + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @return 机构分页列表 + */ + @GetMapping(value = "/organization-tree") + public R getOrganizationTree( + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { + return R.ok(iOrganizationAppService.getOrganizationTree(pageNo, pageSize)); + } + + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java new file mode 100644 index 00000000..75560da2 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationAddParam.java @@ -0,0 +1,22 @@ +package com.openhis.web.outpatientservice.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 门诊挂号 新增数据 + */ +@Data +@Accessors(chain = true) +public class OutpatientRegistrationAddParam { + + // 就诊管理-表单数据 + + // 就诊诊断管理-表单数据 + + // 就诊位置管理-表单数据 + + // 就诊参数者管理-表单数据 + + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationInitDto.java new file mode 100644 index 00000000..a9fa09e7 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/OutpatientRegistrationInitDto.java @@ -0,0 +1,32 @@ +package com.openhis.web.outpatientservice.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +/** + * 门诊挂号 init基础数据 + */ +@Data +@Accessors(chain = true) +public class OutpatientRegistrationInitDto { + + private List priorityLevelOptionOptions; + + /** + * 优先级 + */ + @Data + public static class priorityLevelOption { + private Integer value; + private String label; + + public priorityLevelOption(Integer value, String label) { + this.value = value; + this.label = label; + } + } + + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/PatientMetadata.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/PatientMetadata.java new file mode 100644 index 00000000..3f900f12 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/outpatientservice/dto/PatientMetadata.java @@ -0,0 +1,54 @@ +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; + +/** + * 患者信息 元数据 + */ +@Data +@Accessors(chain = true) +public class PatientMetadata { + /** + * ID + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** + * 患者姓名 + */ + private String name; + + /** + * 性别编码 + */ + private Integer genderEnum; + private String genderEnum_enumText; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 电话 + */ + private String phone; + + /** + * 生日 + */ + + private Date birthDate; + + /** + * 年龄 + */ + private String age; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/OutpatientRecordController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/OutpatientRecordController.java new file mode 100644 index 00000000..2c484030 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/OutpatientRecordController.java @@ -0,0 +1,83 @@ +package com.openhis.web.patientmanage.controller; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.core.domain.R; +import com.openhis.common.enums.AdministrativeGender; +import com.openhis.common.enums.EncounterSubjectStatus; +import com.openhis.common.utils.EnumUtils; +import com.openhis.web.patientmanage.dto.OutpatientRecordDto; +import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam; +import com.openhis.web.patientmanage.mapper.PatientManageMapper; + +import lombok.extern.slf4j.Slf4j; + +/** + * 门诊记录 + * + * @author liuhr + * @date 2025/2/28 + */ +@RestController +@RequestMapping("/patientmanage/records") +@Slf4j +public class OutpatientRecordController { + + @Autowired(required = false) + PatientManageMapper patientManageMapper; + + /** + * 获取医生名字列表 + */ + @GetMapping("/list-doctornames") + public R getDoctorNames() { + // 获取医生名字列表 + List listDoctorNames = patientManageMapper.getDoctorNames(); + + return R.ok(listDoctorNames); + } + + /** + * 分页查询门诊记录,可选条件 + * + * @param outpatientRecordSearchParam 查询条件 + * @param pageNo 页码(默认为1) + * @param pageSize 每页大小(默认为10) + */ + @GetMapping("/outpatient-record-page") + public R getPatient(OutpatientRecordSearchParam outpatientRecordSearchParam, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { + + System.out.println("doctorName"+outpatientRecordSearchParam.getDoctorName()); + System.out.println("phone"+outpatientRecordSearchParam.getPhone()); + System.out.println("searchKey"+outpatientRecordSearchParam.getSearchKey()); + + // 跳过的记录数 + Integer offset = (pageNo - 1) * pageSize; + // 连表查询患者信息 + List listOutpatientRecords = + patientManageMapper.getOutpatientRecord(outpatientRecordSearchParam, pageSize, offset); + // 查询总记录数 + long total = patientManageMapper.countOutpatientRecords(outpatientRecordSearchParam); + // 创建Page对象并设置属性 + Page outpatientRecordPage = new Page<>(pageNo, pageSize, total); + outpatientRecordPage.setRecords(listOutpatientRecords); + outpatientRecordPage.getRecords().forEach(e -> { + // 性别枚举类回显赋值 + e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum())); + // 就诊对象状态枚举类回显赋值 + e.setSubjectStatusEnum_enumText( + EnumUtils.getInfoByValue(EncounterSubjectStatus.class, e.getSubjectStatusEnum())); + }); + + return R.ok(outpatientRecordPage); + } + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/PatientInformationController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/PatientInformationController.java index 443d6c75..64bb753b 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/PatientInformationController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/controller/PatientInformationController.java @@ -4,7 +4,6 @@ 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.*; @@ -12,6 +11,7 @@ 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.*; import com.core.common.utils.bean.BeanUtils; import com.openhis.administration.domain.Patient; import com.openhis.administration.service.IPatientService; @@ -181,8 +181,8 @@ public class PatientInformationController { patient.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(patient.getName())); // 设置五笔首拼 patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patient.getName())); - //设置死亡时间 - if(patientService.isFuture(patientInformationDto.getDeceasedDate())){ + // 设置死亡时间 + if (patientService.isFuture(patientInformationDto.getDeceasedDate())) { return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00003, new Object[] {"死亡时间未来时"})); } patient.setDeceasedDate(DateUtils.parseDate(patientInformationDto.getDeceasedDate())); @@ -213,8 +213,8 @@ public class PatientInformationController { patient.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(patient.getName())); // 设置五笔首拼 patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patient.getName())); - //设置死亡时间 - if(patientService.isFuture(patientInformationDto.getDeceasedDate())){ + // 设置死亡时间 + if (patientService.isFuture(patientInformationDto.getDeceasedDate())) { return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, new Object[] {"死亡时间未来时"})); } patient.setDeceasedDate(DateUtils.parseDate(patientInformationDto.getDeceasedDate())); @@ -256,11 +256,12 @@ public class PatientInformationController { // 职业编码枚举类回显赋值 e.setPrfsEnum_enumText(EnumUtils.getInfoByValue(OccupationType.class, e.getPrfsEnum())); // 血型ABO枚举类回显赋值 - e.setBloodAbo_text(EnumUtils.getInfoByValue(BloodTypeABO.class, e.getBloodAbo())); + e.setBloodAbo_enumText(EnumUtils.getInfoByValue(BloodTypeABO.class, e.getBloodAbo())); // 血型RH枚举类回显赋值 e.setBloodRh_enumText(EnumUtils.getInfoByValue(BloodTypeRH.class, e.getBloodRh())); // 家庭关系枚举类回显赋值 - e.setLinkRelationCode_enumText(EnumUtils.getInfoByValue(FamilyRelationshipType.class, e.getLinkRelationCode())); + e.setLinkRelationCode_enumText( + EnumUtils.getInfoByValue(FamilyRelationshipType.class, e.getLinkRelationCode())); }); return R.ok(patientInformationPage); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/OutpatientRecordDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/OutpatientRecordDto.java new file mode 100644 index 00000000..3a85e954 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/OutpatientRecordDto.java @@ -0,0 +1,51 @@ +package com.openhis.web.patientmanage.dto; + +import lombok.Data; + +import java.util.Date; + +/** + * 门诊记录Dto + * + * @author liuhr + * @date 2025/2/28 + */ +@Data +public class OutpatientRecordDto { + + /** 患者姓名 */ + private String name; + + /** 身份证号 */ + private String idCard; + + /** 疾病与诊断描述 */ + private String description; + + /** 患者院内编码/病历号 */ + private String patientBusNo; + + /** 就诊号 */ + private String encounterBusNo; + + /** 性别编码 */ + private Integer genderEnum; + private String genderEnum_enumText; + + /** 就诊时间 */ + private Date encounterTime; + + /** 就诊对象状态 */ + private Integer subjectStatusEnum; + private String subjectStatusEnum_enumText; + + /** 机构名称/接诊医院 */ + private String organizationName; + + /** 接诊医生姓名 */ + private String doctorName; + + /** 手机号码 */ + private String phone; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/OutpatientRecordSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/OutpatientRecordSearchParam.java new file mode 100644 index 00000000..09674301 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/OutpatientRecordSearchParam.java @@ -0,0 +1,33 @@ +package com.openhis.web.patientmanage.dto; + +import java.util.Date; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 门诊记录查询参数 + * + * @author liuhr + * @date 2025/2/28 + */ +@Data +@Accessors(chain = true) +public class OutpatientRecordSearchParam { + + /** 身份证号/病人ID/门诊号/病人姓名 */ + private String searchKey; + + /** 手机号码 */ + private String phone; + + /** 医生姓名 */ + private String doctorName; + + /** 筛选开始时间 */ + private String beginTime; + + /** 筛选结束时间 */ + private String endTime; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientInformationDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientInformationDto.java index 1b3a5c36..b354ed94 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientInformationDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientInformationDto.java @@ -101,7 +101,7 @@ public class PatientInformationDto { /** 血型ABO */ private Integer bloodAbo; - private String bloodAbo_text; + private String bloodAbo_enumText; /** 血型RH */ private Integer bloodRh; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/mapper/PatientManageMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/mapper/PatientManageMapper.java index 72eca389..6a046b7d 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/mapper/PatientManageMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/patientmanage/mapper/PatientManageMapper.java @@ -7,12 +7,14 @@ import org.springframework.stereotype.Repository; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.openhis.administration.domain.Patient; +import com.openhis.web.patientmanage.dto.OutpatientRecordDto; +import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam; import com.openhis.web.patientmanage.dto.PatientInformationDto; /** * 病人信息管理 * - * @author Wuser + * @author liuhr * @date 2025/2/25 */ @Repository @@ -31,7 +33,7 @@ public interface PatientManageMapper extends BaseMapper { @Param("pageSize") Integer pageSize, @Param("offset") Integer offset); /** - * 统计总记录数的方法 + * 统计病人信息总记录数的方法 * * @param busNo 病人ID * @param name 病人姓名 @@ -39,4 +41,32 @@ public interface PatientManageMapper extends BaseMapper { */ long countPatients(@Param("busNo") String busNo, @Param("name") String name); + /** + * 门诊信息分页查询 + * + * @param outpatientRecordSearchParam 门诊查询参数 + * @param pageSize 页面大小 + * @param offset 跳过条数 + * @return 分页查询 + */ + List getOutpatientRecord( + @Param("OutpatientRecordSearchParam") OutpatientRecordSearchParam outpatientRecordSearchParam, + @Param("pageSize") Integer pageSize, @Param("offset") Integer offset); + + /** + * 统计门诊总记录数的方法 + * + * @param outpatientRecordSearchParam 门诊查询参数 + * @return 分页查询 + */ + long countOutpatientRecords( + @Param("OutpatientRecordSearchParam") OutpatientRecordSearchParam outpatientRecordSearchParam); + + /** + * 获取医生名字列表 + * + * @return 医生名字列表 + */ + List getDoctorNames(); + } diff --git a/openhis-server/openhis-application/src/main/resources/mapper/basicservice/HealthcareServiceBizMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/basicservice/HealthcareServiceBizMapper.xml index bd9f4ffd..a36b26d8 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/basicservice/HealthcareServiceBizMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/basicservice/HealthcareServiceBizMapper.xml @@ -43,6 +43,8 @@ adm_healthcare_service AS T1 LEFT JOIN adm_charge_item_definition AS T2 ON T2.instance_id = T1.ID AND T2.instance_table = #{tableName} + AND T1.delete_flag = '0' + WHERE T1.delete_flag = '0' ORDER BY T1.create_time DESC ) AS T3 diff --git a/openhis-server/openhis-application/src/main/resources/mapper/patientmanage/PatientManageMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/patientmanage/PatientManageMapper.xml index 8c1afd73..852b13d1 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/patientmanage/PatientManageMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/patientmanage/PatientManageMapper.xml @@ -38,8 +38,7 @@ pt.organization_id, pt.create_time FROM adm_patient pt - - LEFT JOIN adm_organization ogt ON CAST(pt.organization_id AS VARCHAR) = ogt.bus_no + LEFT JOIN adm_organization ogt ON pt.organization_id = ogt.id @@ -72,7 +71,7 @@ SELECT COUNT(*) FROM adm_patient pt - LEFT JOIN adm_organization ogt ON CAST(pt.organization_id AS VARCHAR) = ogt.bus_no + LEFT JOIN adm_organization ogt ON pt.organization_id = ogt.id @@ -99,6 +98,117 @@ + + + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterClass.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterClass.java index d249b892..192ddee3 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterClass.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterClass.java @@ -1,12 +1,15 @@ package com.openhis.common.enums; + import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.AllArgsConstructor; import lombok.Getter; - +/** + * 就诊类型 + */ @Getter @AllArgsConstructor -public enum EncounterClass { +public enum EncounterClass implements HisEnumInterface { IMP(1, "IMP", "住院"), AMB(2, "AMB", "门诊"), diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java index 585a7cc8..ed502f78 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterStatus.java @@ -6,7 +6,7 @@ import lombok.Getter; @Getter @AllArgsConstructor -public enum EncounterStatus { +public enum EncounterStatus implements HisEnumInterface { PLANNED(1, "draft", "已安排"), IN_PROGRESS(2, "in-progress", "进行中"), diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterSubjectStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterSubjectStatus.java index b3a3507a..035a82d6 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterSubjectStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterSubjectStatus.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.AllArgsConstructor; import lombok.Getter; - +/** + * 就诊对象状态 + */ @Getter @AllArgsConstructor -public enum EncounterSubjectStatus { +public enum EncounterSubjectStatus implements HisEnumInterface { PLANNED(1, "arrived", "已到达"), TRIAGED(2, "triaged", "已分诊"), diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterYbClass.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterYbClass.java index 2b0e593a..296162c1 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterYbClass.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/EncounterYbClass.java @@ -3,38 +3,12 @@ import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.AllArgsConstructor; import lombok.Getter; -/*代码值 代码名称 对应7.28医疗类别med_type 在2203接口用到此信息 - 25 异地住院 - 26 单病种住院 - 27 自主就医 - 81 意外伤害门诊 - 15 特药 - 28 日间手术 - 61 照护保险 - 11 普通门诊 - 12 门诊挂号 - 13 急诊 - 14 门诊慢特病 - 990404 门诊特检特治(限吉林市) - 21 普通住院 - 22 外伤住院 - 23 转外诊治住院 - 24 急诊转住院 - 41 定点药店购药 - 51 生育门诊 - 52 生育住院 - 5212 生育新生儿费用 - 16 中医特色门诊 - 29 起付线治疗 - 9107 体检 - 3101 低自付住院 - 3102 低自付门诊 - 140104 门诊慢病 - 140201 门诊特病 - 2114 舒缓疗护住院*/ +/** + * 医保类别 + */ @Getter @AllArgsConstructor -public enum EncounterYbClass { +public enum EncounterYbClass implements HisEnumInterface { // 住院服务 ORDINARY_HOSPITALIZATION(21, "21" , "普通住院"), FOREIGN_HOSPITALIZATION(25,"25", "异地住院"), diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/OutpatientClass.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/OutpatientClass.java new file mode 100644 index 00000000..31f1df9b --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/OutpatientClass.java @@ -0,0 +1,35 @@ +package com.openhis.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 门诊分类 + */ +@Getter +@AllArgsConstructor +public enum OutpatientClass implements HisEnumInterface { + + GENERAL_OUTPATIENT_SERVICE(1, "GOS", "普通门诊"), + EMERGENCY_TREATMENT(2, "ET", "急诊"), + HEALTH_COUNSELING(3, "HC", "健康咨询"), + SPECIALIZED_OUTPATIENT_DEPARTMENT(4, "SOD", "专科门诊"), + VIP_CLINIC(5, "VC", "特需门诊"), + SPECIALIZED_DISEASE_DEPARTMENT(6, "SOD", "专病门诊"), + APPOINTMENT_FOR_REGISTRATION(7, "AFR", "预约挂号"), + WESTERN_MEDICINE(11, "WM", "西医"), + TRADITIONAL_CHINESE_MEDICAL_SCIENCE(12, "TCMS", "中医"), + WESTERN_MEDICINE_EMERGENCY_DEPARTMENT(21, "WMED", "西医急诊"), + TRADITIONAL_CHINESE_MEDICINE_EMERGENCY(22, "TCME", "中医急诊"), + PHYSICAL_EXAMINATION(31, "PE", "体检"), + PREVENTIVE_MEDICAL_EXAMINATION(32, "PME", "预防体检"), + MATERNAL_AND_CHILD_HEALTH_CARE(33, "MACHC", "孕产保健"), + OTHER(99, "OT", "其他"); + + @EnumValue + private final Integer value; + private final String code; + private final String info; + +} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PriorityLevel.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PriorityLevel.java new file mode 100644 index 00000000..0afc551c --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/PriorityLevel.java @@ -0,0 +1,24 @@ +package com.openhis.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 优先级 + */ +@Getter +@AllArgsConstructor +public enum PriorityLevel implements HisEnumInterface { + + EMERGENCY(1, "EM", "紧急"), + PRIORITY(2, "PR", "优先"), + ORDINARY(3, "OR", "普通"), + NOT_URGENT(4, "NU", "不紧急"); + + @EnumValue + private final Integer value; + private final String code; + private final String info; + +} diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java index c6748277..9e31e7ca 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/Encounter.java @@ -1,17 +1,17 @@ package com.openhis.administration.domain; -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.*; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.util.Date; + /** * 就诊管理Entity实体 * @@ -23,53 +23,86 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = false) public class Encounter extends HisBaseEntity { - /** ID */ + /** + * ID + */ @TableId(type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) private Long id; - /** 患者ID */ + /** + * 患者ID + */ private Long patientId; - /** 群组ID */ + /** + * 群组ID + */ private Long groupId; - /** 就诊编码 */ + /** + * 就诊编码 + */ private String busNo; - /** 状态编码 */ - private EncounterStatus statusEnum; + /** + * 状态编码 + */ + private Integer statusEnum; - /** 类别编码 */ - private EncounterClass classEnum; + /** + * 类别编码 + */ + private Integer classEnum; - /** 类别医保编码 */ + /** + * 类别医保编码 + */ private Integer ybClassEnum; - /** 类别编码补充 */ + /** + * 类别编码补充 + */ private String classJson; - /** 优先级编码 */ - private ActPriority priorityEnum; + /** + * 优先级编码 + */ + private Integer priorityEnum; - /** 分类编码 */ - private EncounterType typeEnum; + /** + * 分类编码 + */ + private Integer typeEnum; - /** 服务ID */ + /** + * 服务ID + */ private Long serviceTypeId; - /** 就诊对象状态 */ - private EncounterSubjectStatus subjectStatusEnum; + /** + * 就诊对象状态 + */ + private Integer subjectStatusEnum; - /** 开始时间 */ + /** + * 开始时间 + */ private Date startTime; - /** 结束时间 */ + /** + * 结束时间 + */ private Date endTime; - /** 机构id */ + /** + * 机构id + */ private Long organizationId; - /** 就诊序号 */ + /** + * 就诊序号 + */ private Integer displayOrder; } diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/HealthcareService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/HealthcareService.java index e77e76b0..d1714236 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/HealthcareService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/domain/HealthcareService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.core.common.core.domain.HisBaseEntity; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -22,6 +24,7 @@ public class HealthcareService extends HisBaseEntity { /** ID */ @TableId(type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) private Long id; /** 活动标记 */ diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IPatientService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IPatientService.java index c56301c1..12dc5fa2 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IPatientService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IPatientService.java @@ -1,10 +1,11 @@ package com.openhis.administration.service; -import java.util.Date; - +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.administration.domain.Patient; +import java.util.Date; + /** * 患者管理Service接口 * @@ -15,7 +16,7 @@ public interface IPatientService extends IService { /** * 从身份证号码中提取生日 - * + * * @param idCard 身份证号 * @return 出生日 */ @@ -27,5 +28,7 @@ public interface IPatientService extends IService { * @param date 字符串日期 * @return 是/否 */ - boolean isFuture(String date); + boolean isFuture(String date); + + } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java index 83e0ea11..1fc18cd6 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java @@ -1,16 +1,21 @@ package com.openhis.administration.service.impl; -import java.time.LocalDate; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.Date; - -import org.springframework.stereotype.Service; - +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.openhis.administration.domain.Patient; import com.openhis.administration.mapper.PatientMapper; import com.openhis.administration.service.IPatientService; +import com.openhis.common.utils.HisPageUtils; +import com.openhis.common.utils.HisQueryUtils; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; /** * 患者管理Service业务层处理 @@ -62,4 +67,5 @@ public class PatientServiceImpl extends ServiceImpl impl } } + } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/ServiceRequest.java b/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/ServiceRequest.java index c7029161..c1fd203e 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/ServiceRequest.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/workflow/domain/ServiceRequest.java @@ -82,6 +82,9 @@ public class ServiceRequest extends HisBaseEntity { /** 执行人 */ private Long performerId; + /** 核对人 */ + private Long performerCheckId; + /** 执行位置 */ private Long locationId; diff --git a/openhis-ui-vue3/src/views/basicmanage/supplier/components/supplier.js b/openhis-ui-vue3/src/views/basicmanage/supplier/components/supplier.js index f09dd41a..2e645acb 100644 --- a/openhis-ui-vue3/src/views/basicmanage/supplier/components/supplier.js +++ b/openhis-ui-vue3/src/views/basicmanage/supplier/components/supplier.js @@ -1,7 +1,7 @@ import request from '@/utils/request' import { parseStrEmpty } from "@/utils/openhis"; -// 查询病种目录列表 +// 查询厂商列表 export function getSupplierList(query) { return request({ url: '/data-dictionary/supplier/get-supplier-list', @@ -10,7 +10,7 @@ export function getSupplierList(query) { }) } -// 查询病种目录详细 +// 查询厂商详细 export function getSupplierOne(id) { return request({ url: '/data-dictionary/supplier/get-supplier-detail/' + parseStrEmpty(id), @@ -18,7 +18,7 @@ export function getSupplierOne(id) { }) } -// 新增病种目录 +// 新增厂商 export function addSupplier(data) { return request({ url: '/data-dictionary/supplier/add-supplier', @@ -27,7 +27,7 @@ export function addSupplier(data) { }) } -// 修改病种目录 +// 修改厂商 export function editSupplier(data) { return request({ url: '/data-dictionary/supplier/edit-supplier', @@ -36,7 +36,7 @@ export function editSupplier(data) { }) } -// // 删除病种目录 +// // 删除厂商 // export function delUser(userId) { // return request({ // url: '/system/user/' + userId, @@ -44,7 +44,7 @@ export function editSupplier(data) { // }) // } -// 停用病种目录 +// 停用厂商 export function stopSupplier(ids) { return request({ url: '/data-dictionary/supplier/information-stop', @@ -53,7 +53,7 @@ export function stopSupplier(ids) { }) } -// 启用病种目录 +// 启用厂商 export function startSupplier(ids) { return request({ url: '/data-dictionary/supplier/information-start', diff --git a/openhis-ui-vue3/src/views/basicserve/register_fee_item/components/AddDialog.vue b/openhis-ui-vue3/src/views/basicserve/register_fee_item/components/AddDialog.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/openhis-ui-vue3/src/views/basicserve/register_fee_item/components/api.js b/openhis-ui-vue3/src/views/basicserve/register_fee_item/components/api.js deleted file mode 100644 index e69de29b..00000000 diff --git a/openhis-ui-vue3/src/views/basicserve/register_fee_item/index.vue b/openhis-ui-vue3/src/views/basicserve/register_fee_item/index.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/openhis-ui-vue3/src/views/basicservices/registrationfee/components/registrationfee.js b/openhis-ui-vue3/src/views/basicservices/registrationfee/components/registrationfee.js new file mode 100644 index 00000000..0033a4c1 --- /dev/null +++ b/openhis-ui-vue3/src/views/basicservices/registrationfee/components/registrationfee.js @@ -0,0 +1,73 @@ +import request from '@/utils/request' +import { parseStrEmpty } from "@/utils/openhis"; + +// 查询服务管理列表 +export function getRegistrationfeeList(query) { + return request({ + url: '/basic-service/healthcare/healthcare-service-page', + method: 'get', + params: query + }) +} + +// 查询服务管理详细 +export function getRegistrationfeeOne(id) { + return request({ + url: '/basic-service/healthcare/healthcare-service-detail/' + parseStrEmpty(id), + method: 'get' + }) +} + +// 新增服务管理 +export function addRegistrationfee(data) { + return request({ + url: '/basic-service/healthcare/healthcare-service', + method: 'post', + data: data + }) +} + +// 修改服务管理 +export function editRegistrationfee(data) { + return request({ + url: '/basic-service/healthcare/healthcare-service', + method: 'put', + data: data + }) +} + +// 查询厂商类型 +export function getInit() { + return request({ + url: '/basic-service/healthcare/init', + method: 'get' + }) +} + +// 查询部门树形数据 +export function deptTreeSelect(queryParams) { + return request({ + url: '/basedatamanage/organization/organization', + method: 'get', + param: queryParams + }) +} + +// 查询地点树形数据 +export function locationTreeSelect(queryParams) { + return request({ + url: '/basedatamanage/organization/organization', + method: 'get', + param: queryParams + }) +} + +// 删除收费挂号项目 +export function delRegistrationfee(param) { + console.log(param,'aaaa') + return request({ + url: '/basic-service/healthcare/healthcare-service', + method: 'delete', + params: param + }) +} \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue b/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue new file mode 100644 index 00000000..f0e88875 --- /dev/null +++ b/openhis-ui-vue3/src/views/basicservices/registrationfee/index.vue @@ -0,0 +1,835 @@ + + + + \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/patientManagement/outpatienRecords/component/api.js b/openhis-ui-vue3/src/views/patientManagement/outpatienRecords/component/api.js new file mode 100644 index 00000000..dad6d50a --- /dev/null +++ b/openhis-ui-vue3/src/views/patientManagement/outpatienRecords/component/api.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +export function listOutpatienRecords(query) { + return request({ + url: '/patientmanage/records/outpatient-record-page', + method: 'get', + params: query + }) + } + + export function listDoctorNames() { + return request({ + url: '/patientmanage/records/list-doctornames', + method: 'get', + }) + } + + diff --git a/openhis-ui-vue3/src/views/patientManagement/outpatienRecords/index.vue b/openhis-ui-vue3/src/views/patientManagement/outpatienRecords/index.vue new file mode 100644 index 00000000..77818af0 --- /dev/null +++ b/openhis-ui-vue3/src/views/patientManagement/outpatienRecords/index.vue @@ -0,0 +1,109 @@ + + + \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/patientManagement/patientManagement/index.vue b/openhis-ui-vue3/src/views/patientManagement/patientManagement/index.vue index d56c4ded..e389b0a0 100644 --- a/openhis-ui-vue3/src/views/patientManagement/patientManagement/index.vue +++ b/openhis-ui-vue3/src/views/patientManagement/patientManagement/index.vue @@ -26,18 +26,18 @@ - - + + - + - + - + @@ -238,7 +238,7 @@ const administrativegenderList = ref([]) //性别 const bloodtypeaboList = ref([]) //血型abo const bloodtypearhList = ref([]) //血型RH const familyrelationshiptypeList = ref([]) //家庭关系 -const addressCom = ref(""); +const addressCom = ref(""); //地址 const options = ref(pcas); // 地区数据 const selectedOptions = ref([]); // v-model 绑定的选中值 @@ -295,7 +295,6 @@ const findNodeByCode = (data, code) => { /** 查询菜单列表 */ function getList() { listPatient(queryParams.value).then(response => { - console.log("res",response,queryParams.value) patientList.value = response.data.records total.value = response.data.total; }); @@ -386,7 +385,6 @@ function handleUpdate(row) { const codes = convertAddressToCodes(selectedOptions1.value); selectedOptions.value = codes.filter(code => code !== null); isViewMode.value = false; - console.log("form.value12",form.value) open.value = true; title.value = "修改菜单"; } @@ -422,25 +420,18 @@ function submitForm() { if (form.value.busNo != undefined) { const newAddress = form.value.addressProvince+form.value.addressCity + form.value.addressDistrict + form.value.addressStreet + form.value.address if (addressCom.value !== newAddress) { - console.log("6666666666", form.value.address,addressCom.value); - // 如果不一致,清空并重新赋值 form.value.address = newAddress; - console.log("地址已更新为:", form.value.address); - } - console.log("form.value.up",form.value) + } updatePatient(form.value).then(response => { proxy.$modal.msgSuccess("修改成功"); open.value = false; - reset() getList(); }); } else { form.value.address = form.value.addressProvince+form.value.addressCity + form.value.addressDistrict + form.value.addressStreet + form.value.address - console.log("form.value",form.value) addPatient(form.value).then(response => { proxy.$modal.msgSuccess("新增成功"); open.value = false; - reset() getList(); }); } diff --git a/openhis-ui-vue3/vite.config.js b/openhis-ui-vue3/vite.config.js index 65cca806..3fa8a5c1 100644 --- a/openhis-ui-vue3/vite.config.js +++ b/openhis-ui-vue3/vite.config.js @@ -25,7 +25,7 @@ export default defineConfig (({mode, command}) => { }, // vite 相关配置 server: { - port: 80, + port: 81, host: true, open: true, proxy: {