示例#1
0
 public function parse()
 {
     //        print_array($_FILES);
     //        $config['upload_path'] = './assets/files/';
     //        $config['allowed_types'] = '*';
     //        $config['max_size'] = '0';
     //        $config['remove_spaces'] = true;
     //
     //
     //        $this->load->library('upload', $config);
     //
     //        if (!$this->upload->do_upload('file')) {
     //            $error = array('error' => $this->upload->display_errors());
     //            $this->session->set_flashdata('error', $error);
     //            redirect(base_url('parser'));
     //        }
     //        $fileInfo = $this->upload->data();
     //
     //        $excelData = excel_parser($fileInfo['file_name']);
     $excelData = excel_parser('ae.xlsx');
     //        print_array($excelData);exit;
     //  dataset name
     $datasetName = end($excelData['header'][1]);
     //  dataset description
     $search = 'Dataset Description:';
     $result = $this->array_find_like($search, $excelData['values']);
     $datasetDesc = end($result);
     //  study name
     $search = 'Study Name:';
     $result = $this->array_find($search, $excelData['values']);
     $studyName = end($result);
     //  protocol id
     $search = 'Protocol ID:';
     $result = $this->array_find($search, $excelData['values']);
     $protocolIdReal = end($result);
     //  Date
     $search = 'Date:';
     $result = $this->array_find($search, $excelData['values']);
     $date = end($result);
     //  Number of subjects
     $search = 'Subjects:';
     $result = $this->array_find($search, $excelData['values']);
     $numSubjects = end($result);
     //  Number of Study Event Definitions
     $search = 'Study Event Definitions';
     $result = $this->array_find($search, $excelData['values']);
     $studyEventDef = end($result);
     //CHECK IF THE FILE HASE BEEN UPLOADED ONCE
     $checkData = array('dataset_name' => $datasetName, 'study_name' => $studyName, 'protocol_id' => $protocolIdReal, 'date' => $date);
     $studyModel = load_basic_model('adverse_events');
     $resultAE = $studyModel->get($checkData);
     if (count($resultAE) > 0) {
         $this->session->set_flashdata('error', 'File already uploaded.');
         redirect(base_url('ae_parser'));
     }
     //  Study Event Definition data
     $search = 'Study Event Definition ';
     $result = $this->array_find_like($search, $excelData['values']);
     $studyEventDefData = $result;
     $SED = $studyEventDefData['C'];
     //  CRF data
     $search = 'CRF';
     $result = $this->array_find_like($search, $excelData['values']);
     $crfData = $result;
     $CRF = end($crfData);
     //  re order array
     $excelData['values'] = array_values($excelData['values']);
     //  get field names
     foreach ($excelData['values'] as $index => $val) {
         $key = array_search('Study Subject ID', $val);
         if (is_string($key)) {
             $fieldsNamesIndex = $index;
             $fieldsNames = $excelData['values'][$index];
             break;
         }
     }
     $basicModel = load_basic_model('adverse_events');
     //adverse_events table insertion
     $data = array('dataset_name' => $datasetName, 'study_name' => $studyName, 'protocol_id' => $protocolIdReal, 'subjects' => $numSubjects, 'study_event_definitions' => $studyEventDef, 'date' => $date);
     $studyProcessResult = $basicModel->insert($data);
     if (count($studyProcessResult) < 1) {
         $this->session->set_flashdata('error', 'Operation failed.');
         redirect(base_url('ae_parser'));
     }
     $aeId = $this->db->insert_id();
     //  get field values
     $fieldsValuesArr = array_slice($excelData['values'], $fieldsNamesIndex + 1);
     $basicModel = load_basic_model('adverse_events_data');
     $SEDCRF = '_' . $SED . '_' . $CRF;
     foreach ($fieldsValuesArr as $fieldsValues) {
         //  Study Subject ID
         $key = array_search('Study Subject ID', $fieldsNames);
         $studySubId = $this->check_value($fieldsValues, $key);
         //  protocol id
         $key = array_search('Protocol ID', $fieldsNames);
         $protocolId = $this->check_value($fieldsValues, $key);
         //  Stie ID
         $siteId = substr($studySubId, 0, 4);
         //  Sex
         $key = array_search('Sex', $fieldsNames);
         $sex = $this->check_value($fieldsValues, $key);
         //   count the number of AE for every client
         $key = $this->array_like('StartDate', $fieldsNames);
         $arr_split = explode('_', $key);
         $countOfArr = end($arr_split);
         for ($i = 1; $i <= $countOfArr; $i++) {
             $SEDCRF = '_' . $SED . '_' . $i . '_' . $CRF;
             //  StartDate
             $key = array_search('StartDate' . '_' . $SED . '_' . $i, $fieldsNames);
             $startDate = $this->check_value($fieldsValues, $key);
             //   CRF Version Status
             $key = $this->array_find_key('CRF Version Status' . $SEDCRF, $fieldsNames);
             $crfVersionStatus = $this->check_value($fieldsValues, $key);
             //   Version Name
             $key = $this->array_find_key('Version Name' . $SEDCRF, $fieldsNames);
             $versionName = $this->check_value($fieldsValues, $key);
             //  advevent_desc
             $key = $this->array_find_key('advevent_desc' . $SEDCRF, $fieldsNames);
             $adveventDesc = $this->check_value($fieldsValues, $key);
             //  advevent_date
             $key = $this->array_find_key('advevent_date' . $SEDCRF, $fieldsNames);
             $adveventDate = $this->check_value($fieldsValues, $key);
             //  advevent_time
             $key = $this->array_find_key('advevent_time' . $SEDCRF, $fieldsNames);
             $advevent_time = $this->check_value($fieldsValues, $key);
             //  advevent_inter
             $key = $this->array_find_key('advevent_inter' . $SEDCRF, $fieldsNames);
             $advevent_inter = $this->check_value($fieldsValues, $key);
             //  advevent_severity
             $key = $this->array_find_key('advevent_severity' . $SEDCRF, $fieldsNames);
             $advevent_severity = $this->check_value($fieldsValues, $key);
             //  advevent_action
             $key = $this->array_find_key('advevent_action' . $SEDCRF, $fieldsNames);
             $advevent_action = $this->check_value($fieldsValues, $key);
             //  advevent_other
             $key = $this->array_find_key('advevent_other' . $SEDCRF, $fieldsNames);
             $advevent_other = $this->check_value($fieldsValues, $key);
             //  advevent_outcome
             $key = $this->array_find_key('advevent_outcome' . $SEDCRF, $fieldsNames);
             $advevent_outcome = $this->check_value($fieldsValues, $key);
             //  advevent_related
             $key = $this->array_find_key('advevent_related' . $SEDCRF, $fieldsNames);
             $advevent_related = $this->check_value($fieldsValues, $key);
             //  advevent_resdate
             $key = $this->array_find_key('advevent_resdate' . $SEDCRF, $fieldsNames);
             $advevent_resdate = $this->check_value($fieldsValues, $key);
             //  advevent_restime
             $key = $this->array_find_key('advevent_restime' . $SEDCRF, $fieldsNames);
             $advevent_restime = $this->check_value($fieldsValues, $key);
             //  advevent_SAE
             $key = $this->array_find_key('advevent_SAE' . $SEDCRF, $fieldsNames);
             $advevent_SAE = $this->check_value($fieldsValues, $key);
             //  advevent_reporter
             $key = $this->array_find_key('advevent_reporter' . $SEDCRF, $fieldsNames);
             $advevent_reporter = $this->check_value($fieldsValues, $key);
             //  advevent_lastdosedate
             $key = $this->array_find_key('advevent_lastdosedate' . $SEDCRF, $fieldsNames);
             $advevent_lastdosedate = $this->check_value($fieldsValues, $key);
             if ($advevent_lastdosedate != '-') {
                 $advevent_lastdosedate = ($advevent_lastdosedate - 25569) * 86400;
                 //conversion from excel date to unix date
             }
             //  advevent_lastdosetime
             $key = $this->array_find_key('advevent_lastdosetime' . $SEDCRF, $fieldsNames);
             $advevent_lastdosetime = $this->check_value($fieldsValues, $key);
             $AEData = array('ae_id' => $aeId, 'study_subject_id' => $studySubId, 'protocol_id' => $protocolId, 'sex' => $sex, 'site_number' => $siteId, 'start_date' => $startDate, 'version_name' => $versionName, 'crf_version_status' => $crfVersionStatus, 'advevent_desc' => $adveventDesc, 'advevent_date' => $adveventDate, 'advevent_inter' => $advevent_inter, 'advevent_severity' => $advevent_severity, 'advevent_action' => $advevent_action, 'advevent_other' => $advevent_other, 'advevent_outcome' => $advevent_outcome, 'advevent_related' => $advevent_related, 'advevent_resdate' => $advevent_resdate, 'advevent_SAE' => $advevent_SAE, 'advevent_reporter' => $advevent_reporter, 'advevent_lastdosedate' => $advevent_lastdosedate, 'advevent_lastdosetime' => $advevent_lastdosetime, 'datetime' => date('Y-m-d', time()));
             $this->db->trans_start();
             $processResult = $basicModel->insert($AEData);
             $this->db->trans_complete();
             if ($this->db->trans_status() === TRUE) {
                 $this->session->set_flashdata('success', 'Operation successfully completedly.');
             } else {
                 $this->session->set_flashdata('error', 'Operation failed.');
             }
         }
     }
     redirect(base_url('ae_parser'));
 }
示例#2
0
 public function parse()
 {
     //        print_array($_FILES);
     $config['upload_path'] = './assets/files/';
     $config['allowed_types'] = '*';
     $config['max_size'] = '0';
     $config['remove_spaces'] = true;
     $this->load->library('upload', $config);
     if (!$this->upload->do_upload('file')) {
         $error = array('error' => $this->upload->display_errors());
         $this->session->set_flashdata('error', $error);
         redirect(base_url('parser'));
     }
     $fileInfo = $this->upload->data();
     //        print_array($fileInfo);
     if ($fileInfo['file_ext'] == '.xlds') {
         //load the excel library
         $this->load->library('excel');
         $path = './assets/files/' . $fileInfo['file_name'];
         $inputFileType = PHPExcel_IOFactory::identify($path);
         //            echo $inputFileType;
         $reader = PHPExcel_IOFactory::createReader("{$inputFileType}");
         $reader->setReadDataOnly(false);
         $excel = $reader->load($path);
         $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
         //            $writer->setUseBOM(true);
         $fileName = $fileInfo['raw_name'];
         $writer->save('./assets/files/' . $fileName . '.xls');
         //            echo 'done';exit;
         $inputFileType2 = PHPExcel_IOFactory::identify($path);
         //            echo $inputFileType;exit;
         $reader = PHPExcel_IOFactory::createReader("{$inputFileType2}");
         $reader->setReadDataOnly(false);
         $excel2 = $reader->load($path);
         $writer2 = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007');
         //            $writer->setUseBOM(true);
         $writer2->save('./assets/files/' . $fileName . '.xlsx');
         $fileInfo['file_name'] = $fileName . '.xlsx';
     }
     //        echo $fileInfo['file_name'];exit;
     $excelData = excel_parser($fileInfo['file_name']);
     //        print_array($excelData);
     //        $excelData = excel_parser('testnew.xlsx');
     //  dataset name
     $datasetName = end($excelData['header'][1]);
     //  dataset description
     $search = 'Dataset Description:';
     $result = $this->array_find_like($search, $excelData['values']);
     $datasetDesc = end($result);
     //  study name
     $search = 'Study Name:';
     $result = $this->array_find($search, $excelData['values']);
     $studyName = end($result);
     //  protocol id
     $search = 'Protocol ID:';
     $result = $this->array_find($search, $excelData['values']);
     $protocolIdReal = end($result);
     //  Date
     $search = 'Date:';
     $result = $this->array_find($search, $excelData['values']);
     $date = end($result);
     //  Number of subjects
     $search = 'Subjects:';
     $result = $this->array_find($search, $excelData['values']);
     $numSubjects = end($result);
     //  Number of Study Event Definitions
     $search = 'Study Event Definitions';
     $result = $this->array_find($search, $excelData['values']);
     $studyEventDef = end($result);
     //CHECK IF THE FILE HASE BEEN UPLOADED ONCE
     $checkData = array('dataset_name' => $datasetName, 'study_name' => $studyName, 'protocol_id' => $protocolIdReal, 'date' => $date);
     $studyModel = load_basic_model('study');
     $resultStudy = $studyModel->get($checkData);
     if (count($resultStudy) > 0) {
         $this->session->set_flashdata('error', 'File already uploaded.');
         redirect(base_url('parser'));
     }
     //  Study Event Definition data
     $search = 'Study Event Definition ';
     $result = $this->array_find_like($search, $excelData['values']);
     $studyEventDefData = $result;
     $SED = $studyEventDefData['C'];
     //  CRF data
     $search = 'CRF';
     $result = $this->array_find_like($search, $excelData['values']);
     $crfData = $result;
     $CRF = end($crfData);
     $SEDCRF = '_' . $SED . '_' . $CRF;
     //  re order array
     $excelData['values'] = array_values($excelData['values']);
     //  get field names
     foreach ($excelData['values'] as $index => $val) {
         $key = array_search('Study Subject ID', $val);
         if (is_string($key)) {
             $fieldsNamesIndex = $index;
             $fieldsNames = $excelData['values'][$index];
             break;
         }
     }
     $basicModel = load_basic_model('study');
     //study table insertion
     $data = array('dataset_name' => $datasetName, 'study_name' => $studyName, 'protocol_id' => $protocolIdReal, 'subjects' => $numSubjects, 'study_event_definitions' => $studyEventDef, 'date' => $date);
     $studyProcessResult = $basicModel->insert($data);
     if (count($studyProcessResult) < 1) {
         $this->session->set_flashdata('error', 'Operation failed.');
         redirect(base_url('parser'));
     }
     $lastId = $this->db->insert_id();
     //  get field values
     $fieldsValuesArr = array_slice($excelData['values'], $fieldsNamesIndex + 1);
     $basicModel = load_basic_model('implant_administration');
     foreach ($fieldsValuesArr as $fieldsValues) {
         //  Study Subject ID
         $key = array_search('Study Subject ID', $fieldsNames);
         $studySubId = $this->check_value($fieldsValues, $key);
         //extract site id
         $siteId = substr($studySubId, 0, -3);
         //  protocol id
         $key = array_search('Protocol ID', $fieldsNames);
         $protocolId = $this->check_value($fieldsValues, $key);
         //  Person ID
         //            $key = array_search('Person ID', $fieldsNames);
         //            $personId = $this->check_value($fieldsValues, $key);
         $personId = substr($studySubId, -3);
         //  Sex
         $key = array_search('Sex', $fieldsNames);
         $sex = $this->check_value($fieldsValues, $key);
         //   Version Name
         //        $key = $this->array_find_key('Version Name' . $SEDCRF, $fieldsNames);
         //        $versionName = $this->check_value($fieldsValues, $key);
         //  epp_symptoms
         $key = $this->array_find_key('Psympts' . $SEDCRF, $fieldsNames);
         $eppSymptoms = $this->check_value($fieldsValues, $key);
         //  epp_pregnant
         $key = $this->array_find_key('Ppregn' . $SEDCRF, $fieldsNames);
         $eppPregnant = $this->check_value($fieldsValues, $key);
         //  implant_date
         $key = $this->array_find_key('Padmind' . $SEDCRF, $fieldsNames);
         $implantDate = $this->check_value($fieldsValues, $key);
         $impUnixDate = ($implantDate - 25569) * 86400;
         //conversion from excel date to unix date
         //  implant_time
         $key = $this->array_find_key('Padmtm' . $SEDCRF, $fieldsNames);
         $implantTime = $this->check_value($fieldsValues, $key);
         //  implant_min
         //            $key = $this->array_find_key('EPP_elig_scen_admin_min' . $SEDCRF, $fieldsNames);
         //            $implantMinCrf = $this->check_value($fieldsValues, $key);
         //            $implantMin = $implantMinCrf * 5;
         //  implant_batch
         $key = $this->array_find_key('Pbatch' . $SEDCRF, $fieldsNames);
         $implantBatch = $this->check_value($fieldsValues, $key);
         //  scen_admin_side
         $key = $this->array_find_key('Padmsid' . $SEDCRF, $fieldsNames);
         $implantSide = $this->check_value($fieldsValues, $key);
         //  implant_prob
         $key = $this->array_find_key('Padmprb' . $SEDCRF, $fieldsNames);
         $implantProb = $this->check_value($fieldsValues, $key);
         //  problem specifications : If yes, please comment and, if applicable, please also complete the adverse events page
         //            $key = $this->array_find_key('scen_admin_probspec' . $SEDCRF, $fieldsNames);
         //            $implantProbSpec = $this->check_value($fieldsValues, $key);
         //  scen_admin_suprail
         $key = $this->array_find_key('Psupra' . $SEDCRF, $fieldsNames);
         $implantSuprail = $this->check_value($fieldsValues, $key);
         //  suprail explanation
         $key = $this->array_find_key('Psuprax' . $SEDCRF, $fieldsNames);
         $implantSuprailExpl = $this->check_value($fieldsValues, $key);
         $impAdminData = array('study_id' => $lastId, 'study_subject_id' => $studySubId, 'site_id' => $siteId, 'protocol_id' => $protocolId, 'person_id' => $personId, 'sex' => $sex, 'version_name' => NULL, 'epp_symptoms' => $eppSymptoms, 'implant_date' => $impUnixDate, 'implant_time' => $implantTime, 'implant_prob' => $implantProb, 'implant_batch' => $implantBatch, 'epp_pregnant' => $eppPregnant, 'implant_suprail' => $implantSuprail, 'implant_suprail_expl' => $implantSuprailExpl, 'date' => date('Y-m-d', time()));
         $this->db->trans_start();
         $processResult = $basicModel->insert($impAdminData);
         $this->db->trans_complete();
         if ($this->db->trans_status() === TRUE) {
             $this->session->set_flashdata('success', 'Operation successfully completedly.');
         } else {
             $this->session->set_flashdata('error', 'Operation failed.');
         }
     }
     redirect(base_url('parser'));
 }