Assessment Tool: Clinical Logic & Reasoning
This page documents the question flow, triage logic, and results engine of the patient self-assessment tool for clinical review. The tool runs entirely client-side — no data is collected, stored, or transmitted.
Scope & disclaimers
- Educational tool only — does not constitute medical advice, diagnosis, or treatment
- Does not create a doctor-patient relationship
- Not a validated screening instrument
- Red flag triage is directional, not diagnostic
- All results include disclaimer language and link to full disclaimer
1. Question flow overview
Seven questions, presented sequentially. Single-select questions auto-advance after 300ms. Multi-select questions require an explicit "Next" button. Users can navigate backward at any step.
| Step | ID | Type | Clinical purpose |
|---|---|---|---|
| 1 | location | Single | Anatomical region — determines terminology in results |
| 2 | duration | Single | Acuity classification — drives chronicity-related insights |
| 3 | red-flags | Multi | Safety screening — tiered triage (emergency / urgent / standard) |
| 4 | aggravating | Single | Mechanical pattern — maps to tissue-level hypothesis |
| 5 | impact | Single | Functional severity — influences headline urgency |
| 6 | perpetuating | Multi | Psychosocial / behavioral factors — CRISP perpetuating factor domain |
| 7 | previous-care | Single | Treatment history — identifies failed-treatment patterns |
2. Q1: Where is your pain?
Single-select. Determines anatomical label used throughout results.
| Value | Label shown | Maps to in results |
|---|---|---|
lower-back | Lower Back | "lower back" |
neck | Neck | "neck" |
mid-back | Mid-Back | "mid-back" |
multiple | Multiple Areas | "spine" |
3. Q2: How long have you had this pain?
Single-select. Drives chronicity flags and headline/insight selection.
| Value | Label | Logic flags |
|---|---|---|
acute | Less than 2 weeks | None |
subacute | 2-6 weeks | None |
early-chronic | 6 weeks - 3 months | Sets chronic = true; triggers "early intervention" insight |
chronic | 3+ months | Sets chronic = true; triggers "chronic pain strategy" insight |
4. Q3: Red flags (Have you experienced any of these?)
Multi-select with "None" as exclusive option. This is the safety screening step. Options are grouped into three clinical severity tiers that determine the alert level shown in results.
| Tier | Value | Label shown to patient | Clinical rationale |
|---|---|---|---|
| Emergency | cauda-equina | Bladder/bowel control loss or groin numbness | Cauda equina syndrome screening. Urinary retention/incontinence, fecal incontinence, saddle anesthesia require emergency surgical evaluation within hours. |
| Emergency | progressive-weakness | Rapidly worsening leg weakness | Progressive motor deficit. Can indicate cord compression or evolving cauda equina. "Over hours or days" qualifier distinguishes from chronic weakness. |
| Urgent | trauma | Pain after significant injury | Fracture screening. Significant mechanism (fall, MVA, direct impact) warrants imaging. Prompt, not emergency, unless neurological compromise. |
| Urgent | systemic | Unexplained weight loss, fever, or history of cancer | Malignancy / infection screening. Combines three indicators: unexplained weight loss (>10 lbs), fever (infection/discitis), cancer history (metastatic disease). Requires specific diagnostic workup. |
| Standard | numbness | Numbness or tingling | Radiculopathy / peripheral neuropathy. Common, usually treatable conservatively. "Not rapidly worsening" qualifier separates from emergency tier. |
| Standard | night-pain | Night pain that wakes you | Low specificity as standalone red flag per Downie et al. (2013). Many mechanical conditions cause nocturnal pain. Classified as standard, not urgent. |
| None | none | None of these | Exclusive option — deselects all others. No alert shown. |
Triage hierarchy: Emergency supersedes Urgent supersedes Standard. If a patient selects both cauda-equina and trauma, only the Emergency alert fires. See Section 10 for full triage detail.
5. Q4: What makes it worse?
Single-select. Maps to a tissue-level hypothesis displayed as the first insight in results.
| Value | Label | Insight title | Clinical reasoning |
|---|---|---|---|
sitting | Sitting | Possible disc involvement | Sitting increases intradiscal pressure. Pain worsening with prolonged sitting suggests discogenic source. CRISP evaluation tests specific movements to confirm. |
standing | Standing or walking | Possible facet joint or stenosis involvement | Extension-loaded activities stress posterior elements. Pain with standing/walking can indicate facet joint irritation or neurogenic claudication from stenosis. |
bending | Bending or lifting | Flexion-intolerant pattern | Flexion-loaded activities suggest sensitivity to flexion forces. Specific tissue identification (disc, muscle, ligament) requires clinical examination. |
constant | Constant regardless | Possible nervous system sensitization | Pain that does not vary with mechanical loading may indicate central sensitization. Nervous system is amplifying pain signals beyond what tissue damage explains. |
6. Q5: How much does this affect daily life?
Single-select. Influences headline urgency.
| Value | Label | Effect on results |
|---|---|---|
mild | Mild | No special headline override |
moderate | Moderate | No special headline override |
severe | Severe | Sets severe = true; headline: "[Location] pain this severe deserves a real answer." (if not overridden by chronicity or emergency) |
7. Q6: Perpetuating factors
Multi-select with exclusive "None." Maps to the CRISP perpetuating factor domain. Generates additional insight cards in results.
| Value | Label | Insight generated |
|---|---|---|
fear | Fear of serious damage | "Pain beliefs may be playing a role" — fear-avoidance model, pain neuroscience education |
avoidance | Avoiding activities | |
told-live-with-it | Told to "just live with it" | "Previous treatments may have missed the cause" — only if fear/avoidance NOT also selected (avoids stacking) |
multiple-failed | Multiple failed treatments | |
stress-sleep | Stress or poor sleep | "Lifestyle factors matter" — stress and sleep affect pain processing |
none | None of these | Exclusive — no perpetuating factor insights generated |
Anti-stacking rule: The "previous treatments missed the cause" insight only fires when fear/avoidance are NOT selected. This prevents presenting both "your beliefs are contributing" and "your treatments were inadequate" simultaneously — which could be confusing or demoralizing.
multiFail flag: multiple-failed here OR multiple-no-results in Q7 both set the multiFail flag, which combines with chronic to produce the strongest headline.
8. Q7: What have you tried so far?
Single-select. Captures treatment history. The key logic value is multiple-no-results which sets the multiFail flag.
| Value | Label | Logic effect |
|---|---|---|
nothing | Nothing yet | None |
otc | Over-the-counter meds | None |
pt | Physical therapy | None |
chiro | Chiropractic | None |
injections-surgery | Injections or surgery | None |
multiple-no-results | Multiple without lasting results | Sets multiFail = true |
9. Results engine logic
After all 7 questions, the engine computes derived flags and assembles the results page. The results consist of up to 5 components displayed in this order:
- Red flag alert (if any red flags selected) — tiered by severity
- Headline — personalized based on condition profile
- Insight cards — 1-4 evidence-based observations (skipped for emergency)
- CRISP box — why CRISP is relevant to this case (skipped for emergency)
- CTA — call-to-action tiered by severity
Emergency path: When emergency red flags are selected, insights and CRISP box are suppressed. The results show only: Emergency alert + "Your safety comes first" headline + de-emphasized clinic link. This keeps the patient focused on seeking emergency care.
10. Red flag triage detail
Derived flags computed from Q3 answers:
emergencyRF = ['cauda-equina', 'progressive-weakness']
urgentRF = ['trauma', 'systemic']
hasEmergency = rf.some(f => emergencyRF.includes(f))
hasUrgent = rf.some(f => urgentRF.includes(f))
hasRF = rf.length > 0 && !rf.includes('none') Alert hierarchy (first match wins):
Tier 1: Emergency
Triggers: cauda-equina or progressive-weakness
Alert: Red banner — "These symptoms require immediate medical attention"
Action: "Please go to your nearest emergency room or call 911."
Specific messaging varies: cauda equina only, progressive weakness only, or both combined.
Tier 2: Urgent
Triggers: trauma or systemic (and no emergency flags)
Alert: Amber banner — "Symptoms requiring prompt evaluation"
Details are specific to which urgent flag(s): trauma mentions imaging/fracture; systemic mentions diagnostic workup. Recommends evaluation within days.
Tier 3: Standard
Triggers: numbness or night-pain (and no emergency/urgent flags)
Alert: Teal info banner — "Neurological symptoms noted" with reassurance that these are common and treatable.
11. Headline selection
Priority-ordered — first matching condition wins:
| Priority | Condition | Headline |
|---|---|---|
| 1 | hasEmergency | "Your safety comes first." |
| 2 | chronic && multiFail | "Your [location] pain has a cause — even if no one has found it yet." |
| 3 | dur === 'acute' | "Recent [location] pain often responds well to the right treatment." |
| 4 | severe | "[Location] pain this severe deserves a real answer." |
| 5 | chronic | "[Location] pain lasting this long needs a different approach." |
| 6 | Default | "Here's what we'd investigate for your [location] pain." |
12. Insight generation
Insights are accumulated (not mutually exclusive). A patient can see 1-4 insight cards. They are generated in this order:
- Aggravating factor insight (always — from Q4): disc / facet / flexion / sensitization
- Fear-avoidance insight (if Q6 includes
fearoravoidance): pain beliefs and neuroscience education - Stress/sleep insight (if Q6 includes
stress-sleep): lifestyle factors - Failed treatment insight (if Q6 includes
told-live-with-itormultiple-failed, AND fear/avoidance NOT selected): missed cause - Chronicity insight (if
chronic): "needs a different strategy" or "early intervention improves outcomes" depending on exact duration
Suppression: All insights are suppressed when hasEmergency = true. The emergency alert and ER directive are the only actionable content shown.
13. CRISP box selection
One "Why CRISP for your case" message is selected (first match wins):
| Priority | Condition | Message theme |
|---|---|---|
| 1 | hasEmergency | CRISP screens for serious conditions first; coordinates emergency referral (suppressed in display — not shown to patient) |
| 2 | chronic && multiFail | CRISP was developed for cases where previous treatments failed — systematic evaluation of source + perpetuating factors |
| 3 | hasUrgent | CRISP begins with screening protocol to rule out serious conditions |
| 4 | hasPerp | CRISP evaluates the full picture — source + perpetuating factors + recovery path |
| 5 | Default | CRISP identifies the specific pain source — physical, neurological, lifestyle |
14. CTA tiering
| Condition | CTA | Style |
|---|---|---|
hasEmergency | "If you are not currently experiencing an emergency:" + text link "Schedule a thorough evaluation" | De-emphasized — text link only, no button. ER directive is the primary action. |
hasUrgent | "Request an Urgent Evaluation" | Primary button |
| Default | "Book Your CRISP Evaluation" | Primary button |
15. Example scenarios
Scenario A: Acute disc presentation, no red flags
Answers: Lower back / <2 weeks / None / Sitting / Moderate / None / Nothing yet
- No red flag alert
- Headline: "Recent lower back pain often responds well to the right treatment."
- Insight: "Possible disc involvement"
- CRISP box: Default — identifies specific pain source
- CTA: "Book Your CRISP Evaluation"
Scenario B: Chronic failed-treatment patient with fear-avoidance
Answers: Lower back / 3+ months / None / Constant / Severe / Fear + Avoidance + Stress-sleep / Multiple without lasting results
- No red flag alert
- Headline: "Your lower back pain has a cause — even if no one has found it yet." (chronic + multiFail wins over severe)
- Insights: "Possible nervous system sensitization" + "Pain beliefs may be playing a role" + "Lifestyle factors matter" + "Chronic pain needs a different strategy"
- CRISP box: Developed for cases where previous treatments failed
- CTA: "Book Your CRISP Evaluation"
Scenario C: Cauda equina emergency
Answers: Lower back / <2 weeks / Cauda-equina + Progressive-weakness / Constant / Severe / None / Nothing yet
- Emergency alert: Red banner — "These symptoms require immediate medical attention" with cauda equina + cord compression messaging
- Headline: "Your safety comes first."
- Insights: SUPPRESSED
- CRISP box: SUPPRESSED
- CTA: "Please go to your nearest emergency room or call 911." + de-emphasized clinic link
Scenario D: Post-trauma with numbness
Answers: Neck / 2-6 weeks / Trauma + Numbness / Standing / Moderate / None / OTC
- Urgent alert: Amber banner — "Spine pain following significant trauma warrants prompt imaging..." (urgent supersedes standard numbness)
- Headline: "Here's what we'd investigate for your neck pain."
- Insight: "Possible facet joint or stenosis involvement"
- CRISP box: Begins with screening protocol
- CTA: "Request an Urgent Evaluation"
Scenario E: Systemic red flag with chronic pain
Answers: Mid-back / 3+ months / Systemic + Night-pain / Constant / Severe / Told-live-with-it / PT
- Urgent alert: Amber banner — "Unexplained weight loss, fever, or a history of cancer..." (urgent supersedes standard night-pain)
- Headline: "Mid-back pain this severe deserves a real answer." (severe wins; chronic alone is lower priority but chronic + multiFail isn't met since PT ≠ multiFail)
- Insights: "Possible nervous system sensitization" + "Previous treatments may have missed the cause" + "Chronic pain needs a different strategy"
- CRISP box: Begins with screening protocol (urgent takes priority)
- CTA: "Request an Urgent Evaluation"