1 | YTQPXRM5 ;ASF/ALB CLINICAL REMINDERS CONT ; 7/13/07 2:27pm
|
---|
2 | ;;5.01;MENTAL HEALTH;**85**;DEC 30,1994;Build 48
|
---|
3 | ;
|
---|
4 | Q
|
---|
5 | CRTEST(YSDATA,YS) ;clinical reminders approrpiate instruments
|
---|
6 | ;input: LIMIT highest # of questions allowed (25 is default)
|
---|
7 | ;output: [DATA] vs [ERROR] 0K vs error msg
|
---|
8 | ; test_name^601.71 ien^# of questions
|
---|
9 | N YSLIMIT,YSCODE,YSCODEN,YSNUMB,YSG,YSIEN,YSOPER,YSQG2,YSERR,YSCTYPE,YSCHT,YSCHOICE,YSLEG,YSQN,YSNN
|
---|
10 | K YSDATA
|
---|
11 | S YSLIMIT=$G(YS("LIMIT"),25)
|
---|
12 | S YSDATA(1)="[DATA]",YSNN=1
|
---|
13 | S YSCODE=""
|
---|
14 | F S YSCODE=$O(^YTT(601.71,"B",YSCODE)) Q:YSCODE="" S YSERR=0,YSNUMB=0,YSCODEN=$O(^YTT(601.71,"B",YSCODE,0)) D TCK,SETCR
|
---|
15 | Q
|
---|
16 | TCK ;check a test for CR
|
---|
17 | S YSOPER=$$GET1^DIQ(601.71,YSCODEN_",",10,"I")
|
---|
18 | IF YSOPER="C" S YSNUMB="C" Q ;-->out ASF 11/1/06
|
---|
19 | Q:(YSOPER'="Y")
|
---|
20 | S YSIEN=0 F S YSIEN=$O(^YTT(601.76,"AC",YSCODEN,YSIEN)) Q:YSIEN'>0 S YSNUMB=YSNUMB+1
|
---|
21 | Q
|
---|
22 | SETCR ;set out queue
|
---|
23 | I (YSNUMB=0)!(YSNUMB>YSLIMIT)!(YSERR=1) Q ;->out
|
---|
24 | S YSNN=YSNN+1,YSDATA(YSNN)=YSCODE_U_YSCODEN_U_YSNUMB
|
---|
25 | Q
|
---|
26 | ONECR(YSCODEN,YSLIMIT) ;FUNCTION check one test for CR
|
---|
27 | ;input YSCODEN ien OF 601.71
|
---|
28 | ; YSLIMIT # OF QUESTIONS (25 DEFAULT)
|
---|
29 | ;output 1: OK for CR
|
---|
30 | ;
|
---|
31 | N YSOPER,YSERR,YSIEN,YSNUMB
|
---|
32 | S YSOK=0
|
---|
33 | I '$D(^YTT(601.71,YSCODEN,0)) Q YSOK ;->out
|
---|
34 | I $P(^YTT(601.71,YSCODEN,0),U)="ASI" Q YSOK ;-->out
|
---|
35 | S YSLIMIT=$G(YSLIMIT,25)
|
---|
36 | S YSNUMB=0,YSERR=0 D TCK
|
---|
37 | I (YSNUMB=0)!(YSNUMB>YSLIMIT)!(YSERR=1) Q YSOK ;->out
|
---|
38 | S YSOK=1
|
---|
39 | Q YSOK
|
---|
40 | SHOWALL(YSDATA,YS) ;
|
---|
41 | ;returns all item information for a specified test
|
---|
42 | ; same format as SHOWALL^YTAPI3
|
---|
43 | N G,YSCODE,YSCODEN,YSNUMB,YSEQ,YSIEN,YSR,YSCTYPE,YSG,YSQN,YSQG2,YSCHTSEQ,YSLEG,YSCTEXT,YSCHOICE,YSINTRO,YSLINES,N1
|
---|
44 | K YSDATA
|
---|
45 | S YSCODE=$G(YS("CODE"),0)
|
---|
46 | I '$D(^YTT(601.71,"B",YSCODE)) S YSDATA(1)="[ERROR]",YSDATA(2)="INCORRECT TEST CODE" Q
|
---|
47 | S YSCODEN=$O(^YTT(601.71,"B",YSCODE,0))
|
---|
48 | S YSNUMB=0
|
---|
49 | S YSDATA(1)="[DATA]"
|
---|
50 | S YSDATA(2)=YSCODE_U_$P(^YTT(601.71,YSCODEN,0),U,3)
|
---|
51 | ;Loop thru test for all items
|
---|
52 | S YSEQ=0 F S YSEQ=$O(^YTT(601.76,"AD",YSCODEN,YSEQ)) Q:YSEQ'>0 S YSIEN=$O(^YTT(601.76,"AD",YSCODEN,YSEQ,0)) Q:YSIEN'>0 S YSNUMB=YSNUMB+1,YSR=0 D
|
---|
53 | . S YSG=^YTT(601.76,YSIEN,0),YSQN=$P(YSG,U,4),YSQG2=$G(^YTT(601.72,YSQN,2))
|
---|
54 | . D GETTEXT
|
---|
55 | . S YSCTYPE=$P(YSQG2,U,3) Q:YSCTYPE="" ;->out
|
---|
56 | . S YSCHTSEQ=0 F S YSCHTSEQ=$O(^YTT(601.751,"AC",YSCTYPE,YSCHTSEQ)) Q:YSCHTSEQ'>0 D
|
---|
57 | .. S YSCHOICE=$O(^YTT(601.751,"AC",YSCTYPE,YSCHTSEQ,0)) Q:YSCHOICE'>0 D
|
---|
58 | ... S YSCTEXT=$G(^YTT(601.75,YSCHOICE,1))
|
---|
59 | ... S YSLEG=$P($G(^YTT(601.75,YSCHOICE,0)),U,2)
|
---|
60 | ... D RESP
|
---|
61 | Q
|
---|
62 | GETTEXT ;pull text and intros
|
---|
63 | S N1=0,YSLINES=0 F S N1=$O(^YTT(601.72,YSQN,1,N1)) Q:N1'>0 S YSLINES=N1 D
|
---|
64 | . S YSDATA(YSNUMB,"T",N1)=^YTT(601.72,YSQN,1,N1,0)
|
---|
65 | S YSLINES=YSLINES+1,YSDATA(YSNUMB,"T",YSLINES)=" "
|
---|
66 | S YSINTRO=$P($G(^YTT(601.72,YSQN,2)),U)
|
---|
67 | Q:YSINTRO'?1N.N
|
---|
68 | S N1=0 F S N1=$O(^YTT(601.73,YSINTRO,1,N1)) Q:N1'>0 D
|
---|
69 | . S YSDATA(YSNUMB,"I",N1)=^YTT(601.73,YSINTRO,1,N1,0)
|
---|
70 | Q
|
---|
71 | RESP ;get approp responses
|
---|
72 | S YSDATA(YSNUMB,"R",1)="Answer= "
|
---|
73 | S YSDATA(YSNUMB,"R",0)=$G(YSDATA(YSNUMB,"R",0))_YSLEG
|
---|
74 | S YSLINES=YSLINES+1,YSDATA(YSNUMB,"T",YSLINES)=YSLEG_". "_YSCTEXT
|
---|
75 | Q
|
---|
76 | SCALES(YSDATA,YSCODEN) ;scales for a test
|
---|
77 | ;input :YSCODEN AS 601.71 IEN
|
---|
78 | ;output scalename^601.82 ENTRY
|
---|
79 | N G,YSCODE,N,N1,YS1,YSZ,YS87,YSONLY,YSNAME
|
---|
80 | ;S YSCODEN=$G(YS("CODE"),0)
|
---|
81 | I '$D(^YTT(601.71,YSCODEN,0)) S YSDATA(1)="[ERROR]",YSDATA(2)="bad code" Q ;->out
|
---|
82 | S YSCODE=$P(^YTT(601.71,YSCODEN,0),U)
|
---|
83 | I YSCODE="ASI" D Q ;-->out
|
---|
84 | . S YSDATA(1)="[DATA]"
|
---|
85 | . S YSDATA("S",1)="Medical"
|
---|
86 | . S YSDATA("S",2)="Employment"
|
---|
87 | . S YSDATA("S",3)="Alcohol"
|
---|
88 | . S YSDATA("S",4)="Drug"
|
---|
89 | . S YSDATA("S",5)="Legal"
|
---|
90 | . S YSDATA("S",6)="Family"
|
---|
91 | . S YSDATA("S",7)="Psychiatric"
|
---|
92 | S YS1("CODE")=YSCODE D SCALEG^YTQAPI3(.YSZ,.YS1)
|
---|
93 | S YSDATA(1)="[DATA]"
|
---|
94 | S N=0 F S N=$O(^TMP($J,"YSG",N)) Q:N'>0 D
|
---|
95 | . S G=^TMP($J,"YSG",N)
|
---|
96 | . S YSNAME=$P(G,U,4),YS87=$P($P(G,U,1),"=",2)
|
---|
97 | . Q:G'?1"Scale".E
|
---|
98 | . S:'$D(YSONLY(YSNAME)) YSONLY(YSNAME)="",YSDATA("S",YS87)=YSNAME
|
---|
99 | K ^TMP($J,"YSG")
|
---|
100 | Q
|
---|
101 | SCNAME(YSIEN) ;get scale name from 601.87 ien
|
---|
102 | ;input 601.87 ien
|
---|
103 | N YS87
|
---|
104 | S YS87=0
|
---|
105 | Q:YSIEN'?1N.N YS87 ;out-->
|
---|
106 | Q:'$D(^YTT(601.87,YSIEN)) YS87 ;out-->
|
---|
107 | S YS87=$$GET1^DIQ(601.87,YSIEN_",",3)
|
---|
108 | Q YS87
|
---|
109 | ALLKEYS(YSDATA,YS) ;Return ALL or most KEYS that a user has.
|
---|
110 | ;input IEN as internal of file 200 [optional/DUZ]
|
---|
111 | N YSIEN,I,J,K,L K ^TMP("YSXU",$J)
|
---|
112 | S YSIEN=$G(YS("IEN"))
|
---|
113 | S:YSIEN="" YSIEN=DUZ
|
---|
114 | I YSIEN'>0 S YSDATA(1)="[ERROR]" Q
|
---|
115 | S I=0,L=1,YSDATA(1)="[DATA]"
|
---|
116 | F S I=$O(^VA(200,YSIEN,51,I)) Q:I'>0 S K=$G(^DIC(19.1,I,0)) D
|
---|
117 | . S L=L+1,YSDATA(L)=$P(K,U,1)
|
---|
118 | . Q
|
---|