YTSALSFR ;ISP/LMT - Report ALSFRS-R ;Jul 31, 2024@10:22:10
;;5.01;MENTAL HEALTH;**250**;Dec 30, 1994;Build 26
;
;
DLLSTR(YSDATA,YS,YSTRNG) ; compute scores or report text based on YSTRNG
; input
; YSDATA(2)=adminId^patientDFN^instrumentName^dateGiven^isComplete
; YSDATA(2+n)=questionId^sequence^choiceId
; YS("AD")=adminId
; YSTRNG=1 for score, 2 for report
; output if YSTRNG=1: ^TMP($J,"YSCOR",n)=scaleId=score
; output if YSTRNG=2: append special "answers" to YSDATA
;
I YSTRNG=1 D BYKEY^YTSCORE(.YSDATA) ; just use "regular" scoring
;
I YSTRNG=2 D REPORT(.YSDATA)
;
Q
;
REPORT(YSDATA) ; line wrap long answers
;
N YSCHOICE,YSI,YSN,YSQLIST,YSQNEW,YSTEXT
;
S YSQLIST(9516)=7771
S YSQLIST(9522)=7772
S YSQLIST(9526)=7773
S YSQLIST(9527)=7774
;
S YSN=$O(YSDATA(""),-1) ; get last node
;
S YSI=2
F S YSI=$O(YSDATA(YSI)) Q:'YSI D
. S YSTEXT=""
. S YSQNEW=$G(YSQLIST(+$P(YSDATA(YSI),U,1)))
. I YSQNEW'>0 QUIT
. S YSCHOICE=+$P(YSDATA(YSI),U,3)
. I YSCHOICE=1157 S YSTEXT="| Skipped but required"
. I YSTEXT="" D
. . S YSTEXT=$G(^YTT(601.75,YSCHOICE,1))
. . S YSTEXT=$$WRAP^YTSCAT(YSTEXT,70,"| ")
. S YSN=YSN+1
. S YSDATA(YSN)=YSQNEW_"^9999;1^"_YSTEXT
;
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYTSALSFR 1260 printed Aug 26, 2025@22:34:59 Page 2
YTSALSFR ;ISP/LMT - Report ALSFRS-R ;Jul 31, 2024@10:22:10
+1 ;;5.01;MENTAL HEALTH;**250**;Dec 30, 1994;Build 26
+2 ;
+3 ;
DLLSTR(YSDATA,YS,YSTRNG) ; compute scores or report text based on YSTRNG
+1 ; input
+2 ; YSDATA(2)=adminId^patientDFN^instrumentName^dateGiven^isComplete
+3 ; YSDATA(2+n)=questionId^sequence^choiceId
+4 ; YS("AD")=adminId
+5 ; YSTRNG=1 for score, 2 for report
+6 ; output if YSTRNG=1: ^TMP($J,"YSCOR",n)=scaleId=score
+7 ; output if YSTRNG=2: append special "answers" to YSDATA
+8 ;
+9 ; just use "regular" scoring
IF YSTRNG=1
DO BYKEY^YTSCORE(.YSDATA)
+10 ;
+11 IF YSTRNG=2
DO REPORT(.YSDATA)
+12 ;
+13 QUIT
+14 ;
REPORT(YSDATA) ; line wrap long answers
+1 ;
+2 NEW YSCHOICE,YSI,YSN,YSQLIST,YSQNEW,YSTEXT
+3 ;
+4 SET YSQLIST(9516)=7771
+5 SET YSQLIST(9522)=7772
+6 SET YSQLIST(9526)=7773
+7 SET YSQLIST(9527)=7774
+8 ;
+9 ; get last node
SET YSN=$ORDER(YSDATA(""),-1)
+10 ;
+11 SET YSI=2
+12 FOR
SET YSI=$ORDER(YSDATA(YSI))
if 'YSI
QUIT
Begin DoDot:1
+13 SET YSTEXT=""
+14 SET YSQNEW=$GET(YSQLIST(+$PIECE(YSDATA(YSI),U,1)))
+15 IF YSQNEW'>0
QUIT
+16 SET YSCHOICE=+$PIECE(YSDATA(YSI),U,3)
+17 IF YSCHOICE=1157
SET YSTEXT="| Skipped but required"
+18 IF YSTEXT=""
Begin DoDot:2
+19 SET YSTEXT=$GET(^YTT(601.75,YSCHOICE,1))
+20 SET YSTEXT=$$WRAP^YTSCAT(YSTEXT,70,"| ")
End DoDot:2
+21 SET YSN=YSN+1
+22 SET YSDATA(YSN)=YSQNEW_"^9999;1^"_YSTEXT
End DoDot:1
+23 ;
+24 QUIT
+25 ;