陈少旭 6 dagar sedan
förälder
incheckning
3d12e49373
2 ändrade filer med 57 tillägg och 37 borttagningar
  1. 9 1
      controllers/sg/his_api_controller.go
  2. 48 36
      service/hn_service.go

+ 9 - 1
controllers/sg/his_api_controller.go Visa fil

@@ -5867,6 +5867,11 @@ func SaleStock(org_id int64, pre models.HisPrescription, drug *models.DrugFlow,
5867 5867
 		struct3505.PharName = "廖志平"
5868 5868
 		struct3505.PharPracCertNo = "0136425"
5869 5869
 	}
5870
+
5871
+	if org_id == 10387 {
5872
+		struct3505.PharName = "易圣"
5873
+		struct3505.PharPracCertNo = "D430726002209"
5874
+	}
5870 5875
 	order := service.GetHisOrderByNumber(pre.BatchNumber)
5871 5876
 	struct3505.SetlId = order.SetlId
5872 5877
 	struct3505.MdtrtSn = order.MdtrtId
@@ -6005,6 +6010,9 @@ func SaleStock(org_id int64, pre models.HisPrescription, drug *models.DrugFlow,
6005 6010
 		result, _ := json.Marshal(respJSON)
6006 6011
 		return string(result), ""
6007 6012
 
6013
+	} else if miConfig.MdtrtareaAdmvs == "430800" {
6014
+		result1, result2 := service.Hnyb3505(struct3505)
6015
+		return result1, result2
6008 6016
 	} else {
6009 6017
 		data := make(map[string]interface{})
6010 6018
 		data["struct_3505s"] = struct3505
@@ -32346,7 +32354,7 @@ func (c *HisApiController) GetUploadInfo() {
32346 32354
 				}
32347 32355
 			}
32348 32356
 
32349
-			if res.Infcode == -1 {
32357
+			if res.Infcode != 0 {
32350 32358
 				errlog := &models.HisOrderError{
32351 32359
 					UserOrgId:  adminUser.CurrentOrgId,
32352 32360
 					Ctime:      time.Now().Unix(),

+ 48 - 36
service/hn_service.go Visa fil

@@ -6,6 +6,7 @@ import (
6 6
 	"fmt"
7 7
 	"gdyb/models"
8 8
 	"gdyb/utils/csbhttp"
9
+	"strings"
9 10
 
10 11
 	//"net/http"
11 12
 	"strconv"
@@ -65,7 +66,7 @@ func Hnyb1101(certNo string, org_name string, doctor string, fixmedins_code stri
65 66
 	return HNHttpRequest(request_url, access_key, secret_key, timestamp2, string(bytesData), "1101"), inputLog
66 67
 }
67 68
 
68
-//人员基本信息版本2
69
+// 人员基本信息版本2
69 70
 func Hnybyb1101A(certNo string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, id_card_type int64, card_sn string, certificates string, request_url string, access_key string, pBusiCardInfo string, id_card_no string, cainfo string) (string, string) {
70 71
 	timestamp := time.Now().Unix()
71 72
 	//生成输入报文
@@ -195,10 +196,10 @@ func Hnyb2201(psnNo string, insutype string, certNo string, org_name string, ope
195 196
 	inputMessage := SetHnInputMessage(timestamp, org_name, opera, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, cainfo)
196 197
 	input := make(map[string]interface{})
197 198
 	inputData := make(map[string]interface{})
198
-	inputMessage["infno"] = "2201"        // 交易编码
199
-	inputData["psn_no"] = psnNo           // 人员编号 (来自1101接口返回)
200
-	inputData["insutype"] = insutype      // 险种类型(来自1101接口返回)
201
-	inputData["begntime"] = begin // 开始时间
199
+	inputMessage["infno"] = "2201"   // 交易编码
200
+	inputData["psn_no"] = psnNo      // 人员编号 (来自1101接口返回)
201
+	inputData["insutype"] = insutype // 险种类型(来自1101接口返回)
202
+	inputData["begntime"] = begin    // 开始时间
202 203
 
203 204
 	if id_card_type == 1 {
204 205
 		inputData["mdtrt_cert_type"] = "03"        // 就诊凭证类型
@@ -342,7 +343,7 @@ func Hnyb2203(psnNo string, mdtrtId string, doctor string, department string, or
342 343
 }
343 344
 
344 345
 // 门诊就诊信息上传
345
-func Hnyb2203A(psnNo string, mdtrtId string, doctor string, department string, org_name string, med_type string, doctor_id string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_code string, sick_name string, dept string, config []*models.HisXtDiagnoseConfig, request_url string, access_key string, cainfo string,begin_time string) (string, string) {
346
+func Hnyb2203A(psnNo string, mdtrtId string, doctor string, department string, org_name string, med_type string, doctor_id string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, sick_code string, sick_name string, dept string, config []*models.HisXtDiagnoseConfig, request_url string, access_key string, cainfo string, begin_time string) (string, string) {
346 347
 	// 生成签名
347 348
 	timestamp := time.Now().Unix()
348 349
 	tempTime := time.Unix(timestamp, 0)
@@ -358,10 +359,10 @@ func Hnyb2203A(psnNo string, mdtrtId string, doctor string, department string, o
358 359
 		med_type = "11"
359 360
 	}
360 361
 
361
-	inputMessage["infno"] = "2203"        // 交易编码
362
-	inputData["mdtrt_id"] = mdtrtId       // 就诊 ID(来自2201接口返回)
363
-	inputData["psn_no"] = psnNo           // 人员编号 (来自1101接口返回)
364
-	inputData["med_type"] = med_type      // 医疗类别 16门诊特殊病
362
+	inputMessage["infno"] = "2203"     // 交易编码
363
+	inputData["mdtrt_id"] = mdtrtId    // 就诊 ID(来自2201接口返回)
364
+	inputData["psn_no"] = psnNo        // 人员编号 (来自1101接口返回)
365
+	inputData["med_type"] = med_type   // 医疗类别 16门诊特殊病
365 366
 	inputData["begntime"] = begin_time // 开始时间
366 367
 
367 368
 	inputData["main_cond_dscr"] = ""    // 主要病情描述
@@ -405,7 +406,7 @@ func Hnyb2203A(psnNo string, mdtrtId string, doctor string, department string, o
405 406
 	return HNHttpRequest(request_url, access_key, secret_key, timestamp2, string(bytesData), "2203"), requestLog
406 407
 }
407 408
 
408
-//  门诊费用明细信息上传
409
+// 门诊费用明细信息上传
409 410
 func Hnyb2204(psnNo string, mdtrtId string, hisPrescription []*models.HisPrescription, chrg_bchno string, org_name string, doctor string, dept string, fixmedins_code string, dept_code string, doctor_id string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, balance_accounts_type string, diag_code string, request_url string, access_key string, new_doctor_name string, time_stamp_2203 string, cainfo string) (string, string) {
410 411
 	// 生成签名
411 412
 	//timestamp := time.Now().Unix()
@@ -413,7 +414,6 @@ func Hnyb2204(psnNo string, mdtrtId string, hisPrescription []*models.HisPrescri
413 414
 
414 415
 	timestamp2 := time.Now().Unix()
415 416
 
416
-
417 417
 	var customs []*Custom
418 418
 	for _, item := range hisPrescription {
419 419
 		//tm := time.Unix(item.PreTime, 0)
@@ -537,7 +537,7 @@ func Hnyb2204(psnNo string, mdtrtId string, hisPrescription []*models.HisPrescri
537 537
 		feedetailInfo["rx_circ_flag"] = "0"                          // 外购处方标志
538 538
 		feedetailInfo["fee_ocur_time"] = item.FeeOcurTime            // 费用发生时间
539 539
 		feedetailInfo["med_list_codg"] = item.MedListCodg            // 医疗目录编码
540
-		feedetailInfo["medins_list_codg"] =  item.MedListCodg          // 医药机构目录编码
540
+		feedetailInfo["medins_list_codg"] = item.MedListCodg         // 医药机构目录编码
541 541
 		feedetailInfo["det_item_fee_sumamt"] = item.DetItemFeeSumamt // 明细项目费用总额
542 542
 		feedetailInfo["cnt"] = item.Cut                              // 数量
543 543
 		feedetailInfo["pric"] = item.Price                           // 单价
@@ -602,7 +602,7 @@ func Hnyb2204(psnNo string, mdtrtId string, hisPrescription []*models.HisPrescri
602 602
 	return HNHttpRequest(request_url, access_key, secret_key, timestamp5, string(bytesData), "2204"), requestLog
603 603
 }
604 604
 
605
-//  门诊费用明细信息撤销
605
+// 门诊费用明细信息撤销
606 606
 func Hnyb2205(psnNo string, mdtrtId string, chrgBchno string, org_name string, doctor string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, fixmedins_code string, request_url string, access_key string, cainfo string) (string, string) {
607 607
 
608 608
 	timestamp := time.Now().Unix()
@@ -637,7 +637,7 @@ func Hnyb2205(psnNo string, mdtrtId string, chrgBchno string, org_name string, d
637 637
 	return HNHttpRequest(request_url, access_key, secret_key, timestamp2, string(bytesData), "2205"), requestLog
638 638
 }
639 639
 
640
-//  门诊预结算
640
+// 门诊预结算
641 641
 func Hnyb2206(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, request_url string, access_key string, verify_number string, cainfo string, acct_used_flag string) (string, string) {
642 642
 
643 643
 	// 生成签名
@@ -707,7 +707,7 @@ func Hnyb2206(psnNo string, mdtrtId string, chrgBchno string, certNo string, ins
707 707
 
708 708
 }
709 709
 
710
-//  门诊预结算
710
+// 门诊预结算
711 711
 func Hnyb2206Two(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, request_url string, access_key string, verify_number string, cainfo string, card_sn string, acct_used_flag string) (string, string) {
712 712
 
713 713
 	// 生成签名
@@ -778,7 +778,7 @@ func Hnyb2206Two(psnNo string, mdtrtId string, chrgBchno string, certNo string,
778 778
 
779 779
 }
780 780
 
781
-//  门诊结算
781
+// 门诊结算
782 782
 func Hnyb2207(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, acct_used_flag string, request_url string, access_key string, verify_number string, cainfo string) (string, string) {
783 783
 	// 生成签名
784 784
 	timestamp := time.Now().Unix()
@@ -845,7 +845,7 @@ func Hnyb2207(psnNo string, mdtrtId string, chrgBchno string, certNo string, ins
845 845
 
846 846
 }
847 847
 
848
-//  门诊结算
848
+// 门诊结算
849 849
 func Hnyb2207Two(psnNo string, mdtrtId string, chrgBchno string, certNo string, insutype string, total string, org_name string, doctor string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, secret_key string, med_type string, id_card_type int64, fulamt_ownpay_amt float64, overlmt_selfpay float64, preselfpay_amt float64, inscp_scp_amt float64, certificates int64, acct_used_flag string, request_url string, access_key string, verify_number string, cainfo string, card_sn string) (string, string) {
850 850
 	// 生成签名
851 851
 	timestamp := time.Now().Unix()
@@ -978,7 +978,7 @@ func Hnyb2207A(psnNo string, mdtrtId string, chrgBchno string, certNo string, in
978 978
 
979 979
 }
980 980
 
981
-//  门诊结算撤销
981
+// 门诊结算撤销
982 982
 func Hnyb2208(psnNo string, mdtrtId string, setlId string, org_name string, doctor string, secret_key string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, request_url string, access_key string, cainfo string) (string, string) {
983 983
 	timestamp := time.Now().Unix()
984 984
 	// 生成输入报文
@@ -1033,7 +1033,7 @@ func Hnyb5203(baseParams models.BaseParams, businessParams models.BusinessParams
1033 1033
 	return HNHttpRequest(baseParams.RequestUrl, baseParams.AccessKey, baseParams.SecretKey, timestamp2, string(bytesData), "5203"), string(bytesData)
1034 1034
 }
1035 1035
 
1036
-//CBS总线
1036
+// CBS总线
1037 1037
 func HNHttpRequest(url string, ak string, sk string, timestamp int64, json string, infno string) string {
1038 1038
 	fmt.Println(url)
1039 1039
 	//step 1. 设置请求参数
@@ -1638,7 +1638,7 @@ func Hnyb4101(struct4101 Struct4101, params models.PublicParams) (string, string
1638 1638
 	inputData["opsp_mdtrt_date"] = ""                         // 门诊慢特病就诊日期  必填
1639 1639
 	inputData["ipt_med_type"] = struct4101.IptMedType         // 住院医疗类型  必填
1640 1640
 	inputData["adm_way"] = ""                                 // 入院途径  必填
1641
-	inputData["trt_type"] = "10"                                // 治疗类别  必填
1641
+	inputData["trt_type"] = "10"                              // 治疗类别  必填
1642 1642
 	inputData["adm_time"] = struct4101.AdmTime                // 入院时间  必填
1643 1643
 	inputData["adm_caty"] = struct4101.AdmCaty                // 入院科别  必填
1644 1644
 	inputData["refldept_dept"] = ""                           // 转科科别  必填
@@ -1916,14 +1916,14 @@ func Hnyb3504(struct3504 models.Struct3504) (string, string) {
1916 1916
 func Hnyb3505(struct3505 models.Struct3505) (string, string) {
1917 1917
 	timestamp := time.Now().Unix()
1918 1918
 	// 生成输入报文
1919
-	inputMessage := SetHnInputMessage(timestamp, struct3505.OrgName, struct3505.Opter, struct3505.FixmedinsCode, struct3505.InsuplcAdmdvs, struct3505.MdtrtareaAdmvs, struct3505.Cainfo)
1919
+	inputMessage := SetHnInputMessage(timestamp, struct3505.OrgName, struct3505.Opter, struct3505.Code, struct3505.InsuplcAdmdvs, struct3505.MdtrtareaAdmvs, struct3505.Cainfo)
1920 1920
 	input := make(map[string]interface{})
1921 1921
 	inputData := make(map[string]interface{})
1922
-	inputMessage["infno"] = "3505"                              // 交易编码
1923
-	inputData["med_list_codg"] = struct3505.MedListCodg         // 定点医药机构目录编号
1924
-	inputData["fixmedins_hilist_id"] = struct3505.FixmedinsCode // 定点医药机构目录编号
1925
-	inputData["fixmedins_hilist_name"] = struct3505.OrgName     // 定点医药机构目录名称
1926
-	inputData["fixmedins_bchno"] = struct3505.FixmedinsCode     // 人员编号 (来自1101接口返回)
1922
+	inputMessage["infno"] = "3505"                                      // 交易编码
1923
+	inputData["med_list_codg"] = struct3505.MedListCodg                 // 定点医药机构目录编号
1924
+	inputData["fixmedins_hilist_id"] = struct3505.FixmedinsHilistId     // 定点医药机构目录编号
1925
+	inputData["fixmedins_hilist_name"] = struct3505.FixmedinsHilistName // 定点医药机构目录名称
1926
+	inputData["fixmedins_bchno"] = struct3505.FixmedinsCode             // 人员编号 (来自1101接口返回)
1927 1927
 
1928 1928
 	inputData["prsc_dr_cert_type"] = struct3505.PrscDrCertType // 人员编号 (来自1101接口返回)
1929 1929
 	inputData["prsc_dr_certno"] = struct3505.PrscDrCertno      // 人员编号 (来自1101接口返回)
@@ -1951,17 +1951,30 @@ func Hnyb3505(struct3505 models.Struct3505) (string, string) {
1951 1951
 	inputData["rxno"] = struct3505.Rxno                   // 人员编号 (来自1101接口返回)
1952 1952
 	inputData["rx_circ_flag"] = struct3505.RxCircFlag     // 人员编号 (来自1101接口返回)
1953 1953
 
1954
-	inputData["rtal_docno"] = struct3505.RtalDocno // 人员编号 (来自1101接口返回)
1955
-	inputData["stoout_no"] = struct3505.StooutNo   // 人员编号 (来自1101接口返回)
1954
+	inputData["rtal_docno"] = struct3505.RtalDocno          // 人员编号 (来自1101接口返回)
1955
+	inputData["stoout_no"] = struct3505.StooutNo            // 人员编号 (来自1101接口返回)
1956
+	inputData["MDTRT_SETL_TYPE"] = struct3505.MdtrtSetlType // 人员编号 (来自1101接口返回)
1956 1957
 
1957 1958
 	inputData["bchno"] = struct3505.Bchno                          // 人员编号 (来自1101接口返回)
1958
-	inputData["drug_trac_codg"] = struct3505.DrugTracCodg          // 人员编号 (来自1101接口返回)
1959
+	inputData["drug_trac_codg"] = "--"                             // 人员编号 (来自1101接口返回)
1959 1960
 	inputData["drug_prod_barc"] = struct3505.DrugProdBarc          // 人员编号 (来自1101接口返回)
1960 1961
 	inputData["shelf_posi"] = struct3505.ShelfPosi                 // 人员编号 (来自1101接口返回)
1961 1962
 	inputData["sel_retn_cnt"] = struct3505.SelRetnCnt              // 人员编号 (来自1101接口返回)
1962 1963
 	inputData["sel_retn_time"] = struct3505.SelRetnTime            // 人员编号 (来自1101接口返回)
1963 1964
 	inputData["sel_retn_opter_name"] = struct3505.SelRetnOpterName // 人员编号 (来自1101接口返回)
1964 1965
 	inputData["memo"] = struct3505.Memo                            // 人员编号 (来自1101接口返回)
1966
+	feedetail := make([]map[string]interface{}, 0)
1967
+
1968
+	codes := strings.Split(struct3505.DrugTracCodg, ",")
1969
+	for _, item := range codes {
1970
+		if len(item) > 0 {
1971
+
1972
+			druginputData := make(map[string]interface{})
1973
+			druginputData["drug_trac_codg"] = removeNonDigits(item)
1974
+			feedetail = append(feedetail, druginputData)
1975
+		}
1976
+	}
1977
+	inputData["drugtracinfo"] = feedetail
1965 1978
 	input["selinfo"] = inputData
1966 1979
 	inputMessage["input"] = input //交易输入
1967 1980
 
@@ -1975,6 +1988,7 @@ func Hnyb3505(struct3505 models.Struct3505) (string, string) {
1975 1988
 	return HNHttpRequest(struct3505.RequestUrl, struct3505.AccessKey, struct3505.SecretKey, timestamp, string(bytesData), "3505"), string(bytesData)
1976 1989
 
1977 1990
 }
1991
+
1978 1992
 func Hnyb3506(struct3506 models.Struct3506) (string, string) {
1979 1993
 	timestamp := time.Now().Unix()
1980 1994
 	// 生成输入报文
@@ -2042,9 +2056,7 @@ func Hnyb3507(struct3507 models.Struct3507) (string, string) {
2042 2056
 
2043 2057
 }
2044 2058
 
2045
-
2046
-
2047
-func Hnyb3301(org_name string,opera string,fixmedins_code string,insuplc_admdvs string,mdtrtarea_admvs string,cainfo string, name string, codg string, list_type string,start_time string, ent_time string, request_url string,access_key string,secret_key string) (string,string) {
2059
+func Hnyb3301(org_name string, opera string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, cainfo string, name string, codg string, list_type string, start_time string, ent_time string, request_url string, access_key string, secret_key string) (string, string) {
2048 2060
 	// 生成签名
2049 2061
 	//nonce := GetRandomString(32)
2050 2062
 	// 生成签名
@@ -2082,7 +2094,7 @@ func Hnyb3301(org_name string,opera string,fixmedins_code string,insuplc_admdvs
2082 2094
 	fmt.Println(string(bytesData))
2083 2095
 	if err != nil {
2084 2096
 		fmt.Println(err.Error())
2085
-		return err.Error(),""
2097
+		return err.Error(), ""
2086 2098
 	}
2087 2099
 
2088 2100
 	request_url = request_url + "3301"
@@ -2090,7 +2102,7 @@ func Hnyb3301(org_name string,opera string,fixmedins_code string,insuplc_admdvs
2090 2102
 	return HNHttpRequest(request_url, access_key, secret_key, timestamp2, string(bytesData), "3301"), string(bytesData)
2091 2103
 
2092 2104
 }
2093
-func Hnyb3302(org_name string,opera string,fixmedins_code string,insuplc_admdvs string,mdtrtarea_admvs string,cainfo string, name string, codg string, list_type string,start_time string, ent_time string, request_url string,access_key string,secret_key string) (string,string) {
2105
+func Hnyb3302(org_name string, opera string, fixmedins_code string, insuplc_admdvs string, mdtrtarea_admvs string, cainfo string, name string, codg string, list_type string, start_time string, ent_time string, request_url string, access_key string, secret_key string) (string, string) {
2094 2106
 	// 生成签名
2095 2107
 	//nonce := GetRandomString(32)
2096 2108
 	// 生成签名
@@ -2116,7 +2128,7 @@ func Hnyb3302(org_name string,opera string,fixmedins_code string,insuplc_admdvs
2116 2128
 	fmt.Println(string(bytesData))
2117 2129
 	if err != nil {
2118 2130
 		fmt.Println(err.Error())
2119
-		return err.Error(),""
2131
+		return err.Error(), ""
2120 2132
 	}
2121 2133
 
2122 2134
 	request_url = request_url + "3302"