File: /var/www/vhost/disk-apps/dev-telemedicina.teky.com.co/app/Http/Controllers/Covid19Controller.php
<?php
namespace Telemedicina\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Telemedicina\ClinicDocument;
use Telemedicina\Covid19;
use Telemedicina\DiagnosticHc;
use Telemedicina\User;
use Telemedicina\ExternalApp;
use Carbon\Carbon;
use DB;
use Config;
class Covid19Controller extends Controller
{
public function index(){
}
public function getCovid19(Request $request){
$obj = ClinicDocument::where('id', $request->id)
->orderBy('created_at', 'DESC')
->with('covid19')
->with('files')
->with('diagnostics')
->with('specialty')
->with('state')
->with('type_care')
->with('user')
->first();
return response()->json($obj);
}
public function proposeCovid19Request(Request $request){
$ea = ExternalApp::where('id', $request->id)->with('city')->with('user')->first();
$u = User::where('id', Auth::user()->id)->with('centro')->first();
$ea = base64_encode( json_encode($ea) );
$u = base64_encode( json_encode($u) );
return view('requests.covid19.step2')
->with('external_app', $ea)
->with('user', $u)
->with('type', 'propose');
}
public function unlockDocument($id){
$obj = ClinicDocument::where('id', $id)->first();
if( $obj->bloqueo_documento == Auth::user()->id || Auth::user()->rol->id == 1){ // Si es el usuario o un admin.
$obj->bloqueo_documento = null;
$obj->save();
$message = __('messages.request.document_lock');
$message = str_replace('<id>', $obj->id, $message);
$data = [
"r"=>true,
"status" => "200",
"id" => $obj->id,
"message" => $message
];
}else{
$message = __('messages.request.user_not_valid');
$message = str_replace('<id>', $obj->id, $message);
$data = [
"r"=>false,
"status" => "200",
"id" => $obj->id,
"message" => $message
];
}
return response()->json($data);
}
public function updateOrCreateUser($obj){
$u = User::where('document', $obj->documento)->first();
if($u){
$u->address = $obj->direccion;
$u->city_id = $obj->city_id;
$u->phone = $obj->telefono;
$u->email = $obj->email;
$u->update();
}else{
$u = new User;
$u->document = $obj->documento;
$u->identification_type_id = $obj->tipo_documento;
$u->name = $obj->nombre1 . " " . $obj->nombre2;
$u->last_name = $obj->apellido1 . " " . $obj->apellido2;
$u->address = $obj->direccion;
$u->city_id = $obj->city_id;
$u->dob = Carbon::parse($obj->fecha_nacimiento)->format('Y-m-d');
$u->phone = $obj->telefono;
$u->sex = $obj->sexo;
$u->email = $obj->email;
$u->password = \Hash::make($obj->documento);
$u->rol_id = 9;
$u->center_id = Auth::user()->center_id;
$u->save();
}
return $u;
}
public function store(Request $request){
DB::beginTransaction();
try {
$current = Carbon::now();
$obj = new ClinicDocument; // Datos compartidos entre historias.
$obj->state_id = 2;
$obj->fecha_pendiente = $current;
$obj->fecha_solicitado = $current;
$obj->tipo_solicitud = $request->tipo_solicitud;
$obj->tipo_especialidad = $request->tipo_especialidad;
$obj->hospital = $request->hospital;
$obj->hospital_id = $request->hospital_id;
$obj->usuario_solicitante = $request->usuario_solicitante;
$obj->finalizado = $request->finalizado;
$obj->bloqueo_documento = Auth::user()->id;
// Paciente
$obj->tipo_documento = $request->tipo_documento;
$obj->documento = $request->documento;
$obj->nombre1 = $request->nombre1;
$obj->nombre2 = $request->nombre2;
$obj->apellido1 = $request->apellido1;
$obj->apellido2 = $request->apellido2;
$obj->sexo = $request->sexo;
$obj->fecha_nacimiento = Carbon::parse($request->fecha_nacimiento)->format('Y-m-d');
$obj->edad = $request->edad;
$obj->telefono = $request->telefono;
$obj->aseguradora = $request->aseguradora;
$obj->insurance_id = $request->aseguradora;
$obj->department_id = $request->department_id;
$obj->city_id = $request->city_id;
$obj->direccion = $request->direccion;
// Update User or Create
$u = $this->updateOrCreateUser($request);
$obj->user_id = $u->id;
// Datos iniciales
$obj->resumen_telefono = $request->resumen_telefono;
$obj->recomendaciones_iniciales = $request->recomendaciones_iniciales;
// Datos clinicos generales
$obj->motivo_consulta = $request->motivo_consulta;
$obj->enf_actual_lab = $request->enf_actual_lab;
$obj->examen_fisico = $request->examen_fisico;
$obj->estado_conciencia = $request->estado_conciencia;
$obj->t_ar_sist1 = $request->t_ar_sist1;
$obj->t_ar_sist2 = $request->t_ar_sist2;
$obj->f_respiratoria = $request->f_respiratoria;
$obj->temperatura = $request->temperatura;
$obj->frecuencia_cardiaca = $request->frecuencia_cardiaca;
$obj->saturacion = $request->saturacion;
// Analisis y conducta
$obj->analisis_conducta = $request->analisis_conducta;
$obj->medico_especialista = $request->medico_especialista;
$obj->sync = false;
$obj->date_sync = null;
$obj->sap_id = null;
$obj->created_by = Auth::user()->id;
$obj->update_by = Auth::user()->id;
$obj->save();
// ******** Especialidad *************** //
$obj_especialidad = new Covid19; // Datos de especialidad.
$obj_especialidad->question1 = $request->question1;
$cont = 0;
if($request->question2){
foreach ($request->question2 as $value) {
if($cont == 0){
$obj_especialidad->question2 = $value;
}
else{
$obj_especialidad->question2 = $obj_especialidad->question2 . ',' . $value;
}
$cont++;
}
}
else{
$obj_especialidad->question2 = '';
}
$obj_especialidad->question3 = $request->question3;
$obj_especialidad->question4 = $request->question4;
$obj_especialidad->question5 = $request->question5;
$obj_especialidad->question6 = $request->question6;
$obj_especialidad->question7 = $request->question7;
$obj_especialidad->question8 = $request->question8;
$obj_especialidad->question9 = $request->question9;
$obj_especialidad->question10 = $request->question10;
$obj_especialidad->question11 = $request->question11;
$obj_especialidad->question12 = $request->question12;
$obj_especialidad->question13 = $request->question13;
$obj_especialidad->question14 = $request->question14;
$obj_especialidad->question15 = $request->question15;
$obj_especialidad->question16 = $request->question16;
$obj_especialidad->question17 = $request->question17;
$obj_especialidad->treatment_id = $request->treatment_id;
$obj_especialidad->save();
$obj->covid19_id = $obj_especialidad->id;
$obj->save();
// ******** Fin Especialidad *************** //
// ******** Especialidad - Tablas *************** //
// ******** Fin Especialidad - Tablas *************** //
// Tabla diagnosticos.
$info_diag = $request->info_diag;
DiagnosticHc::where('clinic_document_id', $obj->id)->delete(); // Se eliminan los registros previos.
foreach($info_diag as $id){
$obj_info_diag = new DiagnosticHc; // Tabla información fetal.
$obj_info_diag->code = $id['code'];
$obj_info_diag->clinic_document_id = $obj->id;
$obj_info_diag->save();
}
$message = __('messages.request.document_create');
$message = str_replace('<id>', $obj->id, $message);
$data = [
"r"=>true,
"status" => "200",
"id" => $obj->id,
"message" => $message
];
// Check if is from proposal
if($request->__currentProposeId){
$ea = ExternalApp::where('id', $request->__currentProposeId)->first();
$ea->clinic_document_id = $obj->id;
$ea->update();
try{
// Notify user.
$external_request = ExternalApp::select('id')->where('id', $request->__currentProposeId)->first();
$tags = array(
["field" => "tag", "key" => "user_id", "relation" => "=", "value" => $u->id],
["field" => "tag", "key" => "app_name", "relation" => "=", "value" => Config::get('app.name')]
);
$tags_data = array(
"type" => "request_detail",
"id" => $external_request->id
);
$message = __('messages.request.notification_text_status');
OneSignalController::sendToTags($message, $tags, null, $tags_data, null, null, 'U');
}
catch(\Exception $e){}
}
DB::commit();
// Validar si es el medico quien creo el documento.
if(Auth::user()->rol->id == 3){ // Si es médico quien guarda el documento queda automaticamente en tratamiento.
$obj->state_id = 3;
$obj->fecha_en_tratamiento = Carbon::now();
$obj->save();
}
return response()->json($data);
} catch (Exception $e) {
DB::rollback();
return response()->json(["status"=> 500, "message" => $e->getMessage()]);
}
}
public function update(Request $request, $id){
DB::beginTransaction();
try {
$obj = ClinicDocument::where('id', $id)->first(); // Datos compartidos entre historias.
if( $obj->bloqueo_documento != null && $obj->bloqueo_documento != Auth::user()->id){
$user = User::where('id',$obj->bloqueo_documento)->first();
$message = __('messages.request.document_lock_by');
$message = str_replace('<id>', $obj->id, $message);
$message = str_replace('<user>', $user->name." ".$user->last_name, $message);
$data = [
"r"=>false,
"status" => "500",
"id" => $obj->id,
"message" => $message
];
return response()->json($data);
}
//bloqueo
$obj->bloqueo_documento = Auth::user()->id;
// Paciente
$obj->tipo_documento = $request->tipo_documento;
$obj->documento = $request->documento;
$obj->nombre1 = $request->nombre1;
$obj->nombre2 = $request->nombre2;
$obj->apellido1 = $request->apellido1;
$obj->apellido2 = $request->apellido2;
$obj->sexo = $request->sexo;
$obj->fecha_nacimiento = Carbon::parse($request->fecha_nacimiento)->format('Y-m-d');
$obj->edad = $request->edad;
$obj->telefono = $request->telefono;
$obj->aseguradora = $request->aseguradora;
$obj->insurance_id = $request->aseguradora;
$obj->department_id = $request->department_id;
$obj->city_id = $request->city_id;
$obj->direccion = $request->direccion;
// Update User or Create
$this->updateOrCreateUser($request);
// Datos iniciales
$obj->resumen_telefono = $request->resumen_telefono;
$obj->recomendaciones_iniciales = $request->recomendaciones_iniciales;
// Datos clinicos generales
$obj->motivo_consulta = $request->motivo_consulta;
$obj->enf_actual_lab = $request->enf_actual_lab;
$obj->examen_fisico = $request->examen_fisico;
$obj->estado_conciencia = $request->estado_conciencia;
$obj->t_ar_sist1 = $request->t_ar_sist1;
$obj->t_ar_sist2 = $request->t_ar_sist2;
$obj->f_respiratoria = $request->f_respiratoria;
$obj->temperatura = $request->temperatura;
$obj->frecuencia_cardiaca = $request->frecuencia_cardiaca;
$obj->saturacion = $request->saturacion;
// Analisis y conducta
$obj->analisis_conducta = $request->analisis_conducta;
$obj->medico_especialista = $request->medico_especialista;
$obj->sync = false;
$obj->date_sync = null;
$obj->sap_id = null;
$obj->update_by = Auth::user()->id;
$obj->save();
// ******** Especialidad *************** //
$obj_especialidad = Covid19::where('id', $obj->covid19_id)->first(); // Datos de especialidad.
$obj_especialidad->question1 = $request->question1;
$cont = 0;
if($request->question2){
foreach ($request->question2 as $value) {
if($cont == 0){
$obj_especialidad->question2 = $value;
}
else{
$obj_especialidad->question2 = $obj_especialidad->question2 . ',' . $value;
}
$cont++;
}
}
else{
$obj_especialidad->question2 = '';
}
$obj_especialidad->question3 = $request->question3;
$obj_especialidad->question4 = $request->question4;
$obj_especialidad->question5 = $request->question5;
$obj_especialidad->question6 = $request->question6;
$obj_especialidad->question7 = $request->question7;
$obj_especialidad->question8 = $request->question8;
$obj_especialidad->question9 = $request->question9;
$obj_especialidad->question10 = $request->question10;
$obj_especialidad->question11 = $request->question11;
$obj_especialidad->question12 = $request->question12;
$obj_especialidad->question13 = $request->question13;
$obj_especialidad->question14 = $request->question14;
$obj_especialidad->question15 = $request->question15;
$obj_especialidad->question16 = $request->question16;
$obj_especialidad->question17 = $request->question17;
$obj_especialidad->treatment_id = $request->treatment_id;
$obj_especialidad->save();
// ******** Fin Especialidad *************** //
// ******** Especialidad - Tablas *************** //
// ******** Fin Especialidad - Tablas *************** //
// Tabla diagnosticos.
$info_diag = $request->info_diag;
DiagnosticHc::where('clinic_document_id', $obj->id)->delete(); // Se eliminan los registros previos.
foreach($info_diag as $id){
$obj_info_diag = new DiagnosticHc; // Tabla información fetal.
$obj_info_diag->code = $id['code'];
$obj_info_diag->clinic_document_id = $obj->id;
$obj_info_diag->save();
}
$message = __('messages.request.document_updated');
$message = str_replace('<id>', $obj->id, $message);
$data = [
"r"=>true,
"status" => "200",
"id" => $obj->id,
"message" => $message
];
DB::commit();
return response()->json($data);
} catch (Exception $e) {
DB::rollback();
return response()->json(["status"=> 500, "message" => $e->getMessage()]);
}
}
}