提交merge1.3

This commit is contained in:
2025-12-27 15:30:25 +08:00
parent 8c607c8749
commit 088861f66e
1245 changed files with 220442 additions and 77616 deletions

View File

@@ -1,37 +0,0 @@
package com.openhis.web.patientmanage.appservice;
import javax.servlet.http.HttpServletRequest;
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.patientmanage.dto.OutpatientRecordDto;
import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam;
/**
* 门诊记录查询
*
* @author liuhr
* @date 2025/3/15
*/
public interface IOutpatientRecordService {
/**
* 分页查询门诊记录
*
* @param outpatientRecordSearchParam 门诊录查询参数
* @param searchKey 查询条件-模糊查询
* @param pageNo 页码默认为1
* @param pageSize 每页大小默认为10
* @return 分页查询
*/
IPage<OutpatientRecordDto> getPatient(OutpatientRecordSearchParam outpatientRecordSearchParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request);
/**
* 获取医生名字列表
*
* @return 医生名字列表
*/
R<?> getDoctorNames();
}

View File

@@ -1,15 +1,12 @@
package com.openhis.web.patientmanage.appservice;
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.outpatientmanage.dto.OutpatientSkinTestRecordDto;
import com.openhis.web.patientmanage.dto.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
import com.openhis.web.patientmanage.dto.PatientInfoInitDto;
/**
* 病人管理——病人信息
*
@@ -28,32 +25,32 @@ public interface IPatientInformationService {
/**
* 分页查询门诊记录
*
* @param patientInfoSearchParam 病人查询参数
* @param patientBaseInfoDto 病人查询参数
* @param searchKey 查询条件-模糊查询
* @param pageNo 页码默认为1
* @param pageSize 每页大小默认为10
* @return 分页查询
*/
IPage<PatientInformationDto> getPatientInfo(PatientInfoSearchParam patientInfoSearchParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request);
IPage<PatientBaseInfoDto> getPatientInfo(PatientBaseInfoDto patientBaseInfoDto, String searchKey, Integer pageNo,
Integer pageSize, HttpServletRequest request);
/**
* 修改病人信息
*
* @param patientInformationDto 病人信息
* @param patientInfoDto 病人信息
* @return 更新结果
*/
R<?> editPatient(PatientInformationDto patientInformationDto);
R<?> editPatient(PatientBaseInfoDto patientInfoDto);
/**
* 添加病人信息
*
* @param patientInformationDto 病人信息
* @param patientInfoDto 病人信息
*/
R<?> addPatient(PatientInformationDto patientInformationDto);
R<?> addPatient(PatientBaseInfoDto patientInfoDto);
/**
<<<<<<< HEAD
* 检查患者是否存在
*
* @param name 患者姓名
@@ -62,4 +59,11 @@ public interface IPatientInformationService {
*/
boolean checkPatientExists(String name, String idCardNo);
=======
* 更新患者手机号
*
* @param patientBaseInfoDto 患者信息
*/
R<?> updatePatientPhone(PatientBaseInfoDto patientBaseInfoDto);
>>>>>>> v1.3
}

View File

@@ -1,6 +1,9 @@
package com.openhis.web.patientmanage.appservice.impl;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -9,18 +12,20 @@ import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
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.conditions.update.LambdaUpdateWrapper;
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.core.domain.model.LoginUser;
import com.core.common.exception.ServiceException;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.DateUtils;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.bean.BeanUtils;
import com.core.common.utils.SecurityUtils;
import com.openhis.administration.domain.Patient;
import com.openhis.administration.domain.PatientIdentifier;
import com.openhis.administration.mapper.PatientMapper;
import com.openhis.administration.service.IPatientIdentifierService;
import com.openhis.administration.service.IPatientService;
import com.openhis.common.constant.CommonConstants;
@@ -30,9 +35,9 @@ import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.common.utils.IdCardUtil;
import com.openhis.web.patientmanage.appservice.IPatientInformationService;
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
import com.openhis.web.patientmanage.dto.PatientIdInfoDto;
import com.openhis.web.patientmanage.dto.PatientInfoInitDto;
import com.openhis.web.patientmanage.dto.PatientInfoSearchParam;
import com.openhis.web.patientmanage.dto.PatientInformationDto;
import com.openhis.web.patientmanage.mapper.PatientManageMapper;
/**
@@ -47,15 +52,13 @@ public class PatientInformationServiceImpl implements IPatientInformationService
@Autowired
PatientManageMapper patientManageMapper;
@Autowired
private PatientMapper patientMapper;
@Autowired
private IPatientService patientService;
@Autowired
private IPatientIdentifierService patientIdentifierService;
@Autowired(required = false)
@Autowired
private AssignSeqUtil assignSeqUtil;
/**
@@ -118,26 +121,38 @@ public class PatientInformationServiceImpl implements IPatientInformationService
/**
* 分页查询门诊记录
*
* @param patientInfoSearchParam 病人查询参数
* @param patientBaseInfoDto 病人查询参数
* @param searchKey 查询条件-模糊查询
* @param pageNo 页码默认为1
* @param pageSize 每页大小默认为10
* @return 分页查询
*/
@Override
public IPage<PatientInformationDto> getPatientInfo(PatientInfoSearchParam patientInfoSearchParam, String searchKey,
public IPage<PatientBaseInfoDto> getPatientInfo(PatientBaseInfoDto patientBaseInfoDto, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request) {
<<<<<<< HEAD
// 构建查询条件 - 添加phone字段到搜索条件中
QueryWrapper<PatientInformationDto> queryWrapper = HisQueryUtils.buildQueryWrapper(
patientInfoSearchParam, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.Name,
CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr,
CommonConstants.FieldName.Phone)), // 添加phone字段支持手机号搜索
=======
// 构建查询条件
QueryWrapper<PatientBaseInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper(
patientBaseInfoDto, searchKey, new HashSet<>(Arrays.asList(CommonConstants.FieldName.Name,
CommonConstants.FieldName.BusNo, CommonConstants.FieldName.PyStr, CommonConstants.FieldName.WbStr)),
>>>>>>> v1.3
request);
IPage<PatientInformationDto> patientInformationPage =
IPage<PatientBaseInfoDto> patientInformationPage =
patientManageMapper.getPatientPage(new Page<>(pageNo, pageSize), queryWrapper);
// 患者id集合
List<Long> patientIdList =
patientInformationPage.getRecords().stream().map(PatientBaseInfoDto::getId).collect(Collectors.toList());
// 患者身份信息
List<PatientIdInfoDto> patientIdInfo = patientManageMapper.getPatientIdInfo(patientIdList);
// 获取登录者信息
LoginUser loginUser = SecurityUtils.getLoginUser();
patientInformationPage.getRecords().forEach(e -> {
// 性别枚举类回显赋值
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
@@ -152,112 +167,112 @@ public class PatientInformationServiceImpl implements IPatientInformationService
// 家庭关系枚举类回显赋值
e.setLinkRelationCode_enumText(
EnumUtils.getInfoByValue(FamilyRelationshipType.class, e.getLinkRelationCode()));
// 患者身份子表信息
List<PatientIdInfoDto> idInfo = patientIdInfo.stream()
.filter(idInfoDto -> idInfoDto.getPatientId().equals(e.getId())).collect(Collectors.toList());
e.setPatientIdInfoList(idInfo);
// 登记医院
e.setOrganizationId(loginUser.getOrgId());
});
return patientInformationPage;
}
/**
* 修改病人信息
*
* @param patientInformationDto 病人信息
* @param patientInfoDto 病人信息
* @return 更新结果
*/
@Override
public R<?> editPatient(PatientInformationDto patientInformationDto) {
public R<?> editPatient(PatientBaseInfoDto patientInfoDto) {
// 如果患者没有输入身份证号则根据年龄自动生成
String idCard = patientInformationDto.getIdCard();
String idCard = patientInfoDto.getIdCard();
if (idCard == null || CommonConstants.Common.AREA_CODE.equals(idCard.substring(0, 6))) {
if (patientInformationDto.getAge() != null) {
idCard = IdCardUtil.generateIdByAge(patientInformationDto.getAge());
Date birthday = IdCardUtil.extractBirthdayFromIdCard(idCard);
patientInformationDto.setIdCard(idCard).setBirthDate(birthday);
if (patientInfoDto.getAge() != null) {
idCard = IdCardUtil.generateIdByAge(patientInfoDto.getAge());
patientInfoDto.setIdCard(idCard);
}
}
Patient patient = new Patient();
BeanUtils.copyProperties(patientInformationDto, patient);
// 当死亡时间不为空,检查死亡时间
if (patient.getDeceasedDate() != null) {
// 检验死亡时间未来时报错
if (DateUtils.isFuture(patient.getDeceasedDate())) {
R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00011, new Object[] {"死亡时间未来时!"}));
// 身份证号是否存在
List<Patient> idCardList =
patientService.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, patientInfoDto.getIdCard())
.ne(patientInfoDto.getId() != null, Patient::getId, patientInfoDto.getId()));
if (!idCardList.isEmpty()) {
Patient patient = idCardList.get(0);
if (patientInfoDto.getIdCard().equals(patient.getIdCard())
&& !patientInfoDto.getId().equals(patientInfoDto.getId())) {
throw new ServiceException("身份证号:" + patientInfoDto.getIdCard() + "已经存在");
}
}
// 调用服务层更新病人信息
boolean resPatient = patientService.updatePatient(patient);
// 根据患者的标识,判断是否需要修改
PatientIdentifier patientIdentifier = patientIdentifierService.selectByPatientId(patient.getId());
boolean resPatId = true;
if (patientIdentifier == null) {
PatientIdentifier newIdentifier = new PatientIdentifier();
newIdentifier.setPatientId(patient.getId()).setTypeCode(patientInformationDto.getTypeCode())
.setIdentifierNo(patientInformationDto.getIdentifierNo())
// 标识状态默认:常规
.setStateEnum(IdentifierStatusEnum.USUAL.getValue());
resPatId = patientIdentifierService.save(newIdentifier);
} else if (patientIdentifier.getIdentifierNo() != null
&& !patientIdentifier.getIdentifierNo().equals(patientInformationDto.getIdentifierNo())) {
// resPatId =
// patientIdentifierService.updateTypeByPatientId(patient.getId(), patientInformationDto.getTypeCode());
PatientIdentifier newIdentifier = new PatientIdentifier();
newIdentifier.setPatientId(patient.getId()).setTypeCode(patientInformationDto.getTypeCode())
.setIdentifierNo(patientInformationDto.getIdentifierNo())
// 标识状态默认:常规
.setStateEnum(IdentifierStatusEnum.USUAL.getValue());
resPatId = patientIdentifierService.save(newIdentifier);
// 处理患者信息
Patient patient = this.handlePatientInfo(patientInfoDto);
// 患者身份子表信息,先删除再新增
patientIdentifierService
.remove(new LambdaQueryWrapper<PatientIdentifier>().eq(PatientIdentifier::getPatientId, patient.getId()));
if (patientInfoDto.getPatientIdInfoList() != null) {
// 新增患者身份子表信息
List<PatientIdInfoDto> patientIdInfoList = patientInfoDto.getPatientIdInfoList();
PatientIdentifier patientIdentifier;
for (PatientIdInfoDto patientIdInfoDto : patientIdInfoList) {
patientIdentifier = new PatientIdentifier();
patientIdentifier.setPatientId(patient.getId());// 患者ID
patientIdentifier.setTypeCode(patientIdInfoDto.getTypeCode()); // 标识类型编码
patientIdentifier.setIdentifierNo(patientIdInfoDto.getIdentifierNo()); // 标识号
patientIdentifier.setStartTime(patientIdInfoDto.getStartTime()); // 有效时间Start
patientIdentifier.setEndTime(patientIdInfoDto.getEndTime()); // 有效时间end
patientIdentifierService.save(patientIdentifier);
}
}
return resPatient && resPatId
? R.ok(idCard, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"病人信息"}))
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
return R.ok(patient.getIdCard(),
MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"病人信息"}));
}
/**
* 添加病人信息
*
* @param patientInformationDto 病人信息
* @param patientInfoDto 病人信息
*/
@Override
public R<?> addPatient(PatientInformationDto patientInformationDto) {
public R<?> addPatient(PatientBaseInfoDto patientInfoDto) {
// 如果患者没有输入身份证号则根据年龄自动生成
String idCard = patientInformationDto.getIdCard();
String idCard = patientInfoDto.getIdCard();
if (idCard == null || CommonConstants.Common.AREA_CODE.equals(idCard.substring(0, 6))) {
if (patientInformationDto.getAge() != null) {
idCard = IdCardUtil.generateIdByAge(patientInformationDto.getAge());
Date birthday = IdCardUtil.extractBirthdayFromIdCard(idCard);
patientInformationDto.setIdCard(idCard).setBirthDate(birthday);
if (patientInfoDto.getAge() != null) {
idCard = IdCardUtil.generateIdByAge(patientInfoDto.getAge());
patientInfoDto.setIdCard(idCard);
}
}
Patient patient = new Patient();
BeanUtils.copyProperties(patientInformationDto, patient);
patient.setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10));
// 当死亡时间不为空,检查死亡时间
if (patient.getDeceasedDate() != null) {
// 检验死亡时间未来时报错
if (DateUtils.isFuture(patient.getDeceasedDate())) {
R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00011, new Object[] {"死亡时间未来时!"}));
// 身份证号是否存在
List<Patient> idCardList =
patientService.list(new LambdaQueryWrapper<Patient>().eq(Patient::getIdCard, patientInfoDto.getIdCard()));
if (!idCardList.isEmpty()) {
throw new ServiceException("身份证号:" + patientInfoDto.getIdCard() + "已经存在");
}
// 处理患者信息
Patient patient = this.handlePatientInfo(patientInfoDto);
// 新增患者身份子表信息
if (patientInfoDto.getPatientIdInfoList() != null) {
List<PatientIdInfoDto> patientIdInfoList = patientInfoDto.getPatientIdInfoList();
PatientIdentifier patientIdentifier;
for (PatientIdInfoDto patientIdInfoDto : patientIdInfoList) {
patientIdentifier = new PatientIdentifier();
patientIdentifier.setPatientId(patient.getId());// 患者ID
patientIdentifier.setTypeCode(patientIdInfoDto.getTypeCode()); // 标识类型编码
patientIdentifier.setIdentifierNo(patientIdInfoDto.getIdentifierNo()); // 标识号
patientIdentifier.setStartTime(patientIdInfoDto.getStartTime()); // 有效时间Start
patientIdentifier.setEndTime(patientIdInfoDto.getEndTime()); // 有效时间end
patientIdentifierService.save(patientIdentifier);
}
}
// 调用服务层,添加病人
boolean resPatient = patientService.addPatient(patient);
if (!resPatient) {
throw new ServiceException("身份证号已存在");
}
// 调用服务层,添加病人标识
PatientIdentifier patientIdentifier = new PatientIdentifier();
patientIdentifier.setPatientId(patient.getId()).setTypeCode(patientInformationDto.getTypeCode())
.setIdentifierNo(patientInformationDto.getIdentifierNo())
// 标识状态默认:常规
.setStateEnum(IdentifierStatusEnum.USUAL.getValue());
boolean result = patientIdentifierService.save(patientIdentifier);
return result
? R.ok(patient, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"病人信息"}))
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00003, new Object[] {"病人信息"}));
return R.ok(patient, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"患者信息"}));
}
<<<<<<< HEAD
@Override
public boolean checkPatientExists(String name, String idCardNo) {
QueryWrapper<Patient> queryWrapper = new QueryWrapper<>();
@@ -268,4 +283,67 @@ public class PatientInformationServiceImpl implements IPatientInformationService
}
=======
/**
* 处理患者信息
*
* @param patientInfoDto 患者信息dto
* @return 患者信息
*/
private Patient handlePatientInfo(PatientBaseInfoDto patientInfoDto) {
Patient patient = new Patient();
patient.setId(patientInfoDto.getId());
if (patientInfoDto.getId() == null) {
patient.setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10));
patientInfoDto.setActiveFlag(PublicationStatus.ACTIVE.getValue()); // 默认启用
}
patient.setName(patientInfoDto.getName()); // 患者姓名
patient.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(patientInfoDto.getName())); // 拼音首拼
patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patientInfoDto.getName())); // 五笔首拼
patient.setIdCard(patientInfoDto.getIdCard()); // 身份证号
patient.setBirthDate(IdCardUtil.extractBirthdayFromIdCard(patientInfoDto.getIdCard())); // 生日
patient.setGenderEnum(patientInfoDto.getGenderEnum()); // 性别
patient.setPhone(patientInfoDto.getPhone()); // 联系方式
patient.setPrfsEnum(patientInfoDto.getPrfsEnum()); // 职业
patient.setWorkCompany(patientInfoDto.getWorkCompany()); // 工作单位
patient.setLinkName(patientInfoDto.getLinkName()); // 联系人
patient.setLinkRelationCode(patientInfoDto.getLinkRelationCode()); // 联系人关系
patient.setLinkTelcom(patientInfoDto.getLinkTelcom()); // 联系人电话
patient.setAddress(patientInfoDto.getAddress()); // 地址
patient.setAddressProvince(patientInfoDto.getAddressProvince()); // 地址省
patient.setAddressCity(patientInfoDto.getAddressCity()); // 地址市
patient.setAddressDistrict(patientInfoDto.getAddressDistrict()); // 地址区
patient.setAddressStreet(patientInfoDto.getAddressStreet()); // 地址街道
patient.setBloodAbo(patientInfoDto.getBloodAbo()); // 血型ABO
patient.setBloodRh(patientInfoDto.getBloodRh()); // 血型RH
patient.setMaritalStatusEnum(patientInfoDto.getMaritalStatusEnum()); // 婚姻状态
patient.setDeceasedDate(patientInfoDto.getDeceasedDate()); // 死亡时间
patient.setNationalityCode(patientInfoDto.getNationalityCode());// 民族
patient.setActiveFlag(patientInfoDto.getActiveFlag());// 活动标识
patientService.saveOrUpdate(patient);
return patient;
}
/**
* 更新患者手机号
*
* @param patientBaseInfoDto 患者信息
*/
@Override
public R<?> updatePatientPhone(PatientBaseInfoDto patientBaseInfoDto) {
if (patientBaseInfoDto != null) {
if (patientBaseInfoDto.getId() != null && patientBaseInfoDto.getPhone() != null) {
LambdaUpdateWrapper<Patient> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Patient::getPhone, patientBaseInfoDto.getPhone());
updateWrapper.eq(Patient::getId, patientBaseInfoDto.getId());
// 手机号码不相等时更新号码
updateWrapper.ne(Patient::getPhone, patientBaseInfoDto.getPhone()).or().isNull(Patient::getPhone);
patientService.update(updateWrapper);
return R.ok();
}
}
return R.fail("更新患者手机号失败");
}
>>>>>>> v1.3
}

View File

@@ -1,62 +0,0 @@
package com.openhis.web.patientmanage.controller;
import com.openhis.web.datadictionary.dto.DeviceManageSelParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.core.common.core.domain.R;
import com.openhis.web.patientmanage.appservice.IOutpatientRecordService;
import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
/**
* 门诊记录
*
* @author liuhr
* @date 2025/2/28
*/
@RestController
@RequestMapping("/patient-manage/records")
@Slf4j
@AllArgsConstructor
public class OutpatientRecordController {
@Autowired
IOutpatientRecordService outpatientRecordService;
/**
* 门诊记录初期数据
*
* @return
*/
@GetMapping("/init")
public R<?> getDoctorNames() {
// 获取医生名字列表
return outpatientRecordService.getDoctorNames();
}
/**
* 分页查询门诊记录,可选条件
*
* @param outpatientRecordSearchParam 查询条件
* @param searchKey 查询条件-模糊查询
* @param pageNo 页码默认为1
* @param pageSize 每页大小默认为10
*/
@GetMapping("/outpatient-record-page")
public R<?> getPatient(OutpatientRecordSearchParam outpatientRecordSearchParam,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return R.ok(outpatientRecordService.getPatient(outpatientRecordSearchParam,searchKey, pageNo, pageSize,request));
}
}

View File

@@ -3,13 +3,11 @@ package com.openhis.web.patientmanage.controller;
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.core.common.core.domain.R;
import com.openhis.web.patientmanage.appservice.IPatientInformationService;
import com.openhis.web.patientmanage.dto.PatientInfoSearchParam;
import com.openhis.web.patientmanage.dto.PatientInformationDto;
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -42,40 +40,47 @@ public class PatientInformationController {
/**
* 添加病人信息
*
* @param patientInformationDto 病人信息
* @param patientInfoDto 病人信息
*/
@PostMapping("/patient-information")
public R<?> addPatient(@Validated @RequestBody PatientInformationDto patientInformationDto) {
return patientInformationService.addPatient(patientInformationDto);
public R<?> addPatient(@RequestBody PatientBaseInfoDto patientInfoDto) {
return patientInformationService.addPatient(patientInfoDto);
}
/**
* 修改病人信息
*
* @param patientInformationDto 病人信息
* @param patientInfoDto 病人信息
*/
@PutMapping("/patient-information")
public R<?> editPatient(@Validated @RequestBody PatientInformationDto patientInformationDto) {
// 调用服务层更新病人信息
return patientInformationService.editPatient(patientInformationDto);
public R<?> editPatient(@RequestBody PatientBaseInfoDto patientInfoDto) {
return patientInformationService.editPatient(patientInfoDto);
}
/**
* 分页查询病人信息,可选条件
*
* @param patientInfoSearchParam 患者查询参数
* @param patientBaseInfoDto 患者查询参数
* @param searchKey 查询条件-模糊查询
* @param pageNo 页码默认为1
* @param pageSize 每页大小默认为10
*/
@GetMapping("/patient-information-page")
public R<?> getPatient(PatientInfoSearchParam patientInfoSearchParam,
public R<?> getPatient(PatientBaseInfoDto patientBaseInfoDto,
@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return R
.ok(patientInformationService.getPatientInfo(patientInfoSearchParam, searchKey, pageNo, pageSize, request));
return R.ok(patientInformationService.getPatientInfo(patientBaseInfoDto, searchKey, pageNo, pageSize, request));
}
/**
* 更新患者手机号
*
* @param patientBaseInfoDto 患者信息
*/
@PostMapping("/update-patient-phone")
public R<?> updatePatientPhone(@RequestBody PatientBaseInfoDto patientBaseInfoDto) {
return patientInformationService.updatePatientPhone(patientBaseInfoDto);
}
/**

View File

@@ -1,59 +0,0 @@
package com.openhis.web.patientmanage.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* 门诊记录Dto
*
* @author liuhr
* @date 2025/2/28
*/
@Data
@Accessors(chain = true)
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;
/** 就诊时间 */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date encounterTime;
/** 就诊对象状态 */
private Integer subjectStatusEnum;
private String subjectStatusEnum_enumText;
/** 机构名称/接诊医院 */
private String organizationName;
/** 接诊医生姓名 */
private String doctorName;
/** 手机号码 */
private String phone;
/** 就诊开始时间 */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date StartTime;
}

View File

@@ -1,22 +0,0 @@
package com.openhis.web.patientmanage.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 门诊记录查询参数
*
* @author liuhr
* @date 2025/2/28
*/
@Data
@Accessors(chain = true)
public class OutpatientRecordSearchParam {
/** 手机号码 */
private String phone;
/** 医生姓名 */
private String doctorName;
}

View File

@@ -1,11 +1,7 @@
package com.openhis.web.patientmanage.dto;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -16,14 +12,14 @@ import lombok.Data;
import lombok.experimental.Accessors;
/**
* 病人信息Dto
* 病人信息 Dto
*
* @author liuhr
* @date 2025/2/22
*/
@Data
@Accessors(chain = true)
public class PatientInformationDto {
public class PatientBaseInfoDto {
/**
* ID
@@ -31,34 +27,38 @@ public class PatientInformationDto {
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 临时标识
*/
private Integer tempFlag;
/**
* 患者姓名
*/
@NotBlank(message = "患者姓名不能为空")
private String name;
/**
* 患者其他名称
* 民族编码
*/
private String nameJson;
/**
* 患者院内编码/病历号
*/
private String busNo;
@Dict(dictCode = "nationality_code")
private String nationalityCode;
private String nationalityCode_dictText;
/**
* 性别编码
*/
@NotNull
private Integer genderEnum;
private String genderEnum_enumText;
/** 活动标记 */
private Integer activeFlag;
private Integer activeFlag_enumText;
/**
* 身份证号码
*/
private String idCard;
/**
* 年龄
*/
private Integer age;
/**
* 生日
*/
@@ -66,8 +66,9 @@ public class PatientInformationDto {
private Date birthDate;
/**
* 死亡时间
* 联系方式
*/
<<<<<<< HEAD:openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientInformationDto.java
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
private Date deceasedDate;
@@ -76,6 +77,9 @@ public class PatientInformationDto {
*/
private Integer maritalStatusEnum;
private String maritalStatusEnum_enumText;
=======
private String phone;
>>>>>>> v1.3:openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/dto/PatientBaseInfoDto.java
/**
* 职业编码
@@ -84,10 +88,25 @@ public class PatientInformationDto {
private String prfsEnum_enumText;
/**
* 电话
* 工作单位
*/
@Pattern(regexp = "^$|^1[3-9]\\d{9}$", message = "电话格式不正确必须为11位有效手机号")
private String phone;
private String workCompany;
/**
* 联系人
*/
private String linkName;
/**
* 联系人关系
*/
private Integer linkRelationCode;
private String linkRelationCode_enumText;
/**
* 联系人电话
*/
private String linkTelcom;
/**
* 地址
@@ -114,43 +133,6 @@ public class PatientInformationDto {
*/
private String addressStreet;
/**
* 患者其他地址
*/
private String addressJson;
/**
* 民族
*/
private String nationalityCode;
/**
* 证件号码
*/
private String idCard;
/**
* 证件类型
*/
@Dict(dictCode = "sys_idtype")
private String typeCode;
private String typeCode_dictText;
/**
* 标识号
*/
private String identifierNo;
/**
* 拼音码
*/
private String pyStr;
/**
* 五笔码
*/
private String wbStr;
/**
* 血型ABO
*/
@@ -164,63 +146,36 @@ public class PatientInformationDto {
private String bloodRh_enumText;
/**
* 工作单位
* 婚姻状态
*/
private String workCompany;
private Integer maritalStatusEnum;
private String maritalStatusEnum_enumText;
/**
* 籍贯
* 死亡时间
*/
private String nativePlace;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date deceasedDate;
/**
* 国家编码
* 病人证件信息集合
*/
private String countryCode;
private List<PatientIdInfoDto> patientIdInfoList;
/**
* 联系人
* 患者院内编码/病历号
*/
private String linkName;
private String busNo;
/**
* 联系人关系
*/
private Integer linkRelationCode;
private String linkRelationCode_enumText;
/**
* 联系人电话
*/
// @Size(min = 11, max = 11, message = "电话长度必须为11位")
// @Pattern(regexp = "^1[3-9]\\d{9}$", message = "电话格式不正确")
@Pattern(regexp = "^$|^1[3-9]\\d{9}$", message = "联系人电话格式不正确必须为11位有效手机号")
private String linkTelcom;
/**
* 其他联系人
*/
private String linkJsons;
/**
* 机构Id
* 登记医院ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long organizationId;
/**
* 机构名
*/
private String organizationName;
/**
* 创建时间
* 登记时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 年龄
*/
private Integer age;
}

View File

@@ -0,0 +1,42 @@
package com.openhis.web.patientmanage.dto;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 病人证件信息 Dto
*
* @author liuhr
* @date 2025/2/22
*/
@Data
@Accessors(chain = true)
public class PatientIdInfoDto {
/**
* 患者id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long patientId;
/** 标识类型编码 */
private String typeCode;
/** 标识号 */
private String identifierNo;
/** 有效时间Start */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/** 有效时间end */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
}

View File

@@ -1,18 +0,0 @@
package com.openhis.web.patientmanage.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 病人信息查询参数Dto
*
* @author liuhr
* @date 2025/3/31
*/
@Data
@Accessors(chain = true)
public class PatientInfoSearchParam {
/** 病人编号 */
private String busNo;
}

View File

@@ -11,9 +11,8 @@ 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.administration.domain.Patient;
import com.openhis.web.patientmanage.dto.OutpatientRecordDto;
import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam;
import com.openhis.web.patientmanage.dto.PatientInformationDto;
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
import com.openhis.web.patientmanage.dto.PatientIdInfoDto;
/**
* 病人信息管理
@@ -31,26 +30,15 @@ public interface PatientManageMapper extends BaseMapper<Patient> {
* @param queryWrapper 查询条件
* @return 病人信息列表
*/
IPage<PatientInformationDto> getPatientPage(@Param("page") Page<PatientInformationDto> page,
@Param(Constants.WRAPPER) QueryWrapper<PatientInformationDto> queryWrapper);
IPage<PatientBaseInfoDto> getPatientPage(@Param("page") Page<PatientBaseInfoDto> page,
@Param(Constants.WRAPPER) QueryWrapper<PatientBaseInfoDto> queryWrapper);
/**
* 门诊信息分页查询
*
* @param typeCode 参与者身份类型枚举类ParticipantType
* @param page 分页参数
* @param queryWrapper 查询条件
* @return 门诊信息列表
* 查询患者身份信息
*
* @param patientIdList 患者id集合
* @return 患者身份信息
*/
IPage<OutpatientRecordDto> getOutpatientRecord(@Param("typeCode") String typeCode,
@Param("page") Page<OutpatientRecordDto> page,
@Param(Constants.WRAPPER) QueryWrapper<OutpatientRecordDto> queryWrapper);
/**
* 获取医生名字列表
*
* @return 医生名字列表
*/
List<String> getDoctorNames();
List<PatientIdInfoDto> getPatientIdInfo(@Param("patientIdList") List<Long> patientIdList);
}