package gov.va.med.edp.factory
{
import gov.va.med.edp.pt.demog.dao.PatientXml;
import gov.va.med.edp.util.BoardTools;
import gov.va.med.edp.util.Vista;
import gov.va.med.edp.vo.CodeSelectionVO;
import gov.va.med.edp.vo.ColorMapVO;
import gov.va.med.edp.vo.ColorMatchVO;
import gov.va.med.edp.vo.ColorSelectionVO;
import gov.va.med.edp.vo.ColumnSpecVO;
import gov.va.med.edp.vo.DisplayBoardPropertiesVO;
import gov.va.med.edp.vo.DisplaySizeVO;
import gov.va.med.edp.vo.LogEditParamsVO;
import gov.va.med.edp.vo.LogEntryVO;
import gov.va.med.edp.vo.LogSelectorVO;
import gov.va.med.edp.vo.NoteVO;
import gov.va.med.edp.vo.PCECodedValueVO;
import gov.va.med.edp.pt.demog.model.PatientCheckVO;
import gov.va.med.edp.pt.demog.model.PatientRecordFlagVO;
import gov.va.med.edp.vo.RoomBedVO;
import gov.va.med.edp.vo.StaffMemberVO;
import gov.va.med.edp.vo.VisitVO;
import gov.va.med.edp.pt.demog.model.PatientSelectVO;
import mx.collections.ArrayCollection;
public class TrackingFactory
{
public static function buildLogEditParamsFromXML(xml: XML): LogEditParamsVO
{
var logEditParamsVO: LogEditParamsVO = new LogEditParamsVO();
logEditParamsVO.requireDiagnosis = (xml.@reqDiag == "1");
logEditParamsVO.requireDisposition = (xml.@reqDisp == "1");
logEditParamsVO.requireDelay = (xml.@reqDelay == "1");
logEditParamsVO.delayMinutes = int(xml.@minDelay);
logEditParamsVO.codedDiagnosis = (xml.@codedDiag == "1");
logEditParamsVO.shiftStart = int(xml.@shiftOne);
logEditParamsVO.shiftDuration = int(xml.@shiftLen);
logEditParamsVO.promptResidents = (xml.@residents == "1");
logEditParamsVO.promptClinics = (xml.@clinics == "1");
logEditParamsVO.ambulanceArea = int(xml.@ambulance);
logEditParamsVO.defaultRoom = int(xml.@dfltroom);
logEditParamsVO.emptyValue = int(xml.@emptyIEN);
logEditParamsVO.errorIEN = int(xml.@errorIEN);
logEditParamsVO.nurseEvalIEN = int(xml.@evalIEN);
logEditParamsVO.leftIEN = int(xml.@leftIEN);
return logEditParamsVO;
}
public static function buildDisplayBoardPropertiesFromXML(xmlList: XMLList): DisplayBoardPropertiesVO
{
var displayBoardPropertiesVO: DisplayBoardPropertiesVO = new DisplayBoardPropertiesVO();
for each (var xml: XML in xmlList) {
var displaySize:DisplaySizeVO = new DisplaySizeVO();
displaySize.width = xml.@displayWidth;
//This loop exists because M dosen't have defaults set.
//get these defaults set in M
var dispHt:int = xml.@displayHeight;
if (dispHt != 0){
displaySize.height = xml.@displayHeight;
} else {
//default it to 768
displaySize.height = 768;
}
displaySize.label = xml.@displayLabel;
displaySize.data = xml.@displayLabel;
displayBoardPropertiesVO.displaySize = displaySize;
displayBoardPropertiesVO.fontSize = xml.@fontSize;
displayBoardPropertiesVO.squishFontSize = xml.@fontSize;
displayBoardPropertiesVO.scrollDelay = xml.@scrollDelay;
displayBoardPropertiesVO.squish = (xml.@squish == "true");
}
return displayBoardPropertiesVO;
}
public static function buildScreenSizesFromXML(nodeList: XMLList): ArrayCollection
{
var screenSizes:ArrayCollection = new ArrayCollection();
for each (var item: XML in nodeList) {
var screenSize:DisplaySizeVO = new DisplaySizeVO();
screenSize.label = item.@label;
screenSize.data = item.@label;
screenSize.width = item.@width;
screenSize.height = item.@height;
screenSizes.addItem(screenSize);
}
return screenSizes;
}
public static function buildLogEntryFromXML(xml:XML):LogEntryVO
{
var logEntryVO:LogEntryVO = new LogEntryVO();
logEntryVO.id = xml.id;
logEntryVO.site = xml.site;
logEntryVO.area = xml.area;
logEntryVO.dfn = xml.dfn;
logEntryVO.name = xml.name;
logEntryVO.ssn = xml.ssn;
logEntryVO.dob = xml.dob;
logEntryVO.arrival = int(xml.arrival);
logEntryVO.inTS = Vista.FMtoDate(xml.inTS);
logEntryVO.visit = int(xml.visit);
logEntryVO.closed = (xml.closed == "1");
logEntryVO.clinic = int(xml.clinic);
logEntryVO.complaint = xml.complaint;
logEntryVO.longComplaint = xml.compLong;
logEntryVO.status = int(xml.status);
logEntryVO.acuity = int(xml.acuity);
logEntryVO.bed = int(xml.bed);
logEntryVO.provider = xml.md;
logEntryVO.resident = xml.res;
logEntryVO.nurse = xml.nurse;
logEntryVO.comment = xml.comment;
logEntryVO.outTS = Vista.FMtoDate(xml.outTS);
logEntryVO.delay = int(xml.delay);
logEntryVO.disposition = int(xml.disposition);
logEntryVO.diagnoses = new ArrayCollection();
logEntryVO.patientFlags = PatientXml.buildPtRecordFlagsFromXML(xml.patientRecordFlags.flag);
logEntryVO.loadTS = xml.loadTS;
for each (var item: Object in xml.diagnosis) {
var pceItem: PCECodedValueVO = new PCECodedValueVO;
pceItem.type = item.@type;
pceItem.ien = int(item.@ien);
pceItem.code = item.@code;
pceItem.label = item.@label;
pceItem.primary = (item.@primary == "1");
pceItem.quantity = int(item.@qty);
logEntryVO.diagnoses.addItem(pceItem);
}
var required:String = xml.required;
logEntryVO.required = required;
logEntryVO.removeReady = (logEntryVO.required.length == 0);
if (required.indexOf("diag") != -1) logEntryVO.requireDiagnosis = true;
if (required.indexOf("disp") != -1) logEntryVO.requireDisposition = true;
if (required.indexOf("delay") != -1) logEntryVO.requireDelay = true;
return logEntryVO;
}
/* buildLogSelectorListFromXML expects: