|
@@ -1507,3 +1507,173 @@ func Jsyb3102(pd models.PatientDtos, fed models.FsiEncounterDtos, fdds []*models
|
1507
|
1507
|
return HttpRequest(params.RequestUrl, params.AccessKey, params.SecretKey, timestamp, string(bytesData)), string(bytesData)
|
1508
|
1508
|
|
1509
|
1509
|
}
|
|
1510
|
+
|
|
1511
|
+func Jsyb4101(struct4101 Struct4101, params models.PublicParams) (string, string) {
|
|
1512
|
+ timestamp := time.Now().Unix()
|
|
1513
|
+ inputMessage := SetJSInputMessage(timestamp, params.FixmedinsName, params.OpterName, params.FixmedinsCode, params.InsuplcAdmdvs, params.MdtrtareaAdmvs, params.Cainfo)
|
|
1514
|
+ // 生成输入报文
|
|
1515
|
+ input := make(map[string]interface{})
|
|
1516
|
+ inputData := make(map[string]interface{})
|
|
1517
|
+ inputMessage["infno"] = "4101A" // 交易编码
|
|
1518
|
+ year := time.Now().Format("2006")
|
|
1519
|
+ month := time.Now().Format("01")
|
|
1520
|
+ day := time.Now().Format("02")
|
|
1521
|
+
|
|
1522
|
+ inputData["mdtrt_id"] = struct4101.MdtrtId // 就诊 ID 必填(来自2201接口返回)
|
|
1523
|
+ inputData["setl_id"] = struct4101.SetlId // 结算 ID 必填
|
|
1524
|
+ inputData["psn_no"] = struct4101.PsnNo // 结算 ID 必填
|
|
1525
|
+
|
|
1526
|
+ inputData["fixmedins_name"] = params.FixmedinsName // 定点医药机构名称 必填
|
|
1527
|
+ inputData["fixmedins_code"] = params.FixmedinsCode // 定点医药机构编码 必填
|
|
1528
|
+ inputData["hi_setl_lv"] = "" // 医保结算等级
|
|
1529
|
+ inputData["hi_no"] = struct4101.PsnNo // 医保编号
|
|
1530
|
+ inputData["medcasno"] = struct4101.PsnNo // 病案号 必填
|
|
1531
|
+ inputData["dcla_time"] = year + "-" + month + "-" + day // 申报时间 必填
|
|
1532
|
+ inputData["psn_name"] = struct4101.PsnName // 人员姓名 必填
|
|
1533
|
+ inputData["gend"] = struct4101.Gend // 性别 必填
|
|
1534
|
+ inputData["brdy"] = struct4101.Brdy // 出生日期 必填
|
|
1535
|
+ inputData["age"] = struct4101.Age // 年龄 必填
|
|
1536
|
+ inputData["ntly"] = struct4101.Ntly // 国籍 必填
|
|
1537
|
+ inputData["nwb_age"] = "" // 年龄 必填
|
|
1538
|
+ inputData["naty"] = struct4101.Naty // 民族 必填
|
|
1539
|
+ inputData["patn_cert_type"] = struct4101.PatnCertType // 患者证件类别 必填
|
|
1540
|
+ inputData["certno"] = struct4101.Certno // 证件号码 必填
|
|
1541
|
+ inputData["prfs"] = struct4101.Prfs // 职业 必填
|
|
1542
|
+ inputData["curr_addr"] = "" // 现住址 必填
|
|
1543
|
+ inputData["emp_name"] = "" // 单位名称 必填
|
|
1544
|
+ inputData["emp_addr"] = "" // 单位地址 必填
|
|
1545
|
+ inputData["emp_tel"] = "" // 单位电话 必填
|
|
1546
|
+ inputData["poscode"] = "" // 邮编 必填
|
|
1547
|
+ inputData["coner_name"] = struct4101.ConerName // 联系人姓名 必填
|
|
1548
|
+ inputData["patn_rlts"] = struct4101.PatnRlts // 与患者关系 必填
|
|
1549
|
+ inputData["coner_addr"] = struct4101.ConerAddr // 联系人地址 必填
|
|
1550
|
+ inputData["coner_tel"] = struct4101.ConerTel // 联系人电话 必填
|
|
1551
|
+ inputData["hi_type"] = struct4101.HiType // 医保类型 必填
|
|
1552
|
+ inputData["insuplc"] = struct4101.Insuplc // 参保地 必填
|
|
1553
|
+ inputData["sp_psn_type"] = "" // 特殊人员类型 必填
|
|
1554
|
+ inputData["nwb_adm_type"] = "" // 新生儿入院类型 必填
|
|
1555
|
+ inputData["nwb_bir_wt"] = "" // 新生儿出生体重 必填
|
|
1556
|
+ inputData["nwb_adm_wt"] = "" // 新生儿入院体重 必填
|
|
1557
|
+ inputData["opsp_diag_caty"] = "" // 门诊慢特病诊断 必填
|
|
1558
|
+ inputData["opsp_mdtrt_date"] = "" // 门诊慢特病就诊日期 必填
|
|
1559
|
+ inputData["ipt_med_type"] = struct4101.IptMedType // 住院医疗类型 必填
|
|
1560
|
+ inputData["adm_way"] = "" // 入院途径 必填
|
|
1561
|
+ inputData["trt_type"] = "" // 治疗类别 必填
|
|
1562
|
+ inputData["adm_time"] = struct4101.AdmTime // 入院时间 必填
|
|
1563
|
+ inputData["adm_caty"] = struct4101.AdmCaty // 入院科别 必填
|
|
1564
|
+ inputData["refldept_dept"] = "" // 转科科别 必填
|
|
1565
|
+ inputData["dscg_time"] = struct4101.AdmEndTime // 出院时间 必填
|
|
1566
|
+ inputData["dscg_caty"] = struct4101.AdmCaty // 出院科别 必填
|
|
1567
|
+ inputData["act_ipt_days"] = "" // 实际住院天数 必填
|
|
1568
|
+ inputData["otp_wm_dise"] = "" // 门(急) 诊西医诊断 必填
|
|
1569
|
+ inputData["wm_dise_code"] = "" // 门(急) 诊中医诊断 必填
|
|
1570
|
+ inputData["otp_tcm_dise"] = "" // 西医诊断疾病代码 必填
|
|
1571
|
+ inputData["tcm_dise_code"] = "" // 中医诊断代码 必填
|
|
1572
|
+ inputData["oprn_oprt_code_cnt"] = "" // 手术操作代码计数 必填
|
|
1573
|
+ inputData["vent_used_dura"] = "" // 呼吸机使用时长 必填
|
|
1574
|
+ inputData["pwcry_bfadm_coma_dura"] = "" // 颅脑损伤患者入院前昏迷时长 必填
|
|
1575
|
+ inputData["pwcry_afadm_coma_dura"] = "" // 颅脑损伤患者入院后昏迷时长 必填
|
|
1576
|
+ inputData["bld_cat"] = "" // 输血品种 必填
|
|
1577
|
+ inputData["bld_amt"] = "" // 输血量 必填
|
|
1578
|
+ inputData["bld_unt"] = "" // 输血计量单位 必填
|
|
1579
|
+ inputData["spga_nurscare_days"] = "" // 特级护理天数 必填
|
|
1580
|
+ inputData["lv1_nurscare_days"] = "" // 一级护理天数 必填
|
|
1581
|
+ inputData["scd_nurscare_days"] = "" // 二级护理天数 必填
|
|
1582
|
+ inputData["lv3_nurscare_days"] = "" // 三级护理天数 必填
|
|
1583
|
+ inputData["acp_medins_name"] = "" // 拟接收机构名称 必填
|
|
1584
|
+ inputData["acp_optins_code"] = "" // 拟接收机构代码 必填
|
|
1585
|
+ inputData["bill_code"] = struct4101.BillCode // 票据代码 必填
|
|
1586
|
+ inputData["bill_no"] = struct4101.BillNo // 票据号码 必填
|
|
1587
|
+ inputData["biz_sn"] = struct4101.BizSn // 业务流水号 必填
|
|
1588
|
+ inputData["days_rinp_flag_31"] = "" // 出院 31 天内再住院计划标志 必填
|
|
1589
|
+ inputData["days_rinp_pup_31"] = "" // 出院 31 天内再住院目的 必填
|
|
1590
|
+ inputData["chfpdr_name"] = "" // 主诊医师姓名 必填
|
|
1591
|
+ inputData["chfpdr_code"] = "" // 主诊医师代码 必填
|
|
1592
|
+ inputData["setl_begn_date"] = struct4101.SetlBegnDate // 结算开始日期 必填
|
|
1593
|
+ inputData["setl_end_date"] = struct4101.SetlEndDate // 结算结束日期 必填
|
|
1594
|
+ inputData["psn_selfpay"] = struct4101.PsnSelfPay // 个人自付 必填
|
|
1595
|
+ inputData["psn_ownpay"] = struct4101.PsnOwnPay // 个人自费 必填
|
|
1596
|
+ inputData["acct_pay"] = struct4101.AcctPay // 个人账户支出 必填
|
|
1597
|
+ inputData["hi_paymtd"] = struct4101.HiPaymtd // 医保支付方式 必填
|
|
1598
|
+ inputData["hsorg"] = struct4101.Hsorg // 医保机构 必填
|
|
1599
|
+ inputData["hsorg_opter"] = struct4101.HsorgOpter // 医保机构经办人 必填
|
|
1600
|
+ inputData["medins_fill_dept"] = struct4101.MedinsFillDept // 医疗机构填报部门 必填
|
|
1601
|
+ inputData["medins_fill_psn"] = struct4101.MedinsFillPsn // 医疗机构填报人 必填
|
|
1602
|
+ inputData["psn_cashpay"] = struct4101.PsnCashpay // 医疗机构填报人 必填
|
|
1603
|
+
|
|
1604
|
+ payinfo := make([]map[string]interface{}, 0) // 基金支付信息
|
|
1605
|
+ for _, item := range struct4101.CustomStruct {
|
|
1606
|
+ payinfotemp := make(map[string]interface{})
|
|
1607
|
+ if item.FundPayType == "310100" || item.FundPayType == "310200" || item.FundPayType == "320100" || item.FundPayType == "330100" || item.FundPayType == "340100" || item.FundPayType == "350100" || item.FundPayType == "370100" || item.FundPayType == "390100" || item.FundPayType == "610100" || item.FundPayType == "640100" || item.FundPayType == "620100" {
|
|
1608
|
+ payinfotemp["fund_pay_type"] = item.FundPayType // 基金支付类型 必填
|
|
1609
|
+ payinfotemp["fund_payamt"] = item.FundPayamt // 基金支付金额
|
|
1610
|
+ payinfo = append(payinfo, payinfotemp)
|
|
1611
|
+ }
|
|
1612
|
+ }
|
|
1613
|
+ opspdiseinfo := make([]map[string]interface{}, 0) // 门诊慢特病诊断信息
|
|
1614
|
+
|
|
1615
|
+ opspdiseinfotemp := make(map[string]interface{})
|
|
1616
|
+ opspdiseinfotemp["diag_name"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagName // 诊断名称 必填
|
|
1617
|
+ opspdiseinfotemp["diag_code"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagCode // 诊断代码 必填
|
|
1618
|
+ opspdiseinfotemp["oprn_oprt_name"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagName // 手术操作名称 必填
|
|
1619
|
+ opspdiseinfotemp["oprn_oprt_code"] = struct4101.OpspdiseinfoStruct[len(struct4101.OpspdiseinfoStruct)-1].DiagCode // 手术操作代码 必填
|
|
1620
|
+ opspdiseinfo = append(opspdiseinfo, opspdiseinfotemp)
|
|
1621
|
+
|
|
1622
|
+ diseinfo := make([]map[string]interface{}, 0) // 住院诊断信息
|
|
1623
|
+ for _, item := range struct4101.Diseinfo {
|
|
1624
|
+ diseinfotemp := make(map[string]interface{})
|
|
1625
|
+ diseinfotemp["maindiag_flag"] = item.MaindiagFlag // 手术操作代码 必填
|
|
1626
|
+ diseinfotemp["diag_type"] = item.DiagType // 诊断类别 必填
|
|
1627
|
+ diseinfotemp["diag_code"] = item.DiagCode // 诊断代码 必填
|
|
1628
|
+ diseinfotemp["diag_name"] = item.DiagName // 诊断名称 必填
|
|
1629
|
+ diseinfotemp["adm_cond_type"] = "3" // 入院病情类型 必填
|
|
1630
|
+ diseinfo = append(diseinfo, diseinfotemp)
|
|
1631
|
+ }
|
|
1632
|
+
|
|
1633
|
+ iteminfo := make([]map[string]interface{}, 0)
|
|
1634
|
+ for _, item := range struct4101.IteminfoStruct {
|
|
1635
|
+ iteminfotemp := make(map[string]interface{})
|
|
1636
|
+ iteminfotemp["med_chrgitm"] = item.MedChrgitm // 医疗收费项目 必填
|
|
1637
|
+ iteminfotemp["amt"] = item.Amt // 金额 必填
|
|
1638
|
+ iteminfotemp["claa_sumfee"] = item.ClaaSumfee // 甲类费用合计 必填
|
|
1639
|
+ iteminfotemp["clab_amt"] = item.ClabAmt // 乙类金额 必填
|
|
1640
|
+ iteminfotemp["fulamt_ownpay_amt"] = item.FulamtOwnpayAmt // 全自费金额 必填
|
|
1641
|
+ iteminfotemp["oth_amt"] = item.OthAmt // 其他金额 必填
|
|
1642
|
+ iteminfo = append(iteminfo, iteminfotemp)
|
|
1643
|
+ }
|
|
1644
|
+
|
|
1645
|
+ oprninfo := make([]map[string]interface{}, 0) // 手术操作信息
|
|
1646
|
+ oprninfotemp := make(map[string]interface{})
|
|
1647
|
+ oprninfotemp["oprn_oprt_type"] = "" // 手术操作类别 必填
|
|
1648
|
+ oprninfotemp["oprn_oprt_name"] = "" // 手术操作名称 必填
|
|
1649
|
+ oprninfotemp["oprn_oprt_code"] = "" // 手术操作代码 必填
|
|
1650
|
+ oprninfotemp["oprn_oprt_date"] = "" // 手术操作日期 必填
|
|
1651
|
+ oprninfotemp["anst_way"] = "" // 麻醉方式 必填
|
|
1652
|
+ oprninfotemp["oper_dr_name"] = "" // 术者医师姓名 必填
|
|
1653
|
+ oprninfotemp["oper_dr_code"] = "" // 术者医师代码 必填
|
|
1654
|
+ oprninfotemp["anst_dr_name"] = "" // 麻醉医师姓名 必填
|
|
1655
|
+ oprninfotemp["anst_dr_code"] = "" // 麻醉医师代码 必填
|
|
1656
|
+ oprninfo = append(oprninfo, oprninfotemp)
|
|
1657
|
+
|
|
1658
|
+ icuinfo := make([]map[string]interface{}, 0) // 重症监护信息
|
|
1659
|
+ icuinfotemp := make(map[string]interface{})
|
|
1660
|
+ icuinfotemp["scs_cutd_ward_type"] = "" // 重症监护病房类型 必填
|
|
1661
|
+ icuinfotemp["scs_cutd_inpool_time"] = "" // 重症监护进入时间 必填
|
|
1662
|
+ icuinfotemp["scs_cutd_exit_time"] = "" // 重症监护退出时间 必填
|
|
1663
|
+ icuinfotemp["scs_cutd_sum_dura"] = "" // 重症监护合计时长 必填
|
|
1664
|
+ icuinfo = append(icuinfo, icuinfotemp)
|
|
1665
|
+
|
|
1666
|
+ input["setlinfo"] = inputData
|
|
1667
|
+ input["payinfo"] = payinfo
|
|
1668
|
+ input["opspdiseinfo"] = opspdiseinfo
|
|
1669
|
+ input["diseinfo"] = diseinfo
|
|
1670
|
+ input["iteminfo"] = iteminfo
|
|
1671
|
+
|
|
1672
|
+ inputMessage["input"] = input //交易输入
|
|
1673
|
+ bytesData, _ := json.Marshal(inputMessage)
|
|
1674
|
+ fmt.Println(string(bytesData))
|
|
1675
|
+
|
|
1676
|
+ params.RequestUrl = params.RequestUrl + "4101A"
|
|
1677
|
+ return HttpRequest(params.RequestUrl, params.AccessKey, params.SecretKey, timestamp, string(bytesData)), string(bytesData)
|
|
1678
|
+
|
|
1679
|
+}
|