You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
358 lines
9.0 KiB
358 lines
9.0 KiB
<?php |
|
|
|
/** |
|
* insurance company class for smarty templates |
|
* |
|
* @package OpenEMR |
|
* @link https://www.open-emr.org |
|
* @author duhlman |
|
* @author Stephen Waite <stephen.waite@cmsvt.com> |
|
* @copyright Copyright (c) duhlman |
|
* @copyright Copyright (c) 2021 Stephen Waite <stephen.waite@cmsvt.com> |
|
* @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3 |
|
*/ |
|
|
|
use OpenEMR\Common\ORDataObject\ORDataObject; |
|
use OpenEMR\Services\InsuranceCompanyService; |
|
use OpenEMR\Common\ORDataObject\Address; |
|
|
|
/** |
|
* class Insurance Company |
|
* |
|
*/ |
|
|
|
class InsuranceCompany extends ORDataObject |
|
{ |
|
var $id; |
|
var $name; |
|
var $phone_numbers; |
|
var $attn; |
|
var $cms_id; |
|
var $alt_cms_id; |
|
var $eligibility_id; |
|
var $x12_receiver_id; |
|
var $x12_default_partner_id; |
|
var $x12_default_eligibility_id; |
|
var $inactive; |
|
var $InsuranceCompany; |
|
/* |
|
* OpenEMR can use this value to determine special formatting for the specified type of payer. |
|
* It is the key to the array returned by the InsuranceCompanyService |
|
* getInsuranceTypes and getInsuranceClaimTypes methods. |
|
* @var int Holds constant for type of payer |
|
*/ |
|
var $ins_type_code; |
|
|
|
/* |
|
* Array used to populate select dropdowns or other form elements |
|
* It is the value of the array returned by the InsuranceCompanyService->getInsuranceTypes() method. |
|
*/ |
|
var $ins_type_code_array; |
|
|
|
/* |
|
* Array used with electronic claim submissions and |
|
* corresponds with $ins_type_code_array |
|
* It is the value of the array returned by the InsuranceCompanyService->getInsuranceClaimTypes() method. |
|
*/ |
|
var $ins_claim_type_array; |
|
|
|
var $address; |
|
|
|
var $X12Partner; |
|
|
|
/** |
|
* @var Integer CQM SOP, Source of Payment, from HL7 |
|
*/ |
|
var $cqm_sop; |
|
|
|
/** |
|
* @var Array contains code and description of above |
|
*/ |
|
var $cqm_sop_array; |
|
|
|
/** |
|
* Constructor sets all Insurance Company attributes to their default value |
|
*/ |
|
public function __construct($id = "", $prefix = "") |
|
{ |
|
$this->id = $id; |
|
$this->name = ""; |
|
$this->_table = "insurance_companies"; |
|
$phone = new PhoneNumber(); |
|
$phone->set_type(TYPE_WORK); |
|
$fax = new PhoneNumber(); |
|
$fax->set_type(TYPE_FAX); |
|
$this->address = new Address(); |
|
$this->phone_numbers = array($phone, $fax); |
|
$this->InsuranceCompany = new InsuranceCompanyService(); |
|
$this->ins_type_code_array = $this->InsuranceCompany->getInsuranceTypes(); |
|
$this->ins_claim_type_array = $this->InsuranceCompany->getInsuranceClaimTypes(); |
|
if ($id != "") { |
|
$this->populate(); |
|
} |
|
|
|
$this->X12Partner = new X12Partner(); |
|
$this->cqm_sop_array = $this->InsuranceCompany->getInsuranceCqmSop(); |
|
} |
|
|
|
public function set_id($id = "") |
|
{ |
|
$this->id = $id; |
|
} |
|
public function get_id() |
|
{ |
|
return $this->id; |
|
} |
|
|
|
// special function that the html forms use to prepopulate which allows for partial edits and wizard functionality |
|
public function set_form_id($id = "") |
|
{ |
|
if (!empty($id)) { |
|
$this->populate($id); |
|
} |
|
} |
|
|
|
public function set_address($aobj) |
|
{ |
|
$this->address = $aobj; |
|
} |
|
public function get_address() |
|
{ |
|
return $this->address; |
|
} |
|
public function set_address_line1($line) |
|
{ |
|
$this->address->set_line1($line); |
|
} |
|
public function set_address_line2($line) |
|
{ |
|
$this->address->set_line2($line); |
|
} |
|
|
|
public function set_city($city) |
|
{ |
|
$this->address->set_city($city); |
|
} |
|
public function set_state($state) |
|
{ |
|
$this->address->set_state($state); |
|
} |
|
public function set_zip($zip) |
|
{ |
|
$this->address->set_zip($zip); |
|
} |
|
public function set_inactive($inactive) |
|
{ |
|
$this->inactive = $inactive; |
|
} |
|
public function get_inactive() |
|
{ |
|
return $this->inactive; |
|
} |
|
public function set_name($name) |
|
{ |
|
$this->name = $name; |
|
} |
|
public function get_name() |
|
{ |
|
return $this->name; |
|
} |
|
public function set_attn($attn) |
|
{ |
|
$this->attn = $attn; |
|
} |
|
public function get_attn() |
|
{ |
|
return $this->attn; |
|
} |
|
public function set_cms_id($id) |
|
{ |
|
$this->cms_id = $id; |
|
} |
|
public function get_cms_id() |
|
{ |
|
return $this->cms_id; |
|
} |
|
public function set_alt_cms_id($id) |
|
{ |
|
$this->alt_cms_id = $id; |
|
} |
|
public function get_alt_cms_id() |
|
{ |
|
return $this->alt_cms_id; |
|
} |
|
public function set_eligibility_id($id) |
|
{ |
|
$this->eligibility_id = $id; |
|
} |
|
public function get_eligibility_id() |
|
{ |
|
return $this->eligibility_id; |
|
} |
|
public function set_ins_type_code($type) |
|
{ |
|
$this->ins_type_code = $type; |
|
} |
|
public function get_ins_type_code() |
|
{ |
|
return $this->ins_type_code; |
|
} |
|
public function get_ins_type_code_display() |
|
{ |
|
return $this->ins_type_code_array[$this->ins_type_code]; |
|
} |
|
public function get_ins_claim_type() |
|
{ |
|
return $this->ins_claim_type_array[$this->ins_type_code]; |
|
} |
|
|
|
public function set_cqm_sop($code) |
|
{ |
|
$this->cqm_sop = $code; |
|
} |
|
|
|
public function get_cqm_sop() |
|
{ |
|
return $this->cqm_sop; |
|
} |
|
|
|
public function get_phone() |
|
{ |
|
foreach ($this->phone_numbers as $phone) { |
|
if ($phone->type == TYPE_WORK) { |
|
return $phone->get_phone_display(); |
|
} |
|
} |
|
|
|
return ""; |
|
} |
|
public function set_number($num, $type) |
|
{ |
|
$found = false; |
|
for ($i = 0; $i < count($this->phone_numbers); $i++) { |
|
if ($this->phone_numbers[$i]->type == $type) { |
|
$found = true; |
|
$this->phone_numbers[$i]->set_phone($num); |
|
} |
|
} |
|
|
|
if ($found == false) { |
|
$p = new PhoneNumber("", $this->id); |
|
$p->set_type($type); |
|
$p->set_phone($num); |
|
$this->phone_numbers[] = $p; |
|
} |
|
} |
|
|
|
public function set_phone($phone) |
|
{ |
|
$this->set_number($phone, TYPE_WORK); |
|
} |
|
|
|
public function set_fax($fax) |
|
{ |
|
$this->set_number($fax, TYPE_FAX); |
|
} |
|
|
|
public function get_fax() |
|
{ |
|
foreach ($this->phone_numbers as $phone) { |
|
if ($phone->type == TYPE_FAX) { |
|
return $phone->get_phone_display(); |
|
} |
|
} |
|
|
|
return ""; |
|
} |
|
|
|
public function set_x12_default_partner_id($id) |
|
{ |
|
$this->x12_receiver_id = $id; |
|
} |
|
|
|
public function get_x12_default_partner_id() |
|
{ |
|
return $this->x12_receiver_id; |
|
} |
|
|
|
public function get_x12_default_partner_name() |
|
{ |
|
$xa = $this->_utility_array($this->X12Partner->x12_partner_factory()); |
|
return ($xa[$this->get_x12_default_partner_id()] ?? null); |
|
} |
|
|
|
public function set_x12_default_eligibility_id($id) |
|
{ |
|
$this->x12_default_eligibility_id = $id; |
|
} |
|
|
|
public function get_x12_default_eligibility_id() |
|
{ |
|
return $this->x12_default_eligibility_id; |
|
} |
|
|
|
public function get_x12_default_eligibility_name() |
|
{ |
|
$xa = $this->_utility_array($this->X12Partner->x12_partner_factory()); |
|
return $xa[$this->get_x12_default_eligibility_id()]; |
|
} |
|
|
|
public function populate() |
|
{ |
|
parent::populate(); |
|
$this->address = Address::factory_address($this->id); |
|
$this->phone_numbers = PhoneNumber::factory_phone_numbers($this->id); |
|
} |
|
|
|
public function persist() |
|
{ |
|
parent::persist(); |
|
$this->address->persist($this->id); |
|
foreach ($this->phone_numbers as $phone) { |
|
$phone->persist($this->id); |
|
} |
|
} |
|
|
|
public function insurance_companies_factory($city = "", $sort = "ORDER BY name, id") |
|
{ |
|
if (empty($city)) { |
|
$city = ""; |
|
} else { |
|
$city = " WHERE city = '" . add_escape_custom($foreign_id) . "'"; |
|
} |
|
|
|
$p = new InsuranceCompany(); |
|
$icompanies = array(); |
|
$sql = "SELECT p.id, a.city " . |
|
"FROM " . escape_table_name($p->_table) . " AS p " . |
|
"INNER JOIN addresses as a on p.id = a.foreign_id " . $city . " " . add_escape_custom($sort); |
|
|
|
//echo $sql . "<bR />"; |
|
$results = sqlQ($sql); |
|
//echo "sql: $sql"; |
|
//print_r($results); |
|
while ($row = sqlFetchArray($results)) { |
|
$icompanies[] = new InsuranceCompany($row['id']); |
|
} |
|
|
|
return $icompanies; |
|
} |
|
|
|
public function toString($html = false) |
|
{ |
|
$string .= "\n" |
|
. "ID: " . $this->id . "\n" |
|
. "Name: " . $this->name . "\n" |
|
. "Attn:" . $this->attn . "\n" |
|
. "Payer ID:" . $this->cms_id . "\n" |
|
. "ALT Payer ID:" . $this->alt_cms_id . "\n" |
|
//. "Phone: " . $this->phone_numbers[0]->toString($html) . "\n" |
|
. "Address: " . $this->address->toString($html) . "\n"; |
|
|
|
if ($html) { |
|
return nl2br($string); |
|
} else { |
|
return $string; |
|
} |
|
} |
|
}
|
|
|