backoffice/application/models/Nano_health_model.php

215 lines
8.9 KiB
PHP
Executable File

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Created by PhpStorm.
* User: capp
* Date: 29/05/2018
* Time: 15:49
*/
class Nano_health_model extends CI_Model
{
public function createConfig($id_network){
$this->db->insert('nh_networks_configs', ['network_id' => $id_network]);
return $this->db->insert_id();
}
public function getConfig($id_network){
return $this->db->get_where('nh_networks_configs',['network_id'=> $id_network]);
}
public function updateConfig($configId, $data){
$this->db->where('id', $configId);
// $data = formatDBData($data);
return $this->db->update('nh_networks_configs', $data);
}
public function getConfigYearsPricesGrid($configId){
return $this->db->get_where('nh_years_prices_grid',['nh_network_config_id'=> $configId]);
}
public function getConfigMonthsPricesGrid($configId){
return $this->db->order_by('id','ASC')->get_where('nh_months_prices_grid',['nh_network_config_id'=> $configId]);
}
public function getConfigActs($configId){
return $this->db->get_where('nh_acts',['nh_network_config_id'=> $configId]);
}
// Classes de prestataires
public function getProviderClasses($configId)
{
return $this->db->get_where('nh_provider_classes',['nh_network_config_id'=> $configId]);
}
public function getInfosInsuranceSubscriptionById($insuranceSubscriptionId){
return $this->db->select('s.*, pg.payment_period , pg.number_of_fractions')
->from('nh_infos_insurances_subscriptions s')->join('nh_months_prices_grid pg', 'pg.id = s.months_grid_id')
->where('s.insurance_subscription_id',$insuranceSubscriptionId)->get()->row();
}
public function getNhValidatingAgentSubscriptionHistory($agentId , $state){
return $this->db->from('nh_insurances_subscriptions_history')->where('nh_validating_agent_id', $agentId)
->where('insurance_subscription_state', $state)->count_all_results();
}
public function getNhInsurancesSubscriptionCount($networkId, $state){
return $this->db->from('nh_insurances_subscriptions')->where('network_id', $networkId)
->where('state', $state)->count_all_results();
}
public function getInfosInsuredById($insuredId){
return $this->db->get_where('nh_infos_insurances',['insured_id'=> $insuredId])->first_row();
}
public function getInsurancePaymentTransactions($insuredId){
return $this->db->select('p.* , in.invoice_id')
->from('nh_insurances_payments p')->join('nh_insurances_invoices in', 'in.id = p.invoice_id')
->where('in.insurance_id',$insuredId)->order_by('p.created_at','desc')->get();
}
public function getInsuranceInvoices($insuredId , $state = null){
$query = $this->db->select('i.* , is.insurance_subscription_id, SUM(p.amount) as paid_amount')
->from('nh_insurances_invoices i')->join('nh_insurances in', 'in.id = i.insurance_id')
->join('nh_insurances_subscriptions is', 'is.id = i.subscription_id','left')
->join('nh_insurances_payments p', 'i.id = p.invoice_id','left')
->where('in.insured_id',$insuredId);
if(!empty($state)){
$query =$query->where('i.state',$state);
}
return $query->group_by('i.id')->order_by('i.created_at','desc')->get();
}
public function getInsuranceInvoiceTotalPaidAmount($insuredId){
$amount = $this->db->select('SUM(p.amount) as total_paid_amount')
->from('nh_insurances_invoices i')->join('nh_insurances in', 'in.id = i.insurance_id')
->join('nh_insurances_payments p', 'i.id = p.invoice_id')
->where('i.insurance_id',$insuredId)->group_by('i.id')->get()->row_array();
return isset($amount) ? $amount['total_paid_amount'] : 0;
}
public function getInsuranceInvoiceTotalAmount($insuredId){
$amount = $this->db->select('SUM(i.amount) as total_amount')
->from('nh_insurances_invoices i')->join('nh_insurances in', 'in.id = i.insurance_id')
->where('i.insurance_id',$insuredId)->group_by('i.id')->get()->row_array();
return isset($amount) ? $amount['total_amount'] : 0;
}
public function getSubscriptionBeneficiaries($subscriptionId){
return $this->db->select('b.*')
->from('nh_having_rights b')->join('nh_insurances_having_rights i', 'b.id = i.having_right_id')
->where('i.deleted_at IS NULL')
->where('i.insurance_subscription_id',$subscriptionId)->order_by('i.created_at','asc')->get();
}
public function getInsuranceBeneficiaries($insuranceId){
return $this->db->select('b.*')
->from('nh_having_rights b')->join('nh_insurances_having_rights i', 'b.id = i.having_right_id')
->where('i.deleted_at IS NULL')
->where('i.insurance_id',$insuranceId)->order_by('i.created_at','asc')->get();
}
public function getInfosHealthCareSheetById($healthCareSheetId){
return $this->db->get_where('nh_infos_health_care_sheets',['health_care_sheet_id'=> $healthCareSheetId])->first_row();
}
public function getHealthCareSheetPerformances($healthCareSheetId){
return $this->db->select('p.* , a.code as act_code , a.name as act_name')
->from('nh_performances p')->join('nh_health_care_sheets_performances sp', 'p.id = sp.performance_id')
->join('nh_acts a', 'a.id = p.act_id')
->where('sp.sheet_id',$healthCareSheetId)->order_by('sp.created_at','asc')->get();
}
public function getHealthCareSheetExams($healthCareSheetId){
return $this->db->select('e.* , a.code as act_code , a.name as act_name , a.unit_value as act_unit_value')
->from('nh_exams e')->join('nh_health_care_sheets_exams se', 'e.id = se.exam_id')
->join('nh_acts a', 'a.id = e.act_id')
->where('se.sheet_id',$healthCareSheetId)->order_by('se.created_at','asc')->get();
}
public function getHealthCareSheetPrescriptions($healthCareSheetId){
return $this->db->select('p.* , d.code as drug_or_device_code , d.name as drug_or_device_name')
->from('nh_medical_prescriptions p')->join('nh_health_care_sheets_prescriptions sp', 'p.id = sp.prescription_id')
->join('nh_drugs_and_devices d', 'd.id = p.drug_or_device_id')
->where('sp.sheet_id',$healthCareSheetId)->order_by('sp.created_at','asc')->get();
}
public function getDrugAndDevices($networkId)
{
return $this->db->get_where('nh_drugs_and_devices',['network_id'=> $networkId]);
}
public function calculateSheetAmountsParts($healthCareSheetId , $healthCareSheetType){
$insurerAmount = 0;
$insuredAmount = 0;
if ($healthCareSheetType == 'CONSULTATION') {
$query = $this->db->query("SELECT SUM(moderator_ticket) as moderator_ticket , SUM(insurance_amount) as insurance_amount FROM nh_performances p INNER JOIN
nh_health_care_sheets_performances hp ON p.id = hp.performance_id WHERE hp.sheet_id = $healthCareSheetId LIMIT 1");
if ($query->num_rows() > 0) {
$insuredAmount += $query->first_row()->moderator_ticket;
$insurerAmount += $query->first_row()->insurance_amount;
}
} else {
$query = $this->db->query("SELECT SUM(insured_paid_amount) as insured_paid_amount , SUM(insurer_paid_amount) as insurer_paid_amount FROM nh_medical_prescriptions p INNER JOIN
nh_health_care_sheets_prescriptions hp ON p.id = hp.prescription_id WHERE hp.sheet_id = $healthCareSheetId LIMIT 1");
if ($query->num_rows() > 0) {
$insuredAmount += $query->first_row()->insured_paid_amount;
$insurerAmount += $query->first_row()->insurer_paid_amount;
}
$query = $this->db->query("SELECT SUM(insured_paid_amount) as insured_paid_amount , SUM(insurer_paid_amount) as insurer_paid_amount FROM nh_exams e INNER JOIN
nh_health_care_sheets_exams he ON e.id = he.exam_id WHERE he.sheet_id = $healthCareSheetId LIMIT 1");
if ($query->num_rows() > 0) {
$insuredAmount += $query->first_row()->insured_paid_amount;
$insurerAmount += $query->first_row()->insurer_paid_amount;
}
}
return [$insuredAmount, $insurerAmount];
}
public function getCountCareRequests($network_id , $validating_agent_id, $state){
$query = $this->db->from('nh_infos_authorization_of_care_requests')->where('state',$state);
if(!empty($validating_agent_id)){
$query = $query->where('validating_agent_id', $validating_agent_id);
}
if(!empty($network_id)){
$query = $query->where('network_id', $network_id);
}
return $query->count_all_results();
}
public function getBeneficiariesDeletionHistory($insuranceId){
return $this->db->select('b.* , i.deleted_at')
->from('nh_having_rights b')->join('nh_insurances_having_rights i', 'b.id = i.having_right_id')
->where('i.deleted_at IS NOT NULL')
->where('i.insurance_id',$insuranceId)->order_by('i.deleted_at','desc')->get();
}
public function getInfosInvoiceById($id){
return $this->db->get_where('nh_infos_invoices',['id'=> $id])->first_row();
}
public function getCountInvoices($network_id , $validating_agent_id, $state){
$query = $this->db->from('nh_infos_invoices')->where('state',$state);
if(!empty($validating_agent_id)){
$query = $query->where('validating_agent_id', $validating_agent_id);
}
if(!empty($network_id)){
$query = $query->where('network_id', $network_id);
}
return $query->count_all_results();
}
public function getExclusion($id_network){
return $this->db->get_where('nh_exclusions',['network_id'=> $id_network]);
}
}