Beispiel #1
0
        public void EventId_Field_Included_If_Present()
        {
            var panel  = MockPanel.Panel();
            var field  = "EventField";
            var field2 = "EventishField";
            var pi     = MockPanel.EdEnc();
            var pi2    = MockPanel.HmcEnc();

            pi.Index = 0;
            pi.Concept.IsEventBased  = true;
            pi.Concept.SqlFieldEvent = $"{Options.Alias}.{field}";

            pi2.Index                 = 0;
            pi2.SubPanelIndex         = 1;
            pi2.Concept.IsEventBased  = true;
            pi2.Concept.SqlFieldEvent = $"{Options.Alias}.{field2}";

            panel.SubPanels.ElementAt(0).PanelItems = new[] { pi };
            panel.SubPanels.Add(new SubPanel
            {
                Index           = 1,
                PanelIndex      = 0,
                IncludeSubPanel = true,
                PanelItems      = new[] { pi2 },
                JoinSequence    = new SubPanelJoinSequence {
                    SequenceType = SequenceType.Event
                }
            });

            var ob             = new PanelSequentialSqlSet(panel, Options);
            var sql            = ob.ToString();
            var expectedAlias1 = "_S000";
            var expectedAlias2 = "_S010";

            /*
             * Event fields added with alias.
             */
            Assert.Contains($"{expectedAlias1}.{field}", sql);
            Assert.Contains($"{expectedAlias2}.{field2}", sql);

            /*
             * Event fields inherited into parent set and join with parent alias.
             */
            var expectedParentAlias1 = "_T0";
            var expectedParentAlias2 = "_T1";

            Assert.Contains($"{expectedParentAlias1}.{field} = {expectedParentAlias2}.{field2}", sql);
        }
Beispiel #2
0
        /// <summary>
        /// Builds the SQL statement for the given Panel
        /// </summary>
        /// <returns>The panel sql.</returns>
        /// <param name="panel">Panel.</param>
        public string BuildPanelSql(Panel panel)
        {
            string sql;

            switch (panel.PanelType)
            {
            case PanelType.Patient:
                sql = new SubPanelSqlSet(panel, compilerOptions).ToString();
                break;

            case PanelType.Sequence:
                sql = new PanelSequentialSqlSet(panel, compilerOptions).ToString();
                break;

            default:
                return(string.Empty);
            }
            ValidateSql(sql);
            return(sql);
        }
Beispiel #3
0
        public void Sequence_Level_Subquery_Returns_Four_Columns()
        {
            var panel = MockPanel.Panel();

            panel.SubPanels.Add(new SubPanel
            {
                Index           = 1,
                PanelIndex      = 0,
                IncludeSubPanel = true,
                PanelItems      = new[] { MockPanel.HmcEnc() },
                JoinSequence    = new SubPanelJoinSequence {
                    SequenceType = SequenceType.Encounter
                }
            });

            var ob      = new PanelSequentialSqlSet(panel, Options);
            var sql     = ob.ToString();
            var colsStr = GetContentBetween(sql, "(SELECT", "FROM Encounter");
            var cols    = colsStr.Trim().Split(',', StringSplitOptions.RemoveEmptyEntries);

            Assert.Equal(4, cols.Length);
        }
Beispiel #4
0
        public void Sequence_Level_Query_Returns_Single_Column()
        {
            var panel = MockPanel.Panel();

            panel.SubPanels.Add(new SubPanel
            {
                Index           = 1,
                PanelIndex      = 0,
                IncludeSubPanel = true,
                PanelItems      = new[] { MockPanel.HmcEnc() },
                JoinSequence    = new SubPanelJoinSequence {
                    SequenceType = SequenceType.Encounter
                }
            });

            var ob   = new PanelSequentialSqlSet(panel, Options);
            var sql  = ob.ToString();
            var cols = GetColumns(sql);
            var col  = StripSetAlias(cols[0]);

            Assert.Single(cols);
            Assert.Equal(Options.FieldPersonId, col);
        }
Beispiel #5
0
        public void Dummy_EventId_Field_Added_If_Absent()
        {
            var panel = MockPanel.Panel();

            panel.SubPanels.Add(new SubPanel
            {
                Index           = 1,
                PanelIndex      = 0,
                IncludeSubPanel = true,
                PanelItems      = new[] { MockPanel.HmcEnc() },
                JoinSequence    = new SubPanelJoinSequence {
                    SequenceType = SequenceType.Encounter
                }
            });

            var ob             = new PanelSequentialSqlSet(panel, Options);
            var sql            = ob.ToString();
            var colsStr        = GetContentBetween(sql, "(SELECT", "FROM Encounter");
            var cols           = colsStr.Trim().Split(',', StringSplitOptions.RemoveEmptyEntries);
            var defaultNoField = "'' AS EventId";
            var included       = cols.Any(c => c.Trim().Equals(defaultNoField));

            Assert.True(included);
        }