Viewing test results and other measurements

Test results, as is the case with all measurements, are fully integrated into the clinical structure of the GNUmed medical record. Each result is associated with an encounter as well as an episode of illness. GNUmed then uses this contextual information to display test results in two conceptually different ways, quite similar to progress notes.

The test results grid

This module displays all test results of the active patient in a chronological grid layout, as will be familiar from spreadsheets. The grid consists of a far-left column whose rows consist of labels which identify the test type. The presence of a test type denotes that one or more results for that test type are available. Truncation of long test type names can be gotten around by hovering over the cell, which will expose a tooltip containing both the full test name and the most recent result.

Column widths are not user-modifiable (per list archive). One column is provided for each day for which results are available. Where more than one result per day was available for a test, they will be coalesced into single cells. The ordering of presentation defaults to place the most recent at left, with older results to the right. A Launchpad wishlist item hopes to enable reversing this as a per user preference, say under GNUmed / options / EMR / test results date order, to enable reading results with the oldest on the left and the newest on the right for consistency with whatever may be other local systems.

Hovering over a particular result will show a tooltip of all available detail. Each cell will most often hold a single value, but if there exists more than one result for a given test on a certain day, the cell will list all the values, prefixed with the hour and minute. Within a multi-result cell, the most recent value will be shown at the top, and any details in the tooltip will be those corresponding to the most recent result.

Certain cues in the value display hint at more complex information to be available:

Groups of test results can be selected and then acted upon (review, deletion, etc). A few widgets at the bottom assist easy selection of often-used combinations for marking the tests as whether technically abnormal, and as whether clinically significant (important). Selections which contain multi-value cells will raise a disambiguation dialog before proceeding to act on the results.

Clinician action on results

Actions on groups of test results can be invoked from the button list at the bottom which also provides a few conveniences for selecting certain defined ranges of results.

Discontinuous selection may be non-obvious and is platform-specific. Mostly one will need to hold down some modifier key while adding to the selection (eg. <SHIFT-click> or <CTRL-click>). Note that a single-clicked cell with a bolded border is only activated but not yet selected. Selected cells will be identifiable by a differently colored background.

Editing results

Double-clicking a cell will open the test result editor. If the cell holds multiple values, GNUmed will let you choose which one to edit. This widget for updating a measurement affords immediate review (or re-review) by whoever updates the result. The old review will be considered no longer valid. Affirmation, by the person modifying the result, that an old review remains appropriate will allow the result to be considered fully-handled without a need for further flagging. If a new review changes the old review, this will be made evident to any assigned-as-responsible (for the result) clinician. If no new review is recorded, the result is treated as equivalent to unreviewed, and will result in its inclusion in relevant provider inboxes (1, 2, 3).

Displaying graphs of test results

As of version 0.8 GNUmed can plot a graph for a selection of results pretty much any way you wish. This is accomplished by exporting the data and calling gnuplot. This provides tremendous flexibility as to the exact method of visualization of the data. Note, however, that the user must provide a clinically meaningful selection of test results. GNUmed provides two gnuplot scripts which can graph either one or two test types along with their clinical target or normal ranges and units (if available).

Technical details

The header of each datafile (any of gm2gpl-*.dat in the systemwide temporary directory) contains documentation as to the format of the file. Note that for each test type a new block of data will be created which can then be addressed with its 0-based index from within gnuplot (using ... index ...). Also note that for results of one and the same type obtained on a single day a blank line will be inserted such as to facilitate discontinuous plotting should a relevant style be used (such as with lines). Furthermore, each data block carries in its first line the test type (much like a CSV file can contain column headers) which can be used with the columnhead command in gnuplot. The actual (unique, random) name of the data file is made known to gnuplot within the variable gm2gpl_datafile by pre-loading a file gm2gpl-*.conf (again in the systemwide temporary directory).

The actual plotting script to apply to the data is exported from the template the user selected and passed to gnuplot as well (gm-G-template-*.scr in the systemwide temporary directory).

Contextual use of test results

Above and beyond the overview of test results offered by the grid view they are displayed in various places contextually. The EMR journal lists test results under their corresponding encounters. The EMR tree shows test results in their relation to episodes and encounters.

Future functionality ideas

Filters in mind to be successively added to the core viewer when time permits:

Next: Workflow Management