Opal Patient Detail Views

Opal provides all patients with a detail view.

The default detail view will allow the user to switch between all of a patient's episodes, as well as editing patient information linked to the patient rather than an episode. (Allergies for example.)

Template selection

The base template for a patient detail view is ./opal/templates/patient_detail_base.html, although you can override or customise that for your application most easily by implementing a ./templates/patient_detail.html and customising specific blocks, as the Opal implementation simply includes the base template.

Each episode will display using the template appropriate for it's EpisodeCategory - for instance an InpatientEpisode will use ./templates/detail/inpatient.html. You may define your own episode types should you require.

Record Panels

A frequent pattern when constructing detail views is to render a panel for a particular Subrecord type. The panels templatetag library contains some useful helpers for rendering panels based on models.

{% load panels %}
{% record_panel Diagnosis %}

The above code will render a panel for your episode, including the Subrecord detail template for each instance, and allowing editing, deletion and creation of instances of your Subrecord.

You may also consult the Detailed reference documentation for Record Panels.

Custom Patient Detail Views

Sometimes we also need to display information about a patient across multiple episodes, or simply a particular view of one episode. For instance, you might like to have a specific view for showing all of the lab results for a patient, which would be overwhelming were they all displayed in the episode detail view.

Opal's PatientDetailView allows you to do just this. To add an additional view to a patient you simply declare a PatientDetailView class:

# detail.py
from opal.core import detail

class MyCustomView(detail.PatientDetailView):
    name = 'my_custom_view'
    title = 'Special View'
    template = 'detail/my_custom_view.html'

This will then be available in the Patient Detail view in the episode switcher menu. You can find details of all the various options for PatientDetailViews in the reference documentation.