Getting started making Soapnotes

To save you time, there are a few suggestions that I have before you dive in.
  • Have a plan - making a Soapnote is like a reverse engineering process. Start with good clinical documentation and work backwards.
  • Start small - try a few small templates before you try to put together the grand unifying medical calculator.
  • Save your work early and often.
  • There probably is a sweet spot for the proportions of user input versus boilerplate.
  • Forms affect efficiency. My opinion is that lots of clicking, selecting, and checking takes my hands off the keyboard and slows me down. I really hate lots of checkboxes, especially if I going back and forth between selecting and typing text. Clicking is great for patients filling out forms and for nicely formatted calculators, but it's horrible for a provider trying to get through a visit. Just my opinion.
  • You can post a simple boilerplate Soapnote in a matter of moments. You can always come back to it later and pepper it with Soapnote Tags to make it more interactive.

Basic Soapnote Tags


Soapnote Tags are the snippets in the brackets that turn boilerplate into an interactive form. The samples below might be a good launching-off point for developing your own templates, interactive forms, and calculators.
Aside from the ones below, there's a lot of other calculators and forms you can take a look at and shamelessly steal from, too.

Boilerplate


This is simply text entered into a form. Nothing interactive or customized here.
Here is a sample of boilerplate.

Text Box


This displays a small text box for entry of a few words.
Code for this is: [text]
Optional parameters are name, memo, default, and size
Example 1:
[text name="text1" default="sample text"]
Example 2:
[text default="sample text 2" size=100]
Example 3:
[text memo="sample text 3" size=50]

Text Areas


This displays a larger text box for entry of a few words.
Basic code for this is: [textarea]
Optional parameters are name, memo, cols, rows, fillable, and default
Example 1:
[textarea name="textarea1" memo="sample text area" default="enter text here"]

Alternative Code - Text Areas with Lots of Default Text


Alternative (better) code for a text area with a significant amount of default text allows an opening and a closing tag - [textarea] and [/textarea] - instead of having everything inside of a single tag.
Example 2:
[textarea]item 1
item 2
item 3
item 4[/textarea]

Special Feature - Fillable Text Areas


When this is enabled, this feature allows you to hop between every six asterisks in the text area to make your edits. You can hop by clicking on the "Fillable" button or by pressing CTRL plus the left or right arrow. The fillable text can just be 6 (six) asterisks or all the text between two sets of 3 (three) asterisks.
Example 3:
[textarea name="textarea1" memo="sample text area" default="enter ***text*** here or here****** or ******" fillable="true"]
Of course, the fillable text areas usually look a lot better with the two tag form...
Example 4:
[textarea fillable="true"]item 1
item 2
***item 3***
******item 4
item 5******[/textarea]

Dates


This displays a box for entering dates. A calendar pops up when you click on it (you can also type in the date).
Code for this is: [date]
Optional parameters are name, memo, and default
Example 1:
[date name="date1"]

Radio Buttons


This displays buttons where only one item can be selected. In the output, each choice displays with '+' (for selected) or '-' (not selected) next to each item.
Code for this is: [radio value="choice I|choice II|choice III"]
Required parameter is value.
Optional parameter is name.
Example 1:
Employment type: [radio value="Full Time|Part Time|Unemployed"]

Check Boxes


This displays boxes where more than one item can be selected. In the output, only selected items display.
Code for this is: [checkbox]
Required parameter is value.
Optional parameters are name and memo.
Example 1:
[checkbox value="option A|option B|option C"]
Example 2:
[checkbox name="cb1" value="upper extremity|lower extremity|neck|back|knee"]

Checklists


This displays boxes where more than one item can be selected. In the output, all choices display with '+' (for selected) or '-' (not selected) next to each item.
Code for this is: [checklist]
Required parameter is value.
Optional parameters are name and memo.
Example:
[checklist value="option A|option B|option C"]

Drop Down (Select) Box


This displays a drop down box where only one item can be selected.
Code for this is: [select]
Required parameter is value.
Optional parameter is name and memo.
Example 1:
[select value="choice A|choice B|choice C"]
Also, numeric values (for calculations) can be set by using the 'equals sign' in the name parameter.
Example 2:
[select name="letters" value="choice A=1|choice B=2|choice C=3"]

Comments


Comments do not show up in output but do display in the form.
Code for this is: [comment]
Required parameter is memo.
Example 1:
[comment memo="Text that will not show up in output"]

Links


Links can take you to other web pages or to locations within the current form.
Code for this is: [link]
Optional parameters are url, mark, and memo
Example 1:
[link url=”http://www.soapnote.org” memo=”Soapnote Home”]

Marks


A mark allows you to jump from one place in a form to another. A link is needed to send the user to a mark.
Code for this is: [mark]
The required parameter is name.
Example 1:
Example 1:
[link memo="go to the mark" mark="mid-blah"]
blah
blah
blah
blah
blah blah blah
blah
blah
blah
blah
blah
blah
blah
[mark name="mid-blah"]
blah
blah
blah
blah
blah
blah
blah


Prepopulated Text


This is a nice feature to help customize your forms. It draws from the optional user information saved in your profile.
The code for prepopulated demographic items include: [organization], [address_line_1], [address_line_2], [city], [state], [postal_code], [phone], [fax], [website], and [email].
Additionally, there are three 'general-use' Prepopulated Text Tags that may be used however you wish. These are [blurb_1], [blurb_2], and [blurb_3].

Parameters


Name


By assigning a name to a form element, you can retrieve it for later use in a form or for calculations.
Form elements that utilize the name parameter are Text Boxes, Text Areas, Dates, Radio Buttons, Check Boxes, Drop Down (Select) Boxes, and Marks.
More on variables for information on retrieval of form input.
More on calculations for information on using variables in calculators.

Memo


Using the memo attribute allows you to have text in the form that won't be displayed in output.
Form elements that utilize the memo parameter are Text Boxes, Text Areas, Dates, Radio Buttons, Check Boxes, Drop Down (Select) Boxes, Comments, and Links

Size


This parameter is used by Text Boxes to increase or decrease the size of the box.

Cols


This parameter is used by Text Areas to set the width of the box.

Rows


This parameter is used by Text Areas to set the height of the box.

Default


Setting a default value in a form element can save the user time and can guide input.
Form elements that utilize the default parameter are Text Boxes, Text Areas, Dates, and Drop Down (Select) Boxes.
The default parameter can be used to customize forms for logged in users with a feature called Prepopulated Text. More on this is here

Fillable


This parameter is used with text areas. Setting the fillable parameter to "true" activates this feature. More on the fillable feature here

URL


The URL parameter gives the Link form element a web location to jump to.

Mark


The Mark parameter gives the Link form element a location in the form to jump to.

Show


This parameter is used with calculations. Setting the show parameter to "false" will hide the calculation from the form and the output. However, this allows a calculation at the beginning of the form to be referred to later in the form in cases when that makes more sense for the flow of the form or for readability. More on calculations is here

Advanced Features


Using Variables


You can display named variables from other parts entered above in a form. It displays in the output, not in the form.
Code for this is [var]
Required parameter is name.
Example 1:
[var name=”xxx”]
Note: if you want perform a calculation earlier in a form and display it toward the bottom, you don't use a variable. Instead, you should enter the calculation where you need it up above in the form but set the calculation's show parameter to false. Then you can recall the value of the calculation later in the form by setting the value equal to the prior calculation's value.

Adding Conditions


You can set conditions for display of form elements.
Tags for this are [conditional] and [/conditional]
Example 1:
[conditional field="xxx" condition="condition to test"] any text to display if condition is true [/conditional]

Using Operators


These are operators within an individual comparison
isLess
isGreater
isLessOrEqual
isGreaterOrEqual
is
isNot

These are operators for combining multiple comparisons
&& is the "AND" operator
|| is the "OR" operator

See example for required syntax.
Example 1:
Employment type: [radio value="Full Time|Part Time|Unemployed"]
[conditional field="job" condition="(job).is('Full Time')||(job).is('Part Time')"]Job title: [text name="job_title"][/conditional]


Another good example is at this page.

Please note that with these comparison operators, blank/empty fields would be considered as 0, so
(field1).isLess(5) will always be true if "field1" is blank. (Because 0 is less than 5)

Making Calculations


You can perform calculations that manipulate variables.
Parameters include value, memo, and show.
This is a powerful feature of the site and can be used in two ways.

Simple Computations


A sample with some simple computations is here.
In the sample above, raw computations such as addition, subtraction, multiplication, and division is performed on numbers gathered with [text] input fields.
Example 1:
This calculator performs simple computations
[text name="A"] <-- A (enter a number)
[text name="B"] <-- B (enter a number)

A + B --> [calc value="score1=(A)+(B)" memo="addition"]
A - B --> [calc value="score2=(A)-(B)" memo="subtraction"]
A x B --> [calc value="score3=(A)*(B)" memo="multiplication"]
A / B --> [calc value="score4=(A)/(B)" memo="division"]
A raised to the power of B --> [calc value="score5=Math.pow((A),(B))" memo="exponent"]


The [calc] field from the sample is shown above. You can see it has a certain format to it.
value contains the entire computation in double quotes.
score1 is a required name for the computation. In the sample, you see that value is set equal to score1, score2, score3, score4, and score5. A new name is needed for each computation, but it can be more descriptive than score1.
(A) refers to the name of the first [text] input field.
(B) refers to the name of the second [text] input field.
In between (A) and (B) is the operator (+, -, *, and /).
The result shows up in the result box after Submit is pressed.
Here are more sample calculators.

Interpreted calculations


A sample with an interpreted computation is here.
This feature is valuable because it allows you to group ranges of results.
Example 1:
This calculator performs interpreted calculation
[text name="A"] <-- A (enter a number)
[text name="B"] <-- B (enter a number)

A + B –> [calc value="score2=(A)+(B);score2>1000?'Sum is greater than 1000':score2>100?'Sum is greater than 100 and less than or equal to 1000':score2>10?'Sum is greater than 10 and less than or equal to 100':score2>0?'Sum is greater than 0 and less than or equal to 10':'sum is 0 or less'" memo="interpretation"]

As you can see above, it has most of the same elements as a simple calculation. The interpretation information follows the calculation after a semicolon.
Since an interpretation is a separate calculation it must have a distinct name (score2).
The computation follows ((A)+(B)).
Semicolon separates the computation from the interpretation (;).
Ranges are then interpreted from highest to lowest, each is separated by a colon (:).
The highest value is score2>1000?. The output follows this in single quotes. Then a colon.
The next value is score2>100?. The output follows this in single quotes. Then a colon.
The next value is score2>10?. The output follows this in single quotes. Then a colon.
The lowest value is not specifically labeled like the others. The output alone is listed for everything lower than the range above it.
This is definitely best understood by looking at the example again it's right here.

Please go to the help page or email me if you have any questions!