...
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.