package gov.va.med.esr.common.model.lookup;

import gov.va.med.fw.model.lookup.AbstractCode;
import gov.va.med.fw.model.lookup.AbstractNamedActiveLookup;

//Java Classes

//Library Classes

//Framework Classes

/**
 * @author Commons Team
 * 
 * @hibernate.mapping auto-import="true" default-cascade="all"
 * @hibernate.class table="INCOME_TEST_STATUS" mutable="false"
 * @hibernate.cache usage="read-only"
 */
public class MeansTestStatus extends AbstractNamedActiveLookup {
	/**
     * An instance of serialVersionUID
     */    
    private static final long serialVersionUID = -8800730677493427034L;

    // Means Test Status
	public static final Code MT_STATUS_EXEMPT_LTC_COPAY_EXEMPTION_TEST = new Code(
			"0");

	public static final Code MT_STATUS_NON_EXEMPT_LTC_COPAY_EXEMPTION_TEST = new Code(
			"1");

	public static final Code MT_STATUS_MT_COPAY_EXEMPT = new Code("A");

	public static final Code MT_STATUS_MT_CATEGORY_B = new Code("B");

	public static final Code MT_STATUS_MT_COPAY_REQUIRED = new Code("C");

	public static final Code MT_STATUS_EXEMPT = new Code("E");

	public static final Code MT_STATUS_GMT_COPAY_REQUIRED = new Code("G");

	// TODO RP 07/29 verify if this is correct
	public static final Code MT_STATUS_INCOMPLETE_RX_COPAY_ONLY = new Code("I");

	public static final Code MT_STATUS_NP_LONGER_APPLICABLE_RX_COPAY_ONLY = new Code(
			"L");

	public static final Code MT_STATUS_NON_EXEMPT = new Code("M");

	public static final Code MT_STATUS_NO_LONGER_REQUIRED = new Code("N");

	public static final Code MT_STATUS_PENDING_ADJUDICATION = new Code("P");

	public static final Code MT_STATUS_REQUIRED = new Code("R");

	// public static final Code MT_STATUS_CONVERTED_MT_COPAY_REQUIRED = new
	// Code("10");
	// public static final Code MT_STATUS_NOT_CONVERTED_MT_COPAY_EXEMPT =
	// new Code("11");

	public static class Code extends AbstractCode {
		private static final long serialVersionUID = 936629615369929751L;

        private Code(String code) {
			super(code);
		}

		public static Code getByCode(String code) {
			return (Code) getCode(Code.class, code);
		}
	}

	/**
	 * Default constructor.
	 */
	public MeansTestStatus() {
		super();
	}
}