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); }
/// <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); }
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); }
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); }
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); }