- 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 Feb 18, 2025@23:45:28 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 ;