docs(release-notes): 添加住院护士站划价功能说明和发版记录

- 新增住院护士站划价服务流程说明文档,详细描述了从参数预处理到结果响应的五大阶段流程
- 包含耗材类医嘱和诊疗活动类医嘱的差异化处理逻辑
- 添加完整的发版内容记录,涵盖新增菜单功能和各模块优化点
- 记录了住院相关功能的新增和门诊业务流程的修复
```
This commit is contained in:
2025-12-25 14:13:14 +08:00
parent 85fcb7c2e2
commit abc0674531
920 changed files with 107068 additions and 14495 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,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

@@ -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

@@ -1,226 +0,0 @@
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 com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 病人信息Dto
*
* @author liuhr
* @date 2025/2/22
*/
@Data
@Accessors(chain = true)
public class PatientInformationDto {
/**
* ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 临时标识
*/
private Integer tempFlag;
/**
* 患者姓名
*/
@NotBlank(message = "患者姓名不能为空")
private String name;
/**
* 患者其他名称
*/
private String nameJson;
/**
* 患者院内编码/病历号
*/
private String busNo;
/**
* 性别编码
*/
@NotNull
private Integer genderEnum;
private String genderEnum_enumText;
/**
* 生日
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date birthDate;
/**
* 死亡时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
private Date deceasedDate;
/**
* 婚姻状态
*/
private Integer maritalStatusEnum;
private String maritalStatusEnum_enumText;
/**
* 职业编码
*/
private Integer prfsEnum;
private String prfsEnum_enumText;
/**
* 电话
*/
@Pattern(regexp = "^$|^1[3-9]\\d{9}$", message = "电话格式不正确必须为11位有效手机号")
private String phone;
/**
* 地址
*/
private String address;
/**
* 地址省
*/
private String addressProvince;
/**
* 地址市
*/
private String addressCity;
/**
* 地址区
*/
private String addressDistrict;
/**
* 地址街道
*/
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
*/
private Integer bloodAbo;
private String bloodAbo_enumText;
/**
* 血型RH
*/
private Integer bloodRh;
private String bloodRh_enumText;
/**
* 工作单位
*/
private String workCompany;
/**
* 籍贯
*/
private String nativePlace;
/**
* 国家编码
*/
private String countryCode;
/**
* 联系人
*/
private String linkName;
/**
* 联系人关系
*/
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
*/
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

@@ -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);
}