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

YTSNUDEC.m

Go to the documentation of this file.
  1. YTSNUDEC ;SLC/BLD- MHAX ANSWERS SPECIAL HANDLING FOR: Nursing Delirium Screening Scale - (NuDESC)
  1. ;;5.01;MENTAL HEALTH;**150**;DEC 30,1994;Build 210
  1. ;
  1. ;Public, Supported ICRs
  1. ; #2056 - Fileman API - $$GET1^DIQ
  1. ;
  1. ;
  1. DLLSTR(YSDATA,YS,YSTRNG) ;
  1. ; YSTRNG = 1 Score Instrument
  1. ; YSTRNG = 2 get Report Answers and Text
  1. N DATA,YSSCALIEN,TOTSCORE,YSINSNAM,STRING,TOTSCORE,CNT
  1. ;
  1. ; returns a scale score which is calculated and stored, no special text in report
  1. I YSTRNG=1 D SCORESV Q
  1. I YSTRNG=2 D STRING Q
  1. ;
  1. Q
  1. ;
  1. STRING ;
  1. ;
  1. N YSCHOICE,YSTEXT,YSMAXLL
  1. D DATA1
  1. S N=N+1
  1. I TOTSCORE>1 S YSDATA(N)="7771^9999;1^POSITIVE" S N=N+1
  1. E S YSDATA(N)="7771^9999;1^NEGATIVE" S N=N+1
  1. S YSMAXLL=76 ;Maximum line length to display
  1. F I=3:1:7 Q:'YSDATA(I) D ;5035,5038,5041,5044,5047 D
  1. .S YSCHOICE=$P(YSDATA(I),"^",3)
  1. .S YSTEXT=$$GET1^DIQ(601.75,$P(YSDATA(I),"^",3)_",",3,"E")
  1. .I YSCHOICE=5036 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5037 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5039 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5040 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5042 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5043 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5045 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5046 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5048 D WRAPTEXT(YSMAXLL)
  1. .I YSCHOICE=5049 D WRAPTEXT(YSMAXLL)
  1. .I I=3 S YSDATA(N)="7772^9999;1^"_YSTEXT S N=N+1
  1. .I I=4 S YSDATA(N)="7773^9999;1^"_YSTEXT S N=N+1
  1. .I I=5 S YSDATA(N)="7774^9999;1^"_YSTEXT S N=N+1
  1. .I I=6 S YSDATA(N)="7775^9999;1^"_YSTEXT S N=N+1
  1. .I I=7 S YSDATA(N)="7776^9999;1^"_YSTEXT S N=N+1
  1. ;
  1. ;F I=5036,5039,5042,5045,5048 D
  1. ;.S YSTEXT=$$GET1^DIQ(601.75,$P(YSDATA(I),"^",3)_",",3,"E")
  1. ;.I I=5036 D
  1. ;..S YSDATA(N)="7773^999;1^Mild to moderate. Barely expressed and noticeable through to being present and undeniable. Patient still can provide some orientating information to time, place and/or person." S N=N+1
  1. ;
  1. Q
  1. ;
  1. DATA1 ;
  1. ;
  1. N I,II,UNANS,MEAN
  1. S (TOTSCORE,CNT,UNANS)=0
  1. F I=3:1 Q:'$D(YSDATA(I)) S TOTSCORE=$G(TOTSCORE)+$$GET1^DIQ(601.75,$P(YSDATA(I),"^",3)_",",4,"I")
  1. Q
  1. ;
  1. SCORESV ;
  1. N YSSCGROUP,I
  1. D DATA1
  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)=$G(YSINSNAM)_" Scale not found"
  1. ;
  1. K ^TMP($J,"YSCOR")
  1. ;
  1. S ^TMP($J,"YSCOR",1)="[DATA]"
  1. S YSSCALIEN=$P($P(^TMP($J,"YSG",3),"^",1),"=",2)
  1. S ^TMP($J,"YSCOR",2)=$$GET1^DIQ(601.87,YSSCALIEN_",",3,"I")_"="_TOTSCORE
  1. Q
  1. ;
  1. WRAPTEXT(YSMAXLL) ; Parses text and creats line feeds that does not split words
  1. N YSPOS,YSTEMP,YSSPOS,YSEPOS ;YSSPOS & YSEPOS are starting and ending position
  1. S YSPOS="" ;YSPOS is the position of the line break within the line
  1. S YSTEMP=YSTEXT
  1. S YSSPOS=1,YSEPOS=YSMAXLL ;YSMAXLL is the maximum line length
  1. S YSPOS=$$POSITION(YSTEMP,YSSPOS,YSEPOS)
  1. S YSTEXT=$E(YSTEMP,YSSPOS,YSPOS)_"| "
  1. S YSSPOS=YSPOS+1,YSEPOS=YSPOS+YSMAXLL
  1. S YSPOS=$$POSITION(YSTEMP,YSSPOS,YSEPOS)
  1. I $E(YSTEMP,YSSPOS)=" " S YSSPOS=YSSPOS+1
  1. S YSTEXT=YSTEXT_$E(YSTEMP,YSSPOS,YSPOS)_"| "
  1. I $L(YSTEXT)<$L(YSTEMP) D
  1. . S YSPOS=YSPOS+1
  1. . I $E(YSTEMP,YSPOS)=" " S YSPOS=YSPOS+1
  1. . S YSTEXT=YSTEXT_$E(YSTEMP,YSPOS,999)
  1. Q
  1. ;
  1. POSITION(YSTEXT,YSSPOS,YSEPOS) ;
  1. N TEMPS
  1. S TEMPS=$E(YSTEXT,YSSPOS,YSEPOS)
  1. I $L(TEMPS)<YSMAXLL S YSPOS=$L(TEMPS)+YSSPOS-1 Q YSPOS
  1. I $E(YSTEMP,YSEPOS,YSEPOS+1)[" " S YSPOS=YSEPOS Q YSPOS
  1. S YSPOS=$L(TEMPS)+2-$F($RE(TEMPS)," ")
  1. S YSPOS=YSPOS+YSSPOS-1
  1. Q YSPOS
  1. ;