public override Boolean Load(long forId)
        {
            Boolean success = false;

            StringBuilder selectStatement = new StringBuilder();

            System.Data.DataTable careMeasureTable;


            if (application.EnvironmentDatabase == null)
            {
                return(false);
            }

            selectStatement.Append("SELECT CareMeasure.*, ");

            selectStatement.Append("    CareMeasureDomain.CareMeasureDomainId, CareMeasureDomain.CareMeasureDomainName, CareMeasureClass.CareMeasureClassName ");

            selectStatement.Append("  FROM CareMeasure ");

            selectStatement.Append("    LEFT JOIN CareMeasureClass ON CareMeasure.CareMeasureClassId = CareMeasureClass.CareMeasureClassId");

            selectStatement.Append("    LEFT JOIN CareMeasureDomain ON CareMeasureClass.CareMeasureDomainId = CareMeasureDomain.CareMeasureDomainId");

            selectStatement.Append("    WHERE CareMeasureId = " + forId.ToString());

            careMeasureTable = application.EnvironmentDatabase.SelectDataTable(selectStatement.ToString(), 0);

            if (careMeasureTable.Rows.Count == 1)
            {
                MapDataFields(careMeasureTable.Rows[0]);


                components = new List <CareMeasureComponent> ();

                System.Data.DataTable componentsTable = application.EnvironmentDatabase.SelectDataTable("SELECT * FROM dbo.CareMeasureComponent WHERE CareMeasureId = " + Id.ToString(), 0);

                foreach (System.Data.DataRow currentComponentRow in componentsTable.Rows)
                {
                    CareMeasureComponent component = new CareMeasureComponent(application);

                    component.MapDataFields(currentComponentRow);

                    components.Add(component);
                }

                success = true;
            }

            else
            {
                success = false;
            }

            return(success);
        }
        public override List <ImportExport.Result> XmlImport(System.Xml.XmlNode objectNode)
        {
            List <ImportExport.Result> response = base.XmlImport(objectNode);


            try {
                foreach (System.Xml.XmlNode currentNode in objectNode.ChildNodes)
                {
                    switch (currentNode.Name)
                    {
                    case "Properties":

                        foreach (System.Xml.XmlNode currentPropertyNode in currentNode.ChildNodes)
                        {
                            switch (currentPropertyNode.Attributes["Name"].InnerText)
                            {
                            case "CareMeasureDomainName":

                                careMeasureDomainName = currentPropertyNode.InnerText;

                                careMeasureDomainId = application.CoreObjectGetIdByName("CareMeasureDomain", careMeasureDomainName);

                                break;

                            default: break;
                            }
                        }

                        break;

                    case "Components":

                        foreach (System.Xml.XmlNode currentComponentNode in currentNode.ChildNodes)
                        {
                            CareMeasureComponent component = new CareMeasureComponent(application);

                            response.AddRange(component.XmlImport(currentComponentNode));

                            components.Add(component);
                        }

                        break;

                    case "CareMeasureClass":

                        // USES THE DOMAIN ID CAPTURED UNDER PROPERTIES

                        careMeasureClassName = currentNode.Attributes["Name"].InnerText;

                        CareMeasureClass careMeasureClass = application.CareMeasureClassGetByName(careMeasureDomainId, careMeasureClassName);

                        if (careMeasureClass == null)
                        {
                            // DOES NOT EXIST, CREATE NEW FROM IMPORT

                            careMeasureClass = new CareMeasureClass(application);

                            response.AddRange(careMeasureClass.XmlImport(currentNode));

                            careMeasureDomainId = careMeasureClass.CareMeasureDomainId;

                            careMeasureClassId = careMeasureClass.Id;


                            if (careMeasureClassId == 0)
                            {
                                throw new ApplicationException("Unable to import Care Measure Class: " + currentNode.Attributes["Name"].InnerText + ".");
                            }
                        }

                        break;
                    } // switch (currentNode.Attributes["Name"].InnerText) {
                }     // foreach (System.Xml.XmlNode currentNode in objectNode.ChildNodes) {


                // SAVE IMPORTED CLASS

                if (!Save())
                {
                    throw new ApplicationException("Unable to save Care Measure: " + Name + ".");
                }
            }

            catch (Exception importException) {
                response.Add(new ImportExport.Result(ObjectType, Name, importException));
            }

            return(response);
        }