PatientController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: zilongs
  5. * Date: 20-10-2
  6. * Time: 下午8:46
  7. */
  8. namespace App\Http\Controllers\Api\V1;
  9. use App\Models\Order;
  10. use App\Models\OrderPack;
  11. use App\Models\Patient;
  12. class PatientController extends AuthController
  13. {
  14. public function createPatient()
  15. {
  16. $req = request()->post();
  17. $this->validate(request(), [
  18. 'name' => 'required|max:50',
  19. 'sex' => 'required|in:1,2',
  20. 'avatar' => 'required|url',
  21. 'birthday' => 'required|date',
  22. 'relationship_type' => 'required|integer',
  23. 'info' => 'max:1000',
  24. 'card_type' => 'in:0,1,2',
  25. 'card_number' => 'max:50',
  26. 'email' => 'email',
  27. 'phone' => 'required',
  28. 'guardian_name' => 'max:50',
  29. 'address' => 'required',
  30. 'born_hospital' => 'max:100',
  31. 'social_card_number' => 'max:50',
  32. 'latitude' => 'numeric',
  33. 'longitude' => 'numeric',
  34. ]);
  35. $user = $this->user;
  36. $req['user_id'] = $user['id'];
  37. Patient::create($req);
  38. return out();
  39. }
  40. public function updatePatient()
  41. {
  42. $req = request()->post();
  43. $this->validate(request(), [
  44. 'id' => 'required|integer',
  45. 'name' => 'required|max:50',
  46. 'sex' => 'required|in:1,2',
  47. 'avatar' => 'required|url',
  48. 'birthday' => 'required|date',
  49. 'relationship_type' => 'required|integer',
  50. 'info' => 'max:1000',
  51. 'card_type' => 'in:0,1,2',
  52. 'card_number' => 'max:50',
  53. 'email' => 'email',
  54. 'phone' => 'required',
  55. 'guardian_name' => 'max:50',
  56. 'address' => 'required',
  57. 'born_hospital' => 'max:100',
  58. 'social_card_number' => 'max:50',
  59. 'latitude' => 'numeric',
  60. 'longitude' => 'numeric',
  61. ]);
  62. $user = $this->user;
  63. Patient::where('id', $req['id'])->where('user_id', $user['id'])->update($req);
  64. return out();
  65. }
  66. public function submitCardImg()
  67. {
  68. $req = request()->post();
  69. $this->validate(request(), [
  70. 'id' => 'required|integer',
  71. 'card_img_url' => 'required|url',
  72. 'card_back_img_url' => 'required|url',
  73. ]);
  74. $user = $this->user;
  75. Patient::where('id', $req['id'])->where('user_id', $user['id'])->update($req);
  76. return out();
  77. }
  78. public function patientList()
  79. {
  80. $user = $this->user;
  81. $data = Patient::where('user_id', $user['id'])->orderBy('id', 'desc')->paginate();
  82. foreach ($data as $k => $v) {
  83. $v->append(['order_num', 'pack_docter_num', 'perfectd_degree']);
  84. }
  85. return out($data);
  86. }
  87. public function patientDetail()
  88. {
  89. $req = request()->post();
  90. $this->validate(request(), [
  91. 'patient_id' => 'required|integer',
  92. ]);
  93. $user = $this->user;
  94. $data = [];
  95. $data['patient'] = Patient::where('id', $req['patient_id'])->where('user_id', $user['id'])->first()->append(['order_num', 'pack_docter_num', 'perfectd_degree']);
  96. $data['orders']['cases'] = Order::with(['docter.office', 'docter.qualification', 'organization.docter'])->where('user_id', $user['id'])->where('patient_id', $req['patient_id'])->where('product_type', '<', 6)->orderBy('id', 'desc')->get();
  97. //只输出未过期的服务包
  98. $orderIds = OrderPack::where('user_id', $user['id'])->where('end_time', '<=', time())->pluck('order_id')->toArray();
  99. $data['orders']['service_packs'] = Order::with('orderPack')->whereIn('id', $orderIds)->where('user_id', $user['id'])->where('patient_id', $req['patient_id'])->whereIn('order_status', [2,3])->where('product_type', 6)->orderBy('id', 'desc')->get();
  100. return out($data);
  101. }
  102. }