Transcript Document

DR Reporting Made Easy
with SQL Server BI Tools
MUSE International Tuesday Workshop – Session 805
June 2, 2010, 1:00P – 3:30P
Glen D’Abate & Jamie McDonald
Introductions

Instructors

Acmeware

Course Participants
Course Overview
Objective
The objective of this workshop is to provide an overview and
demonstration of SQL Server 2005’s Business Intelligence
capabilities, specifically with Report Models and the Report Builder
tools. We will construct SSRS Report Models and that allow nontechnical staff to dynamically develop ad-hoc MEDITECH reports
using the SSRS Report Builder application.
Workshop Overview


Overview of DR reporting strategies in context of Report
Builder
Identification of DR data and strategies for extracting to a
Report Model datamart

SSRS Report Model Projects

Creating Data Source Views

Creating Report Models

Using Report Builder to access Report Model, reporting basics
and saved reports

Filtering and grouping

Formatting and developing a tabular report

Advanced filters, creating formulas, and Help

Matrix and graph reports (time permitting)
Glossary of Terms

MEDITECH Application database –

Data Repository (DR) –

SQL Server Databases (livedb, testdb, livefocdb, testfocdb) –
Proprietary database structures (NPR
or Advanced Technology - AT) in which MEDITECH applications directly file data
Replications of data from Application Database into
an open (ODBC or OLE DB) accessible SQL Server RDMS
DR databases in which application data (test or live, NPR or AT) is stored

SQL Server Reporting Services (SSRS) –

Datamart –
Feature of SQL Server RDMS
that allows reports to be designed, developed and deployed for consumption
Extraction, transformation, filtering, and indexing of data into
structures specifically formatted for construction of Report Models

SSRS Report Manager –

SSRS Report Models –
Data structure on which the Report Builder tool runs

SSRS Report Builder –
Tool for non-technical staff to develop ad hoc reports
Web based application for hosting and managing
reports. Also the application from which the Report Builder tool is launched.
Course Format

Modular sections




Lecture on topic with slide presentation
Provide example demonstration building Report Models
and reports as we go
Each section builds on previous section
We encourage interactive discussion throughout!
Review of Alternative DR Report
Development Options

Microsoft Access 2007

Crystal Reports 2008

SQL T-SQL Downloads to .CSV Files

SQL Server Analysis Services (OLAP Cubes)


SQL Service Reporting Services (SSRS) Report Models and
Report Builder
SSRS – Report Server Projects (i.e., full use of Visual Studio
Tools for SSRS Report Development
Flexibility / Complexity Trade-off
Too Hot!
SSAS is easiest to use. Drag &
Drop, Slice & Dice. Only provides
numeric analysis. Difficult to
develop & modify data.
Report Builder allows non-technical users to build
Just Right! and format custom ad-hoc reports. Report
developers need not understand data relationships.
Requires IT to build Report Models which limit
available data columns. Complex data analysis /
manipulation is not possible.
Too Cold!
Report Projects require programmer-level technical
skill set to develop reports. Uses Visual Studio
programmer environment for report development.
Most flexibility in report design and can link to
complex T-SQL statements for reports requiring data
manipulation and analysis.
Report Model / Designer Approach
PROs

Allows reports to be dynamically generated by “end-users.” No need
to come to IT for “one more column” on a report

Web-based reports can be nicely designed and formatted

Report Models can be indexed for excellent performance

Report Manager provides secure access to report execution

No software to load / support on developer’s systems
CONs



Requires technical staff to develop and maintain underlying SSRS
Report Models
Another copy of data (in application db, in DR, now in Report Model
datamart)
Cannot address more complex reports (e.g., reports that require
multiple passes at HCIS data to produce result set of interest)
Where Are Reports Developed?
Web Server Hosting SSRS
Report Manager
Launches Report Builder
application. Can open
existing reports or build
new reports from scratch.
Quick Demo of Report Builder UI
Uses “Registration” Report Model
Entities generated from Report Model
Entities are constructed from one or more table in the
data mart via a data source view (.dsv)
Column data available in each entity
Identification of DR
Data & Strategies for
Extracting to a
Datamart
Step by Step Recipe to Report Builder






Identify data-of-interest for end users (typically within one
or a few MEDITECH applications).
Develop data access strategy. We typically recommend
scheduled extraction to a datamart but it is possible to build
Report Model Views directly against the DR using SQL
Tables or SQL Views.
Construct helpful data transformations in datamart extract
logic (e.g., convert text Lab Results values to numeric fields,
convert CDS Response to Datetime datatype, etc.).
Build SSRS Report Views using Datamart tables. This reestablishes “relationships” implicit in the NPR or AT data
structures.
Build SSRS Report Models using Report Views. Internal
fields can be hidden, other fields identified for filter
selection.
Deploy Report Models and Train end user on Report Builder
application.
DR has 6000+ Tables
as well as two Live
Databases in 6.0 +
Identifying the appropriate source of specific application
data from within the DR is one of the most challenging
aspects of any report development using the DR
Data is highly de-normalized in the DR. “Name” in the
AdmVisits table is very different than “Name” in DLabTest
table, and very different than “Name” in MriPatients table.
Many factors determine what data to include in
datamart including focus of Report Model,
inclusion of Inpatients and/or Outpatients,
length of history required and more.
Issues Addressed in SQL Datamart Extract





Multiple related DR tables have data combined
into a single table (e.g., visit level admission and
abstracting data combined)
Default values can be entered where NULL data
(e.g., replaced with “N/A”)
Text values, common in MEDITECH fields are
converted to move useful data types (e.g.,
Numeric Response to SQL Numeric datatype)
Data can be filtered to a smaller set than in the
DR (do you really need the ND test results from
1998?)
Data can be filtered to meet reporting criteria
(e.g., remove confidential patients)
Example of Registration Data Extract
Internal ID fields are not for Report
Builder but used in Report Views
Typical data fields available in Report Model
DR Fields modified to better format
New Age field computed for Report Model
Inpatient or Outpatient Locations
recombined to one field
Visit Provider Type data flattened
for ease-of-use in Model
Data Extract
DR Table
Consolidation
Optional data (using
LEFT JOINs) is included
in Registration Data
Model when available.
Data from many tables in
the DR are combined to
a single table “entity” to
be used in the Report
View and Report Model.
Example of identifying only the
most current entry associated
with a patient visit
Data Extract using Incremental Data
Cancelled Admissions or other filtering
(e.g., remove confidential patients) can
be include in datamart extract
The DR table column RowUpdateDateTime
can be used to identify “changes” to data
for incremental updates
Primary Key Fields and Their Function
Example Datamart Tables
SourceID omitted for sites with
single SourceID throughout DR
There may be multiple AllergyID
entries for any given VisitID
Building Datamart a Indexes
Restricting the volume of data and
highly indexing data, especially at
the Report View highest aggregate
level (i.e., typically visit for
MEDITECH application data) is
highly effective at making report
output very responsive
Datamart for Training Course
Customer Defined Screen queries
and responses (includes multiples)
and time dated repeat results
ADM registration data as well as
some ABS data
Charge, receipt, adjustment, refunds
and other transaction level details
Visit level financial (B/AR) data
ITS Report summary information
(though no text reports yet)
ITS Order details
Laboratory Specimen Tests & Results
Patient Allergy information including
free text descriptions
Creating SSRS Report
Model Projects
What is a Report Model Project



In order to build a Report Model, you need to create
a Report Model Project using Visual Studio 2005 (or
2008)
A Report Model Project contains the components or
objects that are used to build and deploy Report
Models to the Report Manager web site
A Report Model Project is comprised of one or more
Data Source (.ds) files, one or more Data Source
View (.dsv) files, and one or more Report Model file
(.smdl) files
Creating a New BI Report Model Project
OLAP Cubes
What we are working
with today
Give a meaningful Report Model name
Report Server Projects use the
capabilities of the full Visual Studio
IDE for Report Development
Add to existing Solution or Create a new Solution container
Visual Studio IDE
Report Model
Tree View
Output
Messages
Report Model
Detail View
Solutions
Explorer
Properties
Solution Explorer
Solution is simply a
container in which
Projects are loaded
Data Sources
Project contains the
objects (i.e., code)
that comprise the
Report Models
Data Source Views
Data Models
Establishing a Data Source for the
Report Model lets it know where
to go to find data on upon which
Reports will be built
Data Source Designer
DR Server
Select
Datamart database or DR livedb
Establishing a Data Source for the Report
Model lets it know where to go to find
data on upon which reports (using Report
Builder) will be built
Project Properties
Web server
Project Properties
determine where the
Report Models will be
deployed (must be a web
server where the Report
Manager application is
installed)
Creating Data
Source Views
Data Source View Features





A Data Source View is a description of components of
the database to which the Data Source is pointing
This Data Source View describes the selected DR
tables, their contents, and the relationships between
them
Table in a Data Source View MUST have primary keys
defined explicitly to determine uniqueness of records
in the table
Table relationships established in the Data Source
View are critical to the correct output being generated
in Report Builder developed reports
Typically, defined relationships reconstruct the data
relationships that exist in the MEDITECH applications
Adding or Importing a .dsv File
Acmeware typically has a Development
project and a Production project
Add a New or Existing Data Source View
New Data Source View
launches wizard
Allows an existing .dsv file to be
copied into project (e.g., copying
a development .dsv to production)
DSV Wizard – Identify a .ds file
We choose a single .ds file
that points to our datamart
First, the Data Source View must identify one or
more Data Sources (.ds) files to be used to
identify data to be accumulated in the .dsv file
Default .dsv Relationship
Our datamart replicates the
structures in the DR which
lack FK constraints
Selecting this option usually selects the
correct columns but inevitably the
defined relationship will need to be
modified after completing the wizard
While adding foreign key constrains to our datamarts would be ideal, in
practice, this is very difficult since MEDITECH does not ensure the
sequence in which data hits the DR (and therefore the potential order in
which it hits our datamarts). For example, it is technically possible for a
new Lab Test Print # to appear in a patient result before the corresponding
Lab Test Dictionary receives an entry for the Print #.
Select Datamart Tables in a .dsv
The Census data is used in
multiple different .dsv files
One patient visit may have
multiple allergy entries.
One allergy entry may have
many lines of allergy text.
Name the .dsv
Meaningful name to identify .dsv
file when building Report Models
View Default Relationships Are Wrong
Default relationship created by wizard
is often incorrect in the context of
MEDITECH DR (and corresponding
datamart) schema design
Arrows must point from
summary table to detail table
All three keys are required to
identify a unique record in this
table. This is not typical to a
relational database schema.
Relationships Must Be Modified
Summary level data is the “Source”,
Detail level data is the “Destination”
The labels do not seem to make sense
but his configuration has been tested
and appears to be what is required
MEDITECH Schema Often Requires
Multiple Column Relationships
Where two columns are required to uniquely identify the
summary (parent) table records, then both must be included
when defining a relationship to the detail (child) table
Design View of Registration .dsv
Child
Parent
Child
Parent
Child
Enter Friendly Name Property
Properties for selected object
(Registration Data table/entity)
Modifying the FriendlyName Property will default
to the Entity Name in the Report Builder
Creating Report
Models
Report Model Features







A Report Model (.smdl file) provides metadata (data about data)
for the data being referenced by the Data Source View.
When the Report Model file is generated, entities, roles, and fields
are automatically created
Typically, these entities and fields relate back to the datamart
columns and their data within the database
Field properties are automatically generated based on the
system’s analysis of the data in a .dsv field
A Report Model Design wizard steps through each option and
setting required to build a .smdl file from a .dsv file
After running the Report Model Design wizard, the model can be
published to the report catalog, assigned the appropriate role
permissions, and then used in Report Builder
To make it even easier for users to create reports using this
model, it can be further refined after the wizard is completed
Adding a New Report Model
Like .dsv files, Report Models
(.smdl) files can be created as
new its using a wizard or can be
imported as existing Items
We recommend having a Production Project to
which .dsv and .smdl files are only copied (i.e.,
never modify in PROD). If Data Source Name is
the same in DEV and PROD, no changes are
necessary when importing to PROD.
Report Models are Generated for a
Single Data Source View (.dsv) File
A single .dsv file is used by a
single Report Model (.smdl file)
Report Model Generation Options
We have primarily
taken the default
generation rules
Report Model Statistics
Recompile statistics if the .dsv
changed in any way. I typically
always choose the “Update
model statistics” option.
Naming a Report Model
Use a meaningful name as this will be
seen in the Report Builder tool
Do not publish a new model with the same name
because you will invalidate existing reports that
are generated against this model. If you do
create a new model with the same name and try
to publish the model, you will see an error
message. Always work on the same model to
ensure that the IDs remain the same.
Modifying Report Model Properties
Roles can be given
a friendly name
Internal fields should be hidden
This property determines how a
column will be treated when a
filter is applied in Report Builder
Building & Deploying Report Models
A Solution, one or more Projects,
or one or more Report Models
may be built or deployed
Build and deployment Status
Viewing Report Models in Report Manager
Report Models can bee seen in
Report Manager with
appropriate security settings
Launch Report Builder to
develop ad hoc reports using the
Report Models we have created
Report Models in Report Builder
Models available in Report Builder IDE
Reporting Basics and
Saved Reports
Reporting Basics



Report builder is great for simple reports
You’ll need folder organization for security and saving
reports
Fields (data) are dragged onto the table section (you can
also double click) of the report if the field is to be
displayed in the output

Data types can have a big impact on your output

Filtered data need not be displayed in a report




New calculated fields can be created and included in a
report
Fields that are grouped or sorted must be added to the
table section of a report
Whether fields are added one at a time, or as a group
effects that grouping of data in a report
Understanding the data hierarchy of the data models is
critical to designing a report in Report Builder
Navigating to the Report Builder
Launch Report Builder Application
Additional folders can be created here
to save reports developed within the
Report builder
The first time you launch this
application, you will be prompted
to run it
Report Builder Opening Page
Opening Select
Models
Data Model and
Report Layout for a new
report.
Open from Report Server
Open from a File
Loading a Report from a File
Reports are stored as readable XML
files with an extension of *.RDL.
New Table Report
Entities available in chosen Model
Default TB for Report Header
Report Field Table
By default, special TB for
Total Rows and Filter appear
Data fields available to use for
reporting from selected entity
Adding Text Fields to a Report
Drag and drop all fields to table area
Note Grouping Tab
Header defaults
Use <Ctrl> or <Shift> to select
multiple fields at once
Filter Dialogue Box
Define filters
for Report
These fields have various
options that we will show
in the demo
Drag fields (or double
click) to apply filters
* Advanced filter options
discussed later in the presentation
Define Formula Dialogue box – Custom/Calculated Fields
Icon opens the Define formula box for
Custom fields or Custom Field Filters
Field Types
The Field Data Type has
a big influence on
behavior of the field in
the Report Field Table
Sorting Options
Note sorts are defined
by the grouping
Page Setup Options
Default margins
(typically minimum if
report is to be printed)
Max of 84” for Web, but
11 or 17 for printing
Good for alignment,
but better to modify
for crowded reports
Reporting Basics and Saved
Reports
Demo nstration
Filters and Groups
Filtering Result Data






Report Builder provides a Filter Building Dialog Box
that simplifies the construction of report filters
Filtering result data allows a report to contain only
data of interest
Reports can filter on data that is not displayed in the
output
Filters can be on field data as well as computed
fields
Filters can be statically entered in the report design
or dynamically collected through prompts during
report execution
Filter groups are available for sets of ‘OR’
statements
Launching the Filter Dialogue Box
Launch filter dialogue box
Filter Entities
Filters
Filtering “Where” Dropdown Box
Some Report Models fields
provide a unique list of
available entries in a given field
Removing a Filter Condition
Removing Filter condition (right mouse
click to bring up context menu)
Filtering using Dates
Using a fixed from/thru date range
From / Through Dates
Date control is used both when creating
a Filter and when executing reports
Multiple Filters
When adding an OR option, a new Filter
Group is created with the “Any of” option
Filtering with Relative Dates
Date Filters can also be entered as Relative
Dates (there are many useful options)
Query ID List Dialogue
1400 Available QueryIDs
Selecting a single QueryID
from the available data
Grouping Concepts





Grouping make sense in the context of the hierarchical
relationships that exist in MEDITECH data and are
translated to the Report Models
Whenever a “one-to-many” relationship exists, Grouping
on the “one” field and aggregating the “many” field is
possible
You use Grouping whenever you describe a report
specification using the keyword “By”
Grouping can occur on Formula fields as well as Entity
fields
Grouping in the Report Builder requires paying very close
attention to Tabbed Label above the Table. When fields
share a Tab, they are at the same hierarchical level (e.g.,
Account Number, Admit Date, Admit Provider, Count of
Orders)
Example 1 – Grouping on Attending Provider
Note the name of the tab ‘Attending
Provider Name’ – this is important to
your output
The name of the tab indicates the field that
the data will be grouped on
Count of
Patients is a
calculated field
that we will
cover in the
next section
Example 1 - Output and Sorting
Sorting is set by the available tabs and
fields in the report
The two options here are Attending
Provider and Count of Patient
Example 2 – Adds Financial ClassID as
a New Group
Financial ClassID is dropped to the left
of the current tab/table to create a new
group. The summary is now by Provider
and by Financial Class indicated by the
grouping and Total Rows.
Example 2 – Output to include FinClassID
Totals are now grouped
by Financial Class ID and
then Attending Provider
Example 2 – Sorting Options
First choose the group and then
the available fields within the
group
Sorting is not limited to three
fields – new selection boxes are
created as necessary
Example 3 – Grouping on Account Number
and Procedure
Procedure Grouping – Procedure
Description is brought over first
then the aggregate fields are
added to the right
Account Number Grouping – Account Number is
selected from another Entity and brought over to the
left of the current tab
Example 3 - Output
Note Procedures
totals – the
grouped tab
determined this
display
We have totals by Procedure by
Account Number
Filtering and Grouping
Demo nstration
Formatting and
Creating a Tabular
Report
Creating a Census Report
Drag over all four fields at
one time by highlighting with
the <Ctrl> key. Note tab
name.
Adding Textbox and Image
Uploaded image
New Textbox added to report header
Removing a Column
Right mouse click on tab allows you
to delete all columns in that group
Right mouse click on a field brings up context menu
Adding Date Field Types
Date / Time fields also are grouped by in the
Report Model with the listed detail options
Fields from Multiple Entities
This Report includes both patient
registration and financial data
Added Total Balance from
Financial Data Entity – under
Registration Data Tab
Formatting Text Fields
Textbox or Text field
Format option dialogue
boxes
Formatting Date/Time Fields
Many Date & Time format
options are available by default
Custom formats can be created (help
documentation gives examples)
Formatting Numeric Fields
Numeric formatting
Option to show numeric
field sub-totals
Formatting and Creating a
Tabular Report
Demo nstration
Advanced Filters,
Creating Custom
Fields, and How to Get
Help
Advanced Filter Options
Prompts

Prompts are used to allow flexibility in reports

Prompts let the same report answer many different questions

Prompts can filter output and provide default values for input


Prompt data can be used to filter but are NOT treated like other
field objects for the purpose of grouping, sorting, etc.
Often times, dictionary tables values are used for prompt
dropdown lists (IDs are used for multiple lists and do not function
well with prompts)
Group Filters

Group filters are used for large OR statements
Custom Filters

Custom fields can be created to be used as a filter

Sometimes custom fields are needed to be available for a prompt
Example 1 – Systolic BP over 180
Right click on field for
options above
“From and To” standard option is
not available as a prompt therefore
custom fields are needed
Example 1 – Systolic BP over 180
Query is setup as a list in the Report
Model and is not available to set as a
prompt. These types can only be
hardcoded.
Example 1 – Systolic BP over 180
Date Range Prompts
Multiple Filters and Relative date options
You can
default values
with a prompt
When adding an OR option, a new Filter
Group is created with the “Any of” option
Lab Result with Abnormal Flag Filter
Fields built as a
dropdown create a
combo box when
set as a prompt and
“in a list” is set.
Lab Results for In and Outpatients with Abnormal Flags
Dropdown list
with (Select All)
option
Prompt values allow you
to save reports that are
run outside the Report
Builder environment
User-Defined Formula Fields





Formulas allow you to combine, aggregate, filter, and
evaluate both numeric and text data. You can create
formulas and save them as new fields.
All formulas are defined within the context of an entity.
This means that the formula returns a single value for
each item within the entity. For example, suppose you
create a formula within the Registration entity. The
formula returns a single value for each Visit
(Registration).
A formula can contain any or all of the following: user
created fields, functions, operators, and constants.
You will need to create fields for specific types of
information such as the count of records or the count of
any item. This is not something that can be prepopulated.
From and through date ranges will need to be created if
you want to set those values as a prompt.
Date Functions – LOS Computation
Creating a new user defined field within a entity
Inpatients with >= 365 Days LOS
Example to compute the actual LOS
based on Admit and Discharge Dates
User created fields show up at the top of the entity
field list with the appropriate field data type icon
Formula Dialogue – Date/Time Function
Formula Builder
Dialogue Box
Formula Builder provides a brief
description of what should go in
each function parameter
Date Function “DateDiff( )” is used to
compute a number of increments
between two dates. In this case, the
increment is days.
LOS Formula used in Filter
Note DateDiff( ) function
returns numeric field type
Inpatients with >= 365 Days LOS
User-defined fields can be used in
the Filter dialogue box very much
like Report Model entity fields
Text Function – Extract Last Name
Multiple user-defined fields
Text Function – Doc Last Name Only
Formulas to Extract Last Name
Comma position is the numeric location
of the comma in the ProviderName field
The CommaPosition user-defined field is now
used within the formula to extract the Attending
Provider’s last name using the Text LEFT( )
Provider Last Name Output
Text Function – Doc Last Name Only
This works for Provider Names with a comma
Condition Functions – Switch Fx( )
Switch Function is essentially an IF /
THEN / ELSE conditional function
Switch Function to Grade A1c Results
This report example uses the Switch function to
categorize A1C Lab Test results into three
buckets (1, 2, or 3) based on the result value
Conditional Switch Function
IF function is a simplified
version of Switch with only one
Boolean expression allowed
Must use Lab Test NumericResult
for numeric comparison
The Switch function has parameters: Boolean
expression, value, Boolean expression, value,
Boolean expression, value… The first value after
the first “true” Boolean expression is returned.
A1c Lab Test Result Graded Output
Switch Function to Grade A1c Results
Graded A1C Result Output
Math Fx( ) – Balance Computation
Use arithmetic operators to compute a patient
balance and compare to the MEDITECH Balance field
Math Function – Computed Balance
Balance can be computed from an Account’s Total
Charges, Receipts, Adjustments and Refunds
Balance Expression Computations
First we created a user-defined field for
the total of receipts and adjustments
Then we created the Computed
Balance user-defined field
subtracting the Adjust/Receipts
field from the Charge Total
Patient Balance Integrity Output
Math Function – Computed Balance
Data integrity looks perfect for this slice of
patient financial data in report model
Advanced Filters and Custom
Fields
Demo nstration
Help / Report Builder Help
Help is an excellent resource;
using Google to look up error
messages or other Report
Builder issues is also useful.
Help / About Report Builder
Shows Current Version which is
useful when reviewing Microsoft (or
Google identified) documentation
Matrix and Graph
Reports
An Empty New Matrix Table
Matrix Table Report
Matrix tables are like pivot tables
they display data in a three
dimensional view
The data you want
displayed in the first
column (typically the field
with the most values
Total values you want to
display – more than one is
possible but too much can
get confusing.
Columns – typically you don’t
want too many to make your
chart easy to read
Matrix Report Results
Total Columns:
1 = January
2 = February
Filtering and ordering
of the Rows and
Columns will make a
big difference in the
legibility of your
report – it can easily
get too big
Chart Example – Allergies by Severity and Service by Month
Moving the legend at the
bottom of the chart makes a
better fit on one sheet of paper
Chart Example – Allergies by Severity and Service by Month
Count of Allergies by patient
Drag over the three data fields
you want to graph. Select
chart type and define
properties.
Chart formatting options
Chart options give you control
over many options for
formatting
You can select the Chart Type
from the standard Microsoft
chart formats.
Discussion, Questions & Answers
Thank You!

Other Acmeware Sessions





805 DR Reporting Made Easy with SQL Server BI
Tools – Tuesday 1:00pm (Jamie McDonald)
385 Digital Dashboards and Data Repository Thursday 10:00am (Ian Proffer)
382 Report Development in a MEDITECH 6.0+
Environment – Thursday 1:30pm (Glen D’Abate)
384 Security Audits using DR and SQL Tools–
Friday 9:30am (Jamie McDonald)
383 SQL Server Upgrade Issues and Version
Questions for DR – Friday 3:30pm (Ian Proffer)