Handlebars is a placeholder-based template language that helps auto-fill information in the SOAP note section of the CVT. When you're building a workflow, Handlebars can be used to insert dynamic content into the note taking steps—automatically pulling in details collected during the beginning of a patient encounter to streamline documentation when you get to those screens later in the encounter.
Handlebars statements use double curly brackets {{ }} (that’s where the name handlebars comes from), with an “attribute” placed inside. These statements are often embedded directly into sentences to make your templates more efficient and personalized. Here's an example of how they work in practice:
If you would like to have a sentence that contains the patient’s systolic blood pressure in every note for a given service, and you collect SBP during the physical assessment part of the encounter, you would include the following on the documentation screen when building the workflow template:
The patient's systolic blood pressure is {{physical.blood_pressure_systolic}}.
In the example above, “physical.blood_pressure_systolic” is the attribute. By adding the above example to the note screen in the template builder, when you later go through the workflow with a patient, the note will automatically contain the sentence complete with the SPB reading from earlier in the encounter.
The patient's systolic blood pressure is 142/88.
The table below provides a glossary of attributes to use when creating your templates. We’ve also provided some examples that you can copy for your reference.
| Description | Attribute |
| Patient Demographics | |
| Patient last name | demographics.last_name |
| Patient first name | demographics.first_name |
| Patient middle name | demographics.middle_name |
| Patient date of birth in yyyyMMdd format | demographics.dob |
| Patient age in years | demographics.age |
| Patient gender (2=female, 3 = male) | demographics.gender |
| Patient gender identity (1 = unknown, 2 = female, 3 = male, 4 = non binary) | demographics.genderIdentity |
| Patient email address | demographics.email |
| Patient phone number | demographics.phone |
| Patient address 1 | demographics.address1 |
| Patient address 2 | demographics.address2 |
| Patient address city | demographics.city |
| Patient address county | demographics.county |
| Patient address state code | demographics.state |
| Allergies | |
| List of allergies | allergies.list |
| Medications | |
| List of medications | medication.general_list |
| Symptoms | |
| Chills | test.symptoms.chills |
| Cough | test.symptoms.cough |
| Diarrhea | test.symptoms.diarrhea |
| Difficulty breathing | test.symptoms.difficultBreath |
| Enlarged lymph nodes | test.symptoms.enlarged_lymph_nodes |
| Fatigue | test.symptoms.fatigue |
| Feverish | test.symptoms.feverish |
| Fever over 100.4 Fahrenheit | test.symptoms.feverover |
| Headache | test.symptoms.headache |
| Loss of smell | test.symptoms.loss_of_smell |
| Loss of tase | test.symptoms.loss_of_taste |
| Muscle pain | test.symptoms.muscle_pain |
| Nasal congestion | test.symptoms.nasalcongestion |
| Nausea | test.symptoms.nausea |
| Other symptoms | test.symptoms.other |
| Rash | test.symptoms.rash |
| Runny nose | test.symptoms.runnynose |
| Shortness of breath | test.symptoms.shortnessbreath |
| Difficulty swallowing | test.symptoms.swallowing |
| Sore throat | test.symptoms.sore_throat |
| Vomiting | test.symptoms.vomit |
| Pregnancy | |
| Pregnant? Yes/No | pregnancy.pregnant |
| Physical Assessment | |
| Diastolic blood pressure | physical.blood_pressure_diastolic |
| Blood pressure method | physical.blood_pressure_method |
| Systolic blood pressure | physical.blood_pressure_systolic |
| O2 Saturation | physical.oxygen_saturation |
| Pulse: BPM | physical.pulse |
| Pulse measurement method | physical.pulse_method |
| Respiratory rate: PBM | physical.respiratory_rate |
| Temperature | physical.temperature |
| Temperature measurement method | physical.temperature_method |
| Weight (lbs) | physical.weight |
Examples of Handlebars in Use
Example Subjective Note
Subjective Note in the template builder. Type this into the CVT builder when you put together the workflow, to save your team the typing later while completing the workflow with patients:
Example Subjective Note in the workflow - after the patient and pharmacists have completed all survey and assessment screens:
See below for a copy/paste version of these examples.
Example Objective Note
Objective Note in the template builder:
Example Objective Note in the workflow - after the patient and pharmacists have completed all survey and assessment screens:
Copy and Paste Text from the Above Examples
CC:
{{demographics.first_name}} {{demographics.last_name}} is a {{demographics.age}} year old presenting to the pharmacy clinic for treatment for
MEDICATIONS:
{{medication.general_list}}
ALLERGIES:
{{allergies.list}}
{{#if pregnancy.pregnant equals "yes"}}
They are pregnant.
{{else}}
They are not pregnant.
{{/if}}
CUSTOM QUESTIONS: (General format)
YES/NO Questions
{{#if customQuestions.enterthekeyhere equals "yes"}}
This is the key.
{{/if}}
Check Box Questions (1=checked, 2=unchecked)
{{#if customQuestions.enterthekeyhere equals 1}}
This is the key.
{{/if}}
Text String Questions
I'd like the following text to show when a patient enters it:
{{customQuestions.enterkeyhere}}
PHARMACIST QUESTIONS
{{#if pharmacistQuestions.enterthekeyhere equals "yes"}}
This is the key.
{{/if}}
SYMPTOMS:
{{demographics.first_name}} listed the following symptoms:
{{#if test.symptoms.chills equals 1}}
- Chills
{{/if}}
{{#if test.symptoms.cough equals 1}}
- Cough
{{/if}}
{{#if test.symptoms.diarrhea equals 1}}
- Diarrhea
{{/if}}
{{#if test.symptoms.difficultBreath equals 1}}
- Difficulty Breathing
{{/if}}
{{#if test.symptoms.enlarged_lymph_nodes equals 1}}
- Enlarged Lymph Nodes
{{/if}}
{{#if test.symptoms.fatigue equals 1}}
- Fatigue
{{/if}}
{{#if test.symptoms.feverish equals 1}}
- Feverish
{{/if}}
{{#if test.symptoms.feverover equals 1}}
- Fever over 100.4 Fahrenheit
{{/if}}
{{#if test.symptoms.headache equals 1}}
- Headache
{{/if}}
{{#if test.symptoms.loss_of_smell equals 1}}
- Loss of Smell
{{/if}}
{{#if test.symptoms.loss_of_taste equals 1}}
- Loss of Taste
{{/if}}
{{#if test.symptoms.muscle_pain equals 1}}
- Muscle Pain
{{/if}}
{{#if test.symptoms.nasalcongestion equals 1}}
- Nasal Congestion
{{/if}}
{{#if test.symptoms.nausea equals 1}}
- Nausea
{{/if}}
{{#if test.symptoms.rash equals 1}}
- Rash
{{/if}}
{{#if test.symptoms.runnynose equals 1}}
- Runny Nose
{{/if}}
{{#if test.symptoms.shortnessbreath equals 1}}
- Shortness of Breath
{{/if}}
{{#if test.symptoms.swallowing equals 1}}
- Difficulty swallowing
{{/if}}
{{#if test.symptoms.sore_throat equals 1}}
- Sore Throat
{{/if}}
{{#if test.symptoms.vomit equals 1}}
- Vomiting
{{/if}}
{{#if test.symptoms.other equals 1}}
- Other Symptoms
{{/if}}
PHYSICAL EXAM:
Blood pressure: {{physical.blood_pressure_systolic}} / {{physical.blood_pressure_diastolic}}
Pulse: {{physical.pulse}}
Temperature: {{physical.temperature}}
Respiratory Rate: {{physical.respiratory_rate}}
Oxygen Saturation: {{physical.oxygen_saturation}}
Weight: {{physical.weight}}
Beyond the Basics
As you can see above, there is a lot that can be done using handlebars. Throughout the template builder you will see text boxes titled “Key”. The information contained in the Key field is the attribute used to create Handlebars using the related prompt.
Example of recording an answer from a custom question
Use the “Key” as the attribute for your Handlebars in the SOAP note.
{{#if pharmacistQuestions.patientReceivingCareFromMoreThanOnePrescriber equals 1}}
-They receive prescriptions from more than one provider.
{{/if}}
In this example, “1” represents a checked answer and the following text will display in the SOAP note:
They receive prescriptions from more than one provider.
You can also use Handlebar “logic” to define data. In the example below, using basic math symbols like >, the template will display that a patient has “High Blood Pressure” if the given parameters (SBP> 130) are met.
Example of using basic math symbols
{{#if physical.blood_pressure_systolic > 130}}
High Blood Pressure
{{/if}}