Add treat care request endpoints
This commit is contained in:
parent
1436dbda22
commit
eb3afacf63
|
@ -141,8 +141,8 @@ class Kernel extends ConsoleKernel
|
||||||
mkdir(public_path($directoryName), 0755);
|
mkdir(public_path($directoryName), 0755);
|
||||||
}
|
}
|
||||||
|
|
||||||
$title = trans('messages.invoice') . ' ' . $invoice->period;
|
$title = $agent->lastname . ' - ' . trans('messages.invoice') . ' ' . $invoice->invoice_id;
|
||||||
$message = $title;
|
$message = __('messages.generated_invoice_mail', ['agent' => $agent->lastname, 'period' => $invoice->period]);
|
||||||
|
|
||||||
$file = PDF::loadView('emails.invoice', $invoice->toArray())->setPaper('a4', 'landscape')->setWarnings(false)->save(public_path($directoryName . $filename));
|
$file = PDF::loadView('emails.invoice', $invoice->toArray())->setPaper('a4', 'landscape')->setWarnings(false)->save(public_path($directoryName . $filename));
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ use App\Models\NhHealthCareSheetsExam;
|
||||||
use App\Models\NhHealthCareSheetsHistory;
|
use App\Models\NhHealthCareSheetsHistory;
|
||||||
use App\Models\NhHealthCareSheetsPerformance;
|
use App\Models\NhHealthCareSheetsPerformance;
|
||||||
use App\Models\NhHealthCareSheetsPrescription;
|
use App\Models\NhHealthCareSheetsPrescription;
|
||||||
|
use App\Models\NhInfosAuthorizationOfCareRequest;
|
||||||
use App\Models\NhInfosHealthCareSheets;
|
use App\Models\NhInfosHealthCareSheets;
|
||||||
use App\Models\NhInsurance;
|
use App\Models\NhInsurance;
|
||||||
use App\Models\NhMedicalPrescription;
|
use App\Models\NhMedicalPrescription;
|
||||||
|
@ -27,6 +28,7 @@ use App\Models\NhValidatingAgent;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Traits\ApiResponser;
|
use App\Traits\ApiResponser;
|
||||||
use App\Traits\Helper;
|
use App\Traits\Helper;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Event;
|
use Illuminate\Support\Facades\Event;
|
||||||
|
@ -136,6 +138,118 @@ class AuthorizationCareRequestController extends Controller
|
||||||
return $this->successResponse(__('messages.new_care_authorisation_sent'));
|
return $this->successResponse(__('messages.new_care_authorisation_sent'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function treatRequest(Request $request)
|
||||||
|
{
|
||||||
|
$this->validate($request, [
|
||||||
|
'request_id' => 'required|integer|exists:nh_authorization_of_care_requests,id',
|
||||||
|
'validating_agent_id' => 'required|integer|exists:nh_validating_agents,id',
|
||||||
|
'action' => 'required|in:ACCEPT,REJECT'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$action = $request->input('action');
|
||||||
|
$validating_agent_id = $request->input('validating_agent_id');
|
||||||
|
$request = NhAuthorizationOfCareRequest::findOrFail($request->input('request_id'));
|
||||||
|
|
||||||
|
if ($request->state != InsuranceSubscriptionState::UNDER_VALIDATION) {
|
||||||
|
return $this->errorResponse(trans('errors.care_request_already_been_processed'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$datetime = $this->getCurrentTimeByCountryCode($request->user->network->country->code_country);
|
||||||
|
|
||||||
|
if ($action == 'ACCEPT') {
|
||||||
|
$request->state = InsuranceSubscriptionState::ACCEPTED;
|
||||||
|
$message = trans('messages.care_request_accepted');
|
||||||
|
$notification = trans('messages.care_request_accepted_notification', ['request_id' => $request->request_id]);
|
||||||
|
} else {
|
||||||
|
$request->state = InsuranceSubscriptionState::REJECTED;
|
||||||
|
$message = trans('messages.care_request_rejected');
|
||||||
|
$notification = trans('messages.care_request_rejected_notification', ['request_id' => $request->request_id]);
|
||||||
|
|
||||||
|
}
|
||||||
|
$request->validating_agent_id = $validating_agent_id;
|
||||||
|
$request->updated_at = $datetime;
|
||||||
|
$request->save();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$client = new Client([
|
||||||
|
'base_uri' => config('services.notification_service.base_uri'),
|
||||||
|
]);
|
||||||
|
$headers = [
|
||||||
|
'Authorization' => config('services.notification_service.key'),
|
||||||
|
];
|
||||||
|
$body = new stdClass();
|
||||||
|
$body->user_code = $request->user->user_code;
|
||||||
|
$body->message = $notification;
|
||||||
|
$body->date = $datetime;
|
||||||
|
|
||||||
|
$data = new stdClass();
|
||||||
|
$data->screen = "notificationview";
|
||||||
|
$data->data = new stdClass();
|
||||||
|
$body->data = $data;
|
||||||
|
$client->request('POST', '/onesignal/pushToUser', ['json' => $body, 'headers' => $headers]);
|
||||||
|
} catch (Throwable $t) {
|
||||||
|
Log::error('-------- Treat Care Request notification not sent-----------');
|
||||||
|
Log::error($t->getMessage() . '\n' . $t->getTraceAsString());
|
||||||
|
}
|
||||||
|
return $this->successResponse($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Get(
|
||||||
|
* path="/authorizations-care-requests",
|
||||||
|
* summary="Lister toutes les demandes autorisation de soin",
|
||||||
|
* tags={"Demandes d'autorisation de soins"},
|
||||||
|
* security={{"api_key":{}}},
|
||||||
|
* @OA\Parameter(
|
||||||
|
* parameter="user_id",
|
||||||
|
* name="user_id",
|
||||||
|
* description="ID de l'utilisateur",
|
||||||
|
* in="query",
|
||||||
|
* required=true,
|
||||||
|
* @OA\Schema(
|
||||||
|
* type="integer",
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Parameter(
|
||||||
|
* parameter="page",
|
||||||
|
* name="page",
|
||||||
|
* description="Page",
|
||||||
|
* in="query",
|
||||||
|
* required=false,
|
||||||
|
* @OA\Schema(
|
||||||
|
* type="integer"
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="OK",
|
||||||
|
* @OA\JsonContent(
|
||||||
|
* ref="#/components/schemas/ApiResponse",
|
||||||
|
* example = {
|
||||||
|
* "status" : 200,
|
||||||
|
* "response" : {{"id":2,"request_id":"E7879YZMOFOE","user_id":349,"act_id":7,"state":"EN COURS DE VALIDATION","validating_agent_id":null,"created_at":"2022-02-01T10:00:02.000000Z","updated_at":"2022-02-01T10:00:02.000000Z","
|
||||||
|
* act_name":"Les analyses de biologie m\u00e9dicale","act_code":"CODE4","network_id":250,"user_lastname":"Tom Di","user_firstname":null,"user_phone":"+237690716648","user_email":"ddoubletom@gmail.com","validating_agent_lastname":null,
|
||||||
|
* "validating_agent_firstname":null,"validating_agent_phone":null,"validating_agent_email":null,"network":{"id":250,"name":"Cnamgs-pharmacies"}}},
|
||||||
|
* "error":null
|
||||||
|
* }
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
public function getAll(Request $request)
|
||||||
|
{
|
||||||
|
$this->validate($request, [
|
||||||
|
'user_id' => 'nullable|integer|exists:users,id'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$requests = NhInfosAuthorizationOfCareRequest::with(['network:id,name'])->where('user_id', $request->input('user_id'))
|
||||||
|
->paginate($request->input('perPage', 10));
|
||||||
|
foreach ($requests->items() as $r) {
|
||||||
|
$r->state = trans('states.' . $r->state);
|
||||||
|
}
|
||||||
|
return $this->successResponse($requests);
|
||||||
|
}
|
||||||
|
|
||||||
private function generateRequestID(): string
|
private function generateRequestID(): string
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -116,8 +116,8 @@ class InvoiceController extends Controller
|
||||||
mkdir(public_path($directoryName), 0755);
|
mkdir(public_path($directoryName), 0755);
|
||||||
}
|
}
|
||||||
|
|
||||||
$title = trans('messages.invoice') . ' ' . $invoice->period;
|
$title = $agent->lastname . ' - ' . trans('messages.invoice') . ' ' . $invoice->invoice_id;
|
||||||
$message = $title;
|
$message = __('messages.generated_invoice_mail', ['agent' => $agent->lastname, 'period' => $invoice->period]);
|
||||||
|
|
||||||
$file = PDF::loadView('emails.invoice', $invoice->toArray())->setPaper('a4', 'landscape')->setWarnings(false)->save(public_path($directoryName . $filename));
|
$file = PDF::loadView('emails.invoice', $invoice->toArray())->setPaper('a4', 'landscape')->setWarnings(false)->save(public_path($directoryName . $filename));
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||||
* @property int $user_id
|
* @property int $user_id
|
||||||
* @property int $act_id
|
* @property int $act_id
|
||||||
* @property string $state
|
* @property string $state
|
||||||
|
* @property int|null $validating_agent_id
|
||||||
* @property Carbon $created_at
|
* @property Carbon $created_at
|
||||||
* @property Carbon $updated_at
|
* @property Carbon $updated_at
|
||||||
*
|
*
|
||||||
|
@ -35,6 +36,12 @@ class NhAuthorizationOfCareRequest extends Model
|
||||||
'request_id',
|
'request_id',
|
||||||
'user_id',
|
'user_id',
|
||||||
'act_id',
|
'act_id',
|
||||||
'state'
|
'state',
|
||||||
|
'validating_agent_id'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(User::class, 'user_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Reliese Model.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class NhInfosAuthorizationOfCareRequest extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'nh_infos_authorization_of_care_requests';
|
||||||
|
|
||||||
|
public function network()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Network::class, 'network_id');
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,6 +19,7 @@ class CreateNhAuthorizationOfCareRequestsTable extends Migration
|
||||||
$table->integer('user_id');
|
$table->integer('user_id');
|
||||||
$table->integer('act_id');
|
$table->integer('act_id');
|
||||||
$table->enum('state', ['UNDER_VALIDATION', 'ACCEPTED', 'REJECTED'])->default('UNDER_VALIDATION');
|
$table->enum('state', ['UNDER_VALIDATION', 'ACCEPTED', 'REJECTED'])->default('UNDER_VALIDATION');
|
||||||
|
$table->integer('validating_agent_id')->nullable();
|
||||||
$table->timestamp('created_at')->useCurrent();
|
$table->timestamp('created_at')->useCurrent();
|
||||||
$table->timestamp('updated_at')->useCurrent();
|
$table->timestamp('updated_at')->useCurrent();
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreaeNhInfosAuthorizationOfCareRequestsView extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
DB::statement("CREATE OR REPLACE VIEW nh_infos_authorization_of_care_requests AS
|
||||||
|
SELECT r.* , na.name as act_name , na.code as act_code, nnc.network_id , u.lastname as user_lastname , u.firstname as user_firstname , u.phone as user_phone, u.email as user_email , nva.lastname as validating_agent_lastname,
|
||||||
|
nva.firstname as validating_agent_firstname , nva.phone as validating_agent_phone, nva.email as validating_agent_email
|
||||||
|
FROM nh_authorization_of_care_requests r JOIN users u ON r.user_id = u.id JOIN nh_acts na on na.id = r.act_id JOIN nh_networks_configs nnc on na.nh_network_config_id = nnc.id
|
||||||
|
LEFT JOIN nh_validating_agents nva on r.validating_agent_id = nva.id");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
|
@ -131,5 +131,10 @@ A new consultation or prescription has been made with your insurance.
|
||||||
'recipient' => "Recipient",
|
'recipient' => "Recipient",
|
||||||
'new_care_authorisation' => "New care authorisation",
|
'new_care_authorisation' => "New care authorisation",
|
||||||
'new_care_authorisation_email' => "Insured :insured requests new care authorisation for procedure :act",
|
'new_care_authorisation_email' => "Insured :insured requests new care authorisation for procedure :act",
|
||||||
'new_care_authorisation_sent' => "New care authorisation request sent"
|
'new_care_authorisation_sent' => "New care authorisation request sent",
|
||||||
|
'care_request_accepted' => "Care request accepted",
|
||||||
|
'care_request_rejected' => "Care request refused",
|
||||||
|
'care_request_rejected_notification' => "Your request for care authorisation :request_id has been refused",
|
||||||
|
'care_request_accepted_notification' => "Your care request :request_id has been accepted",
|
||||||
|
'generated_invoice_mail' => "Invoice issued by :agent for the period :period"
|
||||||
];
|
];
|
||||||
|
|
|
@ -147,5 +147,10 @@ Une nouvelle execution de prescription vient d'etre effectuée sur votre assuran
|
||||||
'recipient' => "Destinataire",
|
'recipient' => "Destinataire",
|
||||||
'new_care_authorisation' => "Nouvelle autorisation de soin",
|
'new_care_authorisation' => "Nouvelle autorisation de soin",
|
||||||
'new_care_authorisation_email' => "L'assuré :insured demande une nouvelle autorisation de soin pour l'acte :act",
|
'new_care_authorisation_email' => "L'assuré :insured demande une nouvelle autorisation de soin pour l'acte :act",
|
||||||
'new_care_authorisation_sent' => "Nouvelle demande autorisation soin envoyée"
|
'new_care_authorisation_sent' => "Nouvelle demande autorisation soin envoyée",
|
||||||
|
'care_request_accepted' => "Demande de soins acceptée",
|
||||||
|
'care_request_rejected' => "Demande de soins refusée",
|
||||||
|
'care_request_rejected_notification' => "Votre demande d'autorisation de soins :request_id a été refusée",
|
||||||
|
'care_request_accepted_notification' => "Votre demande d'autorisation de soins :request_id a été acceptée",
|
||||||
|
'generated_invoice_mail' => "Facture émise par :agent pour la période :period"
|
||||||
];
|
];
|
||||||
|
|
|
@ -53,5 +53,7 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route
|
||||||
$router->get('invoices', 'InvoiceController@getInvoices');
|
$router->get('invoices', 'InvoiceController@getInvoices');
|
||||||
$router->get('generate-invoice', 'InvoiceController@generateInvoice');
|
$router->get('generate-invoice', 'InvoiceController@generateInvoice');
|
||||||
|
|
||||||
|
$router->get('authorizations-care-requests', 'AuthorizationCareRequestController@getAll');
|
||||||
$router->post('authorizations-care-requests', 'AuthorizationCareRequestController@store');
|
$router->post('authorizations-care-requests', 'AuthorizationCareRequestController@store');
|
||||||
|
$router->put('authorizations-care-requests', 'AuthorizationCareRequestController@treatRequest');
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue