feat(miniprogram): 移动护理小程序后端API
- 新增 MpNursingTask 实体 + Mapper + Service - 新增 MpVitalSignRecord 实体 + Mapper + Service - 新增 MpAssessmentRecord 实体 + Mapper + Service - 新增 IMpNursingAppService 7个API接口 - 新增 MpNursingController 7个REST端点 - 新增 V90 Flyway迁移(3张表) - 所有接口加 @PreAuthorize 权限控制
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package com.healthlink.his.web.miniprogram.appservice;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.healthlink.his.web.miniprogram.dto.AssessmentSubmitDto;
|
||||
import com.healthlink.his.web.miniprogram.dto.TaskCompleteDto;
|
||||
import com.healthlink.his.web.miniprogram.dto.VitalSignSubmitDto;
|
||||
|
||||
/**
|
||||
* 移动护理小程序 AppService
|
||||
*/
|
||||
public interface IMpNursingAppService {
|
||||
|
||||
/**
|
||||
* 获取护士任务列表
|
||||
* @param nurseId 护士ID
|
||||
* @param status 任务状态(可选)
|
||||
*/
|
||||
R<?> getTaskList(Long nurseId, String status);
|
||||
|
||||
/**
|
||||
* 完成任务
|
||||
* @param taskId 任务ID
|
||||
* @param dto 完成结果
|
||||
*/
|
||||
R<?> completeTask(Long taskId, TaskCompleteDto dto);
|
||||
|
||||
/**
|
||||
* 获取患者信息(精简版)
|
||||
* @param patientId 患者ID
|
||||
*/
|
||||
R<?> getPatientInfo(Long patientId);
|
||||
|
||||
/**
|
||||
* 获取生命体征趋势
|
||||
* @param patientId 患者ID
|
||||
* @param days 查询天数(默认7天)
|
||||
*/
|
||||
R<?> getVitalSigns(Long patientId, Integer days);
|
||||
|
||||
/**
|
||||
* 录入生命体征
|
||||
* @param dto 体征数据
|
||||
*/
|
||||
R<?> submitVitalSign(VitalSignSubmitDto dto);
|
||||
|
||||
/**
|
||||
* 获取评估记录列表
|
||||
* @param patientId 患者ID
|
||||
*/
|
||||
R<?> getAssessmentList(Long patientId);
|
||||
|
||||
/**
|
||||
* 提交护理评估
|
||||
* @param dto 评估数据
|
||||
*/
|
||||
R<?> submitAssessment(AssessmentSubmitDto dto);
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.healthlink.his.web.miniprogram.appservice.impl;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.healthlink.his.miniprogram.domain.MpAssessmentRecord;
|
||||
import com.healthlink.his.miniprogram.domain.MpNursingTask;
|
||||
import com.healthlink.his.miniprogram.domain.MpVitalSignRecord;
|
||||
import com.healthlink.his.miniprogram.mapper.MpAssessmentRecordMapper;
|
||||
import com.healthlink.his.miniprogram.mapper.MpNursingTaskMapper;
|
||||
import com.healthlink.his.miniprogram.mapper.MpVitalSignRecordMapper;
|
||||
import com.healthlink.his.miniprogram.service.IMpAssessmentRecordService;
|
||||
import com.healthlink.his.miniprogram.service.IMpNursingTaskService;
|
||||
import com.healthlink.his.miniprogram.service.IMpVitalSignRecordService;
|
||||
import com.healthlink.his.web.miniprogram.appservice.IMpNursingAppService;
|
||||
import com.healthlink.his.web.miniprogram.dto.AssessmentSubmitDto;
|
||||
import com.healthlink.his.web.miniprogram.dto.TaskCompleteDto;
|
||||
import com.healthlink.his.web.miniprogram.dto.VitalSignSubmitDto;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 移动护理小程序 AppService实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MpNursingAppServiceImpl implements IMpNursingAppService {
|
||||
|
||||
@Resource
|
||||
private IMpNursingTaskService nursingTaskService;
|
||||
|
||||
@Resource
|
||||
private MpNursingTaskMapper nursingTaskMapper;
|
||||
|
||||
@Resource
|
||||
private IMpVitalSignRecordService vitalSignRecordService;
|
||||
|
||||
@Resource
|
||||
private MpVitalSignRecordMapper vitalSignRecordMapper;
|
||||
|
||||
@Resource
|
||||
private IMpAssessmentRecordService assessmentRecordService;
|
||||
|
||||
@Resource
|
||||
private MpAssessmentRecordMapper assessmentRecordMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public R<?> getTaskList(Long nurseId, String status) {
|
||||
List<MpNursingTask> tasks = nursingTaskMapper.selectTaskListByNurse(nurseId, status);
|
||||
long pendingCount = tasks.stream().filter(t -> "PENDING".equals(t.getTaskStatus())).count();
|
||||
long inProgressCount = tasks.stream().filter(t -> "IN_PROGRESS".equals(t.getTaskStatus())).count();
|
||||
long completedCount = tasks.stream().filter(t -> "COMPLETED".equals(t.getTaskStatus())).count();
|
||||
|
||||
return R.ok(Map.of(
|
||||
"tasks", tasks,
|
||||
"summary", Map.of(
|
||||
"pending", pendingCount,
|
||||
"inProgress", inProgressCount,
|
||||
"completed", completedCount,
|
||||
"total", tasks.size()
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> completeTask(Long taskId, TaskCompleteDto dto) {
|
||||
MpNursingTask task = nursingTaskService.getById(taskId);
|
||||
if (task == null) {
|
||||
return R.fail("任务不存在");
|
||||
}
|
||||
if ("COMPLETED".equals(task.getTaskStatus())) {
|
||||
return R.fail("任务已完成");
|
||||
}
|
||||
|
||||
task.setTaskStatus("COMPLETED");
|
||||
task.setCompleteTime(LocalDateTime.now());
|
||||
nursingTaskService.updateById(task);
|
||||
|
||||
log.info("任务完成: taskId={}, nurseId={}, result={}", taskId, task.getNurseId(), dto.getResult());
|
||||
return R.ok("任务已完成");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public R<?> getPatientInfo(Long patientId) {
|
||||
return R.ok(Map.of(
|
||||
"patientId", patientId,
|
||||
"message", "患者信息查询待接入基础数据模块"
|
||||
));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public R<?> getVitalSigns(Long patientId, Integer days) {
|
||||
if (days == null || days <= 0) {
|
||||
days = 7;
|
||||
}
|
||||
List<MpVitalSignRecord> records = vitalSignRecordMapper.selectByPatientId(patientId, days);
|
||||
return R.ok(records);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> submitVitalSign(VitalSignSubmitDto dto) {
|
||||
if (dto.getPatientId() == null || dto.getNurseId() == null) {
|
||||
return R.fail("患者ID和护士ID不能为空");
|
||||
}
|
||||
if (dto.getRecordTime() == null) {
|
||||
dto.setRecordTime(LocalDateTime.now());
|
||||
}
|
||||
|
||||
MpVitalSignRecord record = new MpVitalSignRecord();
|
||||
record.setPatientId(dto.getPatientId());
|
||||
record.setEncounterId(dto.getEncounterId());
|
||||
record.setNurseId(dto.getNurseId());
|
||||
record.setRecordTime(dto.getRecordTime());
|
||||
record.setTemperature(dto.getTemperature());
|
||||
record.setPulse(dto.getPulse());
|
||||
record.setRespiration(dto.getRespiration());
|
||||
record.setSystolicBp(dto.getSystolicBp());
|
||||
record.setDiastolicBp(dto.getDiastolicBp());
|
||||
record.setBloodOxygen(dto.getBloodOxygen());
|
||||
record.setHeight(dto.getHeight());
|
||||
record.setWeight(dto.getWeight());
|
||||
|
||||
vitalSignRecordService.save(record);
|
||||
log.info("生命体征录入: patientId={}, nurseId={}, recordId={}",
|
||||
dto.getPatientId(), dto.getNurseId(), record.getId());
|
||||
return R.ok(Map.of("recordId", record.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public R<?> getAssessmentList(Long patientId) {
|
||||
List<MpAssessmentRecord> records = assessmentRecordMapper.selectByPatientId(patientId);
|
||||
return R.ok(records);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<?> submitAssessment(AssessmentSubmitDto dto) {
|
||||
if (dto.getPatientId() == null || dto.getNurseId() == null || dto.getAssessmentType() == null) {
|
||||
return R.fail("患者ID、护士ID和评估类型不能为空");
|
||||
}
|
||||
if (dto.getRecordTime() == null) {
|
||||
dto.setRecordTime(LocalDateTime.now());
|
||||
}
|
||||
|
||||
MpAssessmentRecord record = new MpAssessmentRecord();
|
||||
record.setPatientId(dto.getPatientId());
|
||||
record.setEncounterId(dto.getEncounterId());
|
||||
record.setNurseId(dto.getNurseId());
|
||||
record.setAssessmentType(dto.getAssessmentType());
|
||||
record.setAssessmentContent(dto.getAssessmentContent());
|
||||
record.setAssessmentResult(dto.getAssessmentResult());
|
||||
record.setScore(dto.getScore());
|
||||
record.setRiskLevel(dto.getRiskLevel());
|
||||
record.setRecordTime(dto.getRecordTime());
|
||||
|
||||
assessmentRecordService.save(record);
|
||||
log.info("护理评估提交: patientId={}, type={}, recordId={}",
|
||||
dto.getPatientId(), dto.getAssessmentType(), record.getId());
|
||||
return R.ok(Map.of("recordId", record.getId()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.healthlink.his.web.miniprogram.controller;
|
||||
|
||||
import com.core.common.core.domain.R;
|
||||
import com.healthlink.his.web.miniprogram.appservice.IMpNursingAppService;
|
||||
import com.healthlink.his.web.miniprogram.dto.AssessmentSubmitDto;
|
||||
import com.healthlink.his.web.miniprogram.dto.TaskCompleteDto;
|
||||
import com.healthlink.his.web.miniprogram.dto.VitalSignSubmitDto;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 移动护理小程序 Controller
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "移动护理小程序")
|
||||
@RestController
|
||||
@RequestMapping("/mp/nursing")
|
||||
public class MpNursingController {
|
||||
|
||||
private final IMpNursingAppService mpNursingAppService;
|
||||
|
||||
public MpNursingController(IMpNursingAppService mpNursingAppService) {
|
||||
this.mpNursingAppService = mpNursingAppService;
|
||||
}
|
||||
|
||||
@Operation(summary = "获取护士任务列表")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:list')")
|
||||
@GetMapping("/tasks")
|
||||
public R<?> getTaskList(@RequestParam Long nurseId,
|
||||
@RequestParam(required = false) String status) {
|
||||
return mpNursingAppService.getTaskList(nurseId, status);
|
||||
}
|
||||
|
||||
@Operation(summary = "完成任务")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:edit')")
|
||||
@PostMapping("/tasks/{id}/complete")
|
||||
public R<?> completeTask(@PathVariable Long id,
|
||||
@RequestBody TaskCompleteDto dto) {
|
||||
return mpNursingAppService.completeTask(id, dto);
|
||||
}
|
||||
|
||||
@Operation(summary = "获取患者信息")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:list')")
|
||||
@GetMapping("/patient/{id}")
|
||||
public R<?> getPatientInfo(@PathVariable Long id) {
|
||||
return mpNursingAppService.getPatientInfo(id);
|
||||
}
|
||||
|
||||
@Operation(summary = "获取生命体征趋势")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:list')")
|
||||
@GetMapping("/vital-signs/{patientId}")
|
||||
public R<?> getVitalSigns(@PathVariable Long patientId,
|
||||
@RequestParam(required = false, defaultValue = "7") Integer days) {
|
||||
return mpNursingAppService.getVitalSigns(patientId, days);
|
||||
}
|
||||
|
||||
@Operation(summary = "录入生命体征")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:edit')")
|
||||
@PostMapping("/vital-sign")
|
||||
public R<?> submitVitalSign(@RequestBody VitalSignSubmitDto dto) {
|
||||
return mpNursingAppService.submitVitalSign(dto);
|
||||
}
|
||||
|
||||
@Operation(summary = "获取评估记录列表")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:list')")
|
||||
@GetMapping("/assessments/{patientId}")
|
||||
public R<?> getAssessmentList(@PathVariable Long patientId) {
|
||||
return mpNursingAppService.getAssessmentList(patientId);
|
||||
}
|
||||
|
||||
@Operation(summary = "提交护理评估")
|
||||
@PreAuthorize("@ss.hasPermi('nursing:nursing:edit')")
|
||||
@PostMapping("/assessment")
|
||||
public R<?> submitAssessment(@RequestBody AssessmentSubmitDto dto) {
|
||||
return mpNursingAppService.submitAssessment(dto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.healthlink.his.web.miniprogram.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 护理评估提交请求DTO
|
||||
*/
|
||||
@Data
|
||||
public class AssessmentSubmitDto {
|
||||
|
||||
private Long patientId;
|
||||
|
||||
private Long encounterId;
|
||||
|
||||
private Long nurseId;
|
||||
|
||||
private String assessmentType;
|
||||
|
||||
private String assessmentContent;
|
||||
|
||||
private String assessmentResult;
|
||||
|
||||
private BigDecimal score;
|
||||
|
||||
private String riskLevel;
|
||||
|
||||
private LocalDateTime recordTime;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.healthlink.his.web.miniprogram.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 患者信息精简版DTO
|
||||
*/
|
||||
@Data
|
||||
public class PatientInfoDto {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String patientName;
|
||||
|
||||
private String gender;
|
||||
|
||||
private LocalDate birthDate;
|
||||
|
||||
private String medicalNo;
|
||||
|
||||
private String phone;
|
||||
|
||||
private String departmentName;
|
||||
|
||||
private String bedNo;
|
||||
|
||||
private String diagnosis;
|
||||
|
||||
private String nurseLevel;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.healthlink.his.web.miniprogram.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 任务完成请求DTO
|
||||
*/
|
||||
@Data
|
||||
public class TaskCompleteDto {
|
||||
|
||||
private String result;
|
||||
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.healthlink.his.web.miniprogram.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 生命体征录入请求DTO
|
||||
*/
|
||||
@Data
|
||||
public class VitalSignSubmitDto {
|
||||
|
||||
private Long patientId;
|
||||
|
||||
private Long encounterId;
|
||||
|
||||
private Long nurseId;
|
||||
|
||||
private LocalDateTime recordTime;
|
||||
|
||||
private BigDecimal temperature;
|
||||
|
||||
private Integer pulse;
|
||||
|
||||
private Integer respiration;
|
||||
|
||||
private Integer systolicBp;
|
||||
|
||||
private Integer diastolicBp;
|
||||
|
||||
private BigDecimal bloodOxygen;
|
||||
|
||||
private BigDecimal height;
|
||||
|
||||
private BigDecimal weight;
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
-- 移动护理小程序 - 护理任务表
|
||||
CREATE TABLE IF NOT EXISTS mp_nursing_task (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
patient_id BIGINT NOT NULL,
|
||||
encounter_id BIGINT NOT NULL,
|
||||
nurse_id BIGINT NOT NULL,
|
||||
task_type VARCHAR(32) NOT NULL,
|
||||
task_content TEXT,
|
||||
task_status VARCHAR(20) DEFAULT 'PENDING',
|
||||
due_time TIMESTAMP,
|
||||
complete_time TIMESTAMP,
|
||||
tenant_id BIGINT DEFAULT 0,
|
||||
delete_flag CHAR(1) DEFAULT '0',
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
create_by VARCHAR(64)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE mp_nursing_task IS '移动护理-护理任务';
|
||||
COMMENT ON COLUMN mp_nursing_task.id IS '主键ID';
|
||||
COMMENT ON COLUMN mp_nursing_task.patient_id IS '患者ID';
|
||||
COMMENT ON COLUMN mp_nursing_task.encounter_id IS '就诊ID';
|
||||
COMMENT ON COLUMN mp_nursing_task.nurse_id IS '护士ID';
|
||||
COMMENT ON COLUMN mp_nursing_task.task_type IS '任务类型';
|
||||
COMMENT ON COLUMN mp_nursing_task.task_content IS '任务内容';
|
||||
COMMENT ON COLUMN mp_nursing_task.task_status IS '任务状态: PENDING/IN_PROGRESS/COMPLETED/CANCELLED';
|
||||
COMMENT ON COLUMN mp_nursing_task.due_time IS '截止时间';
|
||||
COMMENT ON COLUMN mp_nursing_task.complete_time IS '完成时间';
|
||||
|
||||
-- 移动护理小程序 - 生命体征记录表
|
||||
CREATE TABLE IF NOT EXISTS mp_vital_sign_record (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
patient_id BIGINT NOT NULL,
|
||||
encounter_id BIGINT NOT NULL,
|
||||
nurse_id BIGINT NOT NULL,
|
||||
record_time TIMESTAMP NOT NULL,
|
||||
temperature DECIMAL(4,1),
|
||||
pulse INTEGER,
|
||||
respiration INTEGER,
|
||||
systolic_bp INTEGER,
|
||||
diastolic_bp INTEGER,
|
||||
blood_oxygen DECIMAL(5,2),
|
||||
height DECIMAL(5,1),
|
||||
weight DECIMAL(5,1),
|
||||
tenant_id BIGINT DEFAULT 0,
|
||||
delete_flag CHAR(1) DEFAULT '0',
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
create_by VARCHAR(64)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE mp_vital_sign_record IS '移动护理-生命体征记录';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.id IS '主键ID';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.patient_id IS '患者ID';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.encounter_id IS '就诊ID';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.nurse_id IS '记录护士ID';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.record_time IS '记录时间';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.temperature IS '体温(℃)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.pulse IS '脉搏(次/分)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.respiration IS '呼吸(次/分)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.systolic_bp IS '收缩压(mmHg)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.diastolic_bp IS '舒张压(mmHg)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.blood_oxygen IS '血氧饱和度(%)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.height IS '身高(cm)';
|
||||
COMMENT ON COLUMN mp_vital_sign_record.weight IS '体重(kg)';
|
||||
|
||||
-- 移动护理小程序 - 护理评估记录表
|
||||
CREATE TABLE IF NOT EXISTS mp_assessment_record (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
patient_id BIGINT NOT NULL,
|
||||
encounter_id BIGINT NOT NULL,
|
||||
nurse_id BIGINT NOT NULL,
|
||||
assessment_type VARCHAR(32) NOT NULL,
|
||||
assessment_content TEXT,
|
||||
assessment_result TEXT,
|
||||
score DECIMAL(5,1),
|
||||
risk_level VARCHAR(20),
|
||||
record_time TIMESTAMP NOT NULL,
|
||||
tenant_id BIGINT DEFAULT 0,
|
||||
delete_flag CHAR(1) DEFAULT '0',
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
create_by VARCHAR(64)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE mp_assessment_record IS '移动护理-护理评估记录';
|
||||
COMMENT ON COLUMN mp_assessment_record.id IS '主键ID';
|
||||
COMMENT ON COLUMN mp_assessment_record.patient_id IS '患者ID';
|
||||
COMMENT ON COLUMN mp_assessment_record.encounter_id IS '就诊ID';
|
||||
COMMENT ON COLUMN mp_assessment_record.nurse_id IS '评估护士ID';
|
||||
COMMENT ON COLUMN mp_assessment_record.assessment_type IS '评估类型';
|
||||
COMMENT ON COLUMN mp_assessment_record.assessment_content IS '评估内容';
|
||||
COMMENT ON COLUMN mp_assessment_record.assessment_result IS '评估结果';
|
||||
COMMENT ON COLUMN mp_assessment_record.score IS '评分';
|
||||
COMMENT ON COLUMN mp_assessment_record.risk_level IS '风险等级';
|
||||
COMMENT ON COLUMN mp_assessment_record.record_time IS '评估时间';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.healthlink.his.miniprogram.mapper.MpAssessmentRecordMapper">
|
||||
|
||||
<select id="selectByPatientId" resultType="com.healthlink.his.miniprogram.domain.MpAssessmentRecord">
|
||||
SELECT id, patient_id, encounter_id, nurse_id, assessment_type,
|
||||
assessment_content, assessment_result, score, risk_level,
|
||||
record_time, create_time, create_by
|
||||
FROM mp_assessment_record
|
||||
WHERE patient_id = #{patientId}
|
||||
AND delete_flag = '0'
|
||||
ORDER BY record_time DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.healthlink.his.miniprogram.mapper.MpNursingTaskMapper">
|
||||
|
||||
<select id="selectTaskListByNurse" resultType="com.healthlink.his.miniprogram.domain.MpNursingTask">
|
||||
SELECT id, patient_id, encounter_id, nurse_id, task_type, task_content,
|
||||
task_status, due_time, complete_time, create_time, create_by
|
||||
FROM mp_nursing_task
|
||||
WHERE nurse_id = #{nurseId}
|
||||
AND delete_flag = '0'
|
||||
<if test="taskStatus != null and taskStatus != ''">
|
||||
AND task_status = #{taskStatus}
|
||||
</if>
|
||||
ORDER BY
|
||||
CASE task_status
|
||||
WHEN 'IN_PROGRESS' THEN 1
|
||||
WHEN 'PENDING' THEN 2
|
||||
WHEN 'COMPLETED' THEN 3
|
||||
WHEN 'CANCELLED' THEN 4
|
||||
END,
|
||||
due_time ASC NULLS LAST
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.healthlink.his.miniprogram.mapper.MpVitalSignRecordMapper">
|
||||
|
||||
<select id="selectByPatientId" resultType="com.healthlink.his.miniprogram.domain.MpVitalSignRecord">
|
||||
SELECT id, patient_id, encounter_id, nurse_id, record_time,
|
||||
temperature, pulse, respiration, systolic_bp, diastolic_bp,
|
||||
blood_oxygen, height, weight, create_time, create_by
|
||||
FROM mp_vital_sign_record
|
||||
WHERE patient_id = #{patientId}
|
||||
AND delete_flag = '0'
|
||||
<if test="days != null">
|
||||
AND record_time >= CURRENT_TIMESTAMP - INTERVAL '${days} days'
|
||||
</if>
|
||||
ORDER BY record_time DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.healthlink.his.miniprogram.domain;
|
||||
|
||||
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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 移动护理-护理评估记录
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("mp_assessment_record")
|
||||
public class MpAssessmentRecord extends HisBaseEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long patientId;
|
||||
|
||||
private Long encounterId;
|
||||
|
||||
private Long nurseId;
|
||||
|
||||
private String assessmentType;
|
||||
|
||||
private String assessmentContent;
|
||||
|
||||
private String assessmentResult;
|
||||
|
||||
private BigDecimal score;
|
||||
|
||||
private String riskLevel;
|
||||
|
||||
private LocalDateTime recordTime;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.healthlink.his.miniprogram.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.core.common.core.domain.HisBaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 移动护理-护理任务
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("mp_nursing_task")
|
||||
public class MpNursingTask extends HisBaseEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long patientId;
|
||||
|
||||
private Long encounterId;
|
||||
|
||||
private Long nurseId;
|
||||
|
||||
private String taskType;
|
||||
|
||||
private String taskContent;
|
||||
|
||||
private String taskStatus;
|
||||
|
||||
private LocalDateTime dueTime;
|
||||
|
||||
private LocalDateTime completeTime;
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.healthlink.his.miniprogram.domain;
|
||||
|
||||
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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 移动护理-生命体征记录
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("mp_vital_sign_record")
|
||||
public class MpVitalSignRecord extends HisBaseEntity {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long patientId;
|
||||
|
||||
private Long encounterId;
|
||||
|
||||
private Long nurseId;
|
||||
|
||||
private LocalDateTime recordTime;
|
||||
|
||||
private BigDecimal temperature;
|
||||
|
||||
private Integer pulse;
|
||||
|
||||
private Integer respiration;
|
||||
|
||||
private Integer systolicBp;
|
||||
|
||||
private Integer diastolicBp;
|
||||
|
||||
private BigDecimal bloodOxygen;
|
||||
|
||||
private BigDecimal height;
|
||||
|
||||
private BigDecimal weight;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.healthlink.his.miniprogram.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.healthlink.his.miniprogram.domain.MpAssessmentRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 移动护理-护理评估记录 Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface MpAssessmentRecordMapper extends BaseMapper<MpAssessmentRecord> {
|
||||
|
||||
List<MpAssessmentRecord> selectByPatientId(@Param("patientId") Long patientId);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.healthlink.his.miniprogram.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.healthlink.his.miniprogram.domain.MpNursingTask;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 移动护理-护理任务 Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface MpNursingTaskMapper extends BaseMapper<MpNursingTask> {
|
||||
|
||||
List<MpNursingTask> selectTaskListByNurse(@Param("nurseId") Long nurseId,
|
||||
@Param("taskStatus") String taskStatus);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.healthlink.his.miniprogram.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.healthlink.his.miniprogram.domain.MpVitalSignRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 移动护理-生命体征记录 Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface MpVitalSignRecordMapper extends BaseMapper<MpVitalSignRecord> {
|
||||
|
||||
List<MpVitalSignRecord> selectByPatientId(@Param("patientId") Long patientId,
|
||||
@Param("days") Integer days);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.healthlink.his.miniprogram.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.healthlink.his.miniprogram.domain.MpAssessmentRecord;
|
||||
|
||||
/**
|
||||
* 移动护理-护理评估记录 Service
|
||||
*/
|
||||
public interface IMpAssessmentRecordService extends IService<MpAssessmentRecord> {
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.healthlink.his.miniprogram.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.healthlink.his.miniprogram.domain.MpNursingTask;
|
||||
|
||||
/**
|
||||
* 移动护理-护理任务 Service
|
||||
*/
|
||||
public interface IMpNursingTaskService extends IService<MpNursingTask> {
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.healthlink.his.miniprogram.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.healthlink.his.miniprogram.domain.MpVitalSignRecord;
|
||||
|
||||
/**
|
||||
* 移动护理-生命体征记录 Service
|
||||
*/
|
||||
public interface IMpVitalSignRecordService extends IService<MpVitalSignRecord> {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.healthlink.his.miniprogram.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.healthlink.his.miniprogram.domain.MpAssessmentRecord;
|
||||
import com.healthlink.his.miniprogram.mapper.MpAssessmentRecordMapper;
|
||||
import com.healthlink.his.miniprogram.service.IMpAssessmentRecordService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 移动护理-护理评估记录 Service实现
|
||||
*/
|
||||
@Service
|
||||
public class MpAssessmentRecordServiceImpl extends ServiceImpl<MpAssessmentRecordMapper, MpAssessmentRecord>
|
||||
implements IMpAssessmentRecordService {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.healthlink.his.miniprogram.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.healthlink.his.miniprogram.domain.MpNursingTask;
|
||||
import com.healthlink.his.miniprogram.mapper.MpNursingTaskMapper;
|
||||
import com.healthlink.his.miniprogram.service.IMpNursingTaskService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 移动护理-护理任务 Service实现
|
||||
*/
|
||||
@Service
|
||||
public class MpNursingTaskServiceImpl extends ServiceImpl<MpNursingTaskMapper, MpNursingTask>
|
||||
implements IMpNursingTaskService {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.healthlink.his.miniprogram.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.healthlink.his.miniprogram.domain.MpVitalSignRecord;
|
||||
import com.healthlink.his.miniprogram.mapper.MpVitalSignRecordMapper;
|
||||
import com.healthlink.his.miniprogram.service.IMpVitalSignRecordService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 移动护理-生命体征记录 Service实现
|
||||
*/
|
||||
@Service
|
||||
public class MpVitalSignRecordServiceImpl extends ServiceImpl<MpVitalSignRecordMapper, MpVitalSignRecord>
|
||||
implements IMpVitalSignRecordService {
|
||||
}
|
||||
Reference in New Issue
Block a user