package com.lantone.qc.trans.shaoyf;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.lantone.qc.dbanaly.util.ModuleMappingUtil;
import com.lantone.qc.pub.Content;
import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
import com.lantone.qc.pub.model.vo.MedrecVo;
import com.lantone.qc.pub.util.FastJsonUtils;
import com.lantone.qc.pub.util.StringUtil;
import com.lantone.qc.trans.ModelDocTrans;
import com.lantone.qc.trans.comsis.OrdinaryAssistant;
import org.apache.commons.lang3.StringUtils;

import java.util.List;
import java.util.Map;

/**
 * @Description: 病案首页文档生成
 * @author: 胡敬
 * @time: 2020/3/16 17:47
 */
public class ShaoyfFirstPageRecordDocTrans extends ModelDocTrans {

    @Override
    public FirstPageRecordDoc extract(MedrecVo medrecVo) {

        // 与长兴一直，直接传json
        Map<String, String> content = (Map) medrecVo.getContent();
        FirstPageRecordDoc firstPageRecordDoc = new FirstPageRecordDoc();
        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(content, keyContrasts);
        firstPageRecordDoc.setStructureMap(structureMap);
        structureMap.put("药物过敏",structureMap.get("过敏药物"));
        //如果有入院时间，优先使用
        if (StringUtils.isEmpty(structureMap.get("入院时间")) && StringUtils.isNotEmpty(structureMap.get("病人入院日期"))) {
            structureMap.put("入院时间", structureMap.get("病人入院日期"));
        }

        Map<String, Object> structureExtMap = Maps.newHashMap();
        structureExtMap.putAll(content);
        structureExtMap.put(Content.diagnose_cts, FastJsonUtils.getJsonToBean(content.get(Content.diagnose_cts), Object.class));
        /* structureExtMap.put(Content.outpatientEmergencyDiag, FastJsonUtils.getJsonToBean(content.get(Content.outpatientEmergencyDiag), Object.class));*/
        structureExtMap.put(Content.operative_information, FastJsonUtils.getJsonToBean(content.get(Content.operative_information), Object.class));
        structureExtMap.put(Content.dischargeDiag, FastJsonUtils.getJsonToBean(content.get(Content.dischargeDiag), Object.class));
        //        structureExtMap.put(Content.pathologyDiagnose, FastJsonUtils.getJsonToBean(content.get(Content.pathologyDiagnose), Object.class));
        firstPageRecordDoc.setStructureExtMap(structureExtMap);

        Map<String, String> setMap = Maps.newHashMap();
        setMap.put("mode_id=6", "");
        String modeId = ModuleMappingUtil.getXmlDataTypeModuleId(setMap);
        if (StringUtil.isNotBlank(modeId)) {
            medrecVo.getContent().put("mode_id", modeId);
        }
        firstPageRecordDoc.setPageData(medrecVo.getContent());

        return firstPageRecordDoc;
        //        String content = ((List<String>) medrecVo.getContent().get("content")).get(0);
        //
        //
        //        FirstPageRecordDoc firstPageRecordDoc = new FirstPageRecordDoc();
        //        firstPageRecordDoc.setStructureMap(structureMap);
        //
        //        return firstPageRecordDoc;
    }

    private List<String> keyContrasts = Lists.newArrayList(
            "住院期间身体约束=",
            "出院日期=",
            "诊断符合情况=",
            "手术费=",
            "入院途径=",
            "颅脑损伤患者昏迷时间(入院前)=",
            "住院费用=",
            "红细胞=",
            "输血情况=",
            "入院科室=",
            "临床诊断项目费=",
            "血浆=",
            "主治医生=",
            "Rh血型=",
            "护理费=",
            "住院自付金额=",
            "手术治疗费=",
            "细胞因子类制品费=",
            "综合医疗其他服务费=",
            "出院科室=",
            "户口地址邮政编码=",
            "凝血因子类制品费=",
            "家庭电话=",
            "其他费=",
            "HCV-Ab=",
            "病案质量=",
            "治疗用一次性医用材料费=",
            "质控护士=",
            "其他=",
            "离院方式=",
            "球蛋白类制品费=",
            "ICD9=",
            "ICD10=",
            "确诊日期=",
            "联系人姓名=",
            "中医治疗费=",
            "本人姓名=",
            "新生儿年龄=",
            "住院期间是否发生跌倒或坠床=",
            "出生地址=",
            "质控日期=",
            "病历日期=",
            "实验室诊断费=",
            "住院医生=",
            "现住址=",
            "院内感染诊断=",
            "非手术治疗项目费=",
            "手术时数=",
            "住院期间有无告病危=",
            "职业=",
            "病人病案身份=职业",
            "病人病案性别=性别",
            "病人病案血型=血型",
            "感染部位=",
            "手术日期2=",
            "质控医师=",
            "手术医师=",
            "医院感染=",
            "医生=",
            "出院31天内再入院计划=",
            "新生儿入院体重=",
            "治疗结果=",
            "影像学诊断费=",
            "目的=",
            "其它疾病治疗结果=",
            "血型=",
            "并发症=",
            "临床路径管理=",
            //            "临床路径管理 1.完成 2.变异 3.退出 4.未入=临床路径管理",
            //            "有无药物过敏=药物过敏",
            //            "单病种管理 1.是 2.否=单病种管理",
            "现住址电话=现住址电话",
            "拟接收医疗机构名称=",
            "科主任=",
            "中成药费=",
            "助手II=",
            "门(急)诊诊断=",
            "非计划再次手术=",
            "是否住院期间发生压疮=",
            "入住ICU情况=",
            "进修医生=",
            "损伤中毒的外部因素=",
            "居住地邮政编码=",
            "麻醉方式=",
            "病历号=",
            "病房(出)=",
            "入院日期=",
            "户口地址=",
            "年龄单位=",
            "病房(入)=",
            "病案完成=",
            "西药费=",
            "工作场所=",
            "尸检=",
            "其它过敏=",
            "审核人=",
            "病理诊断=",
            //            "放射与病理符合=放射与病理",
            "医院=",
            "就诊类别=",
            "籍贯=",
            //            "门诊与出院符合=门诊与出院",
            "麻醉医师=",
            "实习医生=",
            "HIV-Ab=",
            "转科科室=",
            "联系电话=",
            "病理诊断费=",
            "事件基本信息=",
            "血小板=",
            "年龄=",
            "并发症情况=",
            "一般医疗服务费=",
            "联系人地址=",
            "过敏史=",
            "责任护士=",
            "主任医生=",
            "床号=",
            "抗菌药物费用=",
            "病人基本信息=",
            "生日=",
            "切口等级=",
            "HBsAg=",
            "手术记录=",
            "单病种管理=",
            //            "临床与病理符合=临床与病理",
            "麻醉费=",
            "康复费=",
            "研究生=",
            "临床科室=",
            "出生体重1=",
            "审核=",
            "检查用一次性医用材料费=",
            "医疗付费方式=",
            "其它诊断=",
            "是否进入临床路径=",
            //            "入院与出院符合=入院与出院",
            "诊断治疗信息=",
            "抢救次数=",
            "入院诊断=",
            "户籍住址=",
            "病理诊断的icd10=",
            "助手=",
            "手术操作代码=",
            "本人电话=",
            "医疗组=",
            "手术用一次性医用材料费=",
            "白蛋白类制品费=",
            "健康卡号=",
            "全血=",
            "民族=",
            "一般治疗操作费=",
            "术前诊断与术后诊断=",
            "其它诊断ICD10=",
            "病人类别=",
            "门急诊ICD10=",
            "中草药费=",
            "颅脑损伤患者昏迷时间(入院后)=",
            "关系=",
            "切口愈合等级=",
            "居民身份证=",
            "是否发生压疮=",
            "编码员=",
            "血费=",
            "手术级别=",
            "成功次数=",
            "就诊次数=",
            "婚姻=",
            "审核日期=",
            "条码病历号=",
            "主要诊断=",
            "住院次数=",
            "性别=",
            "损伤诊断icd10=",
            "入院病情2=",
            "临床物理治疗费=",
            "是否完成临床路径=",
            "手术名称=",
            "国籍=",
            "病历状态=",
            "实际住院天数=",
            "本人工作单位电话=",
            "工作单位邮政编码=",
            "病理号="
            //            "病人出生日期=出生日期"
            //            "门诊与出院符合 0.未做 1.符合 2.不符合 3.不确定=门诊与出院",
            //            "入院与出院符合 0.未做 1.符合 2.不符合 3.不确定=入院与出院",
            //            "术前与术后符合 0.未做 1.符合 2.不符合 3.不确定=术前与术后",
            //            "临床与病理符合 0.未做 1.符合 2.不符合 3.不确定=临床与病理",
            //            "放射与病理符合0.未做 1.符合 2.不符合 3.不确定=放射与病理"
    );

}