Bladeren bron

病历评分

zhoutg 5 jaren geleden
bovenliggende
commit
86a6567dac

+ 25 - 0
src/main/java/com/diagbot/client/QcServiceClient.java

@@ -0,0 +1,25 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.QcServiceHystrix;
+import com.diagbot.dto.OutputInfo;
+import com.diagbot.dto.Response;
+import com.diagbot.vo.QueryVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+
+/**
+ * @description: 病历质控远程调用
+ * @author: zhoutg
+ * @date: 2020/4/13 18:28
+ */
+@FeignClient(name = "qc", url = "${qc.address}",fallback = QcServiceHystrix.class)
+public interface QcServiceClient {
+
+    @PostMapping(value = "/analyse/rec")
+    Response<OutputInfo> extract(QueryVo queryVo);
+
+}
+
+
+

+ 25 - 0
src/main/java/com/diagbot/client/hystrix/QcServiceHystrix.java

@@ -0,0 +1,25 @@
+package com.diagbot.client.hystrix;
+
+
+import com.diagbot.client.QcServiceClient;
+import com.diagbot.dto.OutputInfo;
+import com.diagbot.dto.Response;
+import com.diagbot.vo.QueryVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @description: 病历质控远程调用熔断器
+ * @author: zhoutg
+ * @date: 2020/4/13 18:23
+ */
+@Component
+@Slf4j
+public class QcServiceHystrix implements QcServiceClient {
+
+    @Override
+    public Response<OutputInfo> extract(QueryVo queryVo) {
+        log.error("【hystrix】调用{}异常", "extract");
+        return null;
+    }
+}

+ 159 - 0
src/main/java/com/diagbot/dto/Constants.java

@@ -0,0 +1,159 @@
+/**   
+* @Company: 杭州朗通信息技术有限公司 
+* @Department: 系统软件部 
+* @Description: 朗通智能辅助诊疗系统 
+* @Address: 浙江省杭州市西湖区西斗门路3号 天堂软件园D-7B 
+*/
+package com.diagbot.dto;
+
+/**
+* @Title: Constants.java 
+* @Package org.diagbot.public 
+* @Description: 通用常数接口定义  
+* @author 楼辉荣(Fyeman)   
+* @date 2015年4月23日 下午11:25:37 
+* @version V1.0
+ */
+public interface Constants {
+    /**
+     * 操作名称
+     */
+    String OP_NAME = "op";
+    /**
+     * 消息key
+     */
+    String MESSAGE = "message";
+    /**
+     * 错误key
+     */
+    String ERROR = "error";
+    /**
+     * 上个页面地址
+     */
+    String BACK_URL = "BackURL";
+    String IGNORE_BACK_URL = "ignoreBackURL";
+    /**
+     * 当前请求的地址 带参数
+     */
+    String CURRENT_URL = "currentURL";
+    /**
+     * 当前请求的地址 不带参数
+     */
+    String NO_QUERYSTRING_CURRENT_URL = "noQueryStringCurrentURL";
+    /**
+     * 上下文
+     */
+    String CONTEXT_PATH = "ctx";
+    /**
+     * 当前登录的用户
+     */
+    String CURRENT_APPLICATION = "c_app";
+    String CURRENT_USER = "c_user";
+    String CURRENT_USERNAME = "username";
+    String USER_MENUS = "menus";
+    
+    /**
+     * 管理控制台应用ID=0
+     */
+    long ADMIN_APPLICATION = 0;
+    /**
+     * 一级菜单grade标识
+     */
+    int FIRST_MENU = 1;
+    /**
+     * 二级菜单grade标识
+     */
+    int SECOND_MENU = 2;
+    /**
+     * 操作按钮等级标识
+     */
+    int MENU_GRADE = 3;
+    /**
+     * 最高级资源grade标识
+     */
+    int TOP_REC = 0;
+    /**
+     * 编码方式
+     */
+    String ENCODING = "UTF-8";
+    /**
+     * 系统用户状态--启用
+     */
+    int USER_STATUS_UNLOCK = 1;
+    /**
+     * 系统用户状态--禁用
+     */
+    int USER_STATUS_LOCK = 0;
+    /**
+     * 通用值0
+     */
+    int COMMON_INT_0 = 0;
+    /**
+     * 通用值1
+     */
+    int COMMON_INT_1 = 1;
+    /**
+     * 通用值-1
+     */
+    int COMMON_INT_NEG_1 = -1;
+    /**
+     * 通用值0
+     */
+    long COMMON_LONG_0 = 0L;
+    /**
+     * 通用值1
+     */
+    long COMMON_LONG_1 = 1L;
+    /**
+     * 通用值-1
+     */
+    long COMMON_LONG_NEG_1 = -1L;
+    /**
+     * 通用值"0"
+     */
+    String COMMON_STRING_0 = "0";
+    /**
+     * 通用值"1"
+     */
+    String COMMON_STRING_1 = "1";
+    /**
+     * 通用值"-1"
+     */
+    String COMMON_STRING_NEG_1 = "-1";
+    
+    /**
+     * 通用值"-1"
+     */
+    String COMMON_STRING_99 = "99";
+    /**
+     * 登录页面
+     */
+    String LOGIN_URL = "/login";
+    /**
+     * 上传文件夹
+     */
+    String UPLOAD_FOLDER_NAME = "upload";
+    /**
+     * 临时文件夹
+     */
+    String TEMP_FOLDER_NAME = "temp";
+    /**
+     * 地域标示
+     */
+    public static final String DEFAULT_LOCALE = "zh_CN";
+    /**
+     * 缺省字符集
+     */
+    public static final String DEFAULT_ENCODE = "UTF-8";
+    /**
+     * 以下为接口返回公共属性定义常量
+     */
+    public static final String MSG_SUCCESS = "操作成功";	//操作成功
+    public static final String MSG_FALURE = "操作失败";	//操作失败
+    
+    public static final long INVALIDATE_VALUE = -1;		//起止时间定义
+    public static final int RET_SUCCESS = 0; 			//成功
+	public static final int RET_FAIL = 1; 				//失败
+	public static final int RET_ERROR_PARAM = -1; 		//参数校验失败
+	public static final int RET_NO_TOKEN = -2; 	//用户token丢失
+}

+ 192 - 0
src/main/java/com/diagbot/dto/Response.java

@@ -0,0 +1,192 @@
+package com.diagbot.dto;
+
+//import com.lantone.pub.Constants;
+
+/**
+ * 
+ * ClassName: org.diagbot.pub.api.Response 
+ * Function: API接口提供标准返回数据包, 数据包格式如下:
+ * 			{
+ * 				status:"OK",
+ * 				startTime:8206448610408,
+ * 				endTime:8206448610418,
+ * 				version:"1.0",
+ * 				msg:"操作成功",
+ * 				ret:"0",
+ *				timeConsum:10,
+ *				data:{
+ *					..。		
+ *				}
+ * 			}
+ * date: 2015年7月6日 下午1:36:58  
+ * 
+ * @author 楼辉荣(Fyeman) 
+ * @version 1.0 
+ * @since JDK 1.7
+ */
+public class Response<T> implements java.io.Serializable {
+	private static final long serialVersionUID = 8206448610408409499L;
+	private Status status =  Status.PENDING;  //状态
+    private long startTime = Constants.INVALIDATE_VALUE;                                  //起始时间
+    private long endTime = Constants.INVALIDATE_VALUE;                                    //结束时间
+    private String version="1.0";
+    private String msg = Constants.MSG_SUCCESS;                                  //消息
+    private T data = null;                                                                //序列化后的结果数据
+    // 返回结果标志,默认成功0,失败 1 参数错误 -1 token丢失-2
+    private int ret = Constants.RET_SUCCESS;
+    
+    private String token;
+    //耗时
+ 	private long timeConsum;
+ 	
+    public int getRet() {
+		return ret;
+	}
+
+	public void setRet(int ret) {
+		this.ret = ret;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	public long getTimeConsum() {
+		return timeConsum;
+	}
+
+	public void setTimeConsum(long timeConsum) {
+		this.timeConsum = timeConsum;
+	}
+
+	public Response(){
+        super();
+    }
+
+    public Status getStatus() {
+        return status;
+    }
+
+    /**
+     * 在调用end()方法时,会自动设置状态,因此,如果调用了end()方法,就不要调用这个方法
+     * @param status
+     */
+    public Response<T> setStatus(Status status) {
+        this.status = status;
+        return this;
+    }
+
+ 
+	public String getVersion() {
+		return version;
+	}
+
+	public void setVersion(String version) {
+		this.version = version;
+	}
+
+	public long getStartTime() {
+        return startTime;
+    }
+
+    public Response<T> setStartTime(long startTime) {
+        this.startTime = startTime;
+        return this;
+    }
+
+    public long getEndTime() {
+        return endTime;
+    }
+
+    public Response<T> setEndTime(long endTime) {
+        this.endTime = endTime;
+        return this;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public String getToken() {
+		return token;
+	}
+
+	public void setToken(String token) {
+		this.token = token;
+	}
+
+	/**
+     * 设置状态和起始时间,表示操作正在进行
+     */
+    public Response<T> start(){
+        this.setStatus(Status.RUNNING);
+        this.setStartTime(System.currentTimeMillis());
+        return this;
+    }
+
+    /**
+     * 设置状态和时间,表示操作结束,没有失败
+     */
+    public Response<T> end(){
+        this.setEndTime(System.currentTimeMillis());
+        this.setTimeConsum(this.endTime-this.startTime);
+		this.setStatus(Status.OK);
+        return this;
+    }
+
+    /**
+     * 设置状态和时间,表示操作结束,并且失败
+     */
+    public Response<T> endAndFailed(){
+        this.setStatus(Status.FAIL);
+        this.setEndTime(System.currentTimeMillis());
+        return this;
+    }
+    
+    /**
+     * 非参数错误通用失败信息
+     */
+    public Response<T> failure(String msg) {
+    	this.msg = msg;
+    	this.ret = Constants.RET_FAIL;
+    	this.end();
+    	return this;
+    }
+    
+    /**
+     * 参数错误信息
+     */
+    public Response<T> paramFailure(String msg) {
+    	this.msg = msg;
+    	this.ret = Constants.RET_ERROR_PARAM;
+    	this.end();
+    	return this;
+    }
+    
+    /**
+     * 用户信息丢失
+     */
+    public Response<T> tokenFailure(String msg) {
+    	this.msg = msg;
+    	this.ret = Constants.RET_NO_TOKEN;
+    	this.end();
+    	return this;
+    }
+    
+    /**
+     * 通用成功
+     */
+    public Response<T> success() {
+    	this.end();
+    	return this;
+    }
+
+}

+ 131 - 0
src/main/java/com/diagbot/dto/Status.java

@@ -0,0 +1,131 @@
+package com.diagbot.dto;
+
+public enum Status {
+	/**
+	 * <code>PENDING = 1;</code>
+	 *
+	 * <pre>
+	 * 操作尚未开始
+	 * </pre>
+	 */
+	PENDING(1),
+	/**
+	 * <code>RUNNING = 2;</code>
+	 *
+	 * <pre>
+	 * 操作开始
+	 * </pre>
+	 */
+	RUNNING(2),
+	/**
+	 * <code>OK = 3;</code>
+	 *
+	 * <pre>
+	 * 操作正常结束
+	 * </pre>
+	 */
+	OK(3),
+	/**
+	 * <code>WARN = 4;</code>
+	 *
+	 * <pre>
+	 * 有警告,但是正常结束
+	 * </pre>
+	 */
+	WARN(4),
+	/**
+	 * <code>ERROR = 5;</code>
+	 *
+	 * <pre>
+	 * 有错误,但是完整结束
+	 * </pre>
+	 */
+	ERROR(5),
+	/**
+	 * <code>FAIL = 6;</code>
+	 *
+	 * <pre>
+	 * 操作失败
+	 * </pre>
+	 */
+	FAIL(6), ;
+
+	/**
+	 * <code>PENDING = 1;</code>
+	 *
+	 * <pre>
+	 * 操作尚未开始
+	 * </pre>
+	 */
+	public static final int PENDING_VALUE = 1;
+	/**
+	 * <code>RUNNING = 2;</code>
+	 *
+	 * <pre>
+	 * 操作开始
+	 * </pre>
+	 */
+	public static final int RUNNING_VALUE = 2;
+	/**
+	 * <code>OK = 3;</code>
+	 *
+	 * <pre>
+	 * 操作正常结束
+	 * </pre>
+	 */
+	public static final int OK_VALUE = 3;
+	/**
+	 * <code>WARN = 4;</code>
+	 *
+	 * <pre>
+	 * 有警告,但是正常结束
+	 * </pre>
+	 */
+	public static final int WARN_VALUE = 4;
+	/**
+	 * <code>ERROR = 5;</code>
+	 *
+	 * <pre>
+	 * 有错误,但是完整结束
+	 * </pre>
+	 */
+	public static final int ERROR_VALUE = 5;
+	/**
+	 * <code>FAIL = 6;</code>
+	 *
+	 * <pre>
+	 * 操作失败
+	 * </pre>
+	 */
+	public static final int FAIL_VALUE = 6;
+
+	public final int getNumber() {
+		return value;
+	}
+
+	public static Status valueOf(int value) {
+		switch (value) {
+		case 1:
+			return PENDING;
+		case 2:
+			return RUNNING;
+		case 3:
+			return OK;
+		case 4:
+			return WARN;
+		case 5:
+			return ERROR;
+		case 6:
+			return FAIL;
+		default:
+			return null;
+		}
+	}
+
+	private final int value;
+
+	private Status(int value) {
+		this.value = value;
+	}
+
+}

+ 28 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -1,15 +1,22 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.QcServiceClient;
 import com.diagbot.dto.BehospitalInfoDTO;
+import com.diagbot.dto.OutputInfo;
+import com.diagbot.dto.Response;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
 import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.QueryVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description:
@@ -19,6 +26,9 @@ import java.util.List;
 @Component
 public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
 
+    @Autowired
+    QcServiceClient qcServiceClient;
+
     public IPage<BehospitalInfoDTO> pageFac(BehospitalPageVO behospitalPageVO) {
 
         behospitalPageVO.setHospitalId(SysUserUtils.getCurrentHospitalID());
@@ -33,6 +43,24 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     }
 
 
+    public Map<String, Object> analyze(AnalyzeVO analyzeVO) {
+
+        // TODO 获取质控条目
+
+        // TODO 获取病历所有数据
+
+        // TODO 拼接数据
+
+        // TODO 调用质控接口
+        QueryVo queryVo = new QueryVo();
+        Response<OutputInfo> response = qcServiceClient.extract(queryVo);
+
+        // 评分,保存
+
+
+        return null;
+    }
+
     /**
      * 通过日期计算年龄
      *

+ 10 - 0
src/main/java/com/diagbot/vo/AnalyzeVO.java

@@ -0,0 +1,10 @@
+package com.diagbot.vo;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+public class AnalyzeVO {
+
+}

+ 12 - 0
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -6,6 +6,7 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.BehospitalInfoFacade;
+import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * <p>
  * 住院病历信息 前端控制器
@@ -39,4 +42,13 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(data);
     }
 
+
+    @ApiOperation(value = "评分[by:zhoutg]",
+            notes = "")
+    @PostMapping("/analyze")
+    @SysLogger("analyze")
+    public RespDTO<IPage<BehospitalInfoDTO>> analyze(@RequestBody AnalyzeVO analyzeVO) {
+        Map<String, Object> data = behospitalInfoFacade.analyze(analyzeVO);
+        return RespDTO.onSuc(data);
+    }
 }