import groovy.json.*
import java.text.SimpleDateFormat
class UnifiedResShell{
int code;
String message;
Object data;
}
class ErrorUnifiedResShell{
int code;
String message;
}
class RecordInfo{
String report_id;
String his_order_id;
String his_reg_no;
Date exam_date;
String name;
String idcard;
String gender;
String age;
Date birthday;
String marriage;
String mobile;
String department;
String enterprise_code;
String enterprise_name;
String group_name;
int exam_status
}
class ReportInfo extends RecordInfo{
ReportResult report_result;
ReportDepartment[] report_department;
ReportDetail[] report_detail;
ReportDiagnosis[] report_diagnosis
}
class ReportResult{
String report_doctor;
Date report_time;
String audit_doctor;
Date audit_time;
String result;
String advice;
String diagnosis
}
class ReportDepartment{
String department_id;
String department_name;
String department_result;
String exam_doctor;
Date exam_time
}
class ReportDetail{
String department_id;
String department_name;
String class_id;
String class_name;
String class_result;
String item_id;
String item_name;
String item_result;
String explain;
String reference;
String unit;
String item_TIP;
String exam_doctor;
Date exam_time
}
class ReportDiagnosis{
String diagnosisno;
String diagnosis;
String advice
}
class ReportPdf{
String report_id;
String pdf_url;
String pdf_base64
}
def paramConvert(param){
def jsonSlurper = new JsonSlurper()
if(param.code != "0"){
return JsonOutput.toJson(new ErrorUnifiedResShell(code:0,message:param.message));
}
def method = param.data.methodName;
def returnParam;
switch(method){
case "PE_REPORT_HISTORY":returnParam = reportHistoryConvert(param);break;
case "PE_REPORT_INFO":returnParam = reportInfoConvert(param);break;
case "PE_REPORT_PDF_BASE64":returnParam = reportInfoConvert(param);break;
case "PE_EXAM_INFO_BASE":returnParam = recordInfoConvert(param);break;
}
return returnParam;
}
def reportHistoryConvert(param){
def records = param.data.records;
def recordList = [];
for(record in records){
recordList.add(String.valueOf(record));
}
def unifiedResShell = new UnifiedResShell(code:1,message:param.message,data:recordList);
return JsonOutput.toJson(unifiedResShell);
}
def reportPdfConvert(param){
def data = param.data;
def reportPdf = new ReportPdf(report_id:String.valueOf(data.checkRecordId),pdf_url:data.url,pdf_base64:data.base64)
def unifiedResShell = new UnifiedResShell(code:1,message:param.message,data:reportPdf);
return JsonOutput.toJson(unifiedResShell);
}
def reportInfoConvert(param){
def sdf = new SimpleDateFormat("yyyy-MM-dd")
def reports = param.data.unifiedReportInfoVOS;
def reportsList = [];
for(report in reports){
def reportDepartmentList = [];
for(reportDepartment in report.departmentInfo) {
def reportDepartmentVO = new ReportDepartment(department_id:reportDepartment.departmentId,
department_name:reportDepartment.departmentName,department_result:reportDepartment.departmentResult,
exam_doctor:reportDepartment.examDoctorName,exam_time:reportDepartment.examTime);
reportDepartmentList.add(reportDepartmentVO);
}
def reportDetailList = [];
for(reportDetail in report.itemDetailInfo){
def reportDetailVO = new ReportDetail(department_id:reportDetail.departmentId,department_name:reportDetail.departmentName,
class_id:reportDetail.combinationItemId,class_name:reportDetail.combinationItemName,class_result:reportDetail.combinationItemConclusion,
item_id:reportDetail.itemId,item_name:reportDetail.itemName,item_result:reportDetail.result,explain:"",
reference:reportDetail.referenceRange,unit:reportDetail.unit,item_TIP:reportDetail.tips,exam_doctor:reportDetail.checkDoctor,
exam_time:reportDetail.checkTime);
reportDetailList.add(reportDetailVO);
}
def reportDiagnosisList = [];
for(reportDiagnosis in report.unifiedDiagnosisInfo){
def reportDiagnosisVO = new ReportDiagnosis(diagnosisno:reportDiagnosis.diagnosisId,diagnosis:reportDiagnosis.diagnosisName,
advice:reportDiagnosis.diagnosisAdvice);
reportDiagnosisList.add(reportDiagnosisVO);
}
def examDate = sdf.parse(report.arrangeDate);
def birthdayTime = sdf.parse(report.birthday);
def inspection = report.generalInspection;
def reportResult = new ReportResult(report_doctor:inspection.inspectionDoctorName,report_time:inspection.inspectionDate,
audit_doctor:inspection.examineDoctorName,audit_time:inspection.examineDate,result:inspection.inspectionShort,advice:inspection.advice)
def reportVO = new ReportInfo(report_id:report.checkRecordId,his_order_id:report.checkNumber,his_reg_no:report.patientId,exam_date:examDate,name:report.name,
idcard:report.idcard,gender:genderConvert(report.sex),age:report.age,birthday:birthdayTime,marriage:marriageConvert(report.marriage),mobile:report.phone,
department:report.department,enterprise_code:report.companyId,enterprise_name:report.companyName,group_name:report.groupName,
exam_status:checkupStateConvert(report.checkupState),report_result:reportResult,report_department:reportDepartmentList,report_detail:reportDetailList,report_diagnosis:reportDiagnosisList);
reportsList.add(reportVO);
}
def unifiedResShell = new UnifiedResShell(code:1,message:param.message,data:reportsList);
return JsonOutput.toJson(unifiedResShell);
}
def recordInfoConvert(param){
def sdf = new SimpleDateFormat("yyyy-MM-dd")
def recordList = []
for(record in param.data.records){
def examDate = sdf.parse(record.arrangeDate);
def birthdayTime = sdf.parse(record.birthday);
def recordVO = new RecordInfo(report_id:record.checkRecordId,his_order_id:record.checkNumber,his_reg_no:record.patientId,exam_date:examDate,name:record.name,
idcard:record.idcard,gender:genderConvert(record.sex),age:record.age,birthday:birthdayTime,marriage:marriageConvert(record.marriage),mobile:record.phone,
department:record.department,enterprise_code:record.companyId,enterprise_name:record.companyName,group_name:record.groupName,exam_status:checkupStateConvert(record.checkupState));
recordList.add(recordVO);
}
def unifiedResShell = new UnifiedResShell(code:1,message:param.message,data:recordList);
return JsonOutput.toJson(unifiedResShell);
}
def genderConvert(param){
def genderStr = param;
if(genderStr == "0"){
genderStr = "3";
}
return genderStr;
}
def marriageConvert(param){
def marriageInt = param;
if(marriageInt == 0 || marriageInt == null){
marriageInt = 3;
}
return marriageInt.toInteger();
}
def checkupStateConvert(param){
def checkupState = param;
if(checkupState >= 2 && checkupState <= 5){
checkupState = 2;
}
if(checkupState == 6 || checkupState == 7){
checkupState = 3;
}
if(checkupState == 8){
checkupState = 4;
}
if(checkupState == 9){
checkupState == 6;
}
return checkupState;
}