|
@@ -155,11 +155,20 @@ func (c *MobileHisApiController) DeletePrescription() {
|
155
|
155
|
}
|
156
|
156
|
if len(advices) > 0 {
|
157
|
157
|
for _, item := range advices {
|
158
|
|
- drug, _ := service.FindBaseDrugLibRecord(c.GetAdminUserInfo().CurrentOrgId, item.DrugId)
|
159
|
|
- drug.Total = drug.Total + item.PrescribingNumber
|
160
|
|
- service.UpdateBaseDrugLib(&drug)
|
|
158
|
+ drug, _ := service.FindBaseDrugLibRecord(c.GetMobileAdminUserInfo().Org.Id, item.DrugId)
|
|
159
|
+ if item.PrescribingNumberUnit == drug.MinUnit {
|
|
160
|
+ drug.Total = drug.Total + item.PrescribingNumber
|
|
161
|
+ service.UpdateBaseDrugLib(&drug)
|
|
162
|
+ } else {
|
|
163
|
+ if item.PrescribingNumberUnit == drug.MaxUnit {
|
|
164
|
+ item.PrescribingNumber = item.PrescribingNumber * float64(drug.MinNumber)
|
|
165
|
+ drug.Total = drug.Total + item.PrescribingNumber
|
|
166
|
+ service.UpdateBaseDrugLib(&drug)
|
|
167
|
+ }
|
|
168
|
+ }
|
161
|
169
|
}
|
162
|
170
|
}
|
|
171
|
+
|
163
|
172
|
c.ServeSuccessJSON(map[string]interface{}{
|
164
|
173
|
"msg": "删除成功",
|
165
|
174
|
})
|
|
@@ -172,13 +181,19 @@ func (c *MobileHisApiController) DeletePrescription() {
|
172
|
181
|
func (c *MobileHisApiController) DeleteDoctorAdvice() {
|
173
|
182
|
id, _ := c.GetInt64("id")
|
174
|
183
|
advice, _ := service.GetHisDoctorAdvicesById(id)
|
175
|
|
-
|
176
|
|
- //TODO 需要判断是否已经结算
|
177
|
184
|
err := service.DelelteDoctorAdvice(id, c.GetMobileAdminUserInfo().Org.Id)
|
178
|
185
|
if err == nil {
|
179
|
|
- drug, _ := service.FindBaseDrugLibRecord(c.GetMobileAdminUserInfo().CurrentOrgId, advice.DrugId)
|
180
|
|
- drug.Total = drug.Total + advice.PrescribingNumber
|
181
|
|
- service.UpdateBaseDrugLib(&drug)
|
|
186
|
+ drug, _ := service.FindBaseDrugLibRecord(c.GetMobileAdminUserInfo().Org.Id, advice.DrugId)
|
|
187
|
+ if advice.PrescribingNumberUnit == drug.MinUnit {
|
|
188
|
+ drug.Total = drug.Total + advice.PrescribingNumber
|
|
189
|
+ service.UpdateBaseDrugLib(&drug)
|
|
190
|
+ } else {
|
|
191
|
+ if advice.PrescribingNumberUnit == drug.MaxUnit {
|
|
192
|
+ advice.PrescribingNumber = advice.PrescribingNumber * float64(drug.MinNumber)
|
|
193
|
+ drug.Total = drug.Total + advice.PrescribingNumber
|
|
194
|
+ service.UpdateBaseDrugLib(&drug)
|
|
195
|
+ }
|
|
196
|
+ }
|
182
|
197
|
c.ServeSuccessJSON(map[string]interface{}{
|
183
|
198
|
"msg": "删除成功",
|
184
|
199
|
})
|
|
@@ -241,6 +256,8 @@ func (c *MobileHisApiController) CreateHisPrescription() {
|
241
|
256
|
|
242
|
257
|
role, _ := service.GetAdminUserInfoByID(adminInfo.Org.Id, doctor_id)
|
243
|
258
|
|
|
259
|
+ //校验库存总量
|
|
260
|
+
|
244
|
261
|
if dataBody["prescriptions"] != nil && reflect.TypeOf(dataBody["prescriptions"]).String() == "[]interface {}" {
|
245
|
262
|
prescriptions, _ := dataBody["prescriptions"].([]interface{})
|
246
|
263
|
if len(prescriptions) > 0 {
|
|
@@ -252,6 +269,8 @@ func (c *MobileHisApiController) CreateHisPrescription() {
|
252
|
269
|
for _, advice := range advices {
|
253
|
270
|
var drug_id int64
|
254
|
271
|
var prescribing_number float64
|
|
272
|
+ var prescribingNumberUnit string
|
|
273
|
+
|
255
|
274
|
if advice.(map[string]interface{})["id"] != nil || reflect.TypeOf(advice.(map[string]interface{})["id"]).String() == "float64" {
|
256
|
275
|
drug_id = int64(advice.(map[string]interface{})["id"].(float64))
|
257
|
276
|
}
|
|
@@ -259,15 +278,29 @@ func (c *MobileHisApiController) CreateHisPrescription() {
|
259
|
278
|
prescribing_number = advice.(map[string]interface{})["prescribing_number"].(float64)
|
260
|
279
|
}
|
261
|
280
|
|
|
281
|
+ if advice.(map[string]interface{})["prescribing_number_unit"] != nil && reflect.TypeOf(advice.(map[string]interface{})["prescribing_number_unit"]).String() == "string" {
|
|
282
|
+ prescribingNumberUnit, _ = advice.(map[string]interface{})["prescribing_number_unit"].(string)
|
|
283
|
+ }
|
|
284
|
+
|
262
|
285
|
drug, _ := service.FindBaseDrugLibRecord(adminInfo.Org.Id, drug_id)
|
263
|
286
|
if drug.ID == 0 {
|
264
|
287
|
c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
|
265
|
288
|
return
|
266
|
289
|
}
|
267
|
290
|
|
268
|
|
- if prescribing_number > drug.Total {
|
269
|
|
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOutOfStockParamWrong)
|
270
|
|
- return
|
|
291
|
+ if prescribingNumberUnit == drug.MinUnit {
|
|
292
|
+ if prescribing_number > drug.Total {
|
|
293
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOutOfStockParamWrong)
|
|
294
|
+ return
|
|
295
|
+ }
|
|
296
|
+ } else {
|
|
297
|
+ if prescribingNumberUnit == drug.MaxUnit {
|
|
298
|
+ num := prescribing_number * float64(drug.MinNumber)
|
|
299
|
+ if num > drug.Total {
|
|
300
|
+ c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOutOfStockParamWrong)
|
|
301
|
+ return
|
|
302
|
+ }
|
|
303
|
+ }
|
271
|
304
|
}
|
272
|
305
|
}
|
273
|
306
|
}
|
|
@@ -596,22 +629,81 @@ func (c *MobileHisApiController) setAdviceWithJSON(advice *models.HisDoctorAdvic
|
596
|
629
|
advice.PrescribingNumber = prescribingNumber
|
597
|
630
|
}
|
598
|
631
|
|
|
632
|
+ if json["prescribing_number_unit"] != nil && reflect.TypeOf(json["prescribing_number_unit"]).String() == "string" {
|
|
633
|
+ prescribingNumberUnit, _ := json["prescribing_number_unit"].(string)
|
|
634
|
+ advice.PrescribingNumberUnit = prescribingNumberUnit
|
|
635
|
+ }
|
|
636
|
+
|
599
|
637
|
drug, _ := service.FindBaseDrugLibRecord(advice.UserOrgId, advice.DrugId)
|
600
|
638
|
if advice.ID == 0 { //医嘱不存在
|
601
|
|
- drug.Total = drug.Total - advice.PrescribingNumber
|
602
|
|
- service.UpdateBaseDrugLib(&drug)
|
603
|
|
- } else if advice.ID > 0 { //医嘱存在
|
604
|
|
- hisAdvice, _ := service.GetHisDoctorAdvicesById(advice.ID)
|
605
|
|
- var num float64
|
606
|
|
- if hisAdvice.PrescribingNumber > advice.PrescribingNumber {
|
607
|
|
- num = hisAdvice.PrescribingNumber - advice.PrescribingNumber
|
608
|
|
- drug.Total = drug.Total + num
|
|
639
|
+ if advice.PrescribingNumberUnit == drug.MinUnit { //当前数据单位与基础库一致为最小单位,直接计算
|
|
640
|
+ drug.Total = drug.Total - advice.PrescribingNumber
|
609
|
641
|
service.UpdateBaseDrugLib(&drug)
|
610
|
|
- } else if hisAdvice.PrescribingNumber < advice.PrescribingNumber {
|
611
|
|
- num = advice.PrescribingNumber - hisAdvice.PrescribingNumber
|
|
642
|
+
|
|
643
|
+ } else if advice.PrescribingNumberUnit == drug.MaxUnit { //当前数据单位为最大单位,需要将最大单位转为最小单位
|
|
644
|
+ num := advice.PrescribingNumber * float64(drug.MinNumber)
|
612
|
645
|
drug.Total = drug.Total - num
|
613
|
646
|
service.UpdateBaseDrugLib(&drug)
|
614
|
647
|
}
|
|
648
|
+
|
|
649
|
+ } else if advice.ID > 0 { //医嘱存在
|
|
650
|
+ hisAdvice, _ := service.GetHisDoctorAdvicesById(advice.ID)
|
|
651
|
+ var num float64
|
|
652
|
+
|
|
653
|
+ if advice.PrescribingNumberUnit == drug.MinUnit { //当前数据为最小单位
|
|
654
|
+ if advice.PrescribingNumberUnit == hisAdvice.PrescribingNumberUnit { //原数据为最小单位,三个单位一致为最小单位直接计算
|
|
655
|
+ if hisAdvice.PrescribingNumber > advice.PrescribingNumber {
|
|
656
|
+ num = hisAdvice.PrescribingNumber - advice.PrescribingNumber
|
|
657
|
+ drug.Total = drug.Total + num
|
|
658
|
+ service.UpdateBaseDrugLib(&drug)
|
|
659
|
+ } else if hisAdvice.PrescribingNumber < advice.PrescribingNumber {
|
|
660
|
+ num = advice.PrescribingNumber - hisAdvice.PrescribingNumber
|
|
661
|
+ drug.Total = drug.Total - num
|
|
662
|
+ service.UpdateBaseDrugLib(&drug)
|
|
663
|
+ }
|
|
664
|
+ } else { //原数据为最大单位,需要将最大单位数量转为最小单位数量
|
|
665
|
+ num2 := hisAdvice.PrescribingNumber * float64(drug.MinNumber)
|
|
666
|
+ if num2 > advice.PrescribingNumber {
|
|
667
|
+ num = num2 - advice.PrescribingNumber
|
|
668
|
+ drug.Total = drug.Total + num
|
|
669
|
+ service.UpdateBaseDrugLib(&drug)
|
|
670
|
+ } else if num2 < advice.PrescribingNumber {
|
|
671
|
+ num = advice.PrescribingNumber - num2
|
|
672
|
+ drug.Total = drug.Total - num
|
|
673
|
+ service.UpdateBaseDrugLib(&drug)
|
|
674
|
+ }
|
|
675
|
+
|
|
676
|
+ }
|
|
677
|
+
|
|
678
|
+ } else if advice.PrescribingNumberUnit == drug.MaxUnit { //当前数据为最大单位
|
|
679
|
+ if advice.PrescribingNumberUnit == hisAdvice.PrescribingNumberUnit { //原数据为最大单位, 当前数据单位和原数据单位都为最大单位,需要将两个数据转成最小单位
|
|
680
|
+ num1 := hisAdvice.PrescribingNumber * float64(drug.MinNumber)
|
|
681
|
+ num2 := advice.PrescribingNumber * float64(drug.MinNumber)
|
|
682
|
+ if num1 > num2 {
|
|
683
|
+ num = num1 - num2
|
|
684
|
+ drug.Total = drug.Total + num
|
|
685
|
+ service.UpdateBaseDrugLib(&drug)
|
|
686
|
+ } else if num1 < num2 {
|
|
687
|
+ num = num2 - num1
|
|
688
|
+ drug.Total = drug.Total - num
|
|
689
|
+ service.UpdateBaseDrugLib(&drug)
|
|
690
|
+ }
|
|
691
|
+
|
|
692
|
+ } else { //原数据为最小单位,当前数据为最大单位,需要将当前数据数量转为最小单位数量
|
|
693
|
+ num2 := advice.PrescribingNumber * float64(drug.MinNumber)
|
|
694
|
+ //num2 := hisAdvice.PrescribingNumber * (drug.Dose / float64(drug.MinNumber))
|
|
695
|
+ if hisAdvice.PrescribingNumber > num2 {
|
|
696
|
+ num = hisAdvice.PrescribingNumber - num2
|
|
697
|
+ drug.Total = drug.Total + num
|
|
698
|
+ service.UpdateBaseDrugLib(&drug)
|
|
699
|
+ } else if num2 < advice.PrescribingNumber {
|
|
700
|
+ num = num2 - hisAdvice.PrescribingNumber
|
|
701
|
+ drug.Total = drug.Total - num
|
|
702
|
+ service.UpdateBaseDrugLib(&drug)
|
|
703
|
+ }
|
|
704
|
+
|
|
705
|
+ }
|
|
706
|
+ }
|
615
|
707
|
}
|
616
|
708
|
|
617
|
709
|
//
|
|
@@ -670,10 +762,6 @@ func (c *MobileHisApiController) setAdviceWithJSON(advice *models.HisDoctorAdvic
|
670
|
762
|
advice.SingleDoseUnit = singleDoseUnit
|
671
|
763
|
}
|
672
|
764
|
|
673
|
|
- if json["prescribing_number_unit"] != nil && reflect.TypeOf(json["prescribing_number_unit"]).String() == "string" {
|
674
|
|
- prescribingNumberUnit, _ := json["prescribing_number_unit"].(string)
|
675
|
|
- advice.PrescribingNumberUnit = prescribingNumberUnit
|
676
|
|
- }
|
677
|
765
|
if json["delivery_way"] != nil && reflect.TypeOf(json["delivery_way"]).String() == "string" {
|
678
|
766
|
deliveryWay, _ := json["delivery_way"].(string)
|
679
|
767
|
advice.DeliveryWay = deliveryWay
|