/*******************************************************************************
 *  Copyright 2017 Centre for Development of Advanced Computing(C-DAC), Pune
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  
 *    http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *******************************************************************************/
package cdac.medinfo.sdk.hl7282.hl7model.messages.orderentry;

import cdac.medinfo.sdk.hl7282.baselibs.messagedictionary.MessageMapReader;
import cdac.medinfo.sdk.hl7282.baselibs.messages.ACK;
import cdac.medinfo.sdk.hl7282.baselibs.messages.IMessageFactory;
import cdac.medinfo.sdk.hl7282.baselibs.messages.Message;
import cdac.medinfo.sdk.hl7282.exceptions.MessageNotSupportedException;
import cdac.medinfo.sdk.hl7282.utils.EnumHL7System;
import cdac.medinfo.sdk.hl7282.utils.EnumMessageCode;
import cdac.medinfo.sdk.hl7282.utils.EnumTriggerEvent;
import cdac.medinfo.sdk.hl7282.utils.IMap;
import cdac.medinfo.sdk.hl7282.utils.IMessageMapReader;

class OrderEntryMessageFactory implements IMessageFactory
{
	private static OrderEntryMessageFactory objOrderEntryMessageFactory = null;
	private static IMessageMapReader objMessamapReader = null;
	private OrderEntryMessageFactory()
	{}

	/**
	 * Creates Object of ADTMessageFactory.
	 * @return ADTMessageFactory object of ADTMessageFactory
	 */
	public static OrderEntryMessageFactory createInstance()
	{
		if(objOrderEntryMessageFactory == null)
		{
			objMessamapReader = MessageMapReader.createInstance(EnumHL7System.HL7_SYSTEM_ORDERENTRY);
			objOrderEntryMessageFactory = new OrderEntryMessageFactory();
		}
		return objOrderEntryMessageFactory;
	}

	/**
	 * Creates Message with specified enumerations of Trigger Event & Message Structure
	 * @param enumMessageCode enumerated value of Message Code
	 * @param enumTriggerEvent enumerated value of Trigger Event
	 * @return Message instance of Message
	 */
	public Message createMessage(EnumMessageCode enumMessageCode,EnumTriggerEvent enumTriggerEvent)
	{
		Message objMessage = null;
		
		IMap objMessageMap = getMessageMap(enumMessageCode, enumTriggerEvent);

		if(enumMessageCode == EnumMessageCode.ACK)
		{
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode, null);
			if(isEventSupported(enumTriggerEvent))
				objMessage = new ACK(enumTriggerEvent, objMessageMap);
			else
				throw new MessageNotSupportedException(enumTriggerEvent.getValue());
		}
		else
		{
			switch(enumTriggerEvent)
			{
			case O29 : 
				objMessage = new BPS_O29(objMessageMap);
				break;
			case O30 : 
				objMessage = new BRP_O30(objMessageMap);
				break;
			case O32 : 
				objMessage = new BRT_O32(objMessageMap);
				break;
			case O31 : 
				objMessage = new BTS_O31(objMessageMap);
				break;
			case O27 : 
				objMessage = new OMB_O27(objMessageMap);
				break;
			case O03 : 
				objMessage = new OMD_O03(objMessageMap);
				break;
			case O19 : 
				objMessage = new OMG_O19(objMessageMap);
				break;
			case O23 : 
				objMessage = new OMI_O23(objMessageMap);
				break;
			case O21 : 
				objMessage = new OML_O21(objMessageMap);
				break;
			case O33 : 
				objMessage = new OML_O33(objMessageMap);
				break;
			case O35 : 
				objMessage = new OML_O35(objMessageMap);
				break;
			case O07 : 
				objMessage = new OMN_O07(objMessageMap);
				break;
			case O09 : 
				objMessage = new OMP_O09(objMessageMap);
				break;
			case O05 : 
				objMessage = new OMS_O05(objMessageMap);
				break;
			case O28 : 
				objMessage = new ORB_O28(objMessageMap);
				break;
			case O04 : 
				objMessage = new ORD_O04(objMessageMap);
				break;
			case O20 : 
				objMessage = new ORG_O20(objMessageMap);
				break;
			case O24 : 
				objMessage = new ORI_O24(objMessageMap);
				break;
			case O22 : 
				objMessage = new ORL_O22(objMessageMap);
				break;
			case O34 : 
				objMessage = new ORL_O34(objMessageMap);
				break;
			case O36 : 
				objMessage = new ORL_O36(objMessageMap);
				break;
			case O37 : 
				objMessage = new OPL_O37(objMessageMap);
				break;
			case O38 : 
				objMessage = new OPR_O38(objMessageMap);
				break;
			case O08 : 
				objMessage = new ORN_O08(objMessageMap);
				break;
			case O10 : 
				objMessage = new ORP_O10(objMessageMap);
				break;
			case O06 : 
				objMessage = new ORS_O06(objMessageMap);
				break;

			case Q31 : 
				objMessage = new QBP_Q31(objMessageMap);
				break;
			case Z73 : 
				objMessage = new QBP_Z73(objMessageMap);
				break;
			case Q26 : 
				objMessage = new QRY_Q26(objMessageMap);
				break;
			case Q27 : 
				objMessage = new QRY_Q27(objMessageMap);
				break;
			case Q28 : 
				objMessage = new QRY_Q28(objMessageMap);
				break;
			case Q29 : 
				objMessage = new QRY_Q29(objMessageMap);
				break;
			case Q30 : 
				objMessage = new QRY_Q30(objMessageMap);
				break;
			case O17 : 
				objMessage = new RAS_O17(objMessageMap);
				break;
			case O11 : 
				objMessage = new RDE_O11(objMessageMap);
				break;
			case O25 : 
				objMessage = new RDE_O25(objMessageMap);
				break;
			case O13 : 
				objMessage = new RDS_O13(objMessageMap);
				break;
			case O15 : 
				objMessage = new RGV_O15(objMessageMap);
				break;
			case O18 : 
				objMessage = new RRA_O18(objMessageMap);
				break;
			case O14 : 
				objMessage = new RRD_O14(objMessageMap);
				break;
			case O12 : 
				objMessage = new RRE_O12(objMessageMap);
				break;
			case O26 : 
				objMessage = new RRE_O26(objMessageMap);
				break;
			case O16 : 
				objMessage = new RRG_O16(objMessageMap);
				break;
			case O40 : 
				objMessage = new ORL_O40(objMessageMap);
				break;
			case O41 : 
				switch (enumMessageCode) {
				case DBC:
					objMessage = new DBC_O41(objMessageMap);
					break;
				case OSU:
					objMessage = new OSU_O41(objMessageMap);
					break;
				}
				break;
			case O39 : 
				objMessage = new OML_O39(objMessageMap);
				break;
			case O42 : 
				switch (enumMessageCode) {
				case DBU:
					objMessage = new DBU_O42(objMessageMap);
					break;
				case OMQ:
					objMessage = new OMQ_O42(objMessageMap);
					break;
				}
				break;
			case O43 : 
				switch (enumMessageCode) {
				case DRG:
					objMessage = new DRG_O43(objMessageMap);
					break;
				case ORX:
					objMessage = new ORX_O43(objMessageMap);
					break;
				}
				break;
			case O44 : 
				objMessage = new DER_O44(objMessageMap);
				break;
			case O45 : 
				objMessage = new DEO_O45(objMessageMap);
				break;
			case O46 : 
				objMessage = new DEL_O46(objMessageMap);
				break;
			case O47 : 
				objMessage = new DRC_O47(objMessageMap);
				break;
			case O48 : 
				objMessage = new DPR_O48(objMessageMap);
				break;
			case K31 : 
				objMessage = new RSP_K31(objMessageMap);
				break;
			case K33 : 
				objMessage = new RSP_K33(objMessageMap);
				break;
			case K34 : 
				objMessage = new RSP_K34(objMessageMap);
				break;
			case Q33 : 
				objMessage = new QBP_Q33(objMessageMap);
				break;
			case Q34 : 
				objMessage = new QBP_Q34(objMessageMap);
				break;
			case Z74 : 
				objMessage = new RTB_Z74(objMessageMap);
				break;
			case V04 : 
				objMessage = new VXU_V04(objMessageMap);
				break;
			}
		}
		return objMessage;
	}

	/**
	 * 
	 * @param enumMessageCode
	 * @param enumTriggerEvent
	 */
	private IMap getMessageMap(EnumMessageCode enumMessageCode, EnumTriggerEvent enumTriggerEvent)
	{
		IMap objMessageMap = null;
		
		switch(enumTriggerEvent)
		{
		case O29 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O29);
			break;
		case O30 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O30);
			break;
		case O32 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O32);
			break;
		case O31 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O31);
			break;
		case O27 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O27);
			break;
		case O03 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O03);
			break;
		case O19 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O19);
			break;
		case O23 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O23);
			break;
		case O21 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O21);
			break;
		case O33 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O33);
			break;
		case O35 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O35);
			break;
		case O07 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O07);
			break;
		case O09 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O09);
			break;
		case O05 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O05);
			break;
		case O28 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O28);
			break;
		case O04 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O04);
			break;
		case O20 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O20);
			break;
		case O24 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O24);
			break;
		case O22 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O22);
			break;
		case O34 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O34);
			break;
		case O36 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O36);
			break;
		case O37 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O37);
			break;
		case O38 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O38);
			break;
		case O08 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O08);
			break;
		case O10 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O10);
			break;
		case O06 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O06);
			break;
		case Q31 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.Q31);
			break;
		case Z73 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.Z73);
			break;
		case Q26 : 
		case Q27 : 
		case Q28 : 
		case Q29 : 
		case Q30 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.Q26);
			break;
		case RAR : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.RAR);
			break;
		case O17 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O17);
			break;
		case O11 : 
		case O25 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O11);
			break;
		case RDR : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.RDR);
			break;
		case O13 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O13);
			break;
		case RER : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.RER);
			break;
		case RGR : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.RGR);
			break;
		case O15 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O15);
			break;
		case ROR : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.ROR);
			break;
		case O18 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O18);
			break;
		case O14 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O14);
			break;
		case O12 : 
		case O26 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O12);
			break;
		case O16 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O16);
			break;
		case K31 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.K31);
			break;
		case K33 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.K33);
			break;
		case K34 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.K34);
			break;
		case Q33 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.Q33);
			break;
		case Q34 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.Q34);
			break;
		case Z74 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.Z74);
			break;
		case V04 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.V04);
			break;
		case O40 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O40);
			break;
		case O41 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O41);
			break;
		case O42 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O42);
			break;
		case O43 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O43);
			break;
		case O44 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O44);
			break;
		case O45 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O45);
			break;
		case O46 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O46);
			break;
		case O47 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O47);
			break;
		case O48 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O48);
			break;
		case O39 : 
			objMessageMap = objMessamapReader.getMessageMap(enumMessageCode,EnumTriggerEvent.O39);
			break;
		}
		return objMessageMap;
	}

	/**
	 * Checks whether Trigger Event specified in Enumeration is Supported.
	 * @param enumTriggerEvent enumerated value of Trigger Event
	 * @return boolean shows status as success or failure
	 */
	public boolean isEventSupported(EnumTriggerEvent enumTriggerEvent) 
	{
		if( enumTriggerEvent.equals(EnumTriggerEvent.O29)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O30)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O32)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O31)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O27)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O03)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O19)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O23)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O21)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O33)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O35)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O39)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O40)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O41)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O42)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O43)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O44)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O45)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O46)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O47)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O48)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O07)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O09)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O05)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O28)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O04)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O20)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O24)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O22)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O34)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O36)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O37)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O38)	
				|| enumTriggerEvent.equals(EnumTriggerEvent.O08)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O10)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O06)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Q31)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Z73)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Q26)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Q27)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Q28)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Q29)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Q30)
				|| enumTriggerEvent.equals(EnumTriggerEvent.RAR)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O17)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O11)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O25)
				|| enumTriggerEvent.equals(EnumTriggerEvent.RDR)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O13)
				|| enumTriggerEvent.equals(EnumTriggerEvent.RER)
				|| enumTriggerEvent.equals(EnumTriggerEvent.RGR)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O15)
				|| enumTriggerEvent.equals(EnumTriggerEvent.ROR)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O18)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O14)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O12)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O26)
				|| enumTriggerEvent.equals(EnumTriggerEvent.O16)
				|| enumTriggerEvent.equals(EnumTriggerEvent.K31)
				|| enumTriggerEvent.equals(EnumTriggerEvent.K33)
				|| enumTriggerEvent.equals(EnumTriggerEvent.K34)
				|| enumTriggerEvent.equals(EnumTriggerEvent.Z74)
				|| enumTriggerEvent.equals(EnumTriggerEvent.V04)
		)
			return true;
		else
			return false;

	}

	/*
	 * Checks whether Message Code specified in Enumeration is Supported.
	 */
	boolean isCodeSupported(EnumMessageCode enumMessageCode)
	{
		if(enumMessageCode == EnumMessageCode.ORR || enumMessageCode == EnumMessageCode.OSR ||
				enumMessageCode == EnumMessageCode.ORG || enumMessageCode == EnumMessageCode.ORL ||
				enumMessageCode == EnumMessageCode.ORI || enumMessageCode == EnumMessageCode.ORD ||
				enumMessageCode == EnumMessageCode.ORS || enumMessageCode == EnumMessageCode.ORN ||
				enumMessageCode == EnumMessageCode.ORP || enumMessageCode == EnumMessageCode.RRE || 
				enumMessageCode == EnumMessageCode.RRD || enumMessageCode == EnumMessageCode.RGR ||
				enumMessageCode == EnumMessageCode.RRG || enumMessageCode == EnumMessageCode.RRA ||
				enumMessageCode == EnumMessageCode.ROR || enumMessageCode == EnumMessageCode.RAR ||
				enumMessageCode == EnumMessageCode.RDR || enumMessageCode == EnumMessageCode.RER ||
				enumMessageCode == EnumMessageCode.VXX || enumMessageCode == EnumMessageCode.VXR ||
				enumMessageCode == EnumMessageCode.ORB || enumMessageCode == EnumMessageCode.BRP ||
				enumMessageCode == EnumMessageCode.BRT || enumMessageCode == EnumMessageCode.RTB ||
				enumMessageCode == EnumMessageCode.ACK || enumMessageCode == EnumMessageCode.RSP ||
				enumMessageCode == EnumMessageCode.ORM || enumMessageCode == EnumMessageCode.OSQ ||
				enumMessageCode == EnumMessageCode.OMG || enumMessageCode == EnumMessageCode.OML ||
				enumMessageCode == EnumMessageCode.OMI || enumMessageCode == EnumMessageCode.OMS ||
				enumMessageCode == EnumMessageCode.OMD || enumMessageCode == EnumMessageCode.OMN ||
				enumMessageCode == EnumMessageCode.OMP || enumMessageCode == EnumMessageCode.RDE ||
				enumMessageCode == EnumMessageCode.RGV || enumMessageCode == EnumMessageCode.RDS ||
				enumMessageCode == EnumMessageCode.RAS || enumMessageCode == EnumMessageCode.VXQ ||
				enumMessageCode == EnumMessageCode.VXU || enumMessageCode == EnumMessageCode.OMB ||
				enumMessageCode == EnumMessageCode.BPS || enumMessageCode == EnumMessageCode.BTS ||
				enumMessageCode == EnumMessageCode.QRY || enumMessageCode == EnumMessageCode.QBP || 
				enumMessageCode == EnumMessageCode.DBU || enumMessageCode == EnumMessageCode.DEL || 
				enumMessageCode == EnumMessageCode.DEO || enumMessageCode == EnumMessageCode.DER ||
				enumMessageCode == EnumMessageCode.DPR || enumMessageCode == EnumMessageCode.DRC || 
				enumMessageCode == EnumMessageCode.DRC || enumMessageCode == EnumMessageCode.DRG || 
				enumMessageCode == EnumMessageCode.OPR || enumMessageCode == EnumMessageCode.OPL ||
				enumMessageCode == EnumMessageCode.OMQ || enumMessageCode == EnumMessageCode.DBU
				)
			return true;
		
		return false;
	}
}
