Update setup.php (#2132)
[openemr.git] / services / InsuranceService.php
blob085d4c76ac0ecb8b63e87cf867744e89d480683d
1 <?php
2 /**
3 * InsuranceService
5 * @package OpenEMR
6 * @link http://www.open-emr.org
7 * @author Matthew Vita <matthewvita48@gmail.com>
8 * @author Brady Miller <brady.g.miller@gmail.com>
9 * @copyright Copyright (c) 2018 Matthew Vita <matthewvita48@gmail.com>
10 * @copyright Copyright (c) 2018 Brady Miller <brady.g.miller@gmail.com>
11 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
15 namespace OpenEMR\Services;
17 use Particle\Validator\Validator;
19 class InsuranceService
22 public function __construct()
26 public function validate($data)
28 $validator = new Validator();
30 $validator->required('pid')->numeric();
31 $validator->required('type')->inArray(array('primary', 'secondary', 'tertiary'));
32 $validator->required('provider')->numeric();
33 $validator->required('plan_name')->lengthBetween(2, 255);
34 $validator->required('policy_number')->lengthBetween(2, 255);
35 $validator->required('group_number')->lengthBetween(2, 255);
36 $validator->required('subscriber_lname')->lengthBetween(2, 255);
37 $validator->optional('subscriber_mname')->lengthBetween(2, 255);
38 $validator->required('subscriber_fname')->lengthBetween(2, 255);
39 $validator->required('subscriber_relationship')->lengthBetween(2, 255);
40 $validator->required('subscriber_ss')->lengthBetween(2, 255);
41 $validator->required('subscriber_DOB')->datetime('Y-m-d');
42 $validator->required('subscriber_street')->lengthBetween(2, 255);
43 $validator->required('subscriber_postal_code')->lengthBetween(2, 255);
44 $validator->required('subscriber_city')->lengthBetween(2, 255);
45 $validator->required('subscriber_state')->lengthBetween(2, 255);
46 $validator->required('subscriber_country')->lengthBetween(2, 255);
47 $validator->required('subscriber_phone')->lengthBetween(2, 255);
48 $validator->required('subscriber_sex')->lengthBetween(1, 25);
49 $validator->required('accept_assignment')->lengthBetween(1, 5);
50 $validator->required('policy_type')->lengthBetween(1, 25);
51 $validator->optional('subscriber_employer')->lengthBetween(2, 255);
52 $validator->optional('subscriber_employer_street')->lengthBetween(2, 255);
53 $validator->optional('subscriber_employer_postal_code')->lengthBetween(2, 255);
54 $validator->optional('subscriber_employer_state')->lengthBetween(2, 255);
55 $validator->optional('subscriber_employer_country')->lengthBetween(2, 255);
56 $validator->optional('subscriber_employer_city')->lengthBetween(2, 255);
57 $validator->optional('copay')->lengthBetween(2, 255);
58 $validator->optional('date')->datetime('Y-m-d');
60 return $validator->validate($data);
63 public function getOne($pid, $type)
65 $sql = "SELECT * FROM insurance_data WHERE pid=? AND type=?";
67 return sqlQuery($sql, array($pid, $type));
70 public function getAll($pid)
72 $sql = "SELECT * FROM insurance_data WHERE pid=?";
74 $statementResults = sqlStatement($sql, array($pid));
76 $results = array();
77 while ($row = sqlFetchArray($statementResults)) {
78 array_push($results, $row);
81 return $results;
84 public function doesInsuranceTypeHaveEntry($pid, $type)
86 return $this->getOne($pid, $type) !== null;
89 public function update($pid, $type, $data)
91 $sql = " UPDATE insurance_data SET ";
92 $sql .= " provider=?,";
93 $sql .= " plan_name=?,";
94 $sql .= " policy_number=?,";
95 $sql .= " group_number=?,";
96 $sql .= " subscriber_lname=?,";
97 $sql .= " subscriber_mname=?,";
98 $sql .= " subscriber_fname=?,";
99 $sql .= " subscriber_relationship=?,";
100 $sql .= " subscriber_ss=?,";
101 $sql .= " subscriber_DOB=?,";
102 $sql .= " subscriber_street=?,";
103 $sql .= " subscriber_postal_code=?,";
104 $sql .= " subscriber_city=?,";
105 $sql .= " subscriber_state=?,";
106 $sql .= " subscriber_country=?,";
107 $sql .= " subscriber_phone=?,";
108 $sql .= " subscriber_employer=?,";
109 $sql .= " subscriber_employer_street=?,";
110 $sql .= " subscriber_employer_postal_code=?,";
111 $sql .= " subscriber_employer_state=?,";
112 $sql .= " subscriber_employer_country=?,";
113 $sql .= " subscriber_employer_city=?,";
114 $sql .= " copay=?,";
115 $sql .= " date=?,";
116 $sql .= " subscriber_sex=?,";
117 $sql .= " accept_assignment=?,";
118 $sql .= " policy_type=?";
119 $sql .= " WHERE pid=?";
120 $sql .= " AND type=?";
122 return sqlStatement(
123 $sql,
124 array(
125 $data["provider"],
126 $data["plan_name"],
127 $data["policy_number"],
128 $data["group_number"],
129 $data["subscriber_lname"],
130 $data["subscriber_mname"],
131 $data["subscriber_fname"],
132 $data["subscriber_relationship"],
133 $data["subscriber_ss"],
134 $data["subscriber_DOB"],
135 $data["subscriber_street"],
136 $data["subscriber_postal_code"],
137 $data["subscriber_city"],
138 $data["subscriber_state"],
139 $data["subscriber_country"],
140 $data["subscriber_phone"],
141 $data["subscriber_employer"],
142 $data["subscriber_employer_street"],
143 $data["subscriber_employer_postal_code"],
144 $data["subscriber_employer_state"],
145 $data["subscriber_employer_country"],
146 $data["subscriber_employer_city"],
147 $data["copay"],
148 $data["date"],
149 $data["subscriber_sex"],
150 $data["accept_assignment"],
151 $data["policy_type"],
152 $pid,
153 $type
158 public function insert($pid, $type, $data)
160 if ($this->doesInsuranceTypeHaveEntry($pid, $type)) {
161 return $this->update($pid, $type, $data);
164 $sql = " INSERT INTO insurance_data SET ";
165 $sql .= " type=?,";
166 $sql .= " provider=?,";
167 $sql .= " plan_name=?,";
168 $sql .= " policy_number=?,";
169 $sql .= " group_number=?,";
170 $sql .= " subscriber_lname=?,";
171 $sql .= " subscriber_mname=?,";
172 $sql .= " subscriber_fname=?,";
173 $sql .= " subscriber_relationship=?,";
174 $sql .= " subscriber_ss=?,";
175 $sql .= " subscriber_DOB=?,";
176 $sql .= " subscriber_street=?,";
177 $sql .= " subscriber_postal_code=?,";
178 $sql .= " subscriber_city=?,";
179 $sql .= " subscriber_state=?,";
180 $sql .= " subscriber_country=?,";
181 $sql .= " subscriber_phone=?,";
182 $sql .= " subscriber_employer=?,";
183 $sql .= " subscriber_employer_street=?,";
184 $sql .= " subscriber_employer_postal_code=?,";
185 $sql .= " subscriber_employer_state=?,";
186 $sql .= " subscriber_employer_country=?,";
187 $sql .= " subscriber_employer_city=?,";
188 $sql .= " copay=?,";
189 $sql .= " date=?,";
190 $sql .= " pid=?,";
191 $sql .= " subscriber_sex=?,";
192 $sql .= " accept_assignment=?,";
193 $sql .= " policy_type=?";
195 return sqlInsert(
196 $sql,
197 array(
198 $type,
199 $data["provider"],
200 $data["plan_name"],
201 $data["policy_number"],
202 $data["group_number"],
203 $data["subscriber_lname"],
204 $data["subscriber_mname"],
205 $data["subscriber_fname"],
206 $data["subscriber_relationship"],
207 $data["subscriber_ss"],
208 $data["subscriber_DOB"],
209 $data["subscriber_street"],
210 $data["subscriber_postal_code"],
211 $data["subscriber_city"],
212 $data["subscriber_state"],
213 $data["subscriber_country"],
214 $data["subscriber_phone"],
215 $data["subscriber_employer"],
216 $data["subscriber_employer_street"],
217 $data["subscriber_employer_postal_code"],
218 $data["subscriber_employer_state"],
219 $data["subscriber_employer_country"],
220 $data["subscriber_employer_city"],
221 $data["copay"],
222 $data["date"],
223 $pid,
224 $data["subscriber_sex"],
225 $data["accept_assignment"],
226 $data["policy_type"]