update backend claim history hospital

This commit is contained in:
2023-10-27 09:28:08 +07:00
parent a53a546f1f
commit 63af52cb85
10 changed files with 317 additions and 0 deletions

View File

@@ -8,6 +8,8 @@ use App\Models\Claim;
use App\Models\Icd;
use App\Models\Member;
use App\Models\Organization;
use App\Models\ClaimHistoryCare;
use App\Models\DiagnosisSecondaryClaimHistoryCare;
use App\Services\ClaimService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
@@ -16,6 +18,7 @@ use Modules\HospitalPortal\Helpers\ApiResponse;
use Illuminate\Support\Facades\Validator;
use Modules\Internal\Transformers\ClaimShowResource;
use Modules\Internal\Transformers\ClaimEditResource;
use Modules\Internal\Transformers\ClaimHistoryCareResource;
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
@@ -526,4 +529,96 @@ class ClaimController extends Controller
"file_url" => url('files/Benefit Usage Report.xlsx')
]);
}
//////////////////// History Care Hospital ///////////////////////////
public function storeHistoryCare(Request $request, $id){
$request->validate([
'service_code' => 'required',
'admision_date' => 'required',
'discharge_date' => 'required',
'organization_id' => 'required',
'practitioner_id' => 'required',
'medical_record_number' => 'required',
'symptoms' => 'required',
'sign' => 'required',
'main_diagnosis_id' => 'required',
]);
$data = [
'service_code' => $request->service_code,
'admision_date' => $request->admision_date,
'discharge_date' => $request->discharge_date,
'organization_id' => $request->organization_id,
'practitioner_id' => $request->practitioner_id,
'medical_record_number' => $request->medical_record_number,
'symptoms' => $request->symptoms,
'sign' => $request->sign,
'claim_id' => $id,
'main_diagnosis_id' => $request->main_diagnosis_id,
'status' => 0,
];
$claimHistoryCare = ClaimHistoryCare::create($data);
if (count($request->secondary_diagnosis_id)) {
foreach($request->secondary_diagnosis_id as $value){
$dataSecondary = [
'claim_history_care_id' => $claimHistoryCare->id,
'icd_id' => intval($value)
];
DiagnosisSecondaryClaimHistoryCare::create($dataSecondary);
}
}
return Helper::responseJson($claimHistoryCare);
}
public function updateHistoryCare(Request $request, $id){
$data = $request->validate([
'service_code' => 'required',
'admision_date' => 'required',
'discharge_date' => 'required',
'organization_id' => 'required',
'practitioner_id' => 'required',
'medical_record_number' => 'required',
'symptoms' => 'required',
'sign' => 'required',
'main_diagnosis_id' => 'required',
]);
// $data['status'] = 0;
$claimHistoryCare = ClaimHistoryCare::findOrFail($id);
$claimHistoryCare->update($data);
// Hapus diagnosis sekunder yang terkait
DiagnosisSecondaryClaimHistoryCare::where('claim_history_care_id', $id)->delete();
if (count($request->secondary_diagnosis_id)) {
foreach ($request->secondary_diagnosis_id as $value) {
$dataSecondary = [
'claim_history_care_id' => $claimHistoryCare->id,
'icd_id' => intval($value),
];
DiagnosisSecondaryClaimHistoryCare::create($dataSecondary);
}
}
return Helper::responseJson(message: 'Data Berhasil di update');
}
public function showHistoryCare($id){
$data = ClaimHistoryCare::with(['organization', 'practitioner', 'practitioner.person', 'icd'])->find($id);
return Helper::responseJson(ClaimHistoryCareResource::make($data));
}
public function approvalHistoryCare(Request $request, $id){
$claimHistoryCare = ClaimHistoryCare::findOrFail($id);
$claimHistoryCare->status = $request->status;
$claimHistoryCare->save();
return Helper::responseJson(message: 'Data Berhasil di update');
}
}

View File

@@ -191,6 +191,12 @@ Route::prefix('internal')->group(function () {
Route::post('claims/{id}/decline', [ClaimController::class, 'decline'])->name('claim.decline');
Route::post('claims/{id}/approve', [ClaimController::class, 'approve'])->name('claim.approve');
Route::post('claims/{id}/re-open', [ClaimController::class, 'reOpen'])->name('claim.re-open');
Route::post('claims/{id}/carehistory', [ClaimController::class, 'storeHistoryCare']);
Route::post('claims/carehistory/{id}/update', [ClaimController::class, 'updateHistoryCare']);
Route::get('claims/carehistory/{id}', [ClaimController::class, 'showHistoryCare']);
Route::post('claims/carehistory/{id}/approval', [ClaimController::class, 'approvalHistoryCare']);
Route::post('claims', [ClaimController::class, 'store']);
Route::get('claims/{id}', [ClaimController::class, 'show']);
Route::put('claims/{id}', [ClaimController::class, 'update']);

View File

@@ -0,0 +1,44 @@
<?php
namespace Modules\Internal\Transformers;
use App\Models\DiagnosisSecondaryClaimHistoryCare;
use App\Models\Icd;
use Illuminate\Http\Resources\Json\JsonResource;
class ClaimHistoryCareResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request
* @return array
*/
public function toArray($request)
{
$claim = parent::toArray($request);
$secondaryDiagnosis = DiagnosisSecondaryClaimHistoryCare::where('claim_history_care_id', $claim['id'])->with(['icd'])->get()->toArray();
$data = [
'id' => $claim['id'],
'service_code' => $claim['service_code'],
'admision_date' => $claim['admision_date'],
'discharge_date' => $claim['discharge_date'],
'claim_id' => $claim['claim_id'],
'organization_id' => $claim['organization_id'],
'organization_name' => $claim['organization'] ? $claim['organization']['name'] : '-',
'practitioner_id' => $claim['practitioner_id'],
'practitioner_name' => $claim['practitioner'] ? $claim['practitioner']['person']['name'] : '-',
'medical_record_number' => $claim['medical_record_number'],
'symptoms' => $claim['symptoms'],
'sign' => $claim['sign'],
'main_diagnosis_id' => $claim['main_diagnosis_id'],
'main_diagnosis_name' => $claim['icd'] ? $claim['icd']['name'] : '-',
'status' => $claim['status'],
'secondary_diagnosis' => $secondaryDiagnosis,
];
return $data;
}
}

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ClaimHistoryCare extends Model
{
use HasFactory;
protected $fillable = [
'service_code',
'admision_date',
'discharge_date',
'claim_id',
'organization_id',
'practitioner_id',
'medical_record_number',
'symptoms',
'sign',
'main_diagnosis_id',
'status'
];
protected $hidden = [
'created_at',
'updated_at',
];
public function organization()
{
return $this->belongsTo(Organization::class, 'organization_id');
}
public function practitioner()
{
return $this->belongsTo(Practitioner::class, 'practitioner_id');
}
public function icd()
{
return $this->belongsTo(Icd::class, 'main_diagnosis_id');
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class DiagnosisSecondaryClaimHistoryCare extends Model
{
use HasFactory;
protected $table = 'diagnosis_secondary_claim_history_care';
protected $fillable = [
'claim_history_care_id',
'icd_id',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function icd()
{
return $this->belongsTo(Icd::class, 'icd_id');
}
}

View File

@@ -74,4 +74,14 @@ class Icd extends Model
});
}
public function claim_history_care()
{
return $this->hasMany(CliamHistoryCare::class, 'main_diagnosis_id', 'id');
}
public function diagnosis_secondary_claim_history_care()
{
return $this->hasMany(DiagnosisSecondaryCliamHistoryCare::class, 'icd_id', 'id');
}
}

View File

@@ -107,4 +107,8 @@ class Organization extends Model
{
return $this->hasMany(ClaimRequest::class, 'organization_id', 'id');
}
public function claim_history_care()
{
return $this->hasOne(ClaimHistoryCare::class, 'organization_id', 'id');
}
}

View File

@@ -47,4 +47,11 @@ class Practitioner extends Model
{
return $this->hasMany(PractitionerRole::class, 'practitioner_id');
}
public function claim_history_care()
{
return $this->hasMany(ClaimHistoryCare::class, 'practitioner_id');
}
}

View File

@@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('claim_history_cares', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('service_code');
$table->date('admision_date');
$table->date('discharge_date');
$table->integer('claim_id');
$table->integer('organization_id');
$table->integer('practitioner_id');
$table->string('medical_record_number');
$table->string('symptoms');
$table->string('sign');
$table->integer('main_diagnosis_id');
$table->integer('status');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('claim_history_cares');
}
};

View File

@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('diagnosis_secondary_claim_history_care', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->integer('claim_history_care_id');
$table->integer('icd_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('diagnosis_secondary_claim_history_care');
}
};