[1240] | 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
|
---|