diff --git a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php new file mode 100644 index 00000000..55fd376a --- /dev/null +++ b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php @@ -0,0 +1,192 @@ + ':attribute harus diisi', + 'integer' => ':attribute harus angka', + 'unique' => ':attribute (:input) sudah ada', + 'max' => ':attribute maximal :max karakter', + 'exists' => ':attribute (:input) tidak ditemukan', + 'numeric' => ':attribute harus angka', + 'digits_between'=> ':attribute maximal :max digit minimal :min digit' + ]; + } + + /** + * Member List + */ + public function GetMemberList() + { + $memberList = DB::table('claims') + ->leftJoin('members', 'claims.member_id', '=', 'members.id') + ->leftJoin('member_plans', 'members.id', '=', 'member_plans.id') + ->select('members.member_id','members.name','member_plans.start AS startdate','member_plans.end AS enddate') + ->groupBy('claims.member_id') + ->orderBy('claims.created_at', 'desc') + ->get(); + + return response()->json([ + 'error' => false, + 'message' => "success", + 'data' => [ + 'member_list'=> $memberList, + ] + ],200); + } + + /** + * Claim List - by member id + */ + public function GetClaimList(Request $request, $member_id) + { + $memberDetail = DB::table('members') + ->select('id','member_id','name') + ->where('member_id', $member_id) + ->first(); + + $claimList = DB::table('claims') + ->leftJoin('claim_requests', 'claims.claim_request_id', '=', 'claim_requests.id') + ->leftJoin('services', 'claim_requests.service_code', '=', 'services.code') + ->leftJoin('members', 'claims.member_id', '=', 'members.id') + ->select('claims.id AS claim_id','claims.admission_dates','claims.discharge_dates','claim_requests.code AS claim_code','services.name AS service_type','claims.status AS claim_status','members.member_id',) + ->where("claims.member_id", "=", $memberDetail->id) + ->get(); + + return response()->json([ + 'error' => false, + 'message' => "success", + 'data' => [ + 'member_detail'=> $memberDetail, + 'claim_list' => $claimList, + ] + ],200); + } + + /** + * Detail Monitoring List - by claim_code + */ + public function GetDetailMonitoringList(Request $request, $claim_code) + { + // get claim request + $claim_request = DB::table('claim_requests') + ->select('id') + ->where('code', $claim_code) + ->first(); + + // get claim + $claim = DB::table('claims') + ->select('id') + ->where('claim_request_id', empty($claim_request)==false ? $claim_request->id : '') + ->first(); + + $detail_list = ClaimDailyMonitoring::where('claim_id', empty($claim) == false ? $claim->id : '')->get()->makeHidden(['updated_at']); + + return response()->json([ + 'error' => false, + 'message' => "success", + 'data' => [ + 'detail_list'=> $detail_list, + ] + ],200); + } + + /** + * Add Detail Monitoring List + */ + public function AddDetailMonitoringList(Request $request, $claim_code) + { + $request->merge(['claim_code' => $claim_code]); + + // validation rule + $validator = Validator::make($request->all(),[ + 'claim_code' => 'required|exists:claim_requests,code', + 'subject' => 'required', + 'sistole' => 'required|numeric', + 'diastole' => 'required|numeric', + 'body_temperature' => 'required|numeric', + 'respiration_rate' => 'required|numeric', + 'analysis' => 'required', + 'complaints' => 'required', + 'medical_plan' => 'required', + ],$this->messages()); + + // validation error + if ($validator->fails()) { + return response()->json([ + 'error' => true, + 'message' => $validator->getMessageBag() + ],400); + } + + // get claim request + $claim_request = DB::table('claim_requests') + ->select('id') + ->where('code', $claim_code) + ->first(); + + // get claim + $claim = DB::table('claims') + ->select('id') + ->where('claim_request_id', $claim_request->id) + ->first(); + + DB::beginTransaction(); + + try { + // insert claim daily monitoring + $db_response = ClaimDailyMonitoring::create([ + 'claim_id' => $claim->id, + 'subject' => $request->subject, + 'sistole' => $request->sistole, + 'diastole' => $request->diastole, + 'body_temperature' => $request->body_temperature, + 'respiration_rate' => $request->respiration_rate, + 'analysis' => $request->analysis, + 'complaints' => $request->complaints, + ]); + + // insert medical plan + foreach ($request->medical_plan as $row) { + MedicalPlan::create([ + 'claim_daily_monitoring_id' => $db_response->id, + 'plan' => $row['medical_plan_str'], + ]); + } + + DB::commit(); + + return response()->json([ + 'error' => false, + 'message' => "success", + 'data' => [] + ],200); + } + catch (Exception $e) { + DB::rollBack(); + + return response()->json([ + 'error' => true, + 'message' => $e->getMessage(), + 'data' => [] + ],500); + } + } +} diff --git a/app/Models/ClaimDailyMonitoring.php b/app/Models/ClaimDailyMonitoring.php new file mode 100644 index 00000000..1fd11fb9 --- /dev/null +++ b/app/Models/ClaimDailyMonitoring.php @@ -0,0 +1,59 @@ +attributes['body_temperature'], 0); + } + + public function getSistoleAttribute() + { + return round($this->attributes['sistole'], 0); + } + + public function getDiastoleAttribute() + { + return round($this->attributes['diastole'], 0); + } + + public function getRespirationRateAttribute() + { + return round($this->attributes['respiration_rate'], 0); + } + + public function getMedicalPlanAttribute() + { + $arr_medical_plan = []; + $medical_plan = DB::table('medical_plan')->where('claim_daily_monitoring_id','=',$this->attributes['id'])->get(); + + foreach ($medical_plan as $row) { + $arr_medical_plan[] = $row->plan; + } + + return $arr_medical_plan; + } +} diff --git a/app/Models/MedicalPlan.php b/app/Models/MedicalPlan.php new file mode 100644 index 00000000..41bc2570 --- /dev/null +++ b/app/Models/MedicalPlan.php @@ -0,0 +1,18 @@ +bigIncrements('id'); + $table->integer('claim_id'); + $table->text('subject'); + $table->decimal('body_temperature', 11, 2); + $table->decimal('respiration_rate', 11, 2); + $table->decimal('sistole', 11, 2); + $table->decimal('diastole', 11, 2); + $table->text('analysis'); + $table->text('complaints'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('claim_daily_monitoring'); + } +}; diff --git a/database/migrations/2023_10_27_112206_create_medical_plan_table.php b/database/migrations/2023_10_27_112206_create_medical_plan_table.php new file mode 100644 index 00000000..35306662 --- /dev/null +++ b/database/migrations/2023_10_27_112206_create_medical_plan_table.php @@ -0,0 +1,33 @@ +bigIncrements('id'); + $table->bigInteger('claim_daily_monitoring_id'); + $table->text('plan'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('medical_plan'); + } +};