3 // Copyright (C) 2010-2011 Aron Racho <aron@mi-squred.com>
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
11 * Description of RuleCriteriaListsBuilder
15 class RuleCriteriaListsBuilder
extends RuleCriteriaBuilder
18 * @return RuleCriteriaType
20 function resolveRuleCriteriaType($method, $methodDetail, $value)
22 if (strpos($method, "lists")) {
23 if ($methodDetail == 'medical_problem') {
24 $exploded = explode("::", $value);
25 if ($exploded[0] == "CUSTOM") {
26 // its a medical issue
27 return RuleCriteriaType
::from(RuleCriteriaType
::issue
);
29 // assume its a diagnosis
30 return RuleCriteriaType
::from(RuleCriteriaType
::diagnosis
);
32 } elseif ($methodDetail == 'medication') {
34 return RuleCriteriaType
::from(RuleCriteriaType
::medication
);
35 } elseif ($methodDetail == 'allergy') {
37 return RuleCriteriaType
::from(RuleCriteriaType
::allergy
);
38 } elseif ($methodDetail == 'surgery') {
40 return RuleCriteriaType
::from(RuleCriteriaType
::surgery
);
49 * @param RuleCriteriaType $ruleCriteriaType
50 * @return RuleCriteria
52 function build($ruleCriteriaType, $value, $methodDetail)
54 $exploded = explode("::", $value);
56 if ($ruleCriteriaType->code
== 'issue') {
57 return new RuleCriteriaMedicalIssue(xl("Medical Issue"), $exploded[1]);
60 if ($ruleCriteriaType->code
== 'diagnosis') {
61 return new RuleCriteriaDiagnosis(xl("Diagnosis"), $exploded[0], $exploded[1]);
64 if ($ruleCriteriaType->code
== 'medication') {
65 return new RuleCriteriaMedication(xl("Medication"), $value);
68 if ($ruleCriteriaType->code
== 'surgery') {
69 return new RuleCriteriaSurgery(xl("Surgery"), $value);
73 if ($ruleCriteriaType->code
== 'allergy') {
74 return new RuleCriteriaAllergy(xl("Allergy"), $value);
83 * @param RuleCriteriaType $criteriaType
85 function newInstance($ruleCriteriaType)
87 if ($ruleCriteriaType->code
== 'issue') {
88 return new RuleCriteriaMedicalIssue(xl("Medical Issue"));
91 if ($ruleCriteriaType->code
== 'diagnosis') {
92 return new RuleCriteriaDiagnosis(xl("Diagnosis"));
95 if ($ruleCriteriaType->code
== 'medication') {
96 return new RuleCriteriaMedication(xl("Medication"));
99 if ($ruleCriteriaType->code
== 'surgery') {
100 return new RuleCriteriaSurgery(xl("Surgery"));
103 if ($ruleCriteriaType->code
== 'allergy') {
104 return new RuleCriteriaAllergy(xl("Allergy"));