December 19, 2014, 12:52 pm

It is Tax and Fragment 101 Time Self Pay Payments for Date Range – across all accounts with an MPI lookup.

Joe Cocuzzo, Senior Vice President – Report Writing Services

A customer recently requested a billing report they could run for patients interested in knowing how much they had paid to the hospital during the calendar year. Trying to assemble this information using the application or a compiled report was proving tedious.

In the report I wrote for the customer, I opened prefixes so that I could have MPI lookup functionality in the C/S BAR report. For this tip I will accomplish the same thing using a (shudder) fragment.

For any of you who lack experience writing fragments, this tip provides a reasonably straightforward example. If you are familiar with fragments, this tip includes some other techniques that you might find useful.

What we need is a report to do a “unit number” or “mpi” style lookup, where you search by name or unit number and end up selecting a patient rather than a visit. MRI.PAT reports can be written to do this, so we will start by writing a “main” report in MRI PAT which will just prompt for the patient and the date range. Once the “main” report has run, we will have a medical records urn to pass to a BAR fragment report that can go get the self pay payment transactions across all the patient’s accounts (no matter how old), provided the payment occurred in the date range.

Here is the approach for the “main” report:

You’d think you could just do this in your report for a nice MPI lookup, just as you can select on “urn” in ADM.PAT:

NPR image

Unfortunately you have to resort to this kind of trickery to get an MPI lookup in MRI:

NPR image

There is no way to figure this out via the data definition, but we have a handy table of how to do lookups in common applications.

We set up the main report with a PAGE sort on medical.record and build the HP1 region with the hospital name and address and the patient unit number and name and the date range selected by the user at run time

The “REG” type banner seems a little inappropriate for a patient statement, so we will build some centered text of the hospital information in the header instead.

NPR image

If we put our hospital info in computed fields, we can make it bold or larger or both, and if we set the JFY (justification) to C and make the length equal to the report width we can have nicely centered text without fussing.

NPR image

The date range is prompted for with two computed DAT=DATE fields with an EQ operator. I use EQ because in C/S an IG field is not required, but an EQ is and I want to make sure I get a date range. Because the VAL=exactly what the user provided the EQ is always true.

NPR image

So, our “main” report provides the page header including patient information and the column headers:

NPR image

Now we need to write a BAR.PAT fragment report to list the self pay payments across all visits of the selected patient, provided the payment was posted in the selected date range. If you have patients who like to write checks on December 31st at 23:59, you might need to select an end date beyond the end of the calendar year to allow for travel.

We want our report to go through transactions for all accounts of the patient, so we pick a detail segment of “transactions” and use the “mpi.x.”  (MAGIC report is the same, except the detail segment is called bar.acct.transactions and the index bar.acct.mri.x for the purposes of Page 1).

NPR image
The main report controls the page header, page characteristics, and whether there is a banner or report trailer. The title of the report comes from the main report, so all the highlighted areas on the fragment have absolutely no effect.

We need to create a sort trailer on the fragment to total the amounts paid.  Setting Report Trailer to Y in a fragment will create a TR in the fragment picture but that TR region (from the fragment) will never actually print. Rather than try to pass a total value back to the main report for a TR defined on the main report (which would print), it is easier to add a sort trailer (TK1) where your total will appear in the fragment just fine, simply by putting the txn.amount field in TK1.

NPR image

We are going to pass three values in slash to our fragment report:

NPR image

We will put @medical.record from the main report into /R.FRAG.ARG1

We use it to select against @master.pt.urn which is the SAME FIELD, apparently named by a renegade MEDITECH developer who says “top” when others say “main” and “int.number” when others say “adm.urn.”

We also need to “hardcode” three additional selections:

NPR image

Setting txn.class to “O” will skip all the “C” (charge) transactions

Setting txn.type to “R” will get payments only R = payments and “P” equals Refunds, as renegade MEDITECH developer strikes again, because he says “Prefunds” and “Rayments.”

Note that we select against the “self pay insurance” using the MIS parameter value, this means the report will work for you whether you use “SP” or “SELF” or  whatever.

The fragment picture looks like this:

NPR image

To connect the reports we go back to the main report and add a call to Z.rw.fragment.  We load /R.FRAG1, /R.FRAG2, and /R.FRAG3 and then call the fragment. The D line from the main report will not print because Z.rw.fragment returns nil and therefore our LC is nil.

NPR image

Our patient statement now looks like this

NPR image

Possibly you might want to flip the negatives for the “Rayments,” to do this you need to create a computed field in the BAR fragment as follows:

NPR image
A copy of the two fragments MRI.PAT.zcus.is.self.pay.statement and BAR.PAT.zcus.is.self.pay.statement.fr has been uploaded to both our MAGIC and our C/S NPR report library.  The reports will work fine in 6.0 also, but in 6.1 BAR goes off to MAT land, so you’d have to do something in RD or SQL instead.

http://www.iatric.com/Information/NPRReportLibrarySearch.aspx

Make sure you change the PHA database in the “check” macro to match YOUR HOSPITAL, and the generic mnemonic to match what you use. Otherwise the utility is generic and will work at any MAGIC site.

 

Joe Cocuzzo

SQL Tip — Multi-value Parameters for SSRS

Thomas Harlan, Technical Team Lead – Data Repository at Iatric Systems

Continuing on from last month, when you start building DR + SSRS reports to replace or supplement NPR or RD reporting, you lose some conveniences from direct MEDITECH integration.

One of them is the ability to provide the user with a lookup of values for a parameter field and the ALL keyword. But this functionality can be replaced, with a bit of preparatory work:

  1. We create a simple stored procedure to get the list of values to present to the user.
  2. We create the report detail stored procedure to break apart the list of values sent by the report into a little table, that we then use to control selecting data.
  3. We attach both stored procedures to the SSRS report.
  4. We configure the SSRS report to pass the values the user selects down into the main data stored procedure for the report.

Create the Location List Stored Procedure

See the attached IatricLocationList.sql code (a version is provided for the NPR-sourced dictionary and one for the M/AT-sourced dictionary) for an example of how to create a list of values query that goes against a dictionary table. The core of that stored procedure is:

SELECT  LOC.LocationID

,LOC.[Name]+ ‘ [‘+LOC.LocationID+’]’ AS LocationNameAndID

FROM    livedb.dbo.DMisLocationFacility FAC

JOIN livedb.dbo.DMisLocation LOC ON ( LOC.LocationID = FAC.LocationID AND LOC.SourceID = FAC.SourceID )

WHERE   FAC.FacilityID = @cFacilityID

AND

LOC.Active = ‘Y’

The key points in this code are that:

  1. We only see Active Locations.
  2. We return, in the LocationNameAndID field both the mnemonic and the name. We always do this in case you have two locations with the same name, but different mnemonics, or very similar (and easy to confuse) mnemonics with very different names.
  3. We add (in the attached code, not the example above) an extra line for ALL Locations. We’ll write our data query to respect that keyword coming across in the locations list.

The MAT version of the code also filters out non-clinical departments, since there is a differentiating field in that version of the dictionary.

Create Data Stored Procedure

Now we need a matching stored procedure (IatricDischargesByDateAndLocation.sql) that accepts some criteria, including a list of locations. Something simple will do for this example – Patients discharged from a list of locations in a range of days. The key part of the stored procedure is the WHERE:

WHERE   DIS.DischargeDateTime BETWEEN @dStartDate AND @dEndDate

AND

ADV.FacilityID = @cFacilityID

AND

(

@cLocations = ‘ALL’

OR

ADV.LocationID IN ( SELECT ITM.ITEM FROM IatricSplit(‘|’,@cLocations) ITM ) — This function turns a delimited list into a table

)

Here we see that not only are we selecting by Facility, and Discharge Date, but also by either the @cLocations parameter being ‘ALL’, or that the last ADM.PAT location is in the list of Location mnemonics we passed in to the stored procedure.

Note that in SQL, when an OR is processed, the work stops after the first clause which is True. So if the @cLocations parameter is indeed ‘ALL’, then the SELECT… Split code never executes. Which is good – it’s fast in that scenario – and we don’t do extra, unnecessary work.

Attach Both Stored Procedures to Report

Now that IatricDischargesByDateAndLocation and IatricLocationList exist, we can add them to an existing or template report (zcus_iatric_template.rdl is a good place to start) as DataSets.

First add IatricLocationList:

Datasets > Right-click > Add Dataset

SQL Image

Set the cFacilityID parameter to use the already existing FacilityID parameter from the template:

SQL Image

Then add IatricDischargesByDateAndLocation

Datasets > Right-click > Add Dataset

SQL image

Click OK to save. This automatically creates dStartDate, dEndDate and cLocations parameters. Note that cFacilityID in the new stored procedure does not create a new parameter, but uses the existing one automatically.

Now we need to attach the IatricLocationList dataset to the cLocations parameter.

Right-click on the cLocations parameter in the Parameters group in Report Explorer. Then checkmark “Select Multiple Values.”

SQL image

Switch to the Available Values pane. Select the LocationDs dataset and pick the appropriate fields:

SQL image

Switch to the Default Values pane, and set the default value to “ALL:”

SQL image

Right-click on the IatricDischargesByDateAndLocationDs dataset > Dataset Properties.

Click the Parameters entry on the left, then click the f(x) button beside the @cLocations field to change the expression that controls the value passed to the discharges stored procedure.

Change it from this:

=Parameters.cLocations.Value

To this:

=Join(Parameters.cLocations.Value,”|”)

Note that the pipe (|) delimiter here needs to match the delimiter used in the stored procedure when we break the delimited list apart into a table.

Click OK to save this. Now drag a Table object from the Toolbox onto the report design surface and populate it with some fields.

Preview the report, and you’ll be prompted first for a Facility, then for a list of Locations at that facility, then a starting/ending date range. Select more than one Location by checkmarking them in the list, then View Report.

You should see only discharges from the selected locations, in the date range you entered.

Extra Credit

Go back to the IatricLocationList stored procedure, review the output and suppress Location IDs from the list that are not useful to your customers.

(end)

Visit our report library at http://www.iatric.com/Information/NPRReportLibrarySearch.aspx to look them up.

You can find additional Report Writing Tips on our website at http://www.iatric.com/Information/NPRTips.aspx, as well as information about our on-site Report Writer Training and Report Writing Services.

Read Joe’s blog posts at MEDI-Talk.

To subscribe for email notifications for new Report Writing classes, please follow this link:

http://www.iatric.com/Information/Classes.aspx.

For more information, please contact Karen Roemer at 978.805.3142 or email
karen.roemer@iatric.com
.

This article originally appeared in the December 2014 issue of Iatric Systems Updates! newsletter.

December 19, 2014, 12:50 pm

SQL Tip — Multi-value Parameters for SSRS

Thomas Harlan, Technical Team Lead – Data Repository at Iatric Systems

Continuing on from last month, when you start building DR + SSRS reports to replace or supplement NPR or RD reporting, you lose some conveniences from direct MEDITECH integration.

One of them is the ability to provide the user with a lookup of values for a parameter field and the ALL keyword. But this functionality can be replaced, with a bit of preparatory work:

  1. We create a simple stored procedure to get the list of values to present to the user.
  2. We create the report detail stored procedure to break apart the list of values sent by the report into a little table, that we then use to control selecting data.
  3. We attach both stored procedures to the SSRS report.
  4. We configure the SSRS report to pass the values the user selects down into the main data stored procedure for the report.

Create the Location List Stored Procedure

See the attached IatricLocationList.sql code (a version is provided for the NPR-sourced dictionary and one for the M/AT-sourced dictionary) for an example of how to create a list of values query that goes against a dictionary table. The core of that stored procedure is:

SELECT  LOC.LocationID

,LOC.[Name]+ ‘ [‘+LOC.LocationID+’]’ AS LocationNameAndID

FROM    livedb.dbo.DMisLocationFacility FAC

JOIN livedb.dbo.DMisLocation LOC ON ( LOC.LocationID = FAC.LocationID AND LOC.SourceID = FAC.SourceID )

WHERE   FAC.FacilityID = @cFacilityID

AND

LOC.Active = ‘Y’

The key points in this code are that:

  1. We only see Active Locations.
  2. We return, in the LocationNameAndID field both the mnemonic and the name. We always do this in case you have two locations with the same name, but different mnemonics, or very similar (and easy to confuse) mnemonics with very different names.
  3. We add (in the attached code, not the example above) an extra line for ALL Locations. We’ll write our data query to respect that keyword coming across in the locations list.

The MAT version of the code also filters out non-clinical departments, since there is a differentiating field in that version of the dictionary.

Create Data Stored Procedure

Now we need a matching stored procedure (IatricDischargesByDateAndLocation.sql) that accepts some criteria, including a list of locations. Something simple will do for this example – Patients discharged from a list of locations in a range of days. The key part of the stored procedure is the WHERE:

WHERE   DIS.DischargeDateTime BETWEEN @dStartDate AND @dEndDate

AND

ADV.FacilityID = @cFacilityID

AND

(

@cLocations = ‘ALL’

OR

ADV.LocationID IN ( SELECT ITM.ITEM FROM IatricSplit(‘|’,@cLocations) ITM ) — This function turns a delimited list into a table

)

Here we see that not only are we selecting by Facility, and Discharge Date, but also by either the @cLocations parameter being ‘ALL’, or that the last ADM.PAT location is in the list of Location mnemonics we passed in to the stored procedure.

Note that in SQL, when an OR is processed, the work stops after the first clause which is True. So if the @cLocations parameter is indeed ‘ALL’, then the SELECT… Split code never executes. Which is good – it’s fast in that scenario – and we don’t do extra, unnecessary work.

Attach Both Stored Procedures to Report

Now that IatricDischargesByDateAndLocation and IatricLocationList exist, we can add them to an existing or template report (zcus_iatric_template.rdl is a good place to start) as DataSets.

First add IatricLocationList:

Datasets > Right-click > Add Dataset

SQL Image

Set the cFacilityID parameter to use the already existing FacilityID parameter from the template:

SQL Image

Then add IatricDischargesByDateAndLocation

Datasets > Right-click > Add Dataset

SQL image

Click OK to save. This automatically creates dStartDate, dEndDate and cLocations parameters. Note that cFacilityID in the new stored procedure does not create a new parameter, but uses the existing one automatically.

Now we need to attach the IatricLocationList dataset to the cLocations parameter.

Right-click on the cLocations parameter in the Parameters group in Report Explorer. Then checkmark “Select Multiple Values.”

SQL image

Switch to the Available Values pane. Select the LocationDs dataset and pick the appropriate fields:

SQL image

Switch to the Default Values pane, and set the default value to “ALL:”

SQL image

Right-click on the IatricDischargesByDateAndLocationDs dataset > Dataset Properties.

Click the Parameters entry on the left, then click the f(x) button beside the @cLocations field to change the expression that controls the value passed to the discharges stored procedure.

Change it from this:

=Parameters.cLocations.Value

To this:

=Join(Parameters.cLocations.Value,”|”)

Note that the pipe (|) delimiter here needs to match the delimiter used in the stored procedure when we break the delimited list apart into a table.

Click OK to save this. Now drag a Table object from the Toolbox onto the report design surface and populate it with some fields.

Preview the report, and you’ll be prompted first for a Facility, then for a list of Locations at that facility, then a starting/ending date range. Select more than one Location by checkmarking them in the list, then View Report.

You should see only discharges from the selected locations, in the date range you entered.

Extra Credit

Go back to the IatricLocationList stored procedure, review the output and suppress Location IDs from the list that are not useful to your customers.

(end)

Visit our report library at http://www.iatric.com/Information/NPRReportLibrarySearch.aspx to look them up.

You can find additional Report Writing Tips on our website at http://www.iatric.com/Information/NPRTips.aspx, as well as information about our on-site Report Writer Training and Report Writing Services.

Read Joe’s blog posts at MEDI-Talk.

To subscribe for email notifications for new Report Writing classes, please follow this link:

http://www.iatric.com/Information/Classes.aspx.

For more information, please contact Karen Roemer at 978.805.3142 or email
karen.roemer@iatric.com
.

This article originally appeared in the December 2014 issue of Iatric Systems Updates! newsletter.

December 18, 2014, 12:40 pm

HIStalk Interviews Frank Fear, VP/CIO, Memorial Healthcare

Tell me about yourself and the health system.

I’m the vice president of ancillary services and the chief information officer at Memorial Healthcare in Owosso, Michigan. Owosso is about 20 miles from Lansing, 25 miles from Flint, and 25 miles from Saginaw. We’re a 150-bed hospital with 1,100 employees and a medical staff of about 120. Employed physician offices totaling about 15 offices and 50 providers that are sprinkled throughout about a 20-mile radius from the hospital.

Although we’re considered a community hospital, we have a lot of competition with hospitals in Lansing, Saginaw, and Flint. We’ve leveraged technology as a differentiator for us. Utilizing IT to approve efficiency, quality, safety, and frankly, trying to track doctors. It’s very competitive for not only patients, but also attracting good doctors. I think we’ve been really successful. We’re very proud of our ability to recruit physicians. We haven’t had a lot of challenges there.

I really enjoy working here. We’re a size where we have some resources to get things done, but we’re not so big that it takes time to get things done. There’s not a lot of bureaucracy. It’s a lot of fun to work with our executive team and board. They see as a strategic asset and not an expense. The ability to go right to the exec team and the board and say, hey, I want to do this new, next idea that I think will have a positive impact, work with them. Apple Health Integration is an example of that.

 

How will you use Apple Health integration?

We’ve had a patient portal for a while and we’ve attested for Meaningful Use Stage 2 in the hospital. As we all know, patient portal is one of those requirements. We’ve seen some mild success there, but it’s one of those things where we’re asking the patient many times to go out and access that. It’s almost passive patient engagement. We’re putting your data out there it’s available for you to better manage your care and and be more informed as a patient. But we’re really looking for the patient to go out and get that data.

We’re trying to figure out, how can we be more actively engaged with our patients? I like to think that there was some like grand, great vision that goes into this stuff. [laughs] I started thinking about and working with Frank Fortner, president of Iatric Systems, and said, you know, we’re always looking down at our phones. It’s almost embedded in our work flows now that you look at your smartphone. People are using Fitbits and they’re using different apps on their phone. Is there a way that, instead of us building an app or developing something and asking the patient to go look at it like we build a portal, can we somehow engage patients actively and leverage what they’re already doing and making it a richer experience?

Read more at HISTalk.

December 17, 2014, 12:21 pm

Dell Study Uncovers 96 Percent of Healthcare Organizations Turn to the Cloud

Dell research highlights how mid-size healthcare organizations benefit from cloud computing

According to the Dell Global Technology Adoption Index, 96 percent of mid-size healthcare organizations surveyed are using or considering using cloud computing. The survey also found:

  • The majority of healthcare respondents are using private cloud (43 percent) or a hybrid cloud solution (43 percent).
  • Healthcare confidence in the security of data stored in a private cloud environment is promising, with 64 percent indicating that they are “very confident” that their data is protected.
  • Nearly half of all healthcare organizations surveyed (46 percent) cite better allocation of IT resources as the biggest benefit of cloud computing. That benefit is followed closely by cost savings (39 percent).
December 17, 2014, 12:18 pm

Identity and Access Management: HCA Healthcare’s Big-Scale Approach

At the vast HCA Healthcare, a focus on deploying comprehensive, manageable identity and access management solutions across 165 hospitals
Bobby Stokes is assistant vice president, enterprise systems and identity and access management at the Nashville-based HCA Healthcare. The largest for-profit hospital company in the United States, HCA Healthcare encompasses 165 hospitals and 115 freestanding surgery centers, as well as 204,000 employees, in 20 states and in England.

The size and scope of the organization are further reflected in the fact that its enterprise systems professionals must maintain 120 corporate applications, ranging from identity services, through provisioning services, mobility development, collaboration platforms (Intranet capabilities and search engines), security initiatives, and general development initiatives, among others.

Read more at healthcare-informatics.com.

December 16, 2014, 12:21 pm

Iatric Systems using VMware vCloud Air for Healthcare, Reducing Costs and Increasing Agility

Thanks to VMware’s vCloud Air solution, Iatric Systems can now offer their healthcare software as a service (SaaS) to its customers in a completely secure manner, reducing cost and increasing agility and scalability.

Source.

December 15, 2014, 10:58 am

DATA + SHARING: Meditech moves into town

Constitution Way has a new corporate culture

By Frank Mortimer
Published: Thursday, December 11, 2014 10:20 AM EST
In a quiet shade of green, the word “Share” is tucked into a colorful poster in Sheila Stuart’s marketing office at Medical Information Technology Inc.’s newly opened Foxboro office building and training center.

Other ideals for healthful living — “Always Be Kind,” is one of them — appear in more dominant lettering.

And then there are humorous touches, this one in a frolicsome font: “Eat Cookies.”

What’s not to love about such a corporate culture?

December 12, 2014, 12:56 pm

Bridging the Care Gap by Utilizing Patient-Generated Health Data

Iatric Systems own Mark Johnson is moderating this Connected Patient Community Event, “Bridging the Care Gap by Utilizing Patient-Generated Health Data.”

December 16, 2014  |  2:00 pm — 3:00 pm ET
Patient-Generated Health Data (PGHD) is a hot topic these days and many people want to know what PGHD is all about. Join our expert panel as we discuss the HIMSS initiative to educate the industry on PGHD, spotlight disruptive technologies from companies such as Samsung, Appleand Microsoft, and discover how the Carolinas Health System uses PGHD and the decisions behind designing their in-house apps.

Speakers:
Jan K Oldenburg, Senior Manager, Advisory, Ernst & Young LLP
Jane Sarasohn-Kahn, MA, MHSA, THINK-Health and Health Populi blog
Pamela Landis, Assistant Vice President, Information Services, Carolinas Healthcare System

Register now for this complimentary event.

December 11, 2014, 4:07 pm

Ensure due diligence with your business associate relationships

Demonstration: Thursday, December 18, 2:00 p.m., ET

When you exchange patient data with your hospital’s business associates, you take on new risks. That’s because the HIPAA Omnibus Final Rule requires you to ensure the security of Protected Health Information (PHI) even when it’s in the hands of third-party vendors.

Register now to join us on Thursday, December 18, 2014 at 2:00 p.m. ET to find out how you can comply with the Omnibus Final Rule in keeping your patients’ data secure when it’s being used by your business associates and third-party vendors.

You’ll see a demo of our new Privacy Risk Manager™ and how it helps you:

  • Manage third-party risk by assessing usage and volume of PHI
  • Increase visibility into business associate agreements
  • Improve staff efficiency and productivity
  • Create an effective workflow for business associate relationship management
  • Create a culture that ensures trust and protects patient privacy

Register here.

December 10, 2014, 1:41 pm

MEDITECH’s EHR Alerts Clinicians to Possible Sepsis

A new white paper explains how MEDITECH’s Electronic Health Record (EHR) provides healthcare organizations with an “early warning detection system” that recognizes at-risk patients for sepsis and alerts the care team.

Sepsis contributes to nearly one in two hospital deaths, according to research recently published in JAMA. But, with MEDITECH’s Electronic Health Record (EHR), healthcare organizations have an “early warning detection system” that recognizes at-risk patients and alerts the care team, so providers can intervene sooner.

Evidence-based guidance, a sophisticated rules-based engine, and multidisciplinary notifications — reinforced with robust reporting capabilities that identify anyone in the larger patient population who is declining — enable healthcare organizations to drive quality care.

Read more.