Browse Source

拉取代码

XMLWAN 3 years ago
parent
commit
084547aa53
9 changed files with 2363 additions and 1042 deletions
  1. 1665 996
      controllers/sz/sz_his_api_controller.go
  2. BIN
      gdyb
  3. 2 0
      main.go
  4. 1 0
      models/dialysis.go
  5. 56 0
      models/drug.go
  6. 43 0
      models/his_models.go
  7. 55 0
      models/sz_his_models.go
  8. 32 0
      service/his_service.go
  9. 509 46
      service/sz_his_service.go

File diff suppressed because it is too large
+ 1665 - 996
controllers/sz/sz_his_api_controller.go


BIN
gdyb View File


+ 2 - 0
main.go View File

@@ -8,8 +8,10 @@ import (
8 8
 
9 9
 func init() {
10 10
 	service.ConnectDB()
11
+
11 12
 }
12 13
 
13 14
 func main() {
14 15
 	beego.Run()
16
+
15 17
 }

+ 1 - 0
models/dialysis.go View File

@@ -890,6 +890,7 @@ type SgjUserAdminRole struct {
890 890
 	OrgName       string `gorm:"column:org_name" json:"org_name" form:"org_name"`
891 891
 	OrgLogo       string `gorm:"column:org_logo" json:"org_logo" form:"org_logo"`
892 892
 	Creator       int64  `gorm:"column:creator" json:"creator" form:"creator"`
893
+	Name          string
893 894
 }
894 895
 
895 896
 func (SgjUserAdminRole) TableName() string {

+ 56 - 0
models/drug.go View File

@@ -91,3 +91,59 @@ type MedicineInsurancePercentage struct {
91 91
 func (MedicineInsurancePercentage) TableName() string {
92 92
 	return "xt_medicine_insurance_percentage"
93 93
 }
94
+
95
+type BaseDrugList struct {
96
+	ID                     int64   `gorm:"column:id" json:"id" form:"id"`
97
+	DrugName               string  `gorm:"column:drug_name" json:"drug_name" form:"drug_name"`
98
+	Pinyin                 string  `gorm:"column:pinyin" json:"pinyin" form:"pinyin"`
99
+	Wubi                   string  `gorm:"column:wubi" json:"wubi" form:"wubi"`
100
+	DrugAlias              string  `gorm:"column:drug_alias" json:"drug_alias" form:"drug_alias"`
101
+	DrugAliasPinyin        string  `gorm:"column:drug_alias_pinyin" json:"drug_alias_pinyin" form:"drug_alias_pinyin"`
102
+	DrugAliasWubi          string  `gorm:"column:drug_alias_wubi" json:"drug_alias_wubi" form:"drug_alias_wubi"`
103
+	DrugCategory           int64   `gorm:"column:drug_category" json:"drug_category" form:"drug_category"`
104
+	DrugSpec               string  `gorm:"column:drug_spec" json:"drug_spec" form:"drug_spec"`
105
+	DrugType               int64   `gorm:"column:drug_type" json:"drug_type" form:"drug_type"`
106
+	DrugStockLimit         string  `gorm:"column:drug_stock_limit" json:"drug_stock_limit" form:"drug_stock_limit"`
107
+	DrugOriginPlace        string  `gorm:"column:drug_origin_place" json:"drug_origin_place" form:"drug_origin_place"`
108
+	DrugDosageForm         int64   `gorm:"column:drug_dosage_form" json:"drug_dosage_form" form:"drug_dosage_form"`
109
+	MedicalInsuranceLevel  int64   `gorm:"column:medical_insurance_level" json:"medical_insurance_level" form:"medical_insurance_level"`
110
+	MaxUnit                string  `gorm:"column:max_unit" json:"max_unit" form:"max_unit"`
111
+	MinUnit                string  `gorm:"column:min_unit" json:"min_unit" form:"min_unit"`
112
+	UnitMatrixing          string  `gorm:"column:unit_matrixing" json:"unit_matrixing" form:"unit_matrixing"`
113
+	RetailPrice            float64 `gorm:"column:retail_price" json:"retail_price" form:"retail_price"`
114
+	LastPrice              float64 `gorm:"column:last_price" json:"last_price" form:"last_price"`
115
+	DrugControl            int64   `gorm:"column:drug_control" json:"drug_control" form:"drug_control"`
116
+	Number                 string  `gorm:"column:number" json:"number" form:"number"`
117
+	DrugClassify           string  `gorm:"column:drug_classify" json:"drug_classify" form:"drug_classify"`
118
+	DrugDose               float64 `gorm:"column:drug_dose" json:"drug_dose" form:"drug_dose"`
119
+	DrugDoseUnit           int64   `gorm:"column:drug_dose_unit" json:"drug_dose_unit" form:"drug_dose_unit"`
120
+	MedicalInsuranceNumber string  `gorm:"column:medical_insurance_number" json:"medical_insurance_number" form:"medical_insurance_number"`
121
+	Manufacturer           int64   `gorm:"column:manufacturer" json:"manufacturer" form:"manufacturer"`
122
+	PharmacologyCategory   int64   `gorm:"column:pharmacology_category" json:"pharmacology_category" form:"pharmacology_category"`
123
+	StatisticsCategory     int64   `gorm:"column:statistics_category" json:"statistics_category" form:"statistics_category"`
124
+	Code                   string  `gorm:"column:code" json:"code" form:"code"`
125
+	IsSpecialDiseases      int64   `gorm:"column:is_special_diseases" json:"is_special_diseases" form:"is_special_diseases"`
126
+	IsRecord               int64   `gorm:"column:is_record" json:"is_record" form:"is_record"`
127
+	Agent                  string  `gorm:"column:agent" json:"agent" form:"agent"`
128
+	DrugStatus             string  `gorm:"column:drug_status" json:"drug_status" form:"drug_status"`
129
+	LimitRemark            string  `gorm:"column:limit_remark" json:"limit_remark" form:"limit_remark"`
130
+	DeliveryWay            string  `gorm:"column:delivery_way" json:"delivery_way" form:"delivery_way"`
131
+	ExecutionFrequency     string  `gorm:"column:execution_frequency" json:"execution_frequency" form:"execution_frequency"`
132
+	SingleDose             float64 `gorm:"column:single_dose" json:"single_dose" form:"single_dose"`
133
+	PrescribingNumber      float64 `gorm:"column:prescribing_number" json:"prescribing_number" form:"prescribing_number"`
134
+	Label                  int64   `gorm:"column:label" json:"label" form:"label"`
135
+	Sort                   int64   `gorm:"column:sort" json:"sort" form:"sort"`
136
+	IsUseDoctorAdvice      int64   `gorm:"column:is_use_doctor_advice" json:"is_use_doctor_advice" form:"is_use_doctor_advice"`
137
+	IsDefault              int64   `gorm:"column:is_default" json:"is_default" form:"is_default"`
138
+	IsChargePredict        int64   `gorm:"column:is_charge_predict" json:"is_charge_predict" form:"is_charge_predict"`
139
+	IsStatisticsWork       int64   `gorm:"column:is_statistics_work" json:"is_statistics_work" form:"is_statistics_work"`
140
+	IsChargeUse            int64   `gorm:"column:is_charge_use" json:"is_charge_use" form:"is_charge_use"`
141
+	Status                 int64   `gorm:"column:status" json:"status" form:"status"`
142
+	Ctime                  int64   `gorm:"column:ctime" json:"ctime" form:"ctime"`
143
+	Mtime                  int64   `gorm:"column:mtime" json:"mtime" form:"mtime"`
144
+	OrgId                  int64   `gorm:"column:org_id" json:"org_id" form:"org_id"`
145
+	DrugCode               string  `gorm:"column:drug_code" json:"drug_code" form:"drug_code"`
146
+	Dealer                 int64   `gorm:"column:dealer" json:"dealer" form:"dealer"`
147
+	ManufacturerName       string  `gorm:"column:manufacturer_name" json:"manufacturer_name" form:"manufacturer_name"`
148
+	DrugDosageName         string
149
+}

+ 43 - 0
models/his_models.go View File

@@ -993,3 +993,46 @@ type MedicalInsuranceCostCompare struct {
993 993
 func (MedicalInsuranceCostCompare) TableName() string {
994 994
 	return "medical_insurance_cost_compare"
995 995
 }
996
+
997
+type XtDrugDataConfig struct {
998
+	ID             int64     `gorm:"column:id" json:"id" form:"id"`
999
+	ParentId       int64     `gorm:"column:parent_id" json:"parent_id" form:"parent_id"`
1000
+	Module         string    `gorm:"column:module" json:"module" form:"module"`
1001
+	OrgId          int64     `gorm:"column:org_id" json:"org_id" form:"org_id"`
1002
+	Name           string    `gorm:"column:name" json:"name" form:"name"`
1003
+	FieldName      string    `gorm:"column:field_name" json:"field_name" form:"field_name"`
1004
+	Value          int64     `gorm:"column:value" json:"value" form:"value"`
1005
+	CreateTime     time.Time `gorm:"column:create_time" json:"create_time" form:"create_time"`
1006
+	UpdateTime     time.Time `gorm:"column:update_time" json:"update_time" form:"update_time"`
1007
+	CreateUserId   int64     `gorm:"column:create_user_id" json:"create_user_id" form:"create_user_id"`
1008
+	Status         int64     `gorm:"column:status" json:"status" form:"status"`
1009
+	Remark         string    `gorm:"column:remark" json:"remark" form:"remark"`
1010
+	DeleteIdSystem int64     `gorm:"column:delete_id_system" json:"delete_id_system" form:"delete_id_system"`
1011
+	Title          string    `gorm:"column:title" json:"title" form:"title"`
1012
+	Content        string    `gorm:"column:content" json:"content" form:"content"`
1013
+	Orders         int64     `gorm:"column:orders" json:"orders" form:"orders"`
1014
+}
1015
+
1016
+func (XtDrugDataConfig) TableName() string {
1017
+	return "xt_drug_data_config"
1018
+}
1019
+
1020
+type XtRole struct {
1021
+	Id           int64  `gorm:"PRIMARY_KEY;AUTO_INCREMENT" json:"id"`
1022
+	RoleName     string `gorm:"column:role_name" json:"name"`
1023
+	RoleIntro    string `gorm:"column:role_introduction" json:"intro"`
1024
+	Creator      int64  `json:"-"`
1025
+	OrgId        int64  `gorm:"column:org_id" json:"-"`
1026
+	AppId        int64  `gorm:"column:app_id" json:"-"`
1027
+	IsSuperAdmin bool   `gorm:"column:is_super_admin" json:"is_super_admin"`
1028
+	Status       int8   `json:"status"`                // 状态 0.无效 1.有效 2.禁用
1029
+	CreateTime   int64  `gorm:"column:ctime" json:"-"` // 创建时间
1030
+	ModifyTime   int64  `gorm:"column:mtime" json:"-"` // 修改时间
1031
+	StaffNumber  int64  `gorm:"-" json:"staff_number"`
1032
+	Number       int64  `gorm:"number" json:"number"`
1033
+	IsSystem     int64  `gorm:"column:is_system" json:"is_system" form:"is_system"`
1034
+}
1035
+
1036
+func (XtRole) TableName() string {
1037
+	return "sgj_user_role"
1038
+}

+ 55 - 0
models/sz_his_models.go View File

@@ -18,3 +18,58 @@ type CustomDetail struct {
18 18
 	Spec               string
19 19
 	CustomNumber       string
20 20
 }
21
+
22
+type DrugDetail struct {
23
+	MedicalInsuranceNumber string  //社保目录编码
24
+	Code                   string  // 药品本位码
25
+	DrugName               string  //医药机构内部目录名称
26
+	DrugSpec               string  //规格
27
+	DrugDosageName         string  //剂型
28
+	MinUnit                string  //计价单位
29
+	ManufacturerName       string  //厂家
30
+	RetailPrice            float64 //药品收费价格
31
+	LastPrice              float64 // 药品进货价格
32
+	LimitRemark            string  //药品备注
33
+}
34
+
35
+type DocDetail struct {
36
+	UserName                                string //医护姓名
37
+	RoleId                                  string //医护人员类别
38
+	Sex                                     string //性别
39
+	CardType                                string //证件类型
40
+	IdCard                                  string //证件号码
41
+	Phone                                   string //联系电话
42
+	WorkMajorName                           string // 从事专业名称
43
+	Nation                                  string //民族
44
+	BirthDay                                int64  // 出生日期
45
+	WorkTime                                int64  //参加工作日期
46
+	Education                               string //学历
47
+	StudyMajorName                          string //所学专业名称
48
+	CertificateCode                         string //证书编码
49
+	MedicalCode                             string //医师资格编码
50
+	MedicalRangeCode                        string //医师执业范围代码
51
+	MedicalLevel                            string //医生级别
52
+	TypeJob                                 string //职业类别
53
+	DoctorNumber                            string //医师编号
54
+	Licensing                               string //职业标志
55
+	DoctorServiceStatus                     string //医师医保服务资格状态
56
+	MonitoringLevel                         string //监控等级
57
+	DrugPsychotropicSubstances              string //毒麻精神药品资格
58
+	HealthCareCode                          string // 母婴保健技术考核合格证书编号
59
+	PlanningTechnicalServiceCode            string //计划生育技术服务人员合格证编号
60
+	PharmacistType                          string //药师类别
61
+	PharmacistPracticeCategory              string //药师执业类别
62
+	PharmacistsLicensing                    string //药师执业范围
63
+	PharmacistRegistrationNumber            string //执业药师注册证编号
64
+	OfficeCode                              string //科室编码
65
+	JobNumber                               string //工号
66
+	PostName                                string //职位名称
67
+	TechnicalJobLevelCode                   string //专业技术职务级别编码
68
+	IsActive                                string //在职与否
69
+	PrescriptionQualificationIdentification string //处方资格标识
70
+	IdentificationOutpatients               string //门诊大病医师标识
71
+	OutpatientIllnessCategory               string //门诊大病类别
72
+	StartTime                               int64  //开始日期
73
+	StaffCode                               string //医护人员编码
74
+	EndTime                                 int64  // 结束日期
75
+}

+ 32 - 0
service/his_service.go View File

@@ -1,6 +1,7 @@
1 1
 package service
2 2
 
3 3
 import (
4
+	"fmt"
4 5
 	"gdyb/models"
5 6
 	"github.com/jinzhu/gorm"
6 7
 	"time"
@@ -960,3 +961,34 @@ func GetPatientByIDTwo(orgID int64, patientID int64) (Patients, error) {
960 961
 	err := readDb.Model(&Patients{}).Where("id = ? and user_org_id=? and status=1", patientID, orgID).First(&patient).Error
961 962
 	return patient, err
962 963
 }
964
+
965
+func GetDrugList(orgID int64) (drug []*models.BaseDrugList, err error) {
966
+
967
+	db := XTReadDB().Table("xt_base_drug as x").Where("x.status = 1")
968
+	table := XTReadDB().Table("xt_manufacturer as m")
969
+	fmt.Print(table)
970
+	if orgID > 0 {
971
+		db = db.Where("x.org_id = ? and x.id = 278", orgID)
972
+	}
973
+	err = db.Select("x.id,x.medical_insurance_number,x.code,x.drug_name,x.drug_spec,x.drug_type,x.min_unit,x.last_price,x.retail_price,x.limit_remark,x.drug_dosage_form,m.manufacturer_name").Joins("left join xt_manufacturer as m on m.id = x.manufacturer").Scan(&drug).Error
974
+
975
+	return drug, err
976
+}
977
+
978
+func GetDrugDosageForm(orgid int64) (dataconfig []*models.XtDrugDataConfig, err error) {
979
+
980
+	err = XTReadDB().Where("(org_id = ? or org_id = 0) and parent_id = 4 and status = 1", orgid).Find(&dataconfig).Error
981
+	return dataconfig, err
982
+}
983
+
984
+func GetDoctorList(orgid int64) (role []*models.SgjUserAdminRole, err error) {
985
+
986
+	err = UserReadDB().Model(&role).Where("org_id = ? and status = 1", orgid).Find(&role).Error
987
+	return role, err
988
+}
989
+
990
+func GetRoleList(orgid int64) (role []*models.SgjUserRole, err error) {
991
+
992
+	err = UserReadDB().Model(&role).Where("org_id = ? and status =1", orgid).Find(&role).Error
993
+	return role, err
994
+}

+ 509 - 46
service/sz_his_service.go View File

@@ -297,16 +297,128 @@ func SzybFY005(doctor string, doctor_code string, fixmedins_code string, dept_co
297 297
 	str := string(respBytes)
298 298
 	return str
299 299
 }
300
-func SzybJY002(doctor string, doctor_code string, fixmedins_code string, dept_code string, number string, verify_code string) string {
301
-	// 生成输入报文
302
-	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code)
300
+
301
+//func SzybJY002(doctor string, doctor_code string, fixmedins_code string, dept_code string, number string, verify_code string) string {
302
+//	// 生成输入报文
303
+//	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code)
304
+//	inputData := make(map[string]interface{})
305
+//	inputMessage["transType"] = "JY002" // 交易编码
306
+//
307
+//	inputData["akc190"] = "2021033012131415"
308
+//	inputData["bke384"] = number
309
+//
310
+//	inputMessage["transBody"] = inputData
311
+//	bytesData, err := json.Marshal(inputMessage)
312
+//	fmt.Println(string(bytesData))
313
+//	if err != nil {
314
+//		fmt.Println(err.Error())
315
+//		return err.Error()
316
+//	}
317
+//	reader := bytes.NewReader(bytesData)
318
+//	//url := "http://192.168.1.99:10000"
319
+//	url := "http://192.168.1.228:17001/szsi-portal/transData"
320
+//
321
+//	request, err := http.NewRequest("POST", url, reader)
322
+//	if err != nil {
323
+//		fmt.Println(err.Error())
324
+//		return err.Error()
325
+//	}
326
+//
327
+//	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
328
+//
329
+//	client := http.Client{}
330
+//	resp, err := client.Do(request)
331
+//	if err != nil {
332
+//		fmt.Println(err.Error())
333
+//		return err.Error()
334
+//	}
335
+//	respBytes, err := ioutil.ReadAll(resp.Body)
336
+//	if err != nil {
337
+//		fmt.Println(err.Error())
338
+//		return err.Error()
339
+//	}
340
+//	fmt.Println(string(respBytes))
341
+//	str := string(respBytes)
342
+//	return str
343
+//}
344
+
345
+//func SzybJY003(doctor string, doctor_code string, fixmedins_code string, dept_code string, number string, verify_code string) string {
346
+//	// 生成输入报文
347
+//	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code)
348
+//	inputData := make(map[string]interface{})
349
+//	inputMessage["transType"] = "JY002" // 交易编码
350
+//
351
+//	inputData["akc190"] = "2021033012131415"
352
+//	inputData["bke384"] = number
353
+//
354
+//	inputMessage["transBody"] = inputData
355
+//	bytesData, err := json.Marshal(inputMessage)
356
+//	fmt.Println(string(bytesData))
357
+//	if err != nil {
358
+//		fmt.Println(err.Error())
359
+//		return err.Error()
360
+//	}
361
+//	reader := bytes.NewReader(bytesData)
362
+//	//url := "http://192.168.1.99:10000"
363
+//	url := "http://192.168.1.228:17001/szsi-portal/transData"
364
+//
365
+//	request, err := http.NewRequest("POST", url, reader)
366
+//	if err != nil {
367
+//		fmt.Println(err.Error())
368
+//		return err.Error()
369
+//	}
370
+//
371
+//	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
372
+//
373
+//	client := http.Client{}
374
+//	resp, err := client.Do(request)
375
+//	if err != nil {
376
+//		fmt.Println(err.Error())
377
+//		return err.Error()
378
+//	}
379
+//	respBytes, err := ioutil.ReadAll(resp.Body)
380
+//	if err != nil {
381
+//		fmt.Println(err.Error())
382
+//		return err.Error()
383
+//	}
384
+//	fmt.Println(string(respBytes))
385
+//	str := string(respBytes)
386
+//	return str
387
+//}
388
+
389
+func SzybML008(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
390
+	//生成输入报文
391
+	inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
392
+
303 393
 	inputData := make(map[string]interface{})
304
-	inputMessage["transType"] = "JY002" // 交易编码
305 394
 
306
-	inputData["akc190"] = "2021033012131415"
307
-	inputData["bke384"] = number
395
+	inputData["listsize"] = len(datas)
396
+	inputMessage["transType"] = "ML008" // 交易编码
397
+	feedetail := make([]map[string]interface{}, 0)
398
+
399
+	for _, item := range datas {
400
+		fmt.Println("中国222222", item.DrugDosageName)
401
+		feedetailInfo := make(map[string]interface{})
402
+		feedetailInfo["ake001"] = item.MedicalInsuranceNumber
403
+		feedetailInfo["bkm017"] = item.Code
404
+		feedetailInfo["ake005"] = "110100002"
405
+		feedetailInfo["ake006"] = item.DrugName
406
+		feedetailInfo["aka074"] = item.DrugSpec
407
+		feedetailInfo["aka070"] = item.DrugDosageName
408
+		//feedetailInfo["aka070"] = "片"
409
+		feedetailInfo["aka067"] = item.MinUnit
410
+		feedetailInfo["bka053"] = item.ManufacturerName
411
+		feedetailInfo["aka064"] = "1"
412
+		feedetailInfo["bka505"] = item.LastPrice
413
+		feedetailInfo["bka506"] = item.RetailPrice
414
+		feedetailInfo["aae030"] = 20210406
415
+		feedetailInfo["aae013"] = item.LimitRemark
416
+		feedetail = append(feedetail, feedetailInfo)
417
+	}
308 418
 
419
+	inputData["inputlist"] = feedetail
309 420
 	inputMessage["transBody"] = inputData
421
+
310 422
 	bytesData, err := json.Marshal(inputMessage)
311 423
 	fmt.Println(string(bytesData))
312 424
 	if err != nil {
@@ -339,18 +451,117 @@ func SzybJY002(doctor string, doctor_code string, fixmedins_code string, dept_co
339 451
 	fmt.Println(string(respBytes))
340 452
 	str := string(respBytes)
341 453
 	return str
454
+
342 455
 }
343 456
 
344
-func SzybJY003(doctor string, doctor_code string, fixmedins_code string, dept_code string, number string, verify_code string) string {
345
-	// 生成输入报文
346
-	inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code, verify_code)
457
+// 生成基础报文
458
+func SetSZInputMessage(doctor string, doctor_code string, fixmedins_code string, verify_code string, number string) map[string]interface{} {
459
+	month := time.Unix(1557042972, 0).Format("1")
460
+	year := time.Now().Format("2006")
461
+	month = time.Now().Format("01")
462
+	day := time.Now().Format("02")
463
+
464
+	hour := time.Now().Format("15")
465
+	min := time.Now().Format("04")
466
+	sec := time.Now().Format("05")
467
+
468
+	msec := time.Now().Format("000")
469
+
470
+	//生成输入报文
471
+	inputMessage := make(map[string]interface{})
472
+	//
473
+
474
+	inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
475
+	inputMessage["extendDeviceId"] = ""
476
+	inputMessage["extendSerialNumber"] = ""
477
+	inputMessage["extendUserId"] = ""
478
+	inputMessage["hospitalCode"] = fixmedins_code // 协议机构编码
479
+	inputMessage["operatorCode"] = doctor_code    // 操作员编码
480
+	inputMessage["operatorName"] = doctor         // 操作员名字
481
+	inputMessage["operatorPass"] = ""             // 定点协议机构操作人员编码
482
+	inputMessage["serialNumber"] = fixmedins_code + year + month + day +
483
+		fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
484
+	inputMessage["serialNumber"] = number
485
+
486
+	inputMessage["transReturnCode"] = ""                                           //
487
+	inputMessage["transReturnMessage"] = ""                                        //
488
+	inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
489
+	inputMessage["transVersion"] = "V0.3"                                          //
490
+	inputMessage["verifyCode"] = verify_code                                       //
491
+	inputMessage["transChannel"] = "10"                                            //
492
+
493
+	return inputMessage
494
+}
495
+func msToTime(ms int64) string {
496
+	tm := time.Unix(0, ms*int64(time.Millisecond))
497
+	return tm.Format("2006-02-01 15:04:05.000")
498
+}
499
+
500
+// 生成基础报文
501
+func SetSZDrugMessage(doctor string, doctor_code string, fixmedins_code string) map[string]interface{} {
502
+	month := time.Unix(1557042972, 0).Format("1")
503
+	year := time.Now().Format("2006")
504
+	month = time.Now().Format("01")
505
+	day := time.Now().Format("02")
506
+
507
+	hour := time.Now().Format("15")
508
+	min := time.Now().Format("04")
509
+	sec := time.Now().Format("05")
510
+
511
+	msec := time.Now().Format("000")
512
+
513
+	//生成输入报文
514
+	inputMessage := make(map[string]interface{})
515
+	//
516
+
517
+	inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
518
+	inputMessage["extendDeviceId"] = ""
519
+	inputMessage["extendSerialNumber"] = ""
520
+	inputMessage["extendUserId"] = ""
521
+	inputMessage["hospitalCode"] = "G5540"     // 协议机构编码
522
+	inputMessage["operatorCode"] = doctor_code // 操作员编码
523
+	inputMessage["operatorName"] = doctor      // 操作员名字
524
+	inputMessage["operatorPass"] = ""          // 定点协议机构操作人员编码
525
+	//inputMessage["serialNumber"] = "G5540" + year + month + day +
526
+	//  fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
527
+	inputMessage["serialNumber"] = "G554020210406" + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
528
+	inputMessage["verifyCode"] = "000000|8ec5b7745a5cc45b631f23b4bf1e417e"
529
+
530
+	inputMessage["transReturnCode"] = ""                                           //
531
+	inputMessage["transReturnMessage"] = ""                                        //
532
+	inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
533
+	inputMessage["transVersion"] = "V0.3"                                          //   //
534
+	inputMessage["transChannel"] = "10"                                            //
535
+
536
+	return inputMessage
537
+}
538
+
539
+func SzybML009(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
540
+	//生成输入报文
541
+	inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
542
+
347 543
 	inputData := make(map[string]interface{})
348
-	inputMessage["transType"] = "JY002" // 交易编码
349 544
 
350
-	inputData["akc190"] = "2021033012131415"
351
-	inputData["bke384"] = number
545
+	inputData["listsize"] = len(datas)
546
+	inputMessage["transType"] = "ML009" // 交易编码
547
+	feedetail := make([]map[string]interface{}, 0)
352 548
 
549
+	for _, item := range datas {
550
+		feedetailInfo := make(map[string]interface{})
551
+		feedetailInfo["ake001"] = item.MedicalInsuranceNumber //社保目录编码
552
+		feedetailInfo["ake005"] = "110100002"                 //协议机构内部目录编码
553
+		feedetailInfo["ake006"] = item.DrugName               // 协议机构内部目录名称
554
+		feedetailInfo["bkf131"] = "4"                         //协议机构项目类别
555
+		feedetailInfo["bkm062"] = "0"                         // 门诊特检项目标识
556
+		feedetailInfo["bka506"] = item.RetailPrice            // 协议机构内部项目收费价格
557
+		feedetailInfo["aae030"] = 20210407                    // 备案日期
558
+		feedetailInfo["aae013"] = item.LimitRemark            // 备注
559
+		feedetail = append(feedetail, feedetailInfo)
560
+	}
561
+	fmt.Println("feeedDetal2333333333", feedetail)
562
+	inputData["inputlist"] = feedetail
353 563
 	inputMessage["transBody"] = inputData
564
+
354 565
 	bytesData, err := json.Marshal(inputMessage)
355 566
 	fmt.Println(string(bytesData))
356 567
 	if err != nil {
@@ -383,47 +594,299 @@ func SzybJY003(doctor string, doctor_code string, fixmedins_code string, dept_co
383 594
 	fmt.Println(string(respBytes))
384 595
 	str := string(respBytes)
385 596
 	return str
597
+
386 598
 }
387 599
 
388
-// 生成基础报文
389
-func SetSZInputMessage(doctor string, doctor_code string, fixmedins_code string, verify_code string, number string) map[string]interface{} {
390
-	month := time.Unix(1557042972, 0).Format("1")
391
-	year := time.Now().Format("2006")
392
-	month = time.Now().Format("01")
393
-	day := time.Now().Format("02")
600
+func SzybML010(doctor string, doctor_code string, fixmedins_code string, datas []*models.DrugDetail) string {
601
+	//生成输入报文
602
+	inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
394 603
 
395
-	hour := time.Now().Format("15")
396
-	min := time.Now().Format("04")
397
-	sec := time.Now().Format("05")
604
+	inputData := make(map[string]interface{})
398 605
 
399
-	msec := time.Now().Format("000")
606
+	inputData["listsize"] = len(datas)
607
+	inputMessage["transType"] = "ML010" // 交易编码
608
+	feedetail := make([]map[string]interface{}, 0)
400 609
 
401
-	// 生成输入报文
402
-	inputMessage := make(map[string]interface{})
403
-	//
610
+	for _, item := range datas {
611
+		feedetailInfo := make(map[string]interface{})
612
+		feedetailInfo["ake003"] = "1"
613
+		feedetailInfo["ake001"] = item.MedicalInsuranceNumber //社保目录编码
614
+		feedetailInfo["ake005"] = "110100002"                 //协议机构内部目录编码
615
+		feedetail = append(feedetail, feedetailInfo)
616
+	}
404 617
 
405
-	inputMessage["cardArea"] = "440300" // 发卡地行政区划代码
406
-	inputMessage["extendDeviceId"] = ""
407
-	inputMessage["extendSerialNumber"] = ""
408
-	inputMessage["extendUserId"] = ""
409
-	inputMessage["hospitalCode"] = fixmedins_code // 协议机构编码
410
-	inputMessage["operatorCode"] = doctor_code    // 操作员编码
411
-	inputMessage["operatorName"] = doctor         // 操作员名字
412
-	inputMessage["operatorPass"] = ""             // 定点协议机构操作人员编码
413
-	inputMessage["serialNumber"] = fixmedins_code + year + month + day +
414
-		fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位)
415
-	inputMessage["serialNumber"] = number
618
+	inputData["inputlist"] = feedetail
619
+	inputMessage["transBody"] = inputData
416 620
 
417
-	inputMessage["transReturnCode"] = ""                                           //
418
-	inputMessage["transReturnMessage"] = ""                                        //
419
-	inputMessage["transTime"] = year + month + day + hour + min + sec + ":" + msec //
420
-	inputMessage["transVersion"] = "V0.3"                                          //
421
-	inputMessage["verifyCode"] = verify_code                                       //
422
-	inputMessage["transChannel"] = "10"                                            //
621
+	bytesData, err := json.Marshal(inputMessage)
622
+	fmt.Println(string(bytesData))
623
+	if err != nil {
624
+		fmt.Println(err.Error())
625
+		return err.Error()
626
+	}
627
+	reader := bytes.NewReader(bytesData)
628
+	//url := "http://192.168.1.99:10000"
629
+	url := "http://192.168.1.228:17001/szsi-portal/transData"
630
+
631
+	request, err := http.NewRequest("POST", url, reader)
632
+	if err != nil {
633
+		fmt.Println(err.Error())
634
+		return err.Error()
635
+	}
636
+
637
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
638
+
639
+	client := http.Client{}
640
+	resp, err := client.Do(request)
641
+	if err != nil {
642
+		fmt.Println(err.Error())
643
+		return err.Error()
644
+	}
645
+	respBytes, err := ioutil.ReadAll(resp.Body)
646
+	if err != nil {
647
+		fmt.Println(err.Error())
648
+		return err.Error()
649
+	}
650
+	fmt.Println(string(respBytes))
651
+	str := string(respBytes)
652
+	return str
423 653
 
424
-	return inputMessage
425 654
 }
426
-func msToTime(ms int64) string {
427
-	tm := time.Unix(0, ms*int64(time.Millisecond))
428
-	return tm.Format("2006-02-01 15:04:05.000")
655
+
656
+func SzybYS001(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
657
+	//生成输入报文
658
+	inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
659
+
660
+	inputData := make(map[string]interface{})
661
+
662
+	inputData["listsize"] = len(datas)
663
+	inputMessage["transType"] = "ML010" // 交易编码
664
+	feedetail := make([]map[string]interface{}, 0)
665
+
666
+	for _, item := range datas {
667
+		feedetailInfo := make(map[string]interface{})
668
+		feedetailInfo["aac003"] = item.UserName
669
+		feedetailInfo["bka633"] = item.RoleId
670
+		feedetailInfo["aac004"] = item.Sex
671
+		feedetailInfo["aac058"] = item.CardType
672
+		feedetailInfo["aac147"] = item.IdCard
673
+		feedetailInfo["aae005"] = item.Phone
674
+		feedetailInfo["bkc322"] = item.WorkMajorName
675
+		feedetailInfo["aac005"] = item.Nation
676
+		feedetailInfo["aac006"] = item.BirthDay
677
+		feedetailInfo["aac007"] = item.WorkTime
678
+		feedetailInfo["aac011"] = item.Education
679
+		feedetailInfo["aac183"] = item.StudyMajorName
680
+		feedetailInfo["bkc323"] = item.CertificateCode
681
+		feedetailInfo["bke955"] = item.MedicalCode
682
+		feedetailInfo["akc055"] = item.MedicalRangeCode
683
+		feedetailInfo["bcc950"] = item.MedicalLevel
684
+		feedetailInfo["bcc955"] = item.TypeJob
685
+		feedetailInfo["bka503"] = item.DoctorNumber
686
+		feedetailInfo["bkc324"] = item.Licensing
687
+		feedetailInfo["bkc326"] = item.DoctorServiceStatus
688
+		feedetailInfo["bkc328"] = item.MonitoringLevel
689
+		feedetailInfo["bkc329"] = item.DrugPsychotropicSubstances
690
+		feedetailInfo["bke801"] = item.HealthCareCode
691
+		feedetailInfo["bkc330"] = item.PlanningTechnicalServiceCode
692
+		feedetailInfo["bkc332"] = item.PharmacistType
693
+		feedetailInfo["bkc333"] = item.PharmacistPracticeCategory
694
+		feedetailInfo["bkc334"] = item.PharmacistsLicensing
695
+		feedetailInfo["bkc335"] = item.PharmacistRegistrationNumber
696
+		feedetailInfo["akf001"] = item.OfficeCode
697
+		feedetailInfo["acc501"] = item.JobNumber
698
+		feedetailInfo["ahc451"] = item.PostName
699
+		feedetailInfo["aaf009"] = item.TechnicalJobLevelCode
700
+		feedetailInfo["bkc321"] = item.IsActive
701
+		feedetailInfo["ckc302"] = item.PrescriptionQualificationIdentification
702
+		feedetailInfo["bkc325"] = item.IdentificationOutpatients
703
+		feedetailInfo["ckc304"] = item.OutpatientIllnessCategory
704
+		feedetailInfo["aae030"] = item.StartTime
705
+		feedetail = append(feedetail, feedetailInfo)
706
+	}
707
+
708
+	inputData["inputlist"] = feedetail
709
+	inputMessage["transBody"] = inputData
710
+
711
+	bytesData, err := json.Marshal(inputMessage)
712
+	fmt.Println(string(bytesData))
713
+	if err != nil {
714
+		fmt.Println(err.Error())
715
+		return err.Error()
716
+	}
717
+	reader := bytes.NewReader(bytesData)
718
+	//url := "http://192.168.1.99:10000"
719
+	url := "http://192.168.1.228:17001/szsi-portal/transData"
720
+
721
+	request, err := http.NewRequest("POST", url, reader)
722
+	if err != nil {
723
+		fmt.Println(err.Error())
724
+		return err.Error()
725
+	}
726
+
727
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
728
+
729
+	client := http.Client{}
730
+	resp, err := client.Do(request)
731
+	if err != nil {
732
+		fmt.Println(err.Error())
733
+		return err.Error()
734
+	}
735
+	respBytes, err := ioutil.ReadAll(resp.Body)
736
+	if err != nil {
737
+		fmt.Println(err.Error())
738
+		return err.Error()
739
+	}
740
+	fmt.Println(string(respBytes))
741
+	str := string(respBytes)
742
+	return str
743
+
744
+}
745
+
746
+func SzybYS002(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
747
+
748
+	//生成输入报文
749
+	inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
750
+
751
+	inputData := make(map[string]interface{})
752
+
753
+	inputData["listsize"] = len(datas)
754
+	inputMessage["transType"] = "ML010" // 交易编码
755
+	feedetail := make([]map[string]interface{}, 0)
756
+
757
+	for _, item := range datas {
758
+		fmt.Println("item2222", item)
759
+		feedetailInfo := make(map[string]interface{})
760
+		feedetailInfo["bkc320"] = 1111
761
+		feedetailInfo["bke155"] = ""
762
+		feedetail = append(feedetail, feedetailInfo)
763
+	}
764
+
765
+	inputData["inputlist"] = feedetail
766
+	inputMessage["transBody"] = inputData
767
+
768
+	bytesData, err := json.Marshal(inputMessage)
769
+	fmt.Println(string(bytesData))
770
+	if err != nil {
771
+		fmt.Println(err.Error())
772
+		return err.Error()
773
+	}
774
+	reader := bytes.NewReader(bytesData)
775
+	//url := "http://192.168.1.99:10000"
776
+	url := "http://192.168.1.228:17001/szsi-portal/transData"
777
+
778
+	request, err := http.NewRequest("POST", url, reader)
779
+	if err != nil {
780
+		fmt.Println(err.Error())
781
+		return err.Error()
782
+	}
783
+
784
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
785
+
786
+	client := http.Client{}
787
+	resp, err := client.Do(request)
788
+	if err != nil {
789
+		fmt.Println(err.Error())
790
+		return err.Error()
791
+	}
792
+	respBytes, err := ioutil.ReadAll(resp.Body)
793
+	if err != nil {
794
+		fmt.Println(err.Error())
795
+		return err.Error()
796
+	}
797
+	fmt.Println(string(respBytes))
798
+	str := string(respBytes)
799
+	return str
800
+}
801
+
802
+func SzybYS003(doctor string, doctor_code string, fixmedins_code string, datas []*models.DocDetail) string {
803
+
804
+	//生成输入报文
805
+	inputMessage := SetSZDrugMessage(doctor, doctor_code, fixmedins_code)
806
+
807
+	inputData := make(map[string]interface{})
808
+
809
+	inputData["listsize"] = len(datas)
810
+	inputMessage["transType"] = "ML010" // 交易编码
811
+	feedetail := make([]map[string]interface{}, 0)
812
+
813
+	for _, item := range datas {
814
+		feedetailInfo := make(map[string]interface{})
815
+		feedetailInfo["bkc320"] = ""
816
+		feedetailInfo["aac003"] = item.UserName
817
+		feedetailInfo["bka633"] = item.RoleId
818
+		feedetailInfo["aac004"] = item.Sex
819
+		feedetailInfo["aac058"] = item.CardType
820
+		feedetailInfo["aac147"] = item.IdCard
821
+		feedetailInfo["aae005"] = item.Phone
822
+		feedetailInfo["bkc322"] = item.WorkMajorName
823
+		feedetailInfo["aac005"] = item.Nation
824
+		feedetailInfo["aac006"] = item.BirthDay
825
+		feedetailInfo["aac007"] = item.WorkTime
826
+		feedetailInfo["aac011"] = item.Education
827
+		feedetailInfo["aac183"] = item.StudyMajorName
828
+		feedetailInfo["bkc323"] = item.CertificateCode
829
+		feedetailInfo["bke955"] = item.MedicalCode
830
+		feedetailInfo["akc055"] = item.MedicalRangeCode
831
+		feedetailInfo["bcc950"] = item.MedicalLevel
832
+		feedetailInfo["bcc955"] = item.TypeJob
833
+		feedetailInfo["bka503"] = item.DoctorNumber
834
+		feedetailInfo["bkc324"] = item.Licensing
835
+		feedetailInfo["bkc326"] = item.DoctorServiceStatus
836
+		feedetailInfo["bkc328"] = item.MonitoringLevel
837
+		feedetailInfo["bkc329"] = item.DrugPsychotropicSubstances
838
+		feedetailInfo["bke801"] = item.HealthCareCode
839
+		feedetailInfo["bkc330"] = item.PlanningTechnicalServiceCode
840
+		feedetailInfo["bkc332"] = item.PharmacistType
841
+		feedetailInfo["bkc333"] = item.PharmacistPracticeCategory
842
+		feedetailInfo["bkc334"] = item.PharmacistsLicensing
843
+		feedetailInfo["bkc335"] = item.PharmacistRegistrationNumber
844
+		feedetailInfo["akf001"] = item.OfficeCode
845
+		feedetailInfo["acc501"] = item.JobNumber
846
+		feedetailInfo["ahc451"] = item.PostName
847
+		feedetailInfo["aaf009"] = item.TechnicalJobLevelCode
848
+		feedetailInfo["bkc321"] = item.IsActive
849
+		feedetailInfo["ckc302"] = item.PrescriptionQualificationIdentification
850
+		feedetailInfo["bkc325"] = item.IdentificationOutpatients
851
+		feedetailInfo["ckc304"] = item.OutpatientIllnessCategory
852
+		feedetailInfo["aae030"] = item.StartTime
853
+		feedetailInfo["aae031"] = item.EndTime
854
+		feedetail = append(feedetail, feedetailInfo)
855
+	}
856
+
857
+	inputData["inputlist"] = feedetail
858
+	inputMessage["transBody"] = inputData
859
+
860
+	bytesData, err := json.Marshal(inputMessage)
861
+	fmt.Println(string(bytesData))
862
+	if err != nil {
863
+		fmt.Println(err.Error())
864
+		return err.Error()
865
+	}
866
+	reader := bytes.NewReader(bytesData)
867
+	//url := "http://192.168.1.99:10000"
868
+	url := "http://192.168.1.228:17001/szsi-portal/transData"
869
+
870
+	request, err := http.NewRequest("POST", url, reader)
871
+	if err != nil {
872
+		fmt.Println(err.Error())
873
+		return err.Error()
874
+	}
875
+
876
+	request.Header.Set("Content-Type", "application/json;charset=UTF-8")
877
+
878
+	client := http.Client{}
879
+	resp, err := client.Do(request)
880
+	if err != nil {
881
+		fmt.Println(err.Error())
882
+		return err.Error()
883
+	}
884
+	respBytes, err := ioutil.ReadAll(resp.Body)
885
+	if err != nil {
886
+		fmt.Println(err.Error())
887
+		return err.Error()
888
+	}
889
+	fmt.Println(string(respBytes))
890
+	str := string(respBytes)
891
+	return str
429 892
 }