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

YTSASRS.m

Go to the documentation of this file.
  1. YTSASRS ;ISP/LMT - Scoring and Report for ASRS ;Dec 20, 2023@13:04:34
  1. ;;5.01;MENTAL HEALTH;**239**;Dec 30, 1994;Build 16
  1. ;
  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. N YSN,YSTEXT
  1. ;
  1. I YSTRNG=1 D SCORESV
  1. ;
  1. I YSTRNG=2 D
  1. . D LDSCORES^YTSCORE(.YSDATA,.YS) ; puts score into ^TMP($J,"YSCOR",2)
  1. . S YSTEXT=$$REPORT(.YSDATA)
  1. . S YSN=$O(YSDATA(""),-1) ; get last node
  1. . S YSN=YSN+1
  1. . S YSDATA(YSN)="7771^9999;1^"_$P(YSTEXT,U,1)
  1. . S YSN=YSN+1
  1. . S YSDATA(YSN)="7772^9999;1^"_$P(YSTEXT,U,2)
  1. Q
  1. ;
  1. ;
  1. SCORESV ; calculate the score
  1. ; expects YSDATA from DLLSTR (YSDATA from LOADANSW^YTSCORE,SCALEG^YTQAPI3)
  1. ;
  1. ; ZEXCEPT: YSDATA
  1. N YSANSWER,YSCHOICEID,YSI,YSJ,YSPARTA,YSQUESTION,YSSCLID,YSSCLNM,YSSCRCARD
  1. ;
  1. S YSSCRCARD(9331)=1 ;answer must be greater than this to have a score of 1
  1. S YSSCRCARD(9332)=1
  1. S YSSCRCARD(9333)=1
  1. S YSSCRCARD(9334)=2
  1. S YSSCRCARD(9335)=2
  1. S YSSCRCARD(9336)=2
  1. S YSPARTA=0
  1. ;
  1. S YSI=2
  1. F S YSI=$O(YSDATA(YSI)) Q:'YSI D
  1. . S YSQUESTION=$P(YSDATA(YSI),U)
  1. . S YSCHOICEID=$P(YSDATA(YSI),U,3)
  1. . S YSANSWER=$P($G(^YTT(601.75,+YSCHOICEID,0)),U,2)
  1. . I YSQUESTION=""!(YSANSWER="") QUIT
  1. . I $D(YSSCRCARD(YSQUESTION)) D
  1. . . I YSANSWER>YSSCRCARD(YSQUESTION) S YSPARTA=YSPARTA+1
  1. ;
  1. ; set scores into ^TMP($J,"YSCOR",n)=scaleName=score {rawScore^tScore}
  1. K ^TMP($J,"YSCOR")
  1. I $D(^TMP($J,"YSG",1)),^TMP($J,"YSG",1)="[ERROR]" D Q ;-->out
  1. . S ^TMP($J,"YSCOR",1)="[ERROR]"
  1. . S ^TMP($J,"YSCOR",2)="No Scale found for ADMIN"
  1. ;
  1. S ^TMP($J,"YSCOR",1)="[DATA]"
  1. S YSI=2
  1. S YSJ=1
  1. F S YSI=$O(^TMP($J,"YSG",YSI)) Q:'YSI D
  1. . S YSSCLID=+$P(^TMP($J,"YSG",YSI),"=",2)
  1. . S YSSCLNM=$P(^TMP($J,"YSG",YSI),U,4)
  1. . S YSJ=YSJ+1
  1. . I YSSCLID=1566 S ^TMP($J,"YSCOR",YSJ)=YSSCLNM_"="_YSPARTA
  1. Q
  1. ;
  1. ;
  1. REPORT(YSDATA) ; build the scoring display for the report
  1. ; expects ^TMP($J,"YSCOR",...) and ^TMP($J,"YSG") from DLLSTR
  1. ; YSDATA from DLLSTR
  1. ;
  1. N YSANSWER,YSCHOICEID,YSCNT,YSI,YSINDENT,YSNAME,YSNODE,YSPARTA,YSPARTB,YSQUESTION,YSSCRCARD,YSVAL
  1. N YSCNTNT,YSQIDNT,YSJ,YSINSNAM
  1. ;
  1. ; Part A
  1. S YSI=0 F S YSI=$O(^TMP($J,"YSCOR",YSI)) Q:'YSI D
  1. . S YSNAME=$P(^TMP($J,"YSCOR",YSI),"=")
  1. . S YSVAL=$P(^TMP($J,"YSCOR",YSI),"=",2)
  1. . S YSPARTA=""
  1. . I YSNAME="Total Part A" D
  1. . . I YSVAL>3 S YSPARTA="Veteran's responses are highly consistent with ADHD in adults and| further investigation is warranted."
  1. . . E S YSPARTA="Veteran's symptoms are not consistent with ADHD in adults."
  1. ;
  1. ; Part B Relevant Responses
  1. S YSSCRCARD(9337)=2 ;answer must be greater than this to be considered relevant
  1. S YSSCRCARD(9338)=2
  1. S YSSCRCARD(9339)=1
  1. S YSSCRCARD(9340)=2
  1. S YSSCRCARD(9341)=2
  1. S YSSCRCARD(9342)=1
  1. S YSSCRCARD(9343)=2
  1. S YSSCRCARD(9344)=2
  1. S YSSCRCARD(9345)=2
  1. S YSSCRCARD(9346)=1
  1. S YSSCRCARD(9347)=2
  1. S YSSCRCARD(9348)=1
  1. ;
  1. S YSINDENT=9
  1. S YSPARTB="|"
  1. S YSCNT=0
  1. ;
  1. S YSINSNAM=$P(YSDATA(2),U,3)
  1. I YSINSNAM'="" S YSINSNAM=$O(^YTT(601.71,"B",YSINSNAM,0))
  1. S YSI=2
  1. F S YSI=$O(YSDATA(YSI)) Q:'YSI D
  1. . S YSNODE=$G(YSDATA(YSI))
  1. . S YSQUESTION=$P(YSNODE,U,1)
  1. . S YSCHOICEID=$P(YSNODE,U,3)
  1. . S YSANSWER=$P($G(^YTT(601.75,+YSCHOICEID,0)),U,2)
  1. . I YSQUESTION=""!(YSANSWER="") QUIT
  1. . S YSQIDNT=""
  1. . S YSCNTNT=0
  1. . S YSJ=0 F S YSJ=$O(^YTT(601.76,"AE",YSQUESTION,YSJ)) Q:'YSJ D
  1. . . I $P($G(^YTT(601.76,YSJ,0)),U,2)=YSINSNAM S YSCNTNT=YSJ
  1. . I YSCNTNT S YSQIDNT=$P(^YTT(601.76,YSCNTNT,0),U,5) ;MH CONTENT question DESIGNATOR
  1. . S:$E(YSQIDNT,$L(YSQIDNT))="." YSQIDNT=$E(YSQIDNT,1,$L(YSQIDNT)-1) ;Remove trailing .
  1. . ;
  1. . I $D(YSSCRCARD(YSQUESTION)),YSANSWER>YSSCRCARD(YSQUESTION) D
  1. . . S YSCNT=YSCNT+1
  1. . . S YSPARTB=YSPARTB_$$QFORMAT^YTSLEC(YSQIDNT,YSQUESTION,YSINDENT) ; question
  1. . . S YSPARTB=YSPARTB_"|"_$$REPEAT^XLFSTR(" ",YSINDENT)_$P($G(^YTT(601.75,YSCHOICEID,1)),U,1) ; answer
  1. ;
  1. I 'YSCNT S YSPARTB="None." ; There are no relevant responses.
  1. ;
  1. Q YSPARTA_U_YSPARTB