HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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()]);
        }
    }
}