刘韬 5 years ago
parent
commit
c523cff709
1 changed files with 201 additions and 23 deletions
  1. 201 23
      DataFusion/src/com/zskk/control/ViewController.java

+ 201 - 23
DataFusion/src/com/zskk/control/ViewController.java

@@ -1,5 +1,6 @@
 package com.zskk.control;
 
+import com.alibaba.fastjson.JSON;
 import com.jfinal.core.Controller;
 import com.jfinal.kit.PropKit;
 import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
@@ -10,6 +11,10 @@ import com.jfinal.plugin.druid.DruidPlugin;
 import com.zskk.model.*;
 import org.apache.commons.codec.digest.DigestUtils;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.text.ParseException;
@@ -63,43 +68,121 @@ public class ViewController extends Controller {
 	}
 	public void testTask() {
 		try {
-			//List<Record>  d =  Db.use("connected").find(this.getPara("sqlStr"));
-			List<Exams> exams = Exams.dao.use("zskk").find("SELECT * FROM pacsonline.exams where exam_status=3 and institution_id=73090001 order by createdAt desc limit 50");
-			List<Record> examds = new ArrayList<>();
+			List<Exams> exams = Exams.dao.use("zskk").find("SELECT * FROM pacsonline.exams where exam_status=3 and institution_id=15700002 order by createdAt desc limit 30");
 			for (Exams exams2 : exams) {
-				Studies studies = Studies.dao.use("zskk").findById(exams2.getStudyId());
-				Record record = Db.use("connected").findFirst("select * from caller where STUDYUID=?",studies.getStudyuid());
+				//Studies studies = Studies.dao.use("zskk").findById(exams2.getStudyId());
+				Record record = Db.use("connected").findFirst("select * from zskk where accessionNumber=?",exams2.getAccessionNum());
 				if (record == null) {
 					continue;
 				}
-				examds.add(record);
 				Report report = new Report().use("zskk");
 				report.setId(creatId());
-				report.setReportDatetime(aaa(record.getStr("REPORTDATE")));
-				report.setImpression(record.getStr("IMPRESSION"));
+				report.setReportDatetime(parseStringToDate(record.getStr("reportdate")));
+				if (record.getStr("impression") == null && record.getStr("description") == null) {
+					continue;
+				}
+				report.setImpression(record.getStr("impression"));
 				report.setDescription(record.getStr("DESCRIPTION"));
 				report.setExamId(exams2.getId());
 				report.setCreatedAt(new Date());
-				if (record.getStr("FITEM_RESULT_CODE") != null) {
-					//report.setReportResult(record.getStr("FITEM_RESULT_CODE").contains("阴")?"1":"2");
-				}
-				report.setReportDoctorId(getDoctorIdByName(record.getStr("REPORTDOCTOR")));
-				report.setReviewDoctorId(getDoctorIdByName(record.getStr("REVIEWDOCTOR")));
-				report.setReviewDatetime(aaa(record.getStr("REPORTDATE")));
-				report.setConfirmDoctorId(getDoctorIdByName(record.getStr("REVIEWDOCTOR")));
-				report.setConfirmDatetime(aaa(record.getStr("REPORTDATE")));
-//				report.save();
+				report.setReportDoctorId(getDoctorIdByName(record.getStr("reportdoctor")));
+				report.setReviewDoctorId(getDoctorIdByName(record.getStr("reviewdoctor")));
+				report.setReviewDatetime(parseStringToDate(record.getStr("reportdate")));
+				report.setConfirmDoctorId(getDoctorIdByName(record.getStr("reviewdoctor")));
+				report.setConfirmDatetime(parseStringToDate(record.getStr("reportdate")));
+				report.save();
 				PatientInfos patientInfos = PatientInfos.dao.use("zskk").findById(exams2.getPatientId());
-				patientInfos.setName(record.getStr("PATIENTNAME"));
-//				patientInfos.update();
+				patientInfos.setName(record.getStr("patientname"));
+				patientInfos.setPhone(record.getStr("phone"));
+				patientInfos.setCardNum(record.getStr("idcard"));
+				patientInfos.update();
+				exams2.setExamStatus(9);
+                exams2.setClinDoctors(record.getStr("clinicaldoctor"));
+                exams2.setApplicationDepartment(record.getStr("department"));
+                exams2.setApplicationDoctor(record.getStr("clinicaldoctor"));
+                exams2.setClinDiag(record.getStr("diagnosis"));
+				exams2.update();
+				//传云医康 数据
+                Map<String, String> params = new HashMap<>(10);
+                Map<String, String> data = new HashMap<>(22);
+                //获取data数据
+                //医院id
+                data.put("hospital_id","15700002");
+                //影像所见
+                data.put("description",record.getStr("DESCRIPTION"));
+                //意见建议
+                data.put("impression",record.getStr("impression"));
+                //检查id
+                data.put("exam_id",exams2.getId());
+                data.put("study_id",exams2.getStudyId());
+                //患者id
+                data.put("patient_id",exams2.getPatientId());
+                //患者姓名
+                data.put("patient_name",record.getStr("patientname"));
+                //患者性别
+                data.put("patient_sex",record.getStr("patientsex").equals("女")?"F":"M");
+                //身份证号
+                data.put("card_num","");
+                //手机号
+                data.put("phone","");
+                //患者生日
+                data.put("birthday",returnSecondTimestamp(record.getStr("birthdate")));
+                //患者检查时年龄
+                data.put("patient_age",record.getStr("patientage"));
+                //阴阳性 1阴性 2阳性
+                data.put("report_result","");
+                //报告时间 10位时间戳
+                data.put("report_datetime",returnSecondTimestamp(record.getStr("reportdate")));
+                //报告医生id
+                data.put("report_doctor_id",record.getStr("reportdoctor"));
+                //报告医生姓名
+                data.put("report_doctor_name",record.getStr("reportdoctor"));
+                //审核时间
+                data.put("review_datetime",returnSecondTimestamp(record.getStr("reportdate")));
+                //审核医生id
+                data.put("review_doctor_id",record.getStr("reviewdoctor"));
+                //审核姓名
+                data.put("review_doctor_name",record.getStr("reviewdoctor"));
+                //确认时间
+                data.put("confirm_datetime", returnSecondTimestamp(record.getStr("reportdate")));
+                //确认医生id
+                data.put("confirm_doctor_id", record.getStr("reviewdoctor"));
+                //确认医生姓名
+                data.put("confirm_doctor_name",record.getStr("reviewdoctor"));
+                //时间戳
+                params.put("timestamp", String.valueOf(getSecondTimestamp(new Date())));
+                //signature
+                params.put("signature", getSign(data, "YgpxjVeIx0yoK6Atz413IAj7hU9dygH4"));
+                //datajson字符串
+                params.put("data", JSON.toJSONString(data));
+                //System.out.println(params);
+                //调用接口
+                sendPost("http://39.106.136.96/pacs/zskk/writePatientReport", params);
 			}
-			this.renderJson(examds);
+			this.renderJson("");
 		} catch (Exception e) {
 			// TODO: handle exception
 			this.renderText(e.toString());
 		}
 	}
 	
+	 public static  String getSign(Map<String, String> param, String key) {
+	        return DigestUtils.md5Hex(Ksort(param) + key);
+	    }
+	 
+	public static String getSecondTimestamp(Date date) {
+        if (null == date) {
+            return "参数为空";
+        }
+        String timestamp = String.valueOf(date.getTime());
+        int length = timestamp.length();
+        if (length > 3) {
+            return String.valueOf(timestamp.substring(0, length - 3));
+        } else {
+            return "参数不足3位数";
+        }
+    }
+	
 	private String creatId() {
 		UUID id = UUID.randomUUID();
         String[] idd= id.toString().split("-");
@@ -117,20 +200,115 @@ public class ViewController extends Controller {
 		return doctors.getId();
 	}
 	
-	private Date aaa(String timestr) {
-		if (timestr == null) {
+	private Date parseStringToDate(String dateStr) {
+		if (dateStr == null) {
 			return new Date();
 		}
 		SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 	    Date date = null;
 		try {
-			date = sdf.parse(timestr);
+			date = sdf.parse(dateStr);
 		} catch (ParseException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
         return date;
 	}
+	
+	public static String sendPost(String url, Map<String, String> parameters) {
+        String result = "";// 返回的结果
+        BufferedReader in = null;// 读取响应输入流
+        PrintWriter out = null;
+        StringBuffer sb = new StringBuffer();// 处理请求参数
+        String params = "";// 编码之后的参数
+        try {
+            // 编码请求参数
+            if (parameters.size() == 1) {
+                for (String name : parameters.keySet()) {
+                    sb.append(name).append("=").append(
+                            java.net.URLEncoder.encode(parameters.get(name),
+                                    "UTF-8"));
+                }
+                params = sb.toString();
+            } else {
+                for (String name : parameters.keySet()) {
+                    sb.append(name).append("=").append(
+                            java.net.URLEncoder.encode(parameters.get(name),
+                                    "UTF-8")).append("&");
+                }
+                String temp_params = sb.toString();
+                params = temp_params.substring(0, temp_params.length() - 1);
+            }
+            // 创建URL对象
+            java.net.URL connURL = new java.net.URL(url);
+            // 打开URL连接
+            java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
+                    .openConnection();
+            // 设置通用属性
+            httpConn.setRequestProperty("Accept", "*/*");
+            httpConn.setRequestProperty("Connection", "Keep-Alive");
+            httpConn.setRequestProperty("User-Agent",
+                    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
+            // 设置POST方式
+            httpConn.setDoInput(true);
+            httpConn.setDoOutput(true);
+            // 获取HttpURLConnection对象对应的输出流
+            out = new PrintWriter(httpConn.getOutputStream());
+            // 发送请求参数
+            out.write(params);
+            // flush输出流的缓冲
+            out.flush();
+            // 定义BufferedReader输入流来读取URL的响应,设置编码方式
+            in = new BufferedReader(new InputStreamReader(httpConn
+                    .getInputStream(), "UTF-8"));
+            String line;
+            // 读取返回的内容
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+            System.out.println(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+        return result;
+    }
+
 
+	public static  String Ksort(Map<String, String> map) {
+        String sb = "";
+        String[] key = new String[map.size()];
+        int index = 0;
+        for (String k : map.keySet()) {
+            key[index] = k;
+            index++;
+        }
+        Arrays.sort(key);
+        for (String s : key) {
+            sb += s + "=" + map.get(s) + "&";
+        }
+        sb = sb.substring(0, sb.length() - 1);
+        try {
+            sb = URLEncoder.encode(sb, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }// 使用常见的UTF-8编码
+        return sb.replace("%3D", "=").replace("%26", "&");
+    }
+	
+	public  String returnSecondTimestamp(String data) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
+        return String.valueOf(sdf.parse(data).getTime()/1000);
+    }
 }