Difference between revisions of "Pain Scale"
(11 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
|+ Comparative Pain Scale | |+ Comparative Pain Scale | ||
|- | |- | ||
− | ! # !! Icon !! Level !! | + | ! # !! Icon !! Level !! Name !! Description |
|- | |- | ||
| 0 | | 0 | ||
Line 21: | Line 21: | ||
| 1 | | 1 | ||
| [[File:Pain1.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain1.svg]] | | [[File:Pain1.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain1.svg]] | ||
− | |rowspan="3" style="text-align: center;background-color: rgb(200,241,118);" |'''Minor'''<br>Does not interfere with most activities. <br>Able to adapt to pain psychologically and with medication or devices such as cushions. | + | |rowspan="3" style="text-align: center;background-color: rgb(200,241,118);vertical-align: middle;" |'''Minor'''<br>Does not interfere with most activities. <br>Able to adapt to pain psychologically and with medication or devices such as cushions. |
| Very Mild | | Very Mild | ||
| Very light barely noticeable pain, like a mosquito bite or a poison ivy itch. | | Very light barely noticeable pain, like a mosquito bite or a poison ivy itch. | ||
Line 33: | Line 33: | ||
|- | |- | ||
| 3 | | 3 | ||
− | | [[File: | + | | [[File:Pain3.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain3.svg]] |
| Tolerable | | Tolerable | ||
| Very noticeable pain, like an accidental cut, a blow to the nose causing a bloody nose, or a doctor giving you an injection.<br> | | Very noticeable pain, like an accidental cut, a blow to the nose causing a bloody nose, or a doctor giving you an injection.<br> | ||
Line 39: | Line 39: | ||
|- | |- | ||
| 4 | | 4 | ||
− | | [[File: | + | | [[File:Pain4.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain4.svg]] |
− | |rowspan="3" style="text-align: center;background-color: rgb(241,220, 118)"|'''Moderate'''<br>Interferes with many activities. <br> | + | |rowspan="3" style="text-align: center;background-color: rgb(241,220, 118);vertical-align: middle;"|'''Moderate'''<br>Interferes with many activities. <br> |
Requires lifestyle changes but patient remains independent.<br> | Requires lifestyle changes but patient remains independent.<br> | ||
Unable to adapt to pain. | Unable to adapt to pain. | ||
Line 50: | Line 50: | ||
|- | |- | ||
| 5 | | 5 | ||
− | | [[File: | + | | [[File:Pain5.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain5.svg]] |
| Very Distressing | | Very Distressing | ||
| Strong, deep, piercing pain, such as a sprained ankle when you stand on it wrong, or mild back pain.<br> | | Strong, deep, piercing pain, such as a sprained ankle when you stand on it wrong, or mild back pain.<br> | ||
Line 57: | Line 57: | ||
|- | |- | ||
| 6 | | 6 | ||
− | | [[File: | + | | [[File:Pain6.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain6.svg]] |
| Intense | | Intense | ||
| Strong, deep, piercing pain so strong it seems to partially dominate your senses, causing you to think somewhat unclearly.<br> | | Strong, deep, piercing pain so strong it seems to partially dominate your senses, causing you to think somewhat unclearly.<br> | ||
Line 64: | Line 64: | ||
|- | |- | ||
| 7 | | 7 | ||
− | | [[File: | + | | [[File:Pain7.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain7.svg]] |
− | |rowspan="4" style="text-align: center;background-color: rgb(241,148, 118)"|'''Severe'''<br>Unable to engage in normal activities. <br> | + | |rowspan="4" style="text-align: center;background-color: rgb(241,148, 118);vertical-align: middle;"|'''Severe'''<br>Unable to engage in normal activities. <br> |
Patient is disabled and unable to function independently. | Patient is disabled and unable to function independently. | ||
| Very Intense | | Very Intense | ||
Line 72: | Line 72: | ||
Comparable to an average migraine headache. | Comparable to an average migraine headache. | ||
|- | |- | ||
− | | 8 || [[File: | + | | 8 || [[File:Pain8.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain8.svg]] |
| Utterly Horrible | | Utterly Horrible | ||
| Pain so intense you can no longer think clearly at all, and have often undergone severe personality change if the pain has been present for a long time.<br> | | Pain so intense you can no longer think clearly at all, and have often undergone severe personality change if the pain has been present for a long time.<br> | ||
Line 78: | Line 78: | ||
Comparable to childbirth or a real bad migraine headache. | Comparable to childbirth or a real bad migraine headache. | ||
|- | |- | ||
− | | 9 || [[File: | + | | 9 || [[File:Pain9.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain9.svg]] |
| Excruciating Unbearable | | Excruciating Unbearable | ||
| Pain so intense you cannot tolerate it and demand pain killers or surgery, no matter what the side effects or risk. <br> | | Pain so intense you cannot tolerate it and demand pain killers or surgery, no matter what the side effects or risk. <br> | ||
Line 84: | Line 84: | ||
Comparable to throat cancer. | Comparable to throat cancer. | ||
|- | |- | ||
− | | 10 || [[File: | + | | 10 || [[File:Pain10.svg.png|100px|link=https://commons.wikimedia.org/wiki/File:Pain10.svg]] |
| Unimaginable Unspeakable | | Unimaginable Unspeakable | ||
| Pain so intense you will go unconscious shortly. <br> | | Pain so intense you will go unconscious shortly. <br> | ||
Line 94: | Line 94: | ||
The idea of the above pain scale icons is to generate them programmatically to give a proportional expression in terms of color and mouth expression. | The idea of the above pain scale icons is to generate them programmatically to give a proportional expression in terms of color and mouth expression. | ||
− | The Icons are also available at Wikimedia Commons. Click on any of the icons above to get to those files. Please note that the SVG gradient used is not properly rendered in the PNG preview of the files as of 2021-08. | + | The Icons are also available at [https://commons.wikimedia.org/wiki/Category:Pain_Scale Wikimedia Commons Category:Pain Scale]. Click on any of the icons above to get to those files. Please note that the SVG gradient used is not properly rendered in the PNG preview of the files as of 2021-08. |
+ | = Properly PNG rendered icons = | ||
+ | The properly rendered icons are: | ||
+ | [[File:Pain_0_png_rendered.png|32px]] | ||
+ | [[File:Pain_1_png_rendered.png|32px]] | ||
+ | [[File:Pain_2_png_rendered.png|32px]] | ||
+ | [[File:Pain_3_png_rendered.png|32px]] | ||
+ | [[File:Pain_4_png_rendered.png|32px]] | ||
+ | [[File:Pain_5_png_rendered.png|32px]] | ||
+ | [[File:Pain_6_png_rendered.png|32px]] | ||
+ | [[File:Pain_7_png_rendered.png|32px]] | ||
+ | [[File:Pain_8_png_rendered.png|32px]] | ||
+ | [[File:Pain_9_png_rendered.png|32px]] | ||
+ | [[File:Pain_10_png_rendered.png|32px]] | ||
The following script creates the above icons: | The following script creates the above icons: | ||
+ | |||
= generate pain scale icons = | = generate pain scale icons = | ||
Since the HSL color space is used directly you'll need SVG 2 support to render these. If you have an older library use the script for the Wikimedia Commons below. | Since the HSL color space is used directly you'll need SVG 2 support to render these. If you have an older library use the script for the Wikimedia Commons below. |
Latest revision as of 05:34, 7 August 2021
see https://en.wikipedia.org/wiki/Pain_scale
see the 2002 web article by - Jack Harich
- https://www.thwink.org/personal/ComparativePainScale.pdf
- https://www.thwink.org/personal/ComparativePainScale.htm
You may use the painscale icons below under Creative Commons CC BY 4.0
The idea of the above pain scale icons is to generate them programmatically to give a proportional expression in terms of color and mouth expression.
The Icons are also available at Wikimedia Commons Category:Pain Scale. Click on any of the icons above to get to those files. Please note that the SVG gradient used is not properly rendered in the PNG preview of the files as of 2021-08.
Properly PNG rendered icons
The properly rendered icons are:
The following script creates the above icons:
generate pain scale icons
Since the HSL color space is used directly you'll need SVG 2 support to render these. If you have an older library use the script for the Wikimedia Commons below.
#!/bin/bash
# WF 2021-08-04
#
# create 0-10 painscale svg images
#
# (c) Copyright 2021 Wolfgang Fahl
# see http://wiki.bitplan.com/index.php/Pain_Scale
#
#
# generate a single pain icon
#
onepain() {
# pain level on a scale from 0 to 11
local l_pain="$1"
# color (hue in HSL space)
local l_color="$2"
# mouth y position
local l_mouthy="$3"
# mouth expression x and y arc
local l_mouthrx="$4"
local l_mouthry="$5"
# which route to sweep
local l_sweepflag="$6"
local l_sat="80%"
cat << EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Copyright (c) 2021 Wolfgang Fahl see http://wiki.bitplan.com/index.php/Pain_Scale -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="210mm"
height="210mm"
id="pain${l_pain}"
version="1.1"
viewBox="0 0 220 220">
<defs>
<!-- radial Gradient -->
<radialGradient
id="grad1" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="start-color:hsl($l_color,$l_sat,70%);stop-color:hsl($l_color,$l_sat,60%); "/>
<stop offset="70%" style="stop-color:hsl($l_color,$l_sat,50%); "/>
<stop offset="100%" style="stop-color:hsl($l_color,$l_sat,40%); "/>
</radialGradient>
</defs>
<!-- face -->
<circle cx="105" cy="105" r="100" style="fill:url(#grad1);" stroke="black"
stroke-width="2" ></circle>
<!-- eyes -->
<circle id="lefteye" cx= "65" cy="65" r="12" style="fill:hsl($l_color,$l_sat,30%)" ></circle>
<circle id="righteye" cx="145" cy="65" r="12" style="fill:hsl($l_color,$l_sat,30%)" ></circle>
<!-- mouth -->
<path id="mouth" d="M 35 $l_mouthy A $l_mouthrx $l_mouthry 0 0 $l_sweepflag 175 $l_mouthy" stroke="hsl($l_color,$l_sat,30%)" fill="none" stroke-width="5"/>
</svg>
EOF
}
pain=0
while [ $pain -lt 11 ]
do
color=$((100-pain*10))
mouthy=$((105+pain*6))
sweepflag=0
factor=$((5-pain))
if [ $pain -ge 5 ]
then
factor=$((pain-5))
sweepflag=1
fi
mouthrx=$((205-factor*10))
mouthry=$((factor*90))
echo "generating pain icon for $pain"
onepain $pain $color $mouthy $mouthrx $mouthry $sweepflag> /tmp/pain$pain.svg
pain=$(($pain+1))
done
Script with RGB Conversion (for Wikimedia Commons
Works around https://phabricator.wikimedia.org/T288103
#!/bin/bash
# WF 2021-08-04
#
# create 0-10 painscale svg images
#
# (c) Copyright 2021 Wolfgang Fahl
# see http://wiki.bitplan.com/index.php/Pain_Scale
#
#
# convert hsl to rgb
#
hsl2grb() {
local l_hue="$1"
local l_sat="$2"
local l_lum="$3"
# https://stackoverflow.com/a/2353265/1497139
python -c "import sys;import colorsys;argv=sys.argv[1:];hs=argv[0];ss=argv[1];ls=argv[2];h=float(hs)/360;s=float(ss)/100;l=float(ls)/100;r,g,b=colorsys.hls_to_rgb(h, l, s);rgbStr=f'rgb({(r*256):3.0f},{(g*256):3.0f},{(b*256):3.0f})';print (rgbStr)" "$l_hue" "$l_sat" "$l_lum"
}
#
# generate a single pain icon
#
onepain() {
# pain level on a scale from 0 to 11
local l_pain="$1"
# (hue degree in HSL color space)
local l_hue="$2"
# mouth y position
local l_mouthy="$3"
# mouth expression x and y arc
local l_mouthrx="$4"
local l_mouthry="$5"
# which route to sweep
local l_sweepflag="$6"
local sat="80"
# get eyecolor
local l_eyecolor=$(hsl2grb $l_hue $sat 30)
# get mouth color
local l_mouthcolor="$l_eyecolor"
# start/stop colors
local startcolor1=$(hsl2grb $hue $sat 70)
local stopcolor1=$(hsl2grb $hue $sat 60)
local stopcolor2=$(hsl2grb $hue $sat 50)
local stopcolor3=$(hsl2grb $hue $sat 40)
cat << EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Copyright (c) 2021 Wolfgang Fahl see http://wiki.bitplan.com/index.php/Pain_Scale -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="210mm"
height="210mm"
id="pain${l_pain}"
version="1.1"
viewBox="0 0 220 220">
<defs>
<!-- radial Gradient -->
<radialGradient
id="grad1" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="start-color:$startcolor1;stop-color:$stopcolor1; "/>
<stop offset="70%" style="stop-color:$stopcolor2; "/>
<stop offset="100%" style="stop-color:$stopcolor3; "/>
</radialGradient>
</defs>
<!-- face -->
<circle cx="105" cy="105" r="100" style="fill:url(#grad1);" stroke="black"
stroke-width="2" ></circle>
<!-- eyes -->
<circle id="lefteye" cx= "65" cy="65" r="12" style="fill:$l_eyecolor" stroke="black" stroke-width="1" ></circle>
<circle id="righteye" cx="145" cy="65" r="12" style="fill:$l_eyecolor" stroke="black" stroke-width="1" ></circle>
<!-- mouth -->
<path id="mouth" d="M 35 $l_mouthy A $l_mouthrx $l_mouthry 0 0 $l_sweepflag 175 $l_mouthy" stroke="$l_mouthcolor" fill="none" stroke-width="5"/>
</svg>
EOF
}
# for test should give rgb 158,233,53
#hsl2grb 85 80 56
pain=0
while [ $pain -lt 11 ]
do
hue=$((100-pain*10))
mouthy=$((105+pain*6))
sweepflag=0
factor=$((5-pain))
if [ $pain -ge 5 ]
then
factor=$((pain-5))
sweepflag=1
fi
mouthrx=$((205-factor*10))
mouthry=$((factor*90))
echo "generating pain icon for $pain"
onepain $pain "$hue" $mouthy $mouthrx $mouthry $sweepflag> /tmp/pain$pain.svg
pain=$(($pain+1))
done