Exemplo n.º 1
0
        /// <summary>
        /// Synchronize weights
        /// </summary>
        private void SynchronizeWeights(int?year, int?month)
        {
            String query = "SELECT * FROM CHILD_WEIGHT_SUMMARY";

            if (year.HasValue && month.HasValue)
            {
                query += " WHERE \"YEAR\" = @year AND \"MONTH\" = @month";
            }
            query += " ORDER BY \"YEAR\", \"MONTH\"";

            DxfMessage  message  = new DxfMessage();
            DxfValueSet valueSet = new DxfValueSet();

            message.ValueSets.Add(valueSet);

            // Load indicator map
            List <KeyValuePair <String, KeyValuePair <Int32, String> > > indicatorMap = new List <KeyValuePair <string, KeyValuePair <int, string> > >();

            XmlDocument map = new XmlDocument();

            map.Load(Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "WeightIndicatorMap.xml"));
            valueSet.DataSet = map.SelectSingleNode("//*[local-name() = 'map']/@id").Value;

            foreach (XmlNode nd in map.SelectNodes("//*[local-name() = 'indicator']"))
            {
                indicatorMap.Add(new KeyValuePair <string, KeyValuePair <int, string> >(nd.Attributes["id"].Value, new KeyValuePair <int, string>(Int32.Parse(nd.Attributes["ageGroup"].Value), nd.Attributes["column"].Value)));
            }

            using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["GiisConnectionString"].ConnectionString))
            {
                conn.Open();
                using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn))
                {
                    cmd.Parameters.Add("@year", year.HasValue ? year.Value : 0);
                    cmd.Parameters.Add("@month", month.HasValue ? month.Value : 0);

                    cmd.CommandType = System.Data.CommandType.Text;
                    using (var dataReader = cmd.ExecuteReader())
                        while (dataReader.Read())
                        {
                            // < 60%
                            var imap = indicatorMap.FindAll(o => o.Value.Key == Convert.ToInt32(dataReader["age_id"]));

                            foreach (var itm in imap)
                            {
                                valueSet.Value.Add(new DxfValue()
                                {
                                    DataElement = itm.Key,
                                    Numerator   = Convert.ToInt32(dataReader[itm.Value.Value]),
                                    Denominator = 1,
                                    OrgUnit     = Convert.ToString(dataReader["HEALTH_FACILITY_CODE"]).Replace("urn:uuid:", ""),
                                    Period      = string.Format("{0:0000}{1:00}", dataReader["YEAR"], dataReader["MONTH"]),
                                    Value       = Convert.ToInt32(dataReader[itm.Value.Value])
                                });
                            }
                        }
                }
            }
            this.SendDxfMessage(message);
        }
Exemplo n.º 2
0
        public void ResolveReferences(Class374 modelBuilder)
        {
            if (this.dxfExtendedData_0 == null || this.ulong_0 == 0UL)
            {
                return;
            }
            DxfHandledObject dxfHandledObject = modelBuilder.method_3(this.ulong_0);

            if (dxfHandledObject == null)
            {
                DxfMessage dxfMessage = new DxfMessage(DxfStatus.UnresolvedReference, Severity.Warning, "AppIdHandle", (object)this.ulong_0);
                modelBuilder.Messages.Add(dxfMessage);
            }
            else
            {
                DxfAppId dxfAppId = dxfHandledObject as DxfAppId;
                if (dxfAppId == null)
                {
                    modelBuilder.Messages.Add(new DxfMessage(DxfStatus.WrongType, Severity.Warning, "ExpectedType", (object)typeof(DxfAppId))
                    {
                        Parameters =
                        {
                            {
                                "ObjectType",
                                (object)dxfHandledObject.GetType()
                            },
                            {
                                "Object",
                                (object)dxfHandledObject
                            }
                        }
                    });
                }
                else
                {
                    this.dxfExtendedData_0.AppId = dxfAppId;
                }
                if (this.list_0 != null)
                {
                    foreach (Interface10 nterface10 in this.list_0)
                    {
                        nterface10.ResolveReferences(modelBuilder);
                    }
                }
            }
            if (this.class259_0 == null || this.class259_0.HandledObject == null)
            {
                return;
            }
            this.class259_0.HandledObject.ExtendedDataCollection.Add(this.dxfExtendedData_0);
        }
Exemplo n.º 3
0
        internal override void Repair(DxfModelRepairer repairer)
        {
            base.Repair(repairer);
            if (this.OwnerBlock != null)
            {
                return;
            }
            DxfMessage dxfMessage = new DxfMessage(DxfStatus.RemovedInvalidLayout, Severity.Error, "Layout", (object)this);

            if (repairer.LayoutsToBeRemoved.Contains(this))
            {
                return;
            }
            repairer.LayoutsToBeRemoved.Add(this);
        }
Exemplo n.º 4
0
        private void SendDxfMessage(DxfMessage message)
        {
            try
            {
                XmlSerializer xsz = new XmlSerializer(typeof(DxfMessage));
                using (XmlWriter xw = XmlWriter.Create(String.Format("datavalues-{0}.dxf", DateTime.Now.ToString("yyyy-MM-ddTHH-mm-ss")), new XmlWriterSettings()
                {
                    Indent = true
                }))
                    xsz.Serialize(xw, message);

                RestUtil util = new RestUtil(new Uri(ConfigurationManager.AppSettings["DHIS_URL"]));
                util.PostXml("dataValueSets", message, ConfigurationManager.AppSettings["DHIS_UN"], ConfigurationManager.AppSettings["DHIS_PWD"]);
            }
            catch (Exception e)
            {
                Trace.TraceError(e.ToString());
            }
        }
Exemplo n.º 5
0
        public bool Validate(DxfModel model, IList <DxfMessage> messages)
        {
            bool flag = true;

            for (int rowIndex = 0; rowIndex < this.RowCount; ++rowIndex)
            {
                for (int columnIndex = 0; columnIndex < this.ColumnCount; ++columnIndex)
                {
                    Class1026 cell = this.class429_0[rowIndex].Cells[columnIndex];
                    if (rowIndex > 0 && cell.BorderTop.method_0(DxfVersion.Dxf27) && this.class429_0[rowIndex - 1].Cells[columnIndex].BorderBottom.method_0(DxfVersion.Dxf27))
                    {
                        DxfMessage dxfMessage = this.method_20(rowIndex, columnIndex, cell, cell.BorderTop, TableCellEdgeFlags.Top);
                        messages.Add(dxfMessage);
                        flag = false;
                    }
                    if (rowIndex < this.RowCount - 1 && cell.BorderBottom.method_0(DxfVersion.Dxf27) && this.class429_0[rowIndex + 1].Cells[columnIndex].BorderTop.method_0(DxfVersion.Dxf27))
                    {
                        DxfMessage dxfMessage = this.method_20(rowIndex, columnIndex, cell, cell.BorderBottom, TableCellEdgeFlags.Bottom);
                        messages.Add(dxfMessage);
                        flag = false;
                    }
                    if (columnIndex > 0 && cell.BorderLeft.method_0(DxfVersion.Dxf27) && this.class429_0[rowIndex].Cells[columnIndex - 1].BorderRight.method_0(DxfVersion.Dxf27))
                    {
                        DxfMessage dxfMessage = this.method_20(rowIndex, columnIndex, cell, cell.BorderLeft, TableCellEdgeFlags.Left);
                        messages.Add(dxfMessage);
                        flag = false;
                    }
                    if (columnIndex < this.ColumnCount - 1 && cell.BorderRight.method_0(DxfVersion.Dxf27) && this.class429_0[rowIndex].Cells[columnIndex + 1].BorderLeft.method_0(DxfVersion.Dxf27))
                    {
                        DxfMessage dxfMessage = this.method_20(rowIndex, columnIndex, cell, cell.BorderRight, TableCellEdgeFlags.Right);
                        messages.Add(dxfMessage);
                        flag = false;
                    }
                }
            }
            return(flag);
        }
Exemplo n.º 6
0
        public void SynchronizeImmunizations(int?year, int?month)
        {
            String query = "SELECT * FROM COVERAGE_REPORT_INDICATOR WHERE ADMIN_COVERAGE IS NOT NULL ";

            if (year.HasValue && month.HasValue)
            {
                query += " AND \"VACC_YEAR\" = @year AND \"VACC_MONTH\" = @month OR \"CVX_CODE\" = '102' AND (\"VACC_YEAR\" * 12 + \"VACC_MONTH\") >= (@year * 12 + @month) - 3";
            }
            query += " ORDER BY \"VACC_YEAR\", \"VACC_MONTH\"";

            DxfMessage  message  = new DxfMessage();
            DxfValueSet valueSet = new DxfValueSet();

            message.ValueSets.Add(valueSet);
            valueSet.DataSet = this.m_indicators.SelectSingleNode("//*[local-name() = 'indicatorGroup']/@id").Value;

            using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["GiisConnectionString"].ConnectionString))
            {
                conn.Open();
                using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn))
                {
                    cmd.Parameters.Add("@year", year.HasValue ? year.Value : 0);
                    cmd.Parameters.Add("@month", month.HasValue ? month.Value : 0);

                    cmd.CommandType = System.Data.CommandType.Text;
                    using (var dataReader = cmd.ExecuteReader())
                        while (dataReader.Read())
                        {
                            // For each of the items that we match in our document
                            foreach (XmlElement nd in this.m_indicators.SelectNodes(String.Format("//*[local-name() = 'indicator' and ./fullname/text() = '{0}']", dataReader["FULLNAME"])))
                            {
                                var      thisPeriod = String.Format("{0}M{1}", dataReader["VACC_YEAR"], dataReader["VACC_MONTH"]);
                                DxfValue value      = valueSet.Value.Find(o => o.OrgUnit == dataReader["HF_CODE"].ToString().Replace("urn:uuid:", "") && o.DataElement == nd.Attributes["id"].Value && o.Period == thisPeriod);

                                // Was an existing value found?
                                if (value == null)
                                {
                                    value = new DxfValue()
                                    {
                                        Period      = String.Format("{0:0000}{1:00}", dataReader["VACC_YEAR"], dataReader["VACC_MONTH"]),
                                        OrgUnit     = dataReader["HF_CODE"].ToString().Replace("urn:uuid:", ""),
                                        Value       = Convert.ToDecimal(dataReader["ADMIN_COVERAGE"]),
                                        DataElement = nd.Attributes["id"].Value
                                    };
                                }

                                // Age and droupout specs?
                                var age     = nd.SelectSingleNode("./*[local-name() = 'ageGroup']");
                                var dropout = nd.SelectSingleNode("./*[local-name() = 'dropout']");
                                if (age != null && age.InnerText == dataReader["AGE_GROUP"].ToString() ||
                                    age == null)
                                {
                                    value.Numerator   += Convert.ToInt32(dataReader["given"]);
                                    value.Denominator += Convert.ToInt32(dataReader["target"]);

                                    // Is this a dropout?
                                    if (dropout != null)
                                    {
                                        int prevMonth = Convert.ToInt32(dataReader["VACC_MONTH"]) + Int32.Parse(dropout.SelectSingleNode("./*[local-name() = 'month']").InnerText);
                                        int prevYear  = Convert.ToInt32(dataReader["VACC_YEAR"]) - (prevMonth <= 0 ? 1 : 0);
                                        if (prevMonth <= 0)
                                        {
                                            prevMonth = 12 - prevMonth;
                                        }
                                        var dropoutPrevObs = valueSet.Value.Find(o => o.Period == String.Format("{0}M{1}", prevYear, prevMonth) && o.DataElement == dropout.SelectSingleNode("./*[local-name() = 'indicator']/@id").Value&& o.OrgUnit == value.OrgUnit);
                                        if (dropoutPrevObs != null)
                                        {
                                            value.Numerator   = dropoutPrevObs.Numerator - value.Numerator;
                                            value.Denominator = dropoutPrevObs.Numerator;
                                        }
                                        else
                                        {
                                            continue;
                                        }
                                    }

                                    value.Value = (decimal)(((float)value.Numerator / value.Denominator) * 100);
                                }
                                else
                                {
                                    continue;
                                }

                                valueSet.Value.Add(value);
                            }
                        }
                }
            }

            // Remove anything not in our reporting year
            if (month.HasValue && year.HasValue)
            {
                valueSet.Value.RemoveAll(o => o.Period != String.Format("{0}M{1}", year, month));
            }

            this.SendDxfMessage(message);
        }