/// <summary>
 /// Deprecated Method for adding a new object to the T_WQX_IMPORT_TEMP_RESULT EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToT_WQX_IMPORT_TEMP_RESULT(T_WQX_IMPORT_TEMP_RESULT t_WQX_IMPORT_TEMP_RESULT)
 {
     base.AddObject("T_WQX_IMPORT_TEMP_RESULT", t_WQX_IMPORT_TEMP_RESULT);
 }
 /// <summary>
 /// Create a new T_WQX_IMPORT_TEMP_RESULT object.
 /// </summary>
 /// <param name="tEMP_RESULT_IDX">Initial value of the TEMP_RESULT_IDX property.</param>
 /// <param name="tEMP_SAMPLE_IDX">Initial value of the TEMP_SAMPLE_IDX property.</param>
 public static T_WQX_IMPORT_TEMP_RESULT CreateT_WQX_IMPORT_TEMP_RESULT(global::System.Int32 tEMP_RESULT_IDX, global::System.Int32 tEMP_SAMPLE_IDX)
 {
     T_WQX_IMPORT_TEMP_RESULT t_WQX_IMPORT_TEMP_RESULT = new T_WQX_IMPORT_TEMP_RESULT();
     t_WQX_IMPORT_TEMP_RESULT.TEMP_RESULT_IDX = tEMP_RESULT_IDX;
     t_WQX_IMPORT_TEMP_RESULT.TEMP_SAMPLE_IDX = tEMP_SAMPLE_IDX;
     return t_WQX_IMPORT_TEMP_RESULT;
 }
Example #3
0
        public static int InsertWQX_IMPORT_TEMP_RESULT_New(int tEMP_SAMPLE_IDX, Dictionary<string, string> colVals, string orgID)
        {
            using (OpenEnvironmentEntities ctx = new OpenEnvironmentEntities())
            {
                try
                {
                    T_WQX_IMPORT_TEMP_RESULT a = new T_WQX_IMPORT_TEMP_RESULT();

                    a.TEMP_SAMPLE_IDX = tEMP_SAMPLE_IDX;
                    a.IMPORT_STATUS_CD = "P";
                    a.IMPORT_STATUS_DESC = "";

                    //get import config rules
                    List<ConfigInfoType> _allRules = Utils.GetAllColumnInfo("S");

                    //******************* PRE VALIDATION *************************************
                    //special rule: set values of ND, etc
                    string _rdc = Utils.GetValueOrDefault(colVals, "RESULT_DETECT_CONDITION");
                    string _res = Utils.GetValueOrDefault(colVals, "RESULT_MSR");
                    if (_rdc == "DNQ" || _res == "DNQ") { colVals["RESULT_DETECT_CONDITION"] = "Detected Not Quantified"; colVals["RESULT_MSR"] = "DNQ"; }
                    if (_rdc == "ND" || _res == "ND") { colVals["RESULT_DETECT_CONDITION"] = "Not Detected"; colVals["RESULT_MSR"] = "ND"; }
                    if (_rdc == "NR" || _res == "NR") { colVals["RESULT_DETECT_CONDITION"] = "Not Reported"; colVals["RESULT_MSR"] = "NR"; }
                    if (_rdc == "PAQL" || _res == "PAQL") { colVals["RESULT_DETECT_CONDITION"] = "Present Above Quantification Limit"; colVals["RESULT_MSR"] = "PAQL"; }
                    if (_rdc == "PBQL" || _res == "PBQL") { colVals["RESULT_DETECT_CONDITION"] = "Present Below Quantification Limit"; colVals["RESULT_MSR"] = "PBQL"; }
                    // ******************* END PRE VALIDATION *********************************

                    //loop through all optional fields
                    List<string> rFields = new List<string>(new string[] { "DATA_LOGGER_LINE","RESULT_DETECT_CONDITION","CHAR_NAME", "METHOD_SPECIATION_NAME",
                        "RESULT_SAMP_FRACTION", "RESULT_MSR","RESULT_MSR_UNIT","RESULT_MSR_QUAL","RESULT_STATUS","STATISTIC_BASE_CODE","RESULT_VALUE_TYPE","WEIGHT_BASIS",
                        "TIME_BASIS","TEMP_BASIS","PARTICLESIZE_BASIS","PRECISION_VALUE","BIAS_VALUE","CONFIDENCE_INTERVAL_VALUE","UPPER_CONFIDENCE_LIMIT","LOWER_CONFIDENCE_LIMIT",
                            "RESULT_COMMENT","DEPTH_HEIGHT_MSR","DEPTH_HEIGHT_MSR_UNIT","DEPTHALTITUDEREFPOINT","BIO_INTENT_NAME","BIO_INDIVIDUAL_ID","BIO_SUBJECT_TAXONOMY",
                            "BIO_UNIDENTIFIED_SPECIES_ID","BIO_SAMPLE_TISSUE_ANATOMY","GRP_SUMM_COUNT_WEIGHT_MSR","GRP_SUMM_COUNT_WEIGHT_MSR_UNIT","TAX_DTL_CELL_FORM",
                            "TAX_DTL_CELL_SHAPE","TAX_DTL_HABIT","TAX_DTL_VOLTINISM","TAX_DTL_POLL_TOLERANCE","TAX_DTL_POLL_TOLERANCE_SCALE","TAX_DTL_TROPHIC_LEVEL",
                            "TAX_DTL_FUNC_FEEDING_GROUP1","TAX_DTL_FUNC_FEEDING_GROUP2","TAX_DTL_FUNC_FEEDING_GROUP3","FREQ_CLASS_CODE","FREQ_CLASS_UNIT","FREQ_CLASS_UPPER",
                            "FREQ_CLASS_LOWER","ANALYTIC_METHOD_IDX","ANALYTIC_METHOD_ID","ANALYTIC_METHOD_CTX","LAB_NAME","LAB_ANALYSIS_START_DT","LAB_ANALYSIS_END_DT",
                            "RESULT_LAB_COMMENT_CODE","METHOD_DETECTION_LEVEL","LAB_REPORTING_LEVEL","PQL","LOWER_QUANT_LIMIT","UPPER_QUANT_LIMIT","DETECTION_LIMIT_UNIT",
                            "LAB_SAMP_PREP_IDX","LAB_SAMP_PREP_ID","LAB_SAMP_PREP_CTX","LAB_SAMP_PREP_START_DT","LAB_SAMP_PREP_END_DT","DILUTION_FACTOR" });

                    foreach (KeyValuePair<string, string> entry in colVals)
                        if (rFields.Contains(entry.Key))
                            WQX_IMPORT_TEMP_RESULT_GenVal(ref a, _allRules, colVals, entry.Key);

                    if (!string.IsNullOrEmpty(a.CHAR_NAME))
                        if (db_Ref.GetT_WQX_REF_CHARACTERISTIC_ExistCheck(a.CHAR_NAME) == false) { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Characteristic Name not valid. "; }

                    if (string.IsNullOrEmpty(a.RESULT_SAMP_FRACTION))
                        if (db_Ref.GetT_WQX_REF_CHARACTERISTIC_SampFracReqCheck(a.CHAR_NAME) == true) { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Sample Fraction must be reported."; }

                    if (!string.IsNullOrEmpty(a.RESULT_MSR))
                        a.RESULT_MSR = a.RESULT_MSR.Replace(",", "");
                    else
                        if (string.IsNullOrEmpty(a.RESULT_DETECT_CONDITION))
                            { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Either Result Measure or Result Detection Condition must be reported."; }

                    //if result is PBQL, but no value has been reported for MDL, LRL, PQL, or Lower Quant Limit, then grab from Org Char default
                    if (a.RESULT_DETECT_CONDITION == "Present Below Quantification Limit" && string.IsNullOrEmpty(a.METHOD_DETECTION_LEVEL) && string.IsNullOrEmpty(a.LAB_REPORTING_LEVEL) && string.IsNullOrEmpty(a.PQL) && string.IsNullOrEmpty(a.LOWER_QUANT_LIMIT))
                    {
                        T_WQX_REF_CHAR_ORG rco = db_Ref.GetT_WQX_REF_CHAR_ORGByName(orgID, a.CHAR_NAME);
                        if (rco != null)
                            a.LOWER_QUANT_LIMIT = rco.DEFAULT_LOWER_QUANT_LIMIT;

                        //if still null, then error
                        if (a.LOWER_QUANT_LIMIT == null)
                        { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No Lower Quantification limit reported or default value specified. "; }
                    }

                    if (string.IsNullOrEmpty(a.BIO_INTENT_NAME) != string.IsNullOrEmpty(a.BIO_SUBJECT_TAXONOMY))
                        if (string.IsNullOrEmpty(a.BIO_SUBJECT_TAXONOMY)) { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "Taxonomy must be reported when bio intent is reported. "; }

                    //analysis method
                    if (a.ANALYTIC_METHOD_IDX == null)
                    {
                        //if ID is supplied but Context is not, set context to org id
                        if (!string.IsNullOrEmpty(a.ANALYTIC_METHOD_ID) && string.IsNullOrEmpty(a.ANALYTIC_METHOD_CTX))
                            a.ANALYTIC_METHOD_CTX = orgID;

                        //if we now have values for the ID and context
                        if (!string.IsNullOrEmpty(a.ANALYTIC_METHOD_ID) && !string.IsNullOrEmpty(a.ANALYTIC_METHOD_CTX))
                        {
                            //see if matching collection method exists
                            T_WQX_REF_ANAL_METHOD am = db_Ref.GetT_WQX_REF_ANAL_METHODByIDandContext(a.ANALYTIC_METHOD_ID, a.ANALYTIC_METHOD_CTX);
                            if (am != null)
                                a.ANALYTIC_METHOD_IDX = am.ANALYTIC_METHOD_IDX;
                            else  //no matching anal method lookup found
                                { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No matching Analysis Method found - please add it at the Reference Data screen first. "; }
                        }
                        else
                        {
                            //if IDX, ID, and Context not supplied, lookup the method from the default Org Char reference list
                            T_WQX_REF_CHAR_ORG rco = db_Ref.GetT_WQX_REF_CHAR_ORGByName(orgID, a.CHAR_NAME);
                            if (rco != null)
                            {
                                a.ANALYTIC_METHOD_IDX = rco.DEFAULT_ANAL_METHOD_IDX;
                                if (rco.DEFAULT_ANAL_METHOD_IDX != null)
                                {
                                    T_WQX_REF_ANAL_METHOD anal = db_Ref.GetT_WQX_REF_ANAL_METHODByIDX(rco.DEFAULT_ANAL_METHOD_IDX.ConvertOrDefault<int>());
                                    if (anal != null)
                                    {
                                        a.ANALYTIC_METHOD_ID = anal.ANALYTIC_METHOD_ID;
                                        a.ANALYTIC_METHOD_NAME = anal.ANALYTIC_METHOD_NAME;
                                        a.ANALYTIC_METHOD_CTX = anal.ANALYTIC_METHOD_CTX;
                                    }
                                }
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(a.LAB_NAME))
                    {
                        T_WQX_REF_LAB lab = db_Ref.GetT_WQX_REF_LAB_ByIDandContext(a.LAB_NAME, orgID);
                        if (lab != null)
                            a.LAB_IDX = lab.LAB_IDX;
                        else
                        { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No matching Lab Name found - please add it at the Reference Data screen first. "; }
                    }

                    //if result is PAQL, but no value has been reported for MDL, LRL, PQL, or Lower Quant Limit, then grab from Org Char default
                    if (a.RESULT_DETECT_CONDITION == "Present Above Quantification Limit" && string.IsNullOrEmpty(a.METHOD_DETECTION_LEVEL) && string.IsNullOrEmpty(a.LAB_REPORTING_LEVEL) && string.IsNullOrEmpty(a.PQL) && string.IsNullOrEmpty(a.UPPER_QUANT_LIMIT))
                    {
                        T_WQX_REF_CHAR_ORG rco = db_Ref.GetT_WQX_REF_CHAR_ORGByName(orgID, a.CHAR_NAME);
                        if (rco != null)
                            a.UPPER_QUANT_LIMIT = rco.DEFAULT_UPPER_QUANT_LIMIT;

                        //if still null, then error
                        if (a.UPPER_QUANT_LIMIT == null)
                        { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No Upper Quantification limit reported. "; }
                    }

                    //put in Timezone if missing
                    if (a.LAB_ANALYSIS_START_DT != null || a.LAB_ANALYSIS_END_DT != null)
                        a.LAB_ANALYSIS_TIMEZONE = Utils.GetWQXTimeZoneByDate(a.LAB_ANALYSIS_START_DT.ConvertOrDefault<DateTime>());

                    //********** LAB SAMPLE PREP*************************
                    if (a.LAB_SAMP_PREP_IDX == null && !string.IsNullOrEmpty(a.LAB_SAMP_PREP_ID))
                    {
                        //set context to org id if none is provided
                        if (string.IsNullOrEmpty(a.LAB_SAMP_PREP_CTX))
                            a.LAB_SAMP_PREP_CTX = orgID;

                        //see if matching lab prep method exists for this org
                        T_WQX_REF_SAMP_PREP ppp = db_Ref.GetT_WQX_REF_SAMP_PREP_ByIDandContext(a.LAB_SAMP_PREP_ID, a.LAB_SAMP_PREP_CTX);
                        if (ppp != null)
                            a.LAB_SAMP_PREP_IDX = ppp.SAMP_PREP_IDX;
                        else
                        { a.IMPORT_STATUS_CD = "F"; a.IMPORT_STATUS_DESC += "No matching Lab Sample Prep ID found - please add it at the Reference Data screen first. ";  }
                    }

                    a.IMPORT_STATUS_DESC = a.IMPORT_STATUS_DESC.SubStringPlus(0, 200);
                    ctx.AddToT_WQX_IMPORT_TEMP_RESULT(a);
                    ctx.SaveChanges();

                    return a.TEMP_RESULT_IDX;
                }
                catch (Exception ex)
                {
                    return 0;
                }
            }
        }
Example #4
0
        public static void WQX_IMPORT_TEMP_RESULT_GenVal(ref T_WQX_IMPORT_TEMP_RESULT a, List<ConfigInfoType> t, Dictionary<string, string> colVals, string f)
        {
            var _rules = t.Find(item => item._name == f);   //import validation rules for this field
            if (_rules == null)
                return;

            string _value = Utils.GetValueOrDefault(colVals, f); //supplied value for this field

            if (!string.IsNullOrEmpty(_value)) //if value is supplied
            {
                _value = _value.Trim();

                //if this field has another field which gets added to it (used for Date + Time fields)
                if (!string.IsNullOrEmpty(_rules._addfield))
                    _value = _value + " " + Utils.GetValueOrDefault(colVals, _rules._addfield);

                //strings: field length validation and substring
                if (_rules._datatype == "" && _rules._length != null)
                {
                    if (_value.Length > _rules._length)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " length (" + _rules._length + ") exceeded. ");

                        _value = _value.SubStringPlus(0, (int)_rules._length);
                    }
                }

                //integers: check type
                if (_rules._datatype == "int")
                {
                    int n;
                    if (int.TryParse(_value, out n) == false)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " not numeric. ");
                    }
                }

                //datetime: check type
                if (_rules._datatype == "datetime")
                {
                    if (_value.ConvertOrDefault<DateTime>().Year < 1900)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " not properly formatted. ");
                    }
                }

                //ref data lookup
                if (_rules._fkey.Length > 0)
                {
                    if (db_Ref.GetT_WQX_REF_DATA_ByKey(_rules._fkey, _value) == false)
                    {
                        a.IMPORT_STATUS_CD = "F";
                        a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + f + " not valid. ");
                    }
                }
            }
            else
            {
                //required check
                if (_rules._req == "Y")
                {
                    if (_rules._datatype == "")
                        _value = "-";
                    else if (_rules._datatype == "datetime")
                        _value = new DateTime(1900, 1, 1).ToString();
                    a.IMPORT_STATUS_CD = "F";
                    a.IMPORT_STATUS_DESC = (a.IMPORT_STATUS_DESC + "Required field " + f + " missing. ");
                }
            }

            //finally set the value before returning
            try
            {

                if (_rules._datatype == "")
                    typeof(T_WQX_IMPORT_TEMP_RESULT).GetProperty(f).SetValue(a, _value);
                else if (_rules._datatype == "int")
                    typeof(T_WQX_IMPORT_TEMP_RESULT).GetProperty(f).SetValue(a, _value.ConvertOrDefault<int?>());
                else if (_rules._datatype == "datetime" && _rules._req == "Y")
                    typeof(T_WQX_IMPORT_TEMP_RESULT).GetProperty(f).SetValue(a, _value.ConvertOrDefault<DateTime>());
                else if (_rules._datatype == "datetime" && _rules._req == "N")
                    typeof(T_WQX_IMPORT_TEMP_RESULT).GetProperty(f).SetValue(a, _value.ConvertOrDefault<DateTime?>());
            }
            catch { }
        }
Example #5
0
        // *************************** IMPORT: RESULT ******************************
        // *****************************************************************************
        public static int InsertOrUpdateWQX_IMPORT_TEMP_RESULT(global::System.Int32? tEMP_RESULT_IDX, int tEMP_SAMPLE_IDX, global::System.Int32? rESULT_IDX, string dATA_LOGGER_LINE, 
            string rESULT_DETECT_CONDITION, global::System.String cHAR_NAME, string mETHOD_SPECIATION_NAME, string rESULT_SAMP_FRACTION, global::System.String rESULT_MSR, global::System.String rESULT_MSR_UNIT,
            string rESULT_MSR_QUAL, string rESULT_STATUS, string sTATISTIC_BASE_CODE, string rESULT_VALUE_TYPE, string wEIGHT_BASIS, string tIME_BASIS, string tEMP_BASIS, string pARTICAL_BASIS,
            string pRECISION_VALUE, string bIAS_VALUE, string cONFIDENCE_INTERVAL_VALUE, string uP_CONFIDENCE_LIMIT, string lOW_CONFIDENCE_LIMIT, string rESULT_COMMENT, string dEPTH_HEIGHT_MSR,
            string dEPTH_HEIGHT_MSR_UNIT, string dEPTHALTITUDEREFPOINT, string bIO_INTENT_NAME, string bIO_INDIVIDUAL_ID, string bIO_SUBJECT_TAXONOMY, string bIO_UNIDENTIFIED_SPECIES_ID,
            string bIO_SAMPLE_TISSUE_ANATOMY, string gRP_SUMM_COUNT_WEIGHT_MSR, string gRP_SUMM_COUNT_WEIGHT_MSR_UNIT, string tAX_DTL_CELL_FORM, string tAX_DTL_CELL_SHAPE, string tAX_DTL_HABIT,
            string tAX_DTL_VOLTINISM, string tAX_DTL_POLL_TOLERANCE, string tAX_DTL_POLL_TOLERANCE_SCALE, string tAX_DTL_TROPHIC_LEVEL, string tAX_DTL_FUNC_FEEDING_GROUP1,
            string tAX_DTL_FUNC_FEEDING_GROUP2, string tAX_DTL_FUNC_FEEDING_GROUP3, string fREQ_CLASS_CODE, string fREQ_CLASS_UNIT, string fREQ_CLASS_UPPER, string fREQ_CLASS_LOWER,
            int? aNALYTIC_METHOD_IDX, string aNALYTIC_METHOD_ID, string aNALYTIC_METHOD_CTX, string aNALYTIC_METHOD_NAME,
            int? lAB_IDX, string lAB_NAME, DateTime? lAB_ANALYSIS_START_DT, DateTime? lAB_ANALYSIS_END_DT, string lAB_ANALYSIS_TIMEZONE, string rESULT_LAB_COMMENT_CODE,
            string mETHOD_DETECTION_LEVEL, string lAB_REPORTING_LEVEL, string pQL, string lOWER_QUANT_LIMIT, string uPPER_QUANT_LIMIT, string dETECTION_LIMIT_UNIT, int? lAB_SAMP_PREP_IDX,
            string lAB_SAMP_PREP_ID, string lAB_SAMP_PREP_CTX, DateTime? lAB_SAMP_PREP_START_DT, DateTime? lAB_SAMP_PREP_END_DT, string dILUTION_FACTOR, string sTATUS_CD, string sTATUS_DESC, bool BioIndicator, string orgID, Boolean autoImportRefDataInd)
        {
            using (OpenEnvironmentEntities ctx = new OpenEnvironmentEntities())
            {
                Boolean insInd = false;
                try
                {
                    T_WQX_IMPORT_TEMP_RESULT a = new T_WQX_IMPORT_TEMP_RESULT();

                    if (tEMP_RESULT_IDX != null)
                        a = (from c in ctx.T_WQX_IMPORT_TEMP_RESULT
                             where c.TEMP_RESULT_IDX == tEMP_RESULT_IDX
                             select c).FirstOrDefault();

                    if (tEMP_RESULT_IDX == null) //insert case
                        insInd = true;

                    a.TEMP_SAMPLE_IDX = tEMP_SAMPLE_IDX;
                    if (rESULT_IDX != null) a.RESULT_IDX = rESULT_IDX;

                    if (!string.IsNullOrEmpty(dATA_LOGGER_LINE))
                    {
                        a.DATA_LOGGER_LINE = dATA_LOGGER_LINE.Trim().SubStringPlus(0, 15);
                    }

                    if (rESULT_DETECT_CONDITION == "DNQ" || rESULT_MSR == "DNQ") { rESULT_DETECT_CONDITION = "Detected Not Quantified"; rESULT_MSR = "DNQ"; }
                    if (rESULT_DETECT_CONDITION == "ND" || rESULT_MSR == "ND") { rESULT_DETECT_CONDITION = "Not Detected"; rESULT_MSR = "ND"; }
                    if (rESULT_DETECT_CONDITION == "NR" || rESULT_MSR == "NR") { rESULT_DETECT_CONDITION = "Not Reported"; rESULT_MSR = "NR"; }
                    if (rESULT_DETECT_CONDITION == "PAQL" || rESULT_MSR == "PAQL") { rESULT_DETECT_CONDITION = "Present Above Quantification Limit"; rESULT_MSR = "PAQL"; }
                    if (rESULT_DETECT_CONDITION == "PBQL" || rESULT_MSR == "PBQL") { rESULT_DETECT_CONDITION = "Present Below Quantification Limit"; rESULT_MSR = "PBQL"; }

                    if (!string.IsNullOrEmpty(rESULT_DETECT_CONDITION))
                    {
                        a.RESULT_DETECT_CONDITION = rESULT_DETECT_CONDITION.Trim().SubStringPlus(0, 35);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultDetectionCondition", rESULT_DETECT_CONDITION.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Result Detection Condition not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(cHAR_NAME))
                    {
                        a.CHAR_NAME = cHAR_NAME.Trim().SubStringPlus(0, 120);
                        if (db_Ref.GetT_WQX_REF_CHARACTERISTIC_ExistCheck(cHAR_NAME.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Characteristic Name not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(mETHOD_SPECIATION_NAME))
                    {
                        a.METHOD_SPECIATION_NAME = mETHOD_SPECIATION_NAME.Trim().SubStringPlus(0, 20);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MethodSpeciation", mETHOD_SPECIATION_NAME.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Method Speciation not valid. "; }
                    }

                    if (!string.IsNullOrEmpty(rESULT_SAMP_FRACTION))
                    {
                        a.RESULT_SAMP_FRACTION = rESULT_SAMP_FRACTION.Trim().SubStringPlus(0, 25);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultSampleFraction", rESULT_SAMP_FRACTION.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Result Sample Fraction not valid. "; }
                    }
                    else
                    {
                        if (db_Ref.GetT_WQX_REF_CHARACTERISTIC_SampFracReqCheck(cHAR_NAME.Trim()) == true) { sTATUS_CD = "F"; sTATUS_DESC += "Sample Fraction must be reported."; }
                    }

                    if (!string.IsNullOrEmpty(rESULT_MSR))
                    {
                        a.RESULT_MSR = rESULT_MSR.Trim().SubStringPlus(0, 60).Replace(",","");
                    }
                    else
                    {
                        if ( string.IsNullOrEmpty(rESULT_DETECT_CONDITION) ) { sTATUS_CD = "F"; sTATUS_DESC += "Either Result Measure or Result Detection Condition must be reported."; }
                    }

                    if (!string.IsNullOrEmpty(rESULT_MSR_UNIT))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", rESULT_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Measurement Unit not valid. "; }
                        a.RESULT_MSR_UNIT = rESULT_MSR_UNIT.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(rESULT_MSR_QUAL))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultMeasureQualifier", rESULT_MSR_QUAL.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Measurement Qualifier not valid. "; }
                        a.RESULT_MSR_QUAL = rESULT_MSR_QUAL.Trim().SubStringPlus(0, 5);
                    }

                    if (!string.IsNullOrEmpty(rESULT_STATUS))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultStatus", rESULT_STATUS.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Result Status not valid. "; }
                        a.RESULT_STATUS = rESULT_STATUS.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(sTATISTIC_BASE_CODE))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("StatisticalBase", sTATISTIC_BASE_CODE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Statistic Base Code not valid. "; }
                        a.STATISTIC_BASE_CODE = sTATISTIC_BASE_CODE.Trim().SubStringPlus(0, 25);
                    }

                    if (!string.IsNullOrEmpty(rESULT_VALUE_TYPE))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultValueType", rESULT_VALUE_TYPE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Result Value Type not valid. "; }
                        a.RESULT_VALUE_TYPE = rESULT_VALUE_TYPE.Trim().SubStringPlus(0, 20);
                    }

                    if (!string.IsNullOrEmpty(wEIGHT_BASIS))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultWeightBasis", wEIGHT_BASIS.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Weight Basis not valid. "; }
                        a.WEIGHT_BASIS = wEIGHT_BASIS.Trim().SubStringPlus(0, 15);
                    }

                    if (!string.IsNullOrEmpty(tIME_BASIS))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultTimeBasis", tIME_BASIS.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Time Basis not valid. "; }
                        a.TIME_BASIS = tIME_BASIS.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(tEMP_BASIS))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("ResultTemperatureBasis", tEMP_BASIS.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Temp Basis not valid. "; }
                        a.TEMP_BASIS = tEMP_BASIS.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(pARTICAL_BASIS))
                        a.PARTICLESIZE_BASIS = pARTICAL_BASIS.Trim().SubStringPlus(0, 40);

                    if (!string.IsNullOrEmpty(pRECISION_VALUE))
                        a.PRECISION_VALUE = pRECISION_VALUE.Trim().SubStringPlus(0,60);

                    if (!string.IsNullOrEmpty(bIAS_VALUE))
                        a.BIAS_VALUE = bIAS_VALUE.Trim().SubStringPlus(0,60);

                    if (!string.IsNullOrEmpty(cONFIDENCE_INTERVAL_VALUE))
                        a.CONFIDENCE_INTERVAL_VALUE = cONFIDENCE_INTERVAL_VALUE.Trim().SubStringPlus(0,15);

                    if (!string.IsNullOrEmpty(uP_CONFIDENCE_LIMIT))
                        a.UPPER_CONFIDENCE_LIMIT = uP_CONFIDENCE_LIMIT.Trim().SubStringPlus(0, 15);

                    if (!string.IsNullOrEmpty(lOW_CONFIDENCE_LIMIT))
                        a.LOWER_CONFIDENCE_LIMIT = lOW_CONFIDENCE_LIMIT.Trim().SubStringPlus(0, 15);

                    if (!string.IsNullOrEmpty(rESULT_COMMENT))
                        a.RESULT_COMMENT = rESULT_COMMENT.Trim().SubStringPlus(0,4000);

                    if (!string.IsNullOrEmpty(dEPTH_HEIGHT_MSR))
                        a.DEPTH_HEIGHT_MSR = dEPTH_HEIGHT_MSR.Trim().SubStringPlus(0, 12);

                    if (!string.IsNullOrEmpty(dEPTH_HEIGHT_MSR_UNIT))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", dEPTH_HEIGHT_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Result Depth Unit not valid. "; }
                        a.DEPTH_HEIGHT_MSR_UNIT = dEPTH_HEIGHT_MSR_UNIT.Trim().SubStringPlus(0, 12);
                    }

                    if (!string.IsNullOrEmpty(dEPTHALTITUDEREFPOINT))
                        a.DEPTHALTITUDEREFPOINT = dEPTHALTITUDEREFPOINT.Trim().SubStringPlus(0, 125);

                    if (BioIndicator == true)
                    {

                        if (!string.IsNullOrEmpty(bIO_INTENT_NAME))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("BiologicalIntent", bIO_INTENT_NAME.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Biological Intent not valid. "; }
                            a.BIO_INTENT_NAME = bIO_INTENT_NAME.Trim().SubStringPlus(0, 35);

                            if (string.IsNullOrEmpty(bIO_SUBJECT_TAXONOMY)) { sTATUS_CD = "F"; sTATUS_DESC += "Taxonomy must be reported when intent is reported. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_INDIVIDUAL_ID))
                            a.BIO_INDIVIDUAL_ID = bIO_INDIVIDUAL_ID.Trim().SubStringPlus(0, 4);

                        if (!string.IsNullOrEmpty(bIO_SUBJECT_TAXONOMY))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("Taxon", bIO_SUBJECT_TAXONOMY.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Subject Taxonomy not valid. "; }
                            a.BIO_SUBJECT_TAXONOMY = bIO_SUBJECT_TAXONOMY.Trim().SubStringPlus(0, 120);

                            if (string.IsNullOrEmpty(bIO_INTENT_NAME)) { sTATUS_CD = "F"; sTATUS_DESC += "Biological intent must be reported when taxonomy is reported. "; }
                        }

                        if (!string.IsNullOrEmpty(bIO_UNIDENTIFIED_SPECIES_ID))
                            a.BIO_UNIDENTIFIED_SPECIES_ID = bIO_UNIDENTIFIED_SPECIES_ID.Trim().SubStringPlus(0, 120);

                        if (!string.IsNullOrEmpty(bIO_SAMPLE_TISSUE_ANATOMY))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("SampleTissueAnatomy", bIO_SAMPLE_TISSUE_ANATOMY.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Sample Tissue Anatomy not valid. "; }
                            a.BIO_SAMPLE_TISSUE_ANATOMY = bIO_SAMPLE_TISSUE_ANATOMY.Trim().SubStringPlus(0, 30);
                        }

                        if (!string.IsNullOrEmpty(gRP_SUMM_COUNT_WEIGHT_MSR))
                            a.GRP_SUMM_COUNT_WEIGHT_MSR = gRP_SUMM_COUNT_WEIGHT_MSR.Trim().SubStringPlus(0, 12);

                        if (!string.IsNullOrEmpty(gRP_SUMM_COUNT_WEIGHT_MSR_UNIT))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", gRP_SUMM_COUNT_WEIGHT_MSR_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Group Summary Unit not valid. "; }
                            a.GRP_SUMM_COUNT_WEIGHT_MSR_UNIT = gRP_SUMM_COUNT_WEIGHT_MSR_UNIT.Trim().SubStringPlus(0, 12);
                        }

                        if (!string.IsNullOrEmpty(tAX_DTL_CELL_FORM))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("CellForm", tAX_DTL_CELL_FORM.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Cell Form not valid. "; }
                            a.TAX_DTL_CELL_FORM = tAX_DTL_CELL_FORM.Trim().SubStringPlus(0, 11);
                        }

                        if (!string.IsNullOrEmpty(tAX_DTL_CELL_SHAPE))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("CellShape", tAX_DTL_CELL_SHAPE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Cell Shape not valid. "; }
                            a.TAX_DTL_CELL_SHAPE = tAX_DTL_CELL_SHAPE.Trim().SubStringPlus(0, 18);
                        }

                        if (!string.IsNullOrEmpty(tAX_DTL_HABIT))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("Habit", tAX_DTL_HABIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Habit not valid. "; }
                            a.TAX_DTL_HABIT = tAX_DTL_HABIT.Trim().SubStringPlus(0, 15);
                        }

                        if (!string.IsNullOrEmpty(tAX_DTL_VOLTINISM))
                        {
                            if (db_Ref.GetT_WQX_REF_DATA_ByKey("Voltinism", tAX_DTL_VOLTINISM.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Voltinism not valid. "; }
                            a.TAX_DTL_VOLTINISM = tAX_DTL_VOLTINISM.Trim().SubStringPlus(0, 25);
                        }

                        if (!string.IsNullOrEmpty(tAX_DTL_POLL_TOLERANCE))
                            a.TAX_DTL_POLL_TOLERANCE = tAX_DTL_POLL_TOLERANCE.Trim().SubStringPlus(0, 4);

                        if (!string.IsNullOrEmpty(tAX_DTL_POLL_TOLERANCE_SCALE))
                            a.TAX_DTL_POLL_TOLERANCE_SCALE = tAX_DTL_POLL_TOLERANCE_SCALE.Trim().SubStringPlus(0, 50);

                        if (!string.IsNullOrEmpty(tAX_DTL_TROPHIC_LEVEL))
                            a.TAX_DTL_TROPHIC_LEVEL = tAX_DTL_TROPHIC_LEVEL.Trim().SubStringPlus(0, 4);

                        if (!string.IsNullOrEmpty(tAX_DTL_FUNC_FEEDING_GROUP1))
                            a.TAX_DTL_FUNC_FEEDING_GROUP1 = tAX_DTL_FUNC_FEEDING_GROUP1.Trim().SubStringPlus(0, 6);

                        if (!string.IsNullOrEmpty(tAX_DTL_FUNC_FEEDING_GROUP2))
                            a.TAX_DTL_FUNC_FEEDING_GROUP2 = tAX_DTL_FUNC_FEEDING_GROUP2.Trim().SubStringPlus(0, 6);

                        if (!string.IsNullOrEmpty(tAX_DTL_FUNC_FEEDING_GROUP3))
                            a.TAX_DTL_FUNC_FEEDING_GROUP3 = tAX_DTL_FUNC_FEEDING_GROUP3.Trim().SubStringPlus(0, 6);

                        if (!string.IsNullOrEmpty(fREQ_CLASS_CODE))
                            a.FREQ_CLASS_CODE = fREQ_CLASS_CODE.Trim().SubStringPlus(0, 50);

                        if (!string.IsNullOrEmpty(fREQ_CLASS_UNIT))
                            a.FREQ_CLASS_UNIT = fREQ_CLASS_UNIT.Trim().SubStringPlus(0, 12);

                        if (!string.IsNullOrEmpty(fREQ_CLASS_CODE))
                            a.FREQ_CLASS_UPPER = fREQ_CLASS_UPPER.Trim().SubStringPlus(0, 8);

                        if (!string.IsNullOrEmpty(fREQ_CLASS_CODE))
                            a.FREQ_CLASS_LOWER = fREQ_CLASS_LOWER.Trim().SubStringPlus(0, 8);

                    }

                    //analysis method
                    //first populate the IDX if it is supplied
                    if (aNALYTIC_METHOD_IDX != null)
                        a.ANALYTIC_METHOD_IDX = aNALYTIC_METHOD_IDX;
                    else
                    {
                        //if ID is supplied but Context is not, set context to org id
                        if (!string.IsNullOrEmpty(aNALYTIC_METHOD_ID) && string.IsNullOrEmpty(aNALYTIC_METHOD_CTX))
                            aNALYTIC_METHOD_CTX = orgID;

                        //if we now have values for the ID and context
                        if (!string.IsNullOrEmpty(aNALYTIC_METHOD_ID) && !string.IsNullOrEmpty(aNALYTIC_METHOD_CTX))
                        {
                            //see if matching collection method exists
                            T_WQX_REF_ANAL_METHOD am = db_Ref.GetT_WQX_REF_ANAL_METHODByIDandContext(aNALYTIC_METHOD_ID.Trim(), aNALYTIC_METHOD_CTX.Trim());
                            if (am != null)
                                a.ANALYTIC_METHOD_IDX = am.ANALYTIC_METHOD_IDX;
                            else  //no matching anal method lookup found
                            {
                                if (autoImportRefDataInd == true)
                                {
                                    db_Ref.InsertOrUpdateT_WQX_REF_ANAL_METHOD(null, aNALYTIC_METHOD_ID.Trim(), aNALYTIC_METHOD_CTX.Trim(), aNALYTIC_METHOD_NAME.Trim(), "", true);
                                }
                                else
                                { sTATUS_CD = "F"; sTATUS_DESC += "No matching Analysis Method found - please add it at the Reference Data screen first. "; }
                            }

                            //****************************************
                            a.ANALYTIC_METHOD_ID = aNALYTIC_METHOD_ID.Trim().SubStringPlus(0, 20);
                            a.ANALYTIC_METHOD_CTX = aNALYTIC_METHOD_CTX.Trim().SubStringPlus(0, 120);

                            if (!string.IsNullOrEmpty(aNALYTIC_METHOD_NAME))
                                a.ANALYTIC_METHOD_NAME = aNALYTIC_METHOD_NAME.Trim().SubStringPlus(0, 120);
                        }
                        else
                        {
                            //if IDX, ID, and Context not supplied, lookup the method from the default Org Char reference list
                            T_WQX_REF_CHAR_ORG rco = db_Ref.GetT_WQX_REF_CHAR_ORGByName(orgID, cHAR_NAME.Trim().SubStringPlus(0, 120));
                            if (rco != null)
                            {
                                a.ANALYTIC_METHOD_IDX = rco.DEFAULT_ANAL_METHOD_IDX;
                                if (rco.DEFAULT_ANAL_METHOD_IDX != null)
                                {
                                    T_WQX_REF_ANAL_METHOD anal = db_Ref.GetT_WQX_REF_ANAL_METHODByIDX(rco.DEFAULT_ANAL_METHOD_IDX.ConvertOrDefault<int>());
                                    if (anal != null)
                                    {
                                        a.ANALYTIC_METHOD_ID = anal.ANALYTIC_METHOD_ID;
                                        a.ANALYTIC_METHOD_NAME = anal.ANALYTIC_METHOD_NAME;
                                        a.ANALYTIC_METHOD_CTX = anal.ANALYTIC_METHOD_CTX;
                                    }
                                }
                            }

                        }
                    }

                    //********** LABORATORY **********
                    if (lAB_IDX != null)
                        a.LAB_IDX = lAB_IDX;
                    else
                    {
                        if (!string.IsNullOrEmpty(lAB_NAME))
                        {
                             a.LAB_NAME = lAB_NAME;

                            //see if matching lab name exists for this org
                            T_WQX_REF_LAB lab = db_Ref.GetT_WQX_REF_LAB_ByIDandContext(lAB_NAME, orgID);
                            if (lab == null) {
                                if (autoImportRefDataInd == true)
                                {
                                    db_Ref.InsertOrUpdateT_WQX_REF_LAB(null, lAB_NAME.Trim(), null, null, orgID, true);
                                }
                                else { sTATUS_CD = "F"; sTATUS_DESC += "No matching Lab Name found - please add it at the Reference Data screen first. "; }
                            }
                            else
                                a.LAB_IDX = lab.LAB_IDX;
                        }
                    }

                    if (lAB_ANALYSIS_START_DT != null)
                    {
                        //fix improperly formatted datetime
                        if (lAB_ANALYSIS_START_DT.ConvertOrDefault<DateTime>().Year < 1900)
                            lAB_ANALYSIS_START_DT = null;

                        a.LAB_ANALYSIS_START_DT = lAB_ANALYSIS_START_DT;
                    }
                    if (lAB_ANALYSIS_END_DT != null)
                    {
                        //fix improperly formatted datetime
                        if (lAB_ANALYSIS_END_DT.ConvertOrDefault<DateTime>().Year < 1900)
                            lAB_ANALYSIS_END_DT = null;

                        a.LAB_ANALYSIS_END_DT = lAB_ANALYSIS_END_DT;
                    }

                    if (!string.IsNullOrEmpty(lAB_ANALYSIS_TIMEZONE))
                    {
                        a.LAB_ANALYSIS_TIMEZONE = lAB_ANALYSIS_TIMEZONE.Trim().SubStringPlus(0, 4);
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("TimeZone", lAB_ANALYSIS_TIMEZONE.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "TimeZone not valid. "; }
                    }
                    else
                    {
                        //put in Timezone if missing
                        if (lAB_ANALYSIS_START_DT != null || lAB_ANALYSIS_END_DT != null)
                            a.LAB_ANALYSIS_TIMEZONE = Utils.GetWQXTimeZoneByDate(a.LAB_ANALYSIS_TIMEZONE.ConvertOrDefault<DateTime>());
                    }

                    if (!string.IsNullOrEmpty(rESULT_LAB_COMMENT_CODE))
                        a.RESULT_LAB_COMMENT_CODE = rESULT_LAB_COMMENT_CODE.Trim().SubStringPlus(0, 3);

                    if (!string.IsNullOrEmpty(mETHOD_DETECTION_LEVEL))
                        a.METHOD_DETECTION_LEVEL = mETHOD_DETECTION_LEVEL.Trim().SubStringPlus(0, 12);

                    if (!string.IsNullOrEmpty(lAB_REPORTING_LEVEL))
                        a.LAB_REPORTING_LEVEL = lAB_REPORTING_LEVEL.Trim().SubStringPlus(0, 12);

                    if (!string.IsNullOrEmpty(pQL))
                        a.PQL = pQL.Trim().SubStringPlus(0, 12);

                    if (!string.IsNullOrEmpty(lOWER_QUANT_LIMIT))
                        a.LOWER_QUANT_LIMIT = lOWER_QUANT_LIMIT.Trim().SubStringPlus(0, 12);

                    //if result is PBQL, but no value has been reported for MDL, LRL, PQL, or Lower Quant Limit, then grab from Org Char default
                    if (rESULT_DETECT_CONDITION == "Present Below Quantification Limit" && string.IsNullOrEmpty(mETHOD_DETECTION_LEVEL) && string.IsNullOrEmpty(lAB_REPORTING_LEVEL) && string.IsNullOrEmpty(pQL) && string.IsNullOrEmpty(lOWER_QUANT_LIMIT))
                    {
                        T_WQX_REF_CHAR_ORG rco = db_Ref.GetT_WQX_REF_CHAR_ORGByName(orgID, cHAR_NAME);
                        if (rco != null)
                            a.LOWER_QUANT_LIMIT = rco.DEFAULT_LOWER_QUANT_LIMIT;

                        //if still null, then error
                        if (a.LOWER_QUANT_LIMIT == null)
                            { sTATUS_CD = "F"; sTATUS_DESC += "No Lower Quantification limit reported or default value specified. "; }
                    }

                    if (!string.IsNullOrEmpty(uPPER_QUANT_LIMIT))
                        a.UPPER_QUANT_LIMIT = uPPER_QUANT_LIMIT.Trim().SubStringPlus(0, 12);

                    //if result is PAQL, but no value has been reported for MDL, LRL, PQL, or Lower Quant Limit, then grab from Org Char default
                    if (rESULT_DETECT_CONDITION == "Present Above Quantification Limit" && string.IsNullOrEmpty(mETHOD_DETECTION_LEVEL) && string.IsNullOrEmpty(lAB_REPORTING_LEVEL) && string.IsNullOrEmpty(pQL) && string.IsNullOrEmpty(uPPER_QUANT_LIMIT))
                    {
                        T_WQX_REF_CHAR_ORG rco = db_Ref.GetT_WQX_REF_CHAR_ORGByName(orgID, cHAR_NAME);
                        if (rco != null)
                            a.UPPER_QUANT_LIMIT = rco.DEFAULT_UPPER_QUANT_LIMIT;

                        //if still null, then error
                        if (a.UPPER_QUANT_LIMIT == null)
                        { sTATUS_CD = "F"; sTATUS_DESC += "No Upper Quantification limit reported. "; }
                    }

                    if (!string.IsNullOrEmpty(dETECTION_LIMIT_UNIT))
                    {
                        if (db_Ref.GetT_WQX_REF_DATA_ByKey("MeasureUnit", dETECTION_LIMIT_UNIT.Trim()) == false) { sTATUS_CD = "F"; sTATUS_DESC += "Detection Level Unit not valid. "; }
                        a.DETECTION_LIMIT_UNIT = dETECTION_LIMIT_UNIT.Trim().SubStringPlus(0, 12);
                    }

                    //********** LAB SAMPLE PREP
                    if (lAB_SAMP_PREP_IDX != null)
                        a.LAB_SAMP_PREP_IDX = lAB_SAMP_PREP_IDX;
                    else
                    {
                        if (!string.IsNullOrEmpty(lAB_SAMP_PREP_ID))
                        {
                            //set context to org id if none is provided
                            if (string.IsNullOrEmpty(lAB_SAMP_PREP_CTX))
                                lAB_SAMP_PREP_CTX = orgID;

                            a.LAB_SAMP_PREP_ID = lAB_SAMP_PREP_ID.Trim().SubStringPlus(0, 20);
                            a.LAB_SAMP_PREP_CTX = lAB_SAMP_PREP_CTX.Trim().SubStringPlus(0, 120);

                            //see if matching lab prep method exists for this org
                            T_WQX_REF_SAMP_PREP ppp = db_Ref.GetT_WQX_REF_SAMP_PREP_ByIDandContext(lAB_SAMP_PREP_ID, lAB_SAMP_PREP_CTX);
                            if (ppp == null) //no match found
                            {
                                if (autoImportRefDataInd == true)
                                {
                                    db_Ref.InsertOrUpdateT_WQX_REF_SAMP_PREP(null, lAB_SAMP_PREP_ID.Trim(), lAB_SAMP_PREP_CTX.Trim(), lAB_SAMP_PREP_ID.Trim(), "", true);
                                }
                                else
                                { sTATUS_CD = "F"; sTATUS_DESC += "No matching Lab Sample Prep ID found - please add it at the Reference Data screen first. "; }
                            }
                            else  //match found
                                a.LAB_SAMP_PREP_IDX = ppp.SAMP_PREP_IDX;

                        }
                    }

                    if (lAB_SAMP_PREP_START_DT != null)
                    {
                        //fix improperly formatted datetime
                        if (lAB_SAMP_PREP_START_DT.ConvertOrDefault<DateTime>().Year < 1900)
                            lAB_SAMP_PREP_START_DT = null;

                        a.LAB_SAMP_PREP_START_DT = lAB_SAMP_PREP_START_DT;
                    }

                    if (lAB_SAMP_PREP_END_DT != null)
                    {
                        //fix improperly formatted datetime
                        if (lAB_SAMP_PREP_END_DT.ConvertOrDefault<DateTime>().Year < 1900)
                            lAB_SAMP_PREP_END_DT = null;

                        a.LAB_SAMP_PREP_END_DT = lAB_SAMP_PREP_END_DT;
                    }

                    if (!string.IsNullOrEmpty(dILUTION_FACTOR))
                        a.DILUTION_FACTOR = dILUTION_FACTOR.Trim().SubStringPlus(0, 12);

                    if (sTATUS_CD != null) a.IMPORT_STATUS_CD = sTATUS_CD;
                    if (sTATUS_DESC != null) a.IMPORT_STATUS_DESC = sTATUS_DESC.SubStringPlus(0,100);

                    if (insInd) //insert case
                        ctx.AddToT_WQX_IMPORT_TEMP_RESULT(a);

                    ctx.SaveChanges();

                    return a.TEMP_RESULT_IDX;
                }
                catch (Exception ex)
                {
                    return 0;
                }
            }
        }