1 | /* ChangeLogEntryFieldCommand.as */
|
---|
2 |
|
---|
3 | package 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
|
---|