CDR Module: Ready for review by community.
[openemr.git] / interface / super / rules / library / RuleCriteriaListsBuilder.php
blob8cf347883bef48e2ccd69ab6cb998108c0525106
1 <?php
2 // Copyright (C) 2010-2011 Aron Racho <aron@mi-squred.com>
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 2
7 // of the License, or (at your option) any later version.
9 /**
10 * Description of RuleCriteriaListsBuilder
12 * @author aron
14 class RuleCriteriaListsBuilder extends RuleCriteriaBuilder {
16 /**
17 * @return RuleCriteriaType
19 function resolveRuleCriteriaType( $method, $methodDetail, $value ) {
20 if (strpos($method, "lists") ) {
21 if ( $methodDetail == 'medical_problem' ) {
22 $exploded = explode("::", $value);
23 if ( $exploded[0] == "CUSTOM" ) {
24 // its a medical issue
25 return RuleCriteriaType::from( RuleCriteriaType::issue );
26 } else {
27 // assume its a diagnosis
28 return RuleCriteriaType::from( RuleCriteriaType::diagnosis );
30 } else if ( $methodDetail == 'medication' ) {
31 // its a medication
32 return RuleCriteriaType::from( RuleCriteriaType::medication );
33 } else if ( $methodDetail == 'allergy' ) {
34 // its a medication
35 return RuleCriteriaType::from( RuleCriteriaType::allergy );
36 } else if ( $methodDetail == 'surgery' ) {
37 // its a medication
38 return RuleCriteriaType::from( RuleCriteriaType::surgery );
42 return null;
46 /**
47 * @param RuleCriteriaType $ruleCriteriaType
48 * @return RuleCriteria
50 function build( $ruleCriteriaType, $value, $methodDetail ) {
51 $exploded = explode("::", $value);
53 if ( $ruleCriteriaType->code == 'issue' ) {
54 return new RuleCriteriaMedicalIssue( xl( "Medical Issue" ), $exploded[1] );
57 if ( $ruleCriteriaType->code == 'diagnosis' ) {
58 return new RuleCriteriaDiagnosis( xl( "Diagnosis" ), $exploded[0], $exploded[1] );
61 if ( $ruleCriteriaType->code == 'medication' ) {
62 return new RuleCriteriaMedication( xl( "Medication" ), $value );
65 if ( $ruleCriteriaType->code == 'surgery' ) {
66 return new RuleCriteriaSurgery( xl( "Surgery" ), $value );
70 if ( $ruleCriteriaType->code == 'allergy' ) {
71 return new RuleCriteriaAllergy( xl( "Allergy" ), $value );
73 // its unknown
74 return null;
77 /**
79 * @param RuleCriteriaType $criteriaType
81 function newInstance( $ruleCriteriaType ) {
82 if ( $ruleCriteriaType->code == 'issue' ) {
83 return new RuleCriteriaMedicalIssue( xl( "Medical Issue" ) );
86 if ( $ruleCriteriaType->code == 'diagnosis' ) {
87 return new RuleCriteriaDiagnosis( xl( "Diagnosis" ) );
90 if ( $ruleCriteriaType->code == 'medication' ) {
91 return new RuleCriteriaMedication( xl( "Medication" ) );
94 if ( $ruleCriteriaType->code == 'surgery' ) {
95 return new RuleCriteriaSurgery( xl( "Surgery" ) );
98 if ( $ruleCriteriaType->code == 'allergy' ) {
99 return new RuleCriteriaAllergy( xl( "Allergy" ) );
102 return null;