Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: YTSNPIQ

YTSNPIQ.m

Go to the documentation of this file.
  1. YTSNPIQ ;SLC/KCM - Reporting logic for NPI-Q ; 3/25/22 2:02pm
  1. ;;5.01;MENTAL HEALTH;**234**;Dec 30, 1994;Build 38
  1. ;
  1. DLLSTR(YSDATA,YS,YSTRNG) ; compute scores or report text based on YSTRNG
  1. ; input
  1. ; YSDATA(2)=adminId^patientDFN^instrumentName^dateGiven^isComplete
  1. ; YSDATA(2+n)=questionId^sequence^choiceId
  1. ; YS("AD")=adminId
  1. ; YSTRNG=1 for score, 2 for report
  1. ; output if YSTRNG=1: ^TMP($J,"YSCOR",n)=scaleId=score
  1. ; output if YSTRNG=2: append special "answers" to YSDATA
  1. ;
  1. I YSTRNG=1 D BYKEY^YTSCORE(.YSDATA) ; just use "regular" scoring
  1. I YSTRNG=2 D
  1. . N SUMMARY,LN,SCORES
  1. . D LDSCORES^YTSCORE(.YSDATA,.YS) ; puts scores into ^TMP($J,"YSCOR")
  1. . D BLDSCR(.SCORES)
  1. . D REPORT(.SUMMARY,.SCORES)
  1. . S LN=$O(YSDATA(""),-1) ; get last node
  1. . S YSDATA(LN+1)="7771^9999;1^"_SUMMARY
  1. Q
  1. ;
  1. REPORT(SUMMARY,SCORES) ; build .SCORE string
  1. ; expects YSDATA for answers
  1. N QSTN,X
  1. D BLDQSTN(.QSTN)
  1. S X=""
  1. S X=X_$$MKLN("|","Symptom","","Caregiver")
  1. S X=X_$$MKLN("|","Present","Severity","Distress")
  1. S X=X_"|--------------------------------------------------------"
  1. S X=X_$$MKLN("|Delusions",QSTN(9176),QSTN(9177),QSTN(9178))
  1. S X=X_$$MKLN("|Hallucinations",QSTN(9179),QSTN(9180),QSTN(9181))
  1. S X=X_$$MKLN("|Agitation/Aggression",QSTN(9182),QSTN(9183),QSTN(9184))
  1. S X=X_$$MKLN("|Depression/Dysphoria",QSTN(9185),QSTN(9186),QSTN(9187))
  1. S X=X_$$MKLN("|Anxiety",QSTN(9188),QSTN(9189),QSTN(9190))
  1. S X=X_$$MKLN("|Elation/Euphoria",QSTN(9191),QSTN(9192),QSTN(9193))
  1. S X=X_$$MKLN("|Apathy/Indifference",QSTN(9194),QSTN(9195),QSTN(9196))
  1. S X=X_$$MKLN("|Disinhibition",QSTN(9197),QSTN(9198),QSTN(9199))
  1. S X=X_$$MKLN("|Irritability/Lability",QSTN(9200),QSTN(9201),QSTN(9202))
  1. S X=X_$$MKLN("|Motor Disturbance",QSTN(9203),QSTN(9204),QSTN(9205))
  1. S X=X_$$MKLN("|Nighttime Behaviors",QSTN(9206),QSTN(9207),QSTN(9208))
  1. S X=X_$$MKLN("|Appetite/Eating",QSTN(9209),QSTN(9210),QSTN(9211))
  1. S X=X_"|"
  1. S X=X_$$MKLN("| TOTAL",SCORES("Symptoms"),SCORES("Severity"),SCORES("Distress"))
  1. S SUMMARY=X
  1. Q
  1. MKLN(SYM,PRES,SEV,DIS) ; return a summary line
  1. N LN,SPACES
  1. S LN="",SPACES=" "
  1. I PRES="No" S SEV="",DIS=""
  1. S LN=LN_SYM_$E(SPACES,1,25-$L(SYM))
  1. S LN=LN_PRES_$E(SPACES,1,10-$L(PRES))
  1. S LN=LN_SEV_$E(SPACES,1,11-$L(SEV))
  1. S LN=LN_DIS
  1. Q LN
  1. ;
  1. BLDQSTN(QSTN) ; build list of questions and response values in .QSTN
  1. ; expects YSDATA,YSTRNG from DLLSTR
  1. N I,CID,QID,VAL
  1. S I=2 F S I=$O(YSDATA(I)) Q:'I D
  1. . S CID=$P(YSDATA(I),U,3),QID=$P(YSDATA(I),U),VAL="?"
  1. . ; check the symptom selections
  1. . I (QID=9176)!(QID=9179)!(QID=9182)!(QID=9185)!(QID=9188)!(QID=9191)!(QID=9194)!(QID=9197)!(QID=9200)!(QID=9203)!(QID=9206)!(QID=9209) D
  1. . . I CID=1155!(CID=1156)!(CID=1157) S VAL="SKIP"
  1. . . I CID=5690 S VAL="Yes"
  1. . . I CID=5691 S VAL="No"
  1. . E D
  1. . . ; check the severity, distress selections
  1. . . I CID=1155!(CID=1156)!(CID=1157) S VAL=""
  1. . . I CID=5692 S VAL="Mild"
  1. . . I CID=5693 S VAL="Moderate"
  1. . . I CID=5694 S VAL="Severe"
  1. . . I CID=5695 S VAL="Not distressing"
  1. . . I CID=5696 S VAL="Minimal"
  1. . . I CID=5697 S VAL="Mild"
  1. . . I CID=5698 S VAL="Moderate"
  1. . . I CID=5699 S VAL="Severe"
  1. . . I CID=5700 S VAL="Extreme"
  1. . S QSTN(QID)=VAL
  1. Q
  1. BLDSCR(SCORES) ; build array of .SCORES
  1. ; expects ^TMP($J,"YSCOR") from DLLSTR
  1. N I,NAME,VALUE
  1. S SCORES("Symptoms")=""
  1. S SCORES("Severity")=""
  1. S SCORES("Distress")=""
  1. S I=0 F S I=$O(^TMP($J,"YSCOR",I)) Q:'I D
  1. . S NAME=$P(^TMP($J,"YSCOR",I),"=")
  1. . S VALUE=$P(^TMP($J,"YSCOR",I),"=",2)
  1. . I NAME="Symptoms" S SCORES("Symptoms")=VALUE
  1. . I NAME="Severity" S SCORES("Severity")=VALUE
  1. . I NAME="Distress" S SCORES("Distress")=VALUE
  1. Q