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')); }
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')); }