source: EDIS/tags/ed/tracking-ui-core/src/main/flex/gov/va/med/edp/command/ChangeLogEntryFieldCommand.as@ 1240

Last change on this file since 1240 was 1240, checked in by George Lilly, 13 years ago

new version from the VA

File size: 5.8 KB
Line 
1/* ChangeLogEntryFieldCommand.as */
2
3package gov.va.med.edp.command
4{
5 import com.adobe.cairngorm.commands.ICommand;
6 import com.adobe.cairngorm.control.CairngormEvent;
7
8 import gov.va.med.edp.control.ChangeLogEntryFieldEvent;
9 import gov.va.med.edp.model.TrackingModelLocator;
10 import gov.va.med.edp.pt.demog.model.PatientSelectVO;
11 import gov.va.med.edp.vo.LogSelectorVO;
12 import gov.va.med.edp.vo.PCECodedValueVO;
13
14 public class ChangeLogEntryFieldCommand implements ICommand
15 {
16 private var model:TrackingModelLocator = TrackingModelLocator.getInstance();
17
18 public function execute(event:CairngormEvent):void
19 {
20 var changeEvent:ChangeLogEntryFieldEvent = ChangeLogEntryFieldEvent(event);
21 model.logEdit.dirty = true;
22
23 switch(changeEvent.field)
24 {
25 case "patient":
26 // set the name, ssn, and dfn all at once
27 var patientVO: PatientSelectVO = changeEvent.value as PatientSelectVO;
28 if ((model.logEdit.entry != null && model.logEdit.entry.name == "(ambulance)") &&
29 (patientVO.name != "(ambulance)") &&
30 (model.logEdit.entry.inTS == null) ) {
31 model.logEdit.entry.inTS = model.buildSiteDate();
32 model.logEdit.patientSelected = true;
33 }
34 model.logEdit.entry.name = patientVO.name;
35 model.logEdit.entry.ssn = patientVO.ssn;
36 model.logEdit.entry.dob = patientVO.dob;
37 model.logEdit.entry.dfn = patientVO.dfn;
38 synchSelector("name", patientVO.name);
39 synchSelector("ssn", patientVO.ssn);
40 break;
41 case "name":
42 model.logEdit.entry.name = changeEvent.value;
43 synchSelector(changeEvent.field, changeEvent.label);
44 break;
45 case "ssn":
46 model.logEdit.entry.ssn = changeEvent.value;
47 synchSelector(changeEvent.field, changeEvent.label);
48 break;
49 case "inTS":
50 model.logEdit.entry.inTS = changeEvent.value;
51 model.logEdit.entry.requireDelay = isDelayRequired();
52 break;
53 case "outTS":
54 model.logEdit.entry.outTS = changeEvent.value;
55 model.logEdit.entry.requireDelay = isDelayRequired();
56 break;
57 case "complaint":
58 model.logEdit.entry.complaint = changeEvent.value;
59 break;
60 case "longComplaint":
61 model.logEdit.entry.longComplaint = changeEvent.value;
62 break;
63 case "arrival":
64 model.logEdit.entry.arrival = changeEvent.value;
65 break;
66 case "bed":
67 model.logEdit.entry.bed = changeEvent.value;
68 if (int(changeEvent.reference) > 0) {
69 model.logEdit.entry.status = int(changeEvent.reference);
70 } else {
71 if (model.logEdit.undo != null) {
72 model.logEdit.entry.status = model.logEdit.undo.status;
73 }
74 }
75 // don't synch until "save"
76 // synchSelector(changeEvent.field, changeEvent.label);
77 break;
78 case "acuity":
79 model.logEdit.entry.acuity = changeEvent.value;
80 break;
81 case "clinic":
82 model.logEdit.entry.clinic = changeEvent.value;
83 break;
84 case "status":
85 model.logEdit.entry.status = changeEvent.value;
86 break;
87 case "provider":
88 model.logEdit.entry.provider = changeEvent.value;
89 break;
90 case "resident":
91 model.logEdit.entry.resident = changeEvent.value;
92 break;
93 case "nurse":
94 model.logEdit.entry.nurse = changeEvent.value;
95 break;
96 case "comment":
97 model.logEdit.entry.comment = changeEvent.value;
98 break;
99 case "disposition":
100 model.logEdit.entry.disposition = changeEvent.value;
101 model.entryRemoveReady();
102 break;
103 case "delay":
104 model.logEdit.entry.delay = changeEvent.value;
105 model.entryRemoveReady();
106 break;
107 case "diagnoses":
108 var pceItem: PCECodedValueVO = changeEvent.value as PCECodedValueVO;
109 if (changeEvent.clear) {
110 // clear means we want to remove the item
111 var index: int = model.logEdit.entry.diagnoses.getItemIndex(pceItem);
112 if (pceItem.added) {
113 // remove from list if we just added it in this session
114 model.logEdit.entry.diagnoses.removeItemAt(index);
115 } else {
116 // otherwise set remove to true so PCE can remove it
117 model.logEdit.entry.diagnoses[index].remove = true;
118 }
119 } else if (pceItem.updated){ // MAKE SURE THAT UPDATE IS CHECKED BEFORE ADD..
120 pceItem.updated = true // BECAUSE AN ITEM CAN BE ADDED AND THEN UPDTED IN THE SAME SESSION
121 model.logEdit.entry.diagnoses[index].updated = true;
122 } else if (pceItem.added){
123 pceItem.added = true;
124 model.logEdit.entry.diagnoses.addItem(pceItem);
125 }
126 model.logEdit.entry.updatedDiagnoses = true;
127 model.entryRemoveReady();
128 break;
129 } // switch
130 } // execute
131
132 private function synchSelector(field: String, label: String): void
133 {
134 var logSelector: LogSelectorVO = findLogSelector();
135 if (logSelector == null) return;
136
137 switch(field)
138 {
139 case "name":
140 logSelector.name = label;
141 break;
142 case "ssn":
143 logSelector.ssn = label;
144 break;
145 case "bed":
146 logSelector.bed = label;
147 break;
148 } // switch
149 } // synchSelector
150
151 private function findLogSelector(): LogSelectorVO
152 {
153 for each (var logSelector: LogSelectorVO in model.logEntryList.entries) {
154 if (logSelector.id == model.logEdit.entry.id) {
155 return logSelector;
156 }
157 }
158 return null;
159 }
160
161 private function isDelayRequired(): Boolean
162 {
163 if (!model.logEditParams.requireDelay) return false;
164
165 // don't require delay reason for "entered in error"
166 if (model.logEdit.entry.disposition == model.logEditParams.errorIEN) return false;
167
168 var mins: Number = (model.logEdit.entry.outTS.valueOf() - model.logEdit.entry.inTS.valueOf()) / 60000; // milliseconds to minutes
169 return (mins > model.logEditParams.delayMinutes) ? true : false;
170 }
171
172 } // class
173} // package
Note: See TracBrowser for help on using the repository browser.