Running and Scheduling Reports

Running Reports

All reports run through the reporting module support the following inputs:

Parameter values

Values for each of the parameters that the Report Definition requires. These values may be either fixed, or may be specified as compatible runtime expressions. Runtime expressions are currently limited to the following:

Name

Description

${now}

The exact date/time that the report actually runs

${start_of_today}

The same as ${now}, except with the time set to midnight at the start of the day

${end_of_today}

The same as ${now}, except with the time set to the last millisecond of the day

${start_of_last_month}

Relative to ${now}, this is midnight on the first day of the preceeding month

${end_of_last_month}

Relative to ${now}, this is the last millisecond of the last day of the preceeding month

${generatedBy}

The user who requested that the report be run

${generationDate}

The date that the report was generated, usually the same as ${now}

Any of the above expressions that return Dates can also contain date "arithmetic". For example, let's say you have a report that takes in 2 parameters named "startDate" and "endDate". If you want to run a Report that covers the previous week, you could specify: startDate = ${start_of_today-7d} and endDate = ${end_of_today-1d}. The arithmetic supports expressions in the format of either "+" or "-", followed by a number, followed by the units (either d (days), w (weeks), m (months), y (years), h (hours). You can also have multiple expressions together. So, you could have ${now-5d+2w-5m+6h} and this would evaluate to a particular date.

Rendering mode

Here you would choose the way that you want to render the Report.

Base Cohort

Here you can choose the base set of patients that you wish to run the report on

When the report should be run

Here, you can either leave the default, which will request the report to be run immediately, or you can set the schedule to run this report at some future point in time, or on a recurring basis.

Scheduling the report

All reports in the reporting framework UI are run asynchronously. Each request to run a report, following the above steps, results in a Report Request being saved to the database. A scheduled process will then pick up this report request and evaluate the report, when appropriate. Under normal operations, this should happen close to immediately. However, there may be times when it a report is Queued for several minutes, particularly if many reports are requested at the same time. The setting "reporting.maxReportsToRun", which has a default value of 1, is one way to influence this behavior. Setting this to a higher value may shorten the amount of time a report is queued before it is processed. However, increasing this number too high should be done with caution, as several large reports running simultaneously could hurt server performance.