package com.smartor.statemachine;
|
|
import com.smartor.domain.PatMedInhosp;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
/**
|
* 住院状态机服务(门面模式)
|
* 提供便捷的状态转换方法
|
*
|
* @author smartor
|
*/
|
@Slf4j
|
@Service
|
public class InhospStateMachineService {
|
|
@Autowired
|
private InhospStateMachine stateMachine;
|
|
/**
|
* 处理预入院
|
*
|
* @param patMedInhosp 住院记录对象
|
* @return 是否成功
|
*/
|
public boolean processPreAdmission(PatMedInhosp patMedInhosp) {
|
log.info("【InhospStateMachineService】处理预入院:serialnum={}, orgid={}",
|
patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
|
return stateMachine.transitionState(patMedInhosp, "3");
|
}
|
|
/**
|
* 处理入院
|
*
|
* @param patMedInhosp 住院记录对象
|
* @return 是否成功
|
*/
|
public boolean processInHospital(PatMedInhosp patMedInhosp) {
|
log.info("【InhospStateMachineService】处理入院:serialnum={}, orgid={}",
|
patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
|
return stateMachine.transitionState(patMedInhosp, "0");
|
}
|
|
/**
|
* 处理出院
|
*
|
* @param patMedInhosp 住院记录对象
|
* @return 是否成功
|
*/
|
public boolean processDischarge(PatMedInhosp patMedInhosp) {
|
log.info("【InhospStateMachineService】处理出院:serialnum={}, orgid={}",
|
patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
|
return stateMachine.transitionState(patMedInhosp, "1");
|
}
|
|
/**
|
* 根据cry参数处理状态转换
|
*
|
* @param patMedInhosp 住院记录对象
|
* @param cry 状态码(0:入院, 1:出院, 3:预入院)
|
* @return 是否成功
|
*/
|
public boolean processStateChange(PatMedInhosp patMedInhosp, String cry) {
|
log.info("【InhospStateMachineService】根据cry处理状态变更:serialnum={}, orgid={}, cry={}",
|
patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), cry);
|
|
if ("0".equals(cry)) {
|
return processInHospital(patMedInhosp);
|
} else if ("1".equals(cry)) {
|
return processDischarge(patMedInhosp);
|
} else if ("3".equals(cry)) {
|
return processPreAdmission(patMedInhosp);
|
} else {
|
log.error("【InhospStateMachineService】未知的cry值:{}", cry);
|
return false;
|
}
|
}
|
|
/**
|
* 获取当前状态
|
*
|
* @param serialnum 流水号
|
* @param orgid 机构ID
|
* @param patno 患者编号
|
* @return 当前状态码
|
*/
|
public String getCurrentState(String serialnum, String orgid, String patno) {
|
return stateMachine.getCurrentState(serialnum, orgid, patno);
|
}
|
}
|