修改任务审核。
This commit is contained in:
parent
fb9df1c0d4
commit
e064c8b037
@ -0,0 +1,34 @@
|
||||
package com.xinelu.common.constant;
|
||||
|
||||
/**
|
||||
* @description: 任务内容常量
|
||||
* @author: haown
|
||||
* @create: 2024-04-12 16:50
|
||||
**/
|
||||
public class TaskContentConstants {
|
||||
/**
|
||||
* 电话外呼
|
||||
*/
|
||||
public static final String PHONE_OUTBOUND = "PHONE_OUTBOUND";
|
||||
|
||||
/**
|
||||
* 问卷量表
|
||||
*/
|
||||
public static final String QUESTIONNAIRE_SCALE = "QUESTIONNAIRE_SCALE";
|
||||
|
||||
/**
|
||||
* 宣教文章
|
||||
*/
|
||||
public static final String PROPAGANDA_ARTICLE = "PROPAGANDA_ARTICLE";
|
||||
|
||||
/**
|
||||
* 文字提醒
|
||||
*/
|
||||
public static final String TEXT_REMIND = "TEXT_REMIND";
|
||||
|
||||
/**
|
||||
* 人工随访
|
||||
*/
|
||||
public static final String ARTIFICIAL_FOLLOW_UP = "ARTIFICIAL_FOLLOW_UP";
|
||||
|
||||
}
|
||||
@ -10,6 +10,7 @@ import lombok.Getter;
|
||||
*/
|
||||
@Getter
|
||||
public enum RouteCheckStatusEnum {
|
||||
|
||||
/**
|
||||
* 同意
|
||||
*/
|
||||
|
||||
@ -13,6 +13,7 @@ import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
|
||||
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
|
||||
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import java.util.List;
|
||||
@ -79,6 +80,15 @@ public class PatientVisitRecordController extends BaseController {
|
||||
return AjaxResult.success(patientVisitRecordService.selectPatientVisitRecordById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询患者最新一次就诊记录信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('manage:visit:query')")
|
||||
@GetMapping(value = "/getByPatientId/{patientId}")
|
||||
public R<PatientVisitRecordVo> getByPatientId(@PathVariable("patientId") Long patientId) {
|
||||
return R.ok(patientVisitRecordService.getByPatientId(patientId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增患者就诊记录基本信息
|
||||
*/
|
||||
|
||||
@ -62,7 +62,7 @@ public class QuestionInfoController extends BaseController {
|
||||
if (Objects.isNull(id)) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
return questionInfoService.selectQuestionInfoById(id);
|
||||
return AjaxResult.success(questionInfoService.selectQuestionInfoById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -3,6 +3,7 @@ package com.xinelu.manage.controller.signpatientmanageroute;
|
||||
import com.xinelu.common.annotation.Log;
|
||||
import com.xinelu.common.core.controller.BaseController;
|
||||
import com.xinelu.common.core.domain.AjaxResult;
|
||||
import com.xinelu.common.core.domain.R;
|
||||
import com.xinelu.common.core.page.TableDataInfo;
|
||||
import com.xinelu.common.enums.BusinessType;
|
||||
import com.xinelu.common.utils.poi.ExcelUtil;
|
||||
@ -12,12 +13,18 @@ import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitRe
|
||||
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
|
||||
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
|
||||
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 签约患者管理任务路径Controller
|
||||
@ -119,5 +126,11 @@ public class SignPatientManageRouteController extends BaseController {
|
||||
return signPatientManageRouteService.addPatientQuestionResult(dto);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 患者详情--康复计划及记录
|
||||
*/
|
||||
@GetMapping("/getRouteList")
|
||||
public R<List<SignPatientManageRoute>> getRouteList(SignPatientManageRoute signPatientManageRoute) {
|
||||
return R.ok(signPatientManageRouteService.getRouteList(signPatientManageRoute));
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,9 +54,9 @@ public class SignPatientManageRouteNodeController extends BaseController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询管理任务路径及节点
|
||||
* 任务审核--查询患者任务路径及节点
|
||||
*/
|
||||
@ApiOperation("查询管理任务路径及节点")
|
||||
@ApiOperation("任务审核--查询患者任务路径及节点")
|
||||
@GetMapping("/getRouteNodeList")
|
||||
public R<List<SignPatientManageRouteNodeVo>> getRouteNodeList(PatientTaskDto patientTaskDto) {
|
||||
List<SignPatientManageRouteNodeVo> list = signNodeService.getRouteNodeList(patientTaskDto);
|
||||
|
||||
@ -123,6 +123,12 @@ public class SignPatientRecord extends BaseEntity {
|
||||
@ApiModelProperty(value = "签约时所属病区名称")
|
||||
private String wardName;
|
||||
|
||||
/**
|
||||
* 就诊记录表主键
|
||||
*/
|
||||
@ApiModelProperty(value = "就诊记录表主键")
|
||||
private Long patientVisitRecordId;
|
||||
|
||||
/**
|
||||
* 就诊流水号
|
||||
*/
|
||||
|
||||
@ -14,15 +14,27 @@ import org.springframework.format.annotation.DateTimeFormat;
|
||||
@Data
|
||||
public class PatientVisitRecordDto {
|
||||
|
||||
/** 居民信息表id */
|
||||
/**
|
||||
* 居民信息表id
|
||||
* */
|
||||
@ApiModelProperty(value = "居民信息表id")
|
||||
private Long residentId;
|
||||
|
||||
/** 患者表id */
|
||||
/**
|
||||
* 患者表id
|
||||
* */
|
||||
@ApiModelProperty(value = "患者表id")
|
||||
private Long patientId;
|
||||
|
||||
/** 所属医院id */
|
||||
/**
|
||||
* 居民身份证号
|
||||
* */
|
||||
@ApiModelProperty(value = "居民身份证号")
|
||||
private String cardNo;
|
||||
|
||||
/**
|
||||
* 所属医院id
|
||||
* */
|
||||
@ApiModelProperty(value = "所属医院id")
|
||||
@Excel(name = "所属医院id")
|
||||
private Long hospitalAgencyId;
|
||||
|
||||
@ -56,7 +56,7 @@ public class PatientTaskDto {
|
||||
private Long wardId;
|
||||
|
||||
/** 节点审核状态,同意:AGREE,不同意:DISAGREE */
|
||||
@ApiModelProperty(value = "节点审核状态,同意:AGREE,不同意:DISAGREE")
|
||||
@ApiModelProperty(value = "节点审核状态,未审核:UNAUDITED,同意:AGREE,不同意:DISAGREE")
|
||||
private String routeCheckStatus;
|
||||
|
||||
/** 主要诊断 */
|
||||
|
||||
@ -2,6 +2,7 @@ package com.xinelu.manage.dto.signpatientmanageroutenode;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@ -13,9 +14,9 @@ import lombok.Data;
|
||||
@Data
|
||||
public class RouteNodeCheckDto {
|
||||
|
||||
/** 签约患者管理任务表id */
|
||||
@ApiModelProperty(value = "签约患者管理任务表id")
|
||||
private Long manageRouteId;
|
||||
/** 签约患者管理任务节点表id列表 */
|
||||
@ApiModelProperty(value = "签约患者管理任务节点表id列表")
|
||||
private List<Long> manageRouteNodeIds;
|
||||
|
||||
/** 节点审核状态,同意:AGREE,不同意:DISAGREE */
|
||||
@ApiModelProperty(value = "节点审核状态,同意:AGREE,不同意:DISAGREE")
|
||||
|
||||
@ -2,6 +2,7 @@ package com.xinelu.manage.mapper.patientvisitrecord;
|
||||
|
||||
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
|
||||
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@ -19,7 +20,14 @@ public interface PatientVisitRecordMapper {
|
||||
* @param id 患者就诊记录基本信息主键
|
||||
* @return 患者就诊记录基本信息
|
||||
*/
|
||||
public PatientVisitRecord selectPatientVisitRecordById(Long id);
|
||||
PatientVisitRecord selectPatientVisitRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 查询患者最新一条就诊记录信息
|
||||
* @param patientId 患者记录表主键
|
||||
* @return 患者就诊信息视图类
|
||||
*/
|
||||
PatientVisitRecordVo getByPatientId(Long patientId);
|
||||
|
||||
/**
|
||||
* 查询患者就诊记录基本信息列表
|
||||
@ -27,7 +35,7 @@ public interface PatientVisitRecordMapper {
|
||||
* @param patientVisitRecord 患者就诊记录基本信息
|
||||
* @return 患者就诊记录基本信息集合
|
||||
*/
|
||||
public List<PatientVisitRecord> selectPatientVisitRecordList(PatientVisitRecordDto patientVisitRecord);
|
||||
List<PatientVisitRecord> selectPatientVisitRecordList(PatientVisitRecordDto patientVisitRecord);
|
||||
|
||||
/**
|
||||
* 新增患者就诊记录基本信息
|
||||
@ -35,7 +43,7 @@ public interface PatientVisitRecordMapper {
|
||||
* @param patientVisitRecord 患者就诊记录基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
|
||||
int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
|
||||
|
||||
int insertBatch(@Param("patientVisitRecordList") Collection<PatientVisitRecord> patientVisitRecordList);
|
||||
/**
|
||||
@ -44,7 +52,7 @@ public interface PatientVisitRecordMapper {
|
||||
* @param patientVisitRecord 患者就诊记录基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);
|
||||
int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);
|
||||
|
||||
/**
|
||||
* 删除患者就诊记录基本信息
|
||||
@ -52,7 +60,7 @@ public interface PatientVisitRecordMapper {
|
||||
* @param id 患者就诊记录基本信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deletePatientVisitRecordById(Long id);
|
||||
int deletePatientVisitRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除患者就诊记录基本信息
|
||||
@ -60,16 +68,13 @@ public interface PatientVisitRecordMapper {
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deletePatientVisitRecordByIds(Long[] ids);
|
||||
|
||||
PatientVisitRecord judgeRepeat(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("cardNo") String cardNo,
|
||||
@Param("inHospitalNumber") String inHospitalNumber);
|
||||
int deletePatientVisitRecordByIds(Long[] ids);
|
||||
|
||||
/**
|
||||
* 获取居民在当前机构最新一条就诊记录
|
||||
* @param hospitalAgencyId 机构id
|
||||
* @param patientId 患者id
|
||||
* @return 结果
|
||||
* 根据查询条件获取最新一条就诊记录
|
||||
* @param patientVisitRecordDto 患者就诊记录查询传输对象
|
||||
* @return 就诊记录信息
|
||||
*/
|
||||
PatientVisitRecord getLastRecord(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("patientId") Long patientId);
|
||||
PatientVisitRecord getLastRecord(PatientVisitRecordDto patientVisitRecordDto);
|
||||
|
||||
}
|
||||
|
||||
@ -144,8 +144,9 @@ public class PatientInfoServiceImpl implements IPatientInfoService {
|
||||
patientVisitRecordService.deletePatientVisitRecordById(patientInfo.getPatientVisitRecordId());
|
||||
// 根据患者最新一条就诊记录修改患者状态
|
||||
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
|
||||
patientVisitRecordDto.setHospitalAgencyId(patientInfo.getHospitalAgencyId());
|
||||
patientVisitRecordDto.setPatientId(id);
|
||||
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientInfo.getHospitalAgencyId(), id);
|
||||
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientVisitRecordDto);
|
||||
if (ObjectUtils.isEmpty(patientVisitRecord)) {
|
||||
setVisitInfoNull(patientInfo);
|
||||
} else {
|
||||
|
||||
@ -14,6 +14,7 @@ import com.xinelu.manage.domain.patientinfo.PatientInfo;
|
||||
import com.xinelu.manage.domain.patientprehospitalization.PatientPreHospitalization;
|
||||
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
|
||||
import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
|
||||
import com.xinelu.manage.mapper.agency.AgencyMapper;
|
||||
import com.xinelu.manage.mapper.department.DepartmentMapper;
|
||||
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
|
||||
@ -120,7 +121,10 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
|
||||
// 将患者状态还原为上一个状态
|
||||
PatientPreHospitalization patientPreHospitalization = preHospitalizationMapper.selectByPrimaryKey(id);
|
||||
PatientInfo patientInfo = patientInfoService.selectPatientInfoById(patientPreHospitalization.getPatientId());
|
||||
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientPreHospitalization.getHospitalAgencyId(), patientPreHospitalization.getPatientId());
|
||||
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
|
||||
patientVisitRecordDto.setHospitalAgencyId(patientPreHospitalization.getHospitalAgencyId());
|
||||
patientVisitRecordDto.setPatientId(patientPreHospitalization.getPatientId());
|
||||
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientVisitRecordDto);
|
||||
if (ObjectUtils.isEmpty(patientVisitRecord)) {
|
||||
// 患者的预住院信息置空
|
||||
setPreHospitalizationInfoNull(patientInfo);
|
||||
|
||||
@ -7,6 +7,7 @@ import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
|
||||
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
|
||||
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
|
||||
import java.util.List;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@ -26,6 +27,13 @@ public interface IPatientVisitRecordService {
|
||||
*/
|
||||
PatientVisitRecord selectPatientVisitRecordById(Long id);
|
||||
|
||||
/**
|
||||
* 查询患者最新一次就诊记录信息
|
||||
* @param patientId 患者记录表主键
|
||||
* @return 患者就诊信息视图类
|
||||
*/
|
||||
PatientVisitRecordVo getByPatientId(Long patientId);
|
||||
|
||||
/**
|
||||
* 查询患者就诊记录基本信息列表
|
||||
*
|
||||
@ -91,5 +99,5 @@ public interface IPatientVisitRecordService {
|
||||
|
||||
void setPatientType(PatientInfo patientInfo, PatientVisitRecord patientVisitRecord);
|
||||
|
||||
PatientVisitRecord getLastRecord(Long hospitalAgencyId, Long patientId);
|
||||
PatientVisitRecord getLastRecord(PatientVisitRecordDto patientVisitRecordDto);
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ import com.xinelu.manage.mapper.patientvisitrecord.PatientVisitRecordMapper;
|
||||
import com.xinelu.manage.service.patientinfo.IPatientInfoService;
|
||||
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
|
||||
import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo;
|
||||
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
@ -71,7 +72,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
return patientVisitRecordMapper.selectPatientVisitRecordById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
@Override public PatientVisitRecordVo getByPatientId(Long patientId) {
|
||||
return patientVisitRecordMapper.getByPatientId(patientId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询患者就诊记录基本信息列表
|
||||
*
|
||||
* @param patientVisitRecord 患者就诊记录基本信息
|
||||
@ -92,7 +97,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void insertPatientVisitRecord(PatientVisitRecordSaveDto saveDto) {
|
||||
// 根据机构id、患者身份证号判断门诊/住院号是否重复
|
||||
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.judgeRepeat(saveDto.getHospitalAgencyId(), saveDto.getCardNo(), saveDto.getInHospitalNumber());
|
||||
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
|
||||
patientVisitRecordDto.setHospitalAgencyId(saveDto.getHospitalAgencyId());
|
||||
patientVisitRecordDto.setCardNo(saveDto.getCardNo());
|
||||
patientVisitRecordDto.setInHospitalNumber(saveDto.getInHospitalNumber());
|
||||
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
|
||||
if (ObjectUtils.isNotEmpty(patientVisitRecord)) {
|
||||
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
|
||||
}
|
||||
@ -158,7 +167,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord) {
|
||||
// 根据机构id、患者身份证号判断门诊/住院号是否重复
|
||||
PatientVisitRecord object = patientVisitRecordMapper.judgeRepeat(patientVisitRecord.getHospitalAgencyId(), patientVisitRecord.getCardNo(), patientVisitRecord.getInHospitalNumber());
|
||||
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
|
||||
patientVisitRecordDto.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
|
||||
patientVisitRecordDto.setCardNo(patientVisitRecord.getCardNo());
|
||||
patientVisitRecordDto.setInHospitalNumber(patientVisitRecord.getInHospitalNumber());
|
||||
PatientVisitRecord object = patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
|
||||
if (ObjectUtils.isNotEmpty(object)) {
|
||||
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
|
||||
}
|
||||
@ -183,7 +196,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
PatientBaseInfoVo patientBaseInfo = patientMapper.getPatientBaseInfo(saveDto.getPatientId());
|
||||
BeanUtils.copyBeanProp(patientVisitRecord, patientBaseInfo);
|
||||
// 根据机构id、患者身份证号判断门诊/住院号是否重复
|
||||
PatientVisitRecord object = patientVisitRecordMapper.judgeRepeat(patientVisitRecord.getHospitalAgencyId(), patientVisitRecord.getCardNo(), patientVisitRecord.getInHospitalNumber());
|
||||
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
|
||||
patientVisitRecordDto.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
|
||||
patientVisitRecordDto.setCardNo(patientVisitRecord.getCardNo());
|
||||
patientVisitRecordDto.setInHospitalNumber(patientVisitRecord.getInHospitalNumber());
|
||||
PatientVisitRecord object = patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
|
||||
if (ObjectUtils.isNotEmpty(object)) {
|
||||
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
|
||||
}
|
||||
@ -404,8 +421,8 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
}
|
||||
}
|
||||
|
||||
@Override public PatientVisitRecord getLastRecord(Long hospitalAgencyId, Long patientId) {
|
||||
return patientVisitRecordMapper.getLastRecord(hospitalAgencyId, patientId);
|
||||
@Override public PatientVisitRecord getLastRecord(PatientVisitRecordDto patientVisitRecordDto) {
|
||||
return patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
|
||||
}
|
||||
|
||||
private void setVisitDate(PatientVisitRecord patientVisitRecord) {
|
||||
|
||||
@ -19,7 +19,7 @@ public interface IQuestionInfoService {
|
||||
* @param id 问卷基本信息主键
|
||||
* @return 问卷基本信息
|
||||
*/
|
||||
AjaxResult selectQuestionInfoById(Long id);
|
||||
QuestionVO selectQuestionInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询问卷基本信息列表
|
||||
|
||||
@ -15,17 +15,16 @@ import com.xinelu.manage.vo.department.DepartmentVO;
|
||||
import com.xinelu.manage.vo.questionInfo.QuestionVO;
|
||||
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
|
||||
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 问卷基本信息Service业务层处理
|
||||
@ -45,29 +44,32 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
|
||||
|
||||
@Override
|
||||
public AjaxResult selectQuestionInfoById(Long id) {
|
||||
public QuestionVO selectQuestionInfoById(Long id) {
|
||||
//查询问卷表
|
||||
QuestionInfo questionInfo = questionInfoMapper.selectQuestionInfoById(id);
|
||||
if (Objects.isNull(questionInfo)) {
|
||||
return AjaxResult.error("该问卷信息已不存在!");
|
||||
}
|
||||
//查询题目表
|
||||
QuestionVO questionVO = new QuestionVO();
|
||||
BeanUtils.copyBeanProp(questionVO, questionInfo);
|
||||
List<QuestionSubjectVO> questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(id);
|
||||
List<Long> questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
|
||||
if (questionSubjectIds.size() == 0) {
|
||||
questionVO.setQuestionSubjectList(questionSubjects);
|
||||
return AjaxResult.success(questionVO);
|
||||
}
|
||||
//查询选项表
|
||||
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
|
||||
for (QuestionSubjectVO questionSubject : questionSubjects) {
|
||||
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
|
||||
questionSubject.setQuestionSubjectOptionList(collect);
|
||||
}
|
||||
questionVO.setQuestionSubjectList(questionSubjects);
|
||||
return AjaxResult.success(questionVO);
|
||||
//if (Objects.isNull(questionInfo)) {
|
||||
// throw new ServiceException("该问卷信息已不存在!");
|
||||
//}
|
||||
QuestionVO questionVO = new QuestionVO();
|
||||
// 查询题目表
|
||||
if (Objects.nonNull(questionInfo)) {
|
||||
BeanUtils.copyBeanProp(questionVO, questionInfo);
|
||||
List<QuestionSubjectVO> questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(id);
|
||||
List<Long> questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
|
||||
if (questionSubjectIds.size() == 0) {
|
||||
questionVO.setQuestionSubjectList(questionSubjects);
|
||||
return questionVO;
|
||||
}
|
||||
// 查询选项表
|
||||
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
|
||||
for (QuestionSubjectVO questionSubject : questionSubjects) {
|
||||
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
|
||||
questionSubject.setQuestionSubjectOptionList(collect);
|
||||
}
|
||||
questionVO.setQuestionSubjectList(questionSubjects);
|
||||
}
|
||||
|
||||
return questionVO;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -6,10 +6,8 @@ import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
|
||||
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
|
||||
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
|
||||
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 签约患者管理任务路径Service接口
|
||||
*
|
||||
@ -85,4 +83,11 @@ public interface ISignPatientManageRouteService {
|
||||
* @return 结果
|
||||
*/
|
||||
AjaxResult addPatientQuestionResult(PatientQuestionSubmitResultDTO dto);
|
||||
|
||||
/**
|
||||
* 根据患者主键查询患者任务列表
|
||||
* @param signPatientManageRoute 签约患者管理任务路径
|
||||
* @return 任务列表
|
||||
*/
|
||||
List<SignPatientManageRoute> getRouteList(SignPatientManageRoute signPatientManageRoute);
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import com.xinelu.common.exception.ServiceException;
|
||||
import com.xinelu.common.utils.AgeUtil;
|
||||
import com.xinelu.common.utils.SecurityUtils;
|
||||
import com.xinelu.common.utils.bean.BeanUtils;
|
||||
import com.xinelu.manage.domain.patientinfo.PatientInfo;
|
||||
import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult;
|
||||
import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult;
|
||||
import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmitResult;
|
||||
@ -19,6 +20,7 @@ import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
|
||||
import com.xinelu.manage.dto.patientquestionoptionresult.PatientQuestionOptionResultDTO;
|
||||
import com.xinelu.manage.dto.patientquestionsubjectresult.PatientQuestionSubjectResultDTO;
|
||||
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
|
||||
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
|
||||
import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper;
|
||||
import com.xinelu.manage.mapper.patientquestionsubjectresult.PatientQuestionSubjectResultMapper;
|
||||
import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper;
|
||||
@ -65,6 +67,8 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
||||
private PatientQuestionOptionResultMapper patientQuestionOptionResultMapper;
|
||||
@Resource
|
||||
private SignRouteTriggerConditionMapper signRouteTriggerConditionMapper;
|
||||
@Resource
|
||||
private PatientInfoMapper patientInfoMapper;
|
||||
|
||||
/**
|
||||
* 查询签约患者管理任务路径
|
||||
@ -299,7 +303,21 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
@Override public List<SignPatientManageRoute> getRouteList(SignPatientManageRoute signPatientManageRoute) {
|
||||
// 查询患者最新一条签约记录
|
||||
if (signPatientManageRoute.getPatientId() == null) {
|
||||
throw new ServiceException("请选择正确的患者");
|
||||
}
|
||||
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(signPatientManageRoute.getPatientId());
|
||||
if (ObjectUtils.isEmpty(patientInfo)) {
|
||||
throw new ServiceException("请选择正确的患者");
|
||||
}
|
||||
SignPatientManageRoute routeQuery = new SignPatientManageRoute();
|
||||
routeQuery.setSignPatientRecordId(patientInfo.getSignPatientRecordId());
|
||||
return signPatientManageRouteMapper.selectSignPatientManageRouteList(routeQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增患者管理任务执行记录
|
||||
*/
|
||||
private Long insertPatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto, String routeHandlePerson, LocalDateTime time) {
|
||||
|
||||
@ -1,21 +1,35 @@
|
||||
package com.xinelu.manage.service.signpatientmanageroutenode.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.xinelu.common.constant.TaskContentConstants;
|
||||
import com.xinelu.common.exception.ServiceException;
|
||||
import com.xinelu.common.utils.StringUtils;
|
||||
import com.xinelu.common.utils.bean.BeanUtils;
|
||||
import com.xinelu.manage.domain.patientinfo.PatientInfo;
|
||||
import com.xinelu.manage.domain.scriptInfo.ScriptInfo;
|
||||
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
|
||||
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.RouteNodeCheckDto;
|
||||
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
|
||||
import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper;
|
||||
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
|
||||
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
|
||||
import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService;
|
||||
import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
|
||||
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
|
||||
import com.xinelu.manage.vo.propagandainfo.PropagandaMaterialsVo;
|
||||
import com.xinelu.manage.vo.questionInfo.QuestionVO;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeInfoVo;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Resource;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -34,6 +48,12 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
|
||||
private PatientInfoMapper patientInfoMapper;
|
||||
@Resource
|
||||
private SignPatientManageRouteMapper signRouteMapper;
|
||||
@Resource
|
||||
private ScriptInfoMapper scriptInfoMapper;
|
||||
@Resource
|
||||
private IQuestionInfoService questionInfoService;
|
||||
@Resource
|
||||
private IPropagandaInfoService propagandaInfoService;
|
||||
|
||||
/**
|
||||
* 查询签约患者管理任务路径节点
|
||||
@ -59,23 +79,55 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
|
||||
if (patientTaskDto.getPatientId() == null || ObjectUtils.isEmpty(patientInfo)) {
|
||||
throw new ServiceException("请选择患者!");
|
||||
}
|
||||
// 查询任务列表
|
||||
SignPatientManageRoute signPatientManageRoute = new SignPatientManageRoute();
|
||||
signPatientManageRoute.setSignPatientRecordId(patientTaskDto.getSignPatientRecordId());
|
||||
signPatientManageRoute.setPatientId(patientTaskDto.getPatientId());
|
||||
signPatientManageRoute.setTaskCreateType(patientTaskDto.getTaskCreateType());
|
||||
List<SignPatientManageRoute> signRoutes = signRouteMapper.selectSignPatientManageRouteList(signPatientManageRoute);
|
||||
for (SignPatientManageRoute route : signRoutes) {
|
||||
SignPatientManageRouteNode nodeQuery = new SignPatientManageRouteNode();
|
||||
nodeQuery.setManageRouteId(route.getId());
|
||||
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery);
|
||||
retList.add(SignPatientManageRouteNodeVo.builder().manageRouteId(route.getId())
|
||||
.routeName(route.getRouteName())
|
||||
.taskCreateType(route.getTaskCreateType())
|
||||
.suitRange(route.getSuitRange())
|
||||
.nodeList(nodeList).build());
|
||||
if (StringUtils.isBlank(patientTaskDto.getRouteCheckStatus())) {
|
||||
throw new ServiceException("请选择审核状态!");
|
||||
}
|
||||
if (StringUtils.isBlank(patientTaskDto.getTaskCreateType())) {
|
||||
throw new ServiceException("请选择任务创建类型!");
|
||||
}
|
||||
// 根据任务创建类型、审核状态查询节点列表
|
||||
List<SignPatientManageRouteNode> allNodeList = signPatientManageRouteNodeMapper.getNodeList(patientTaskDto);
|
||||
// 根据任务id进行分组
|
||||
Map<Long, List<SignPatientManageRouteNode>> groupByRoute = allNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getManageRouteId));
|
||||
List<SignPatientManageRouteNodeInfoVo> nodeInfoVoList = new ArrayList<>();
|
||||
for (Long manageRouteId : groupByRoute.keySet()) {
|
||||
List<SignPatientManageRouteNode> nodeList = groupByRoute.get(manageRouteId);
|
||||
SignPatientManageRoute manageRoute = signRouteMapper.selectSignPatientManageRouteById(manageRouteId);
|
||||
// 查询模板内容
|
||||
for (SignPatientManageRouteNode node : nodeList) {
|
||||
SignPatientManageRouteNodeInfoVo signNodeInfo = new SignPatientManageRouteNodeInfoVo();
|
||||
BeanUtils.copyBeanProp(signNodeInfo, node);
|
||||
JSONObject detailInfo = new JSONObject();
|
||||
switch (node.getTaskType()) {
|
||||
case TaskContentConstants.PHONE_OUTBOUND: // 电话外呼-查询话术表
|
||||
if (node.getPhoneId() != null) {
|
||||
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(node.getPhoneId());
|
||||
detailInfo = JSONObject.parseObject(JSONObject.toJSONString(scriptInfo));
|
||||
}
|
||||
break;
|
||||
case (TaskContentConstants.QUESTIONNAIRE_SCALE): // 问卷量表-返回问卷信息
|
||||
case (TaskContentConstants.ARTIFICIAL_FOLLOW_UP): // 人工随访-返回问卷信息
|
||||
if (node.getQuestionInfoId() != null) {
|
||||
QuestionVO questionVO = questionInfoService.selectQuestionInfoById(node.getQuestionInfoId());
|
||||
detailInfo = JSONObject.parseObject(JSONObject.toJSONString(questionVO));
|
||||
}
|
||||
break;
|
||||
case (TaskContentConstants.PROPAGANDA_ARTICLE): // 宣教文章-返回宣教库信息
|
||||
if (node.getPropagandaInfoId() != null) {
|
||||
PropagandaMaterialsVo propagandaMaterialsVo = propagandaInfoService.selectPropagandaInfoById(node.getPropagandaInfoId());
|
||||
detailInfo = JSONObject.parseObject(JSONObject.toJSONString(propagandaMaterialsVo));
|
||||
}
|
||||
break;
|
||||
}
|
||||
signNodeInfo.setDetailInfo(detailInfo);
|
||||
nodeInfoVoList.add(signNodeInfo);
|
||||
}
|
||||
retList.add(SignPatientManageRouteNodeVo.builder().manageRouteId(manageRouteId)
|
||||
.routeName(manageRoute.getRouteName())
|
||||
.taskCreateType(manageRoute.getTaskCreateType())
|
||||
.suitRange(manageRoute.getSuitRange())
|
||||
.nodeList(nodeInfoVoList).build());
|
||||
}
|
||||
|
||||
return retList;
|
||||
}
|
||||
|
||||
@ -149,11 +201,13 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
|
||||
@Transactional
|
||||
public int audit(RouteNodeCheckDto routeNodeCheckDto) {
|
||||
int flag = 0;
|
||||
if (CollectionUtils.isEmpty(routeNodeCheckDto.getManageRouteNodeIds())) {
|
||||
throw new ServiceException("没有要审核的任务");
|
||||
}
|
||||
// 根据manageRouteId查询所有节点
|
||||
SignPatientManageRouteNode nodeQuery = new SignPatientManageRouteNode();
|
||||
nodeQuery.setManageRouteId(routeNodeCheckDto.getManageRouteId());
|
||||
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery);
|
||||
for (SignPatientManageRouteNode node : nodeList) {
|
||||
for (Long nodeId : routeNodeCheckDto.getManageRouteNodeIds()) {
|
||||
SignPatientManageRouteNode node = new SignPatientManageRouteNode();
|
||||
node.setId(nodeId);
|
||||
node.setRouteCheckStatus(routeNodeCheckDto.getRouteCheckStatus());
|
||||
node.setRouteCheckPerson(routeNodeCheckDto.getRouteCheckPerson());
|
||||
node.setRouteCheckDate(LocalDateTime.now());
|
||||
|
||||
@ -142,6 +142,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService {
|
||||
flag = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord);
|
||||
} else {
|
||||
signPatientRecord.setId(null);
|
||||
signPatientRecord.setPatientVisitRecordId(patient.getPatientVisitRecordId());
|
||||
flag = signPatientRecordMapper.insert(signPatientRecord);
|
||||
}
|
||||
// 签约信息保存到患者表
|
||||
|
||||
@ -0,0 +1,173 @@
|
||||
package com.xinelu.manage.vo.patientvisitrecord;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.xinelu.common.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 患者就诊记录信息查询返回视图类
|
||||
* @author: haown
|
||||
* @create: 2024-04-12 13:41
|
||||
**/
|
||||
@Data
|
||||
public class PatientVisitRecordVo {
|
||||
|
||||
/**
|
||||
* 患者主键
|
||||
*/
|
||||
@ApiModelProperty(value = "患者信息表id")
|
||||
private Long patientId;
|
||||
|
||||
/**
|
||||
* 居民信息表id
|
||||
*/
|
||||
@ApiModelProperty(value = "居民信息表id")
|
||||
private Long residentId;
|
||||
|
||||
/**
|
||||
* 患者姓名
|
||||
*/
|
||||
@ApiModelProperty(value = "患者姓名")
|
||||
@Excel(name = "患者姓名")
|
||||
private String patientName;
|
||||
|
||||
/**
|
||||
* 患者电话
|
||||
*/
|
||||
@ApiModelProperty(value = "患者电话")
|
||||
@Excel(name = "患者电话")
|
||||
private String patientPhone;
|
||||
|
||||
/**
|
||||
* 家属电话
|
||||
*/
|
||||
@ApiModelProperty(value = "家属电话")
|
||||
private String familyMemberPhone;
|
||||
|
||||
/**
|
||||
* 出生日期,格式:yyyy-MM-dd
|
||||
*/
|
||||
@ApiModelProperty(value = "出生日期,格式:yyyy-MM-dd")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate birthDate;
|
||||
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
@ApiModelProperty(value = "身份证号")
|
||||
private String cardNo;
|
||||
|
||||
/**
|
||||
* 性别,男:MALE,女:FEMALE
|
||||
*/
|
||||
@ApiModelProperty(value = "性别,男:MALE,女:FEMALE")
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 住址
|
||||
*/
|
||||
@ApiModelProperty(value = "住址")
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 所属医院id
|
||||
*/
|
||||
@ApiModelProperty(value = "所属医院id")
|
||||
private Long hospitalAgencyId;
|
||||
|
||||
/**
|
||||
* 所属医院名称
|
||||
*/
|
||||
@ApiModelProperty(value = "所属医院名称")
|
||||
private String hospitalAgencyName;
|
||||
|
||||
/**
|
||||
* 所属院区id
|
||||
*/
|
||||
@ApiModelProperty(value = "所属院区id")
|
||||
private Long campusAgencyId;
|
||||
|
||||
/**
|
||||
* 所属院区名称
|
||||
*/
|
||||
@ApiModelProperty(value = "所属院区名称")
|
||||
private String campusAgencyName;
|
||||
|
||||
/**
|
||||
* 所属科室id
|
||||
*/
|
||||
@ApiModelProperty(value = "所属科室id")
|
||||
private Long departmentId;
|
||||
|
||||
/**
|
||||
* 所属科室名称
|
||||
*/
|
||||
@ApiModelProperty(value = "所属科室名称")
|
||||
private String departmentName;
|
||||
|
||||
/**
|
||||
* 所属病区id
|
||||
*/
|
||||
@ApiModelProperty(value = "所属病区id")
|
||||
private Long wardId;
|
||||
|
||||
/**
|
||||
* 所属病区名称
|
||||
*/
|
||||
@ApiModelProperty(value = "所属病区名称")
|
||||
private String wardName;
|
||||
|
||||
/**
|
||||
* 患者来源,微信小程序:WE_CHAT_APPLET,微信公众号:WE_CHAT_OFFICIAL_ACCOUNT,管理端:MANAGE_END
|
||||
*/
|
||||
@ApiModelProperty(value = "患者来源,微信小程序:WE_CHAT_APPLET,微信公众号:WE_CHAT_OFFICIAL_ACCOUNT,管理端:MANAGE_END")
|
||||
private String patientSource;
|
||||
|
||||
/**
|
||||
* 就诊记录表主键
|
||||
* */
|
||||
@ApiModelProperty(value = "就诊记录表主键")
|
||||
private Long patientVisitRecordId;
|
||||
|
||||
/** 就诊类型,门诊:OUTPATIENT_SERVICE,住院:BE_IN_HOSPITAL */
|
||||
@ApiModelProperty(value = "就诊类型,门诊:OUTPATIENT_SERVICE,住院:BE_IN_HOSPITAL")
|
||||
private String visitMethod;
|
||||
|
||||
/** 就诊时间,格式:yyyy-MM-dd HH:mm:ss */
|
||||
@ApiModelProperty(value = "就诊时间,格式:yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime visitDate;
|
||||
|
||||
/** 主要诊断 */
|
||||
@ApiModelProperty(value = "主要诊断")
|
||||
private String mainDiagnosis;
|
||||
|
||||
/** 入院时间 */
|
||||
@ApiModelProperty(value = "入院时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime admissionTime;
|
||||
|
||||
/** 出院时间 */
|
||||
@ApiModelProperty(value = "出院时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime dischargeTime;
|
||||
|
||||
/** 入院病历信息,存储患者入院的整个病历信息 */
|
||||
@ApiModelProperty(value = "入院病历信息,存储患者入院的整个病历信息")
|
||||
private String inHospitalInfo;
|
||||
|
||||
/** 出院病历信息,存储患者出院的整个病历信息 */
|
||||
@ApiModelProperty(value = "出院病历信息,存储患者出院的整个病历信息")
|
||||
private String outHospitalInfo;
|
||||
|
||||
/** 手术名称 */
|
||||
@ApiModelProperty(value = "手术名称")
|
||||
private String surgicalName;
|
||||
|
||||
/** 手术记录 */
|
||||
@ApiModelProperty(value = "手术记录")
|
||||
private String surgicalRecord;
|
||||
}
|
||||
@ -112,6 +112,12 @@ public class PatientTaskVo {
|
||||
@Excel(name = "所属病区名称")
|
||||
private String wardName;
|
||||
|
||||
/**
|
||||
* 最新一条就诊记录id
|
||||
*/
|
||||
@ApiModelProperty(value = "最新一条就诊记录id")
|
||||
private Long patientVisitRecordId;
|
||||
|
||||
/** 门诊/住院号 */
|
||||
@ApiModelProperty(value = "门诊/住院号 ")
|
||||
private String inHospitalNumber;
|
||||
@ -128,6 +134,9 @@ public class PatientTaskVo {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime dischargeTime;
|
||||
|
||||
@ApiModelProperty(value = "患者来源,微信小程序:WE_CHAT_APPLET,微信公众号:WE_CHAT_OFFICIAL_ACCOUNT,管理端:MANAGE_END")
|
||||
private String patientSource;
|
||||
|
||||
/** 手术名称 */
|
||||
@ApiModelProperty(value = "手术名称")
|
||||
private String surgicalName;
|
||||
|
||||
@ -0,0 +1,206 @@
|
||||
package com.xinelu.manage.vo.signpatientmanageroutenode;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.xinelu.common.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.time.LocalTime;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 任务节点详细信息视图类
|
||||
* @author: haown
|
||||
* @create: 2024-04-12 17:15
|
||||
**/
|
||||
@ApiModel("任务节点详细信息视图类")
|
||||
@Data
|
||||
public class SignPatientManageRouteNodeInfoVo {
|
||||
/** 主键id */
|
||||
private Long id;
|
||||
|
||||
/** 签约患者管理任务表id */
|
||||
@ApiModelProperty(value = "签约患者管理任务表id")
|
||||
@Excel(name = "签约患者管理任务表id")
|
||||
private Long manageRouteId;
|
||||
|
||||
/** 路径名称(任务名称) */
|
||||
@ApiModelProperty(value = "路径名称")
|
||||
@Excel(name = "路径名称", readConverterExp = "任=务名称")
|
||||
private String manageRouteName;
|
||||
|
||||
/** 管理路径节点名称 */
|
||||
@ApiModelProperty(value = "管理路径节点名称")
|
||||
@Excel(name = "管理路径节点名称")
|
||||
private String routeNodeName;
|
||||
|
||||
/** 管理路径节点时间,时间单位为:天 */
|
||||
@ApiModelProperty(value = "管理路径节点时间,时间单位为:天")
|
||||
@Excel(name = "管理路径节点时间,时间单位为:天")
|
||||
private Integer routeNodeDay;
|
||||
|
||||
/** 任务类型,电话外呼:PHONE_OUTBOUND,问卷量表:QUESTIONNAIRE_SCALE,宣教文章:PROPAGANDA_ARTICLE,文字提醒:TEXT_REMIND,人工随访:ARTIFICIAL_FOLLOW_UP */
|
||||
@ApiModelProperty(value = "任务类型,电话外呼:PHONE_OUTBOUND,问卷量表:QUESTIONNAIRE_SCALE,宣教文章:PROPAGANDA_ARTICLE,文字提醒:TEXT_REMIND,人工随访:ARTIFICIAL_FOLLOW_UP")
|
||||
@Excel(name = "任务类型,电话外呼:PHONE_OUTBOUND,问卷量表:QUESTIONNAIRE_SCALE,宣教文章:PROPAGANDA_ARTICLE,文字提醒:TEXT_REMIND,人工随访:ARTIFICIAL_FOLLOW_UP")
|
||||
private String taskType;
|
||||
|
||||
/** 任务状态 */
|
||||
@ApiModelProperty(value = "任务状态")
|
||||
@Excel(name = "任务状态")
|
||||
private String taskStatus;
|
||||
|
||||
/** 任务细分 */
|
||||
@ApiModelProperty(value = "任务细分")
|
||||
@Excel(name = "任务细分")
|
||||
private String taskSubdivision;
|
||||
|
||||
/** 二级分类描述 */
|
||||
@ApiModelProperty(value = "二级分类描述")
|
||||
@Excel(name = "二级分类描述")
|
||||
private String secondClassifyDescribe;
|
||||
|
||||
/** 执行时间,格式:HH:mm */
|
||||
@ApiModelProperty(value = "执行时间,格式:HH:mm")
|
||||
@JsonFormat(pattern = "HH:mm")
|
||||
@Excel(name = "执行时间,格式:HH:mm", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private LocalTime executeTime;
|
||||
|
||||
/** 电话推送标识,0:未开启,1:已开启 */
|
||||
@ApiModelProperty(value = "电话推送标识,0:未开启,1:已开启")
|
||||
@Excel(name = "电话推送标识,0:未开启,1:已开启")
|
||||
private Integer phonePushSign;
|
||||
|
||||
/** 电话话术表id */
|
||||
@ApiModelProperty(value = "电话话术表id")
|
||||
@Excel(name = "电话话术表id")
|
||||
private Long phoneId;
|
||||
|
||||
/** 电话模板ID */
|
||||
@ApiModelProperty(value = "电话模板ID")
|
||||
@Excel(name = "电话模板ID")
|
||||
private String phoneTemplateId;
|
||||
|
||||
/** 问卷表id */
|
||||
@ApiModelProperty(value = "问卷表id")
|
||||
@Excel(name = "问卷表id")
|
||||
private Long questionInfoId;
|
||||
|
||||
/** 问卷模板名称 */
|
||||
@ApiModelProperty(value = "问卷模板名称")
|
||||
@Excel(name = "问卷模板名称")
|
||||
private String questionnaireName;
|
||||
|
||||
/** 问卷模板内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
|
||||
@ApiModelProperty(value = "问卷模板内容")
|
||||
@Excel(name = "问卷模板内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
|
||||
private String questionnaireContent;
|
||||
|
||||
/** 问卷有效期,单位:天 */
|
||||
@ApiModelProperty(value = "问卷有效期,单位:天")
|
||||
@Excel(name = "问卷有效期,单位:天")
|
||||
private Integer questionExpirationDate;
|
||||
|
||||
/** 宣教文章表id */
|
||||
@ApiModelProperty(value = "宣教文章表id")
|
||||
@Excel(name = "宣教文章表id")
|
||||
private Long propagandaInfoId;
|
||||
|
||||
/** 宣教文章模板标题(宣教模板名称) */
|
||||
@ApiModelProperty(value = "宣教文章模板标题")
|
||||
@Excel(name = "宣教文章模板标题", readConverterExp = "宣=教模板名称")
|
||||
private String propagandaTitle;
|
||||
|
||||
/** 宣教文章内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
|
||||
@ApiModelProperty(value = "宣教文章内容")
|
||||
@Excel(name = "宣教文章内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
|
||||
private String propagandaContent;
|
||||
|
||||
/** 短信推送标识,0:未开启,1:已开启 */
|
||||
@ApiModelProperty(value = "短信推送标识,0:未开启,1:已开启")
|
||||
@Excel(name = "短信推送标识,0:未开启,1:已开启")
|
||||
private Integer messagePushSign;
|
||||
|
||||
/** 短信模板表id */
|
||||
@ApiModelProperty(value = "短信模板表id")
|
||||
@Excel(name = "短信模板表id")
|
||||
private Long messageTemplateId;
|
||||
|
||||
/** 公众号推送标识,0:未开启,1:已开启 */
|
||||
@ApiModelProperty(value = "公众号推送标识,0:未开启,1:已开启")
|
||||
@Excel(name = "公众号推送标识,0:未开启,1:已开启")
|
||||
private Integer officialPushSign;
|
||||
|
||||
/** 公众号模板表id */
|
||||
@ApiModelProperty(value = "公众号模板表id")
|
||||
@Excel(name = "公众号模板表id")
|
||||
private Long officialTemplateId;
|
||||
|
||||
/** 公众号模板名称 */
|
||||
@ApiModelProperty(value = "公众号模板名称")
|
||||
@Excel(name = "公众号模板名称")
|
||||
private String officialTemplateName;
|
||||
|
||||
/** 公众号提醒内容 */
|
||||
@ApiModelProperty(value = "公众号提醒内容")
|
||||
@Excel(name = "公众号提醒内容")
|
||||
private String officialRemindContent;
|
||||
|
||||
/** 公众号节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
|
||||
@ApiModelProperty(value = "公众号节点内容")
|
||||
@Excel(name = "公众号节点内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
|
||||
private String officialNodeContent;
|
||||
|
||||
/** 小程序推送标识,0:未开启,1:已开启 */
|
||||
@ApiModelProperty(value = "小程序推送标识,0:未开启,1:已开启")
|
||||
@Excel(name = "小程序推送标识,0:未开启,1:已开启")
|
||||
private Integer appletPushSign;
|
||||
|
||||
/** 小程序模板表id */
|
||||
@ApiModelProperty(value = "小程序模板表id")
|
||||
@Excel(name = "小程序模板表id")
|
||||
private Long appletTemplateId;
|
||||
|
||||
/** 小程序模板名称 */
|
||||
@ApiModelProperty(value = "小程序模板名称")
|
||||
@Excel(name = "小程序模板名称")
|
||||
private String appletTemplateName;
|
||||
|
||||
/** 小程序提醒内容 */
|
||||
@ApiModelProperty(value = "小程序提醒内容")
|
||||
@Excel(name = "小程序提醒内容")
|
||||
private String appletRemindContent;
|
||||
|
||||
/** 小程序提示说明 */
|
||||
@ApiModelProperty(value = "小程序提示说明")
|
||||
@Excel(name = "小程序提示说明")
|
||||
private String appletPromptDescription;
|
||||
|
||||
/** 小程序节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
|
||||
@ApiModelProperty(value = "小程序节点内容")
|
||||
@Excel(name = "小程序节点内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
|
||||
private String appletNodeContent;
|
||||
|
||||
/** 人工随访模板表id */
|
||||
@ApiModelProperty(value = "人工随访模板表id")
|
||||
@Excel(name = "人工随访模板表id")
|
||||
private Long followTemplateId;
|
||||
|
||||
/** 人工随访模板名称 */
|
||||
@ApiModelProperty(value = "人工随访模板名称")
|
||||
@Excel(name = "人工随访模板名称")
|
||||
private String followTemplateName;
|
||||
|
||||
/** 人工随访模板内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
|
||||
@ApiModelProperty(value = "人工随访模板内容")
|
||||
@Excel(name = "人工随访模板内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
|
||||
private String followContent;
|
||||
|
||||
/** 文字提醒内容 */
|
||||
@ApiModelProperty(value = "文字提醒内容")
|
||||
@Excel(name = "文字提醒内容")
|
||||
private String textRemindContent;
|
||||
|
||||
/** 详细信息 */
|
||||
@ApiModelProperty(value = "详细信息")
|
||||
private JSONObject detailInfo;
|
||||
}
|
||||
@ -1,6 +1,5 @@
|
||||
package com.xinelu.manage.vo.signpatientmanageroutenode;
|
||||
|
||||
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.List;
|
||||
@ -41,5 +40,5 @@ public class SignPatientManageRouteNodeVo {
|
||||
* 节点列表
|
||||
*/
|
||||
@ApiModelProperty(value = "节点列表")
|
||||
List<SignPatientManageRouteNode> nodeList;
|
||||
List<SignPatientManageRouteNodeInfoVo> nodeList;
|
||||
}
|
||||
|
||||
@ -90,11 +90,24 @@
|
||||
order by visit_date desc
|
||||
</select>
|
||||
|
||||
<select id="selectPatientVisitRecordById" parameterType="Long"
|
||||
resultMap="PatientVisitRecordResult">
|
||||
<include refid="selectPatientVisitRecordVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
<select id="selectPatientVisitRecordById" parameterType="Long"
|
||||
resultMap="PatientVisitRecordResult">
|
||||
<include refid="selectPatientVisitRecordVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="getByPatientId" parameterType="Long"
|
||||
resultType="com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo">
|
||||
select patient.id as patientId, patient.resident_id, patient.patient_name, patient.patient_phone, patient.family_member_phone,
|
||||
patient.birth_date, patient.card_no, patient.sex, patient.address, patient.visit_method,
|
||||
patient.hospital_agency_id, patient.hospital_agency_name, patient.campus_agency_id, patient.campus_agency_name,
|
||||
patient.department_id, patient.department_name, patient.ward_id, patient.ward_name, patient.patient_source,
|
||||
record.id as patientVisitRecordId, record.visit_method, record.visit_date, record.main_diagnosis,
|
||||
record.admission_time, record.discharge_time, record.in_hospital_info, record.out_hospital_info, record.surgical_name, record.surgical_record
|
||||
from patient_info patient
|
||||
left join patient_visit_record record on patient.patient_visit_record_id = record.id
|
||||
where patient.id = #{patientId}
|
||||
</select>
|
||||
|
||||
<insert id="insertPatientVisitRecord" parameterType="PatientVisitRecord" useGeneratedKeys="true"
|
||||
keyProperty="id">
|
||||
@ -463,21 +476,22 @@
|
||||
#{item.updateTime,jdbcType=TIMESTAMP})
|
||||
</foreach>
|
||||
</insert>
|
||||
<select id="judgeRepeat" resultMap="PatientVisitRecordResult">
|
||||
<include refid="selectPatientVisitRecordVo"/>
|
||||
where del_flag = 0
|
||||
and hospital_agency_id = #{hospitalAgencyId,jdbcType=BIGINT}
|
||||
and in_hospital_number = #{inHospitalNumber,jdbcType=VARCHAR}
|
||||
<if test="cardNo != null">
|
||||
and card_no != #{cardNo,jdbcType=VARCHAR}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getLastRecord" resultMap="PatientVisitRecordResult">
|
||||
<include refid="selectPatientVisitRecordVo"/>
|
||||
where del_flag = 0
|
||||
AND hospital_agency_id = #{hospitalAgencyId,jdbcType=BIGINT}
|
||||
AND patient_id = #{patientId,jdbcType=BIGINT}
|
||||
ORDER BY id desc
|
||||
<where>
|
||||
<if test="patientId != null">
|
||||
AND patient_id = #{patientId,jdbcType=BIGINT}
|
||||
</if>
|
||||
<if test="hospitalAgencyId != null">
|
||||
and hospital_agency_id = #{hospitalAgencyId,jdbcType=BIGINT}
|
||||
</if>
|
||||
<if test="inHospitalNumber != null">
|
||||
and in_hospital_number = #{inHospitalNumber,jdbcType=VARCHAR}
|
||||
</if>
|
||||
<if test="cardNo != null">
|
||||
and card_no != #{cardNo,jdbcType=VARCHAR}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
@ -124,8 +124,21 @@
|
||||
<if test="taskType != null and taskType != ''">
|
||||
and node.task_type = #{taskType}
|
||||
</if>
|
||||
<if test="taskCreateType != null and taskCreateType != ''">
|
||||
and route.task_create_type = #{taskCreateType}
|
||||
</if>
|
||||
<choose>
|
||||
<when test="routeCheckStatus != null and routeCheckStatus == 'UNAUDITED'">
|
||||
and node.route_check_status is null
|
||||
</when>
|
||||
<when test="routeCheckStatus != null and routeCheckStatus == 'AGREE'">
|
||||
and node.route_check_status = #{routeCheckStatus}
|
||||
</when>
|
||||
<when test="routeCheckStatus != null and routeCheckStatus == 'DISAGREE'">
|
||||
and node.route_check_status = #{routeCheckStatus}
|
||||
</when>
|
||||
</choose>
|
||||
</where>
|
||||
order by node.id desc
|
||||
</select>
|
||||
|
||||
<insert id="insertSignPatientManageRouteNode" parameterType="SignPatientManageRouteNode" useGeneratedKeys="true"
|
||||
@ -609,8 +622,8 @@
|
||||
patient.address,
|
||||
patient.patient_type, patient.visit_method, patient.attending_physician_id, patient.attending_physician_name, patient.main_diagnosis,
|
||||
patient.hospital_agency_id, patient.hospital_agency_name, patient.campus_agency_id, patient.campus_agency_name,
|
||||
patient.department_id, patient.department_name,patient.ward_id, patient.ward_name, patient.in_hospital_number, patient.visit_date, patient.discharge_time,
|
||||
patient.surgical_name,patient.sign_patient_record_id, node.id as manageRouteNodeId, node.manage_route_id, node.manage_route_name,node.route_check_status
|
||||
patient.department_id, patient.department_name,patient.ward_id, patient.ward_name, patient.patient_visit_record_id,patient.in_hospital_number, patient.visit_date, patient.discharge_time,
|
||||
patient.patient_source, patient.surgical_name,route.sign_patient_record_id, node.id as manageRouteNodeId, node.manage_route_id, node.manage_route_name,node.route_check_status
|
||||
from sign_patient_manage_route_node node
|
||||
left join sign_patient_manage_route route on node.manage_route_id = route.id
|
||||
left join patient_info patient on route.patient_id = patient.id
|
||||
@ -622,12 +635,15 @@
|
||||
and patient.main_diagnosis like concat('%', #{mainDiagnosis}, '%')
|
||||
</if>
|
||||
<choose>
|
||||
<when test="routeCheckStatus != null">
|
||||
<when test="routeCheckStatus != null and routeCheckStatus == 'UNAUDITED'">
|
||||
and node.route_check_status is null
|
||||
</when>
|
||||
<when test="routeCheckStatus != null and routeCheckStatus == 'AGREE'">
|
||||
and node.route_check_status = #{routeCheckStatus}
|
||||
</when>
|
||||
<when test="routeCheckStatus != null and routeCheckStatus == 'DISAGREE'">
|
||||
and node.route_check_status = #{routeCheckStatus}
|
||||
</when>
|
||||
<otherwise>
|
||||
and node.route_check_status is null
|
||||
</otherwise>
|
||||
</choose>
|
||||
<if test="hospitalAgencyId != null ">
|
||||
and patient.hospital_agency_id = #{hospitalAgencyId}
|
||||
@ -648,6 +664,6 @@
|
||||
and date_format(patient.discharge_time,'%y%m%d') <= date_format(#{dischargeTimeEnd},'%y%m%d')
|
||||
</if>
|
||||
</where>
|
||||
group by patient_id
|
||||
group by patient.hospital_agency_id, patient.id
|
||||
</select>
|
||||
</mapper>
|
||||
@ -21,6 +21,7 @@
|
||||
<result property="departmentName" column="department_name" jdbcType="VARCHAR"/>
|
||||
<result property="wardId" column="ward_id" jdbcType="BIGINT"/>
|
||||
<result property="wardName" column="ward_name" jdbcType="VARCHAR"/>
|
||||
<result property="patientVisitRecordId" column="patient_visit_record_id" jdbcType="BIGINT"/>
|
||||
<result property="visitSerialNumber" column="visit_serial_number" jdbcType="VARCHAR"/>
|
||||
<result property="visitMethod" column="visit_method" jdbcType="VARCHAR"/>
|
||||
<result property="inHospitalNumber" column="in_hospital_number" jdbcType="VARCHAR"/>
|
||||
@ -48,7 +49,7 @@
|
||||
patient_phone,card_no,sex,birth_date,sign_time,
|
||||
hospital_agency_id,hospital_agency_name,campus_agency_id,
|
||||
campus_agency_name,department_id,department_name,
|
||||
ward_id,ward_name,visit_serial_number,
|
||||
ward_id,ward_name,patient_visit_record_id,visit_serial_number,
|
||||
visit_method,in_hospital_number,sign_diagnosis,review_diagnosis,
|
||||
service_status,sign_status,intentional_source,
|
||||
intentional_time,billing_doctor_id,billing_doctor_name,
|
||||
@ -74,7 +75,7 @@
|
||||
,patient_phone,card_no,sex,birth_date,sign_time
|
||||
,hospital_agency_id,hospital_agency_name,campus_agency_id
|
||||
,campus_agency_name,department_id,department_name
|
||||
,ward_id,ward_name,visit_serial_number
|
||||
,ward_id,ward_name,patient_visit_record_id,visit_serial_number
|
||||
,visit_method,in_hospital_number,sign_diagnosis,review_diagnosis
|
||||
,service_status,sign_status,intentional_source
|
||||
,intentional_time,billing_doctor_id,billing_doctor_name
|
||||
|
||||
Loading…
Reference in New Issue
Block a user