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

YTSMINIC.m

Go to the documentation of this file.
  1. YTSMINIC ;SLC/PIJ - Score MINI COG ; 01/08/2016
  1. ;;5.01;MENTAL HEALTH;**123,234,249**;DEC 30,1994;Build 30
  1. ;
  1. ;Public, Supported ICRs
  1. ; #2056 - Fileman API - $$GET1^DIQ
  1. ;
  1. Q
  1. ;
  1. BLDQSTN(QSTN) ; build list of questions and response values in .QSTN
  1. ; expects YSDATA from DLLSTR
  1. N I,CID,QID
  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)
  1. . I $P($G(^YTT(601.72,QID,2)),U,2)'=1 D QUIT
  1. . . S QSTN(QID)=$G(QSTN(QID))_$P(YSDATA(I),U,3)
  1. . S QSTN(QID)=$P($G(^YTT(601.75,CID,0)),U,2)
  1. Q
  1. SUM(QSTN,LIST) ; return sum for questions in LIST
  1. N I,QID,SUM
  1. S SUM=0 F I=1:1:$L(LIST,",") S QID=$P(LIST,",",I) D
  1. . I QID=5536,(QSTN(5536)>0) S SUM=SUM+2 QUIT ; clock drawing correct
  1. . I $G(QSTN(QID)) S SUM=SUM+QSTN(QID) ; everything else
  1. Q SUM
  1. ;
  1. SKIPCNT(QSTN,LIST) ; return the number of skipped questions
  1. N I,QID,SKIP
  1. S SKIP=0 F I=1:1:$L(LIST,",") S QID=$P(LIST,",",I) D
  1. . I $G(QSTN(QID)),(QSTN(QID)="X") S SKIP=SKIP+1
  1. Q SKIP
  1. ;
  1. SCORESV ; Used for Graph and Table
  1. I $D(^TMP($J,"YSG",1)),^TMP($J,"YSG",1)="[ERROR]" D Q ;-->out
  1. .K ^TMP($J,"YSCOR")
  1. .S ^TMP($J,"YSCOR",1)="[ERROR]"
  1. .S ^TMP($J,"YSCOR",2)="Mini-Cog Scale not found"
  1. ;
  1. K ^TMP($J,"YSCOR")
  1. S ^TMP($J,"YSCOR",1)="[DATA]"
  1. S ^TMP($J,"YSCOR",2)=$$GET1^DIQ(601.87,624_",",3,"I")_"="_TOTAL
  1. Q
  1. ;
  1. REPORT(TOTAL,QSTN,STXT,BODY) ; build report body
  1. S STXT=TOTAL
  1. I TOTAL="" S STXT="Too many items were skipped to score this administration."
  1. I (TOTAL>2) S STXT=STXT_" Negative screen for dementia."
  1. I (+TOTAL=TOTAL),(TOTAL<3) S STXT=STXT_" Positive for cognitive impairment"
  1. S STXT="|Mini-Cog Results: "_STXT
  1. S BODY=""
  1. S BODY=BODY_"|Clock Drawing: "_$$ATXT($G(QSTN(5536)))
  1. S BODY=BODY_"|Recall of FIRST WORD: "_$$ATXT($G(QSTN(5537)))
  1. S BODY=BODY_"|Recall of SECOND WORD: "_$$ATXT($G(QSTN(5538)))
  1. S BODY=BODY_"|Recall of THIRD WORD: "_$$ATXT($G(QSTN(5539)))_"|"
  1. S BODY=BODY_"|Word List Version: "_$$WLVER($G(QSTN(9172),0))
  1. I $D(QSTN(9173)),("^1155^1156^1157^"'[(U_QSTN(9173)_U)) S BODY=BODY_"|Person's Answers: "_QSTN(9173)
  1. Q
  1. ATXT(VALUE) ; return text answer for value
  1. I VALUE="X" Q "SKIPPED"
  1. I VALUE=1 Q "Correct"
  1. I VALUE=0 Q "Incorrect"
  1. Q ""
  1. ;
  1. WLVER(AVER) ; return word list version and words
  1. I AVER=0 Q "0 (Apple, Watch, Penny)"
  1. I AVER=1 Q "1 (Banana, Sunrise, Chair)"
  1. I AVER=2 Q "2 (Leader, Season, Table)"
  1. I AVER=3 Q "3 (Village, Kitchen, Baby)"
  1. I AVER=4 Q "4 (River, Nation, Finger)"
  1. I AVER=5 Q "5 (Captain, Garden, Picture)"
  1. I AVER=6 Q "6 (Daughter, Heaven, Mountain)"
  1. Q "SKIPPED"
  1. ;
  1. DLLSTR(YSDATA,YS,YSTRNG) ;
  1. N QSTN,TOTAL,SKIPS
  1. D BLDQSTN(.QSTN)
  1. S TOTAL=$$SUM(.QSTN,"5536,5537,5538,5539")
  1. S SKIPS=$$SKIPCNT(.QSTN,"5536,5537,5538,5539")
  1. I SKIPS>0 S TOTAL=""
  1. I YSTRNG=1 D SCORESV
  1. I YSTRNG=2 D
  1. . N N,SCORE,QANDA
  1. . D REPORT(TOTAL,.QSTN,.SCORE,.QANDA)
  1. . S N=$O(YSDATA(""),-1) ; get last node
  1. . S YSDATA(N+1)="7771^9999;1^"_SCORE
  1. . S YSDATA(N+2)="7772^9999;1^"_QANDA
  1. Q