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

YTSRAID.m

Go to the documentation of this file.
  1. YTSRAID ;SLC/DJE- ANSWERS SPECIAL HANDLING - WHOQOL-BREF ; 10/16/18 9:35am
  1. ;;5.01;MENTAL HEALTH;**139**;;Build 134
  1. ;
  1. ;Public, Supported ICRs
  1. ; #2056 - Fileman API - $$GET1^DIQ
  1. ;
  1. DATA1(SCORE) ;expects YSDATA, returns SCORE, multiple scales so we use nodes i.e. SCORE(SCALEIEN)=###
  1. ;specialized DATA1 uses SCOREDAT table to map question to score relationships
  1. N LINE,TEXT,SKIP
  1. F LINE=1:1 S TEXT=$P($T(SCOREDAT+LINE),";",2) Q:TEXT="QUIT" D
  1. .N SCALE,RAWTYPE,QUESTIONS,I
  1. .S SCALE=$P(TEXT,"|",1) S RAWTYPE=$P(TEXT,"|",2) S QUESTIONS=$P(TEXT,"|",3)
  1. .F I=1:1:$L(QUESTIONS,U) D
  1. ..N NODE,DATA,RAW
  1. ..S NODE=$P(QUESTIONS,U,I)+2 ;YSDATA question nodes start at 3
  1. ..S DATA=YSDATA(NODE)
  1. ..;retrieval method section. For each RAWTYPE assign a value to RAW
  1. ..;typical case, YSDATA piece 3 has the MH CHOICE IEN and raw value is in LEGACY field
  1. ..I RAWTYPE="LEGACY" S RAW=$$GET1^DIQ(601.75,$P($G(DATA),U,3)_",",4,"I")
  1. ..;raw score is stored directly in YSDATA piece 3 - trackbars do this.
  1. ..I RAWTYPE="DIRECT" S RAW=$P($G(DATA),U,3)
  1. ..I RAW="X" S SKIP(SCALE)=$G(SKIP(SCALE))+1 ;Some reports need to keep count of skipped questions
  1. ..S SCORE(SCALE)=$G(SCORE(SCALE))+RAW
  1. ;
  1. ;add logic to handle skipped questions.
  1. ;
  1. ;add logic to handle transformed scores
  1. ;
  1. Q
  1. ;
  1. ;SCOREDAT maps questions to their scale and to the method we use to retrieve the raw value.
  1. ;A scale can have multiple lines and does not need to match the scalegroup order
  1. ;You can create your own RAW RETRIEVAL METHOD, just make sure we handle the case in DATA1
  1. SCOREDAT ; SCALE IEN|RAW RETRIEVAL METHOD|QUES#^QUES#...
  1. ;1319|LEGACY|3^4^5^6^7^8^9^10^11^12^13^14^15^16^17^18^19^20
  1. ;QUIT
  1. Q
  1. ;
  1. SCORESV(SCORE) ;Expects SCORE to be in format SCORE(SCALE_IEN)=###. Also expects ^TMP($J,"YSG")
  1. N YSCORNODE,YSGNODE
  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)="No Scale found for ADMIN"
  1. ;
  1. K ^TMP($J,"YSCOR")
  1. S ^TMP($J,"YSCOR",1)="[DATA]"
  1. S YSCORNODE=2
  1. S YSGNODE=2 F S YSGNODE=$O(^TMP($J,"YSG",YSGNODE)) Q:YSGNODE="" D
  1. .N SCALEIEN
  1. .I $E(^TMP($J,"YSG",YSGNODE),1,5)'="Scale" Q ;only read the lines for scales
  1. .S SCALEIEN=+$P(^TMP($J,"YSG",YSGNODE),"=",2) ;grab the first number after "=" sign
  1. .S ^TMP($J,"YSCOR",YSCORNODE)=$$GET1^DIQ(601.87,SCALEIEN_",",3,"I")_"="_SCORE(SCALEIEN)
  1. .S YSCORNODE=YSCORNODE+1
  1. ;
  1. Q
  1. ;
  1. DLLSTR(YSDATA,YS,YSTRNG) ;
  1. ; YSTRNG = 1 Score Instrument
  1. ; YSTRNG = 2 get Report Answers and Text
  1. N SCORE,TSARR
  1. ;
  1. I YSTRNG=1 D DATA1(.SCORE),SCORESV(.SCORE)
  1. ;LDSCORES is not retrieving t-scores for TMP($J,"YSCOR") so we need to run LDTSCOR.
  1. I YSTRNG=2 D LDTSCOR^YTSCORE(.TSARR,YS("AD")),BUILDANS(.TSARR,.YSDATA)
  1. Q
  1. ;
  1. BUILDANS(TSARR,YSDATA) ;
  1. N SCORE,I
  1. ;
  1. I YSDATA(4)="8381^2^1156" S YSDATA(4)="8381^2;1^" ;check if other field has "not asked" mh choice entry and replace with blank text
  1. S YSDATA($O(YSDATA(""),-1)+1)=999999999999_U_U_$P(TSARR("RAID Total Score"),U,2)
  1. ;logic to add special answers to YSDATA
  1. ;
  1. Q
  1. ;