source: FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMMH.m

Last change on this file was 636, checked in by George Lilly, 14 years ago

WorldVistAEHR overlayed on FOIAVistA

File size: 6.2 KB
Line 
1PXRMMH ; SLC/PKR - Handle mental health findings. ;04/05/2005
2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
3 ;
4 ;=======================================================
5EVALFI(DFN,DEFARR,ENODE,FIEVAL) ;Evaluate mental health findings.
6 D EVALFI^PXRMINDX(DFN,.DEFARR,ENODE,.FIEVAL)
7 Q
8 ;
9 ;=======================================================
10EVALPL(FINDPA,ENODE,TERMARR,PLIST) ;Evaluate mental health term findings
11 ;for patient lists.
12 D EVALPL^PXRMINDL(.FINDPA,ENODE,.TERMARR,PLIST)
13 Q
14 ;=======================================================
15EVALTERM(DFN,FINDPA,ENODE,TERMARR,TFIEVAL) ;Evaluate mental
16 ;health instrument terms.
17 D EVALTERM^PXRMINDX(DFN,.FINDPA,ENODE,.TERMARR,.TFIEVAL)
18 Q
19 ;
20 ;=======================================================
21GETDATA(DAS,FIEVT) ;Return the data for a Psych Instrument Patient entry.
22 ;Some tests require the YSP key in order to get a score.
23 N DASP,IND,SCALE,YSDATA
24 ;DBIA #4442
25 S DASP=$P(DAS,"S",1)
26 S SCALE=$P(DAS,"S",2)
27 D ENDAS^YTAPI10(.YSDATA,DASP)
28 I $G(YSDATA(0))="[ERROR]" Q
29 S FIEVT("MH TEST")=$P(YSDATA(2),U,3)
30 I FIEVT("MH TEST")["GAF" S FIEVT("RATING")=$P(YSDATA(3),U,2) Q
31 ;If no scale is specified use the first set of results.
32 S IND=$S(SCALE="":6,1:SCALE+5)
33 S FIEVT("YSDATA")=$G(YSDATA(IND))
34 S FIEVT("SCALE NAME")=$P(FIEVT("YSDATA"),U,2)
35 S (FIEVT("RAW SCORE"),FIEVT("VALUE"))=$P(FIEVT("YSDATA"),U,3)
36 S FIEVT("TRANSFORMED SCORE")=$P(FIEVT("YSDATA"),U,4)
37 Q
38 ;
39 ;=======================================================
40MHVOUT(INDENT,IFIEVAL,NLINES,TEXT) ;Produce the MHV output.
41 N DATE,IND,JND,MHTEST,NAME,NOUT,RATING,RSCORE,SCORE,TEXTOUT,TSCORE
42 S MHTEST=IFIEVAL("MH TEST")
43 ;Remove the dashes surrounding the name.
44 S MHTEST=$TR(MHTEST,"-","")
45 S NAME="Mental Health Test: "_MHTEST_" = "
46 S IND=0
47 F S IND=+$O(IFIEVAL(IND)) Q:IND=0 D
48 . S DATE=IFIEVAL(IND,"DATE")
49 . S RSCORE=$G(IFIEVAL(IND,"RAW SCORE"))
50 . S TSCORE=$G(IFIEVAL(IND,"TRANSFORMED SCORE"))
51 . S RATING=$G(IFIEVAL(IND,"RATING"))
52 . S SCORE=$S(RATING'="":RATING,TSCORE'="":TSCORE,RSCORE'="":RSCORE,1:"")
53 . S TEMP=NAME_SCORE_" ("_$$EDATE^PXRMDATE(IFIEVAL(IND,"DATE"))_")"
54 . D FORMATS^PXRMTEXT(INDENT+2,PXRMRM,TEMP,.NOUT,.TEXTOUT)
55 . F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND)
56 S NLINES=NLINES+1,TEXT(NLINES)=""
57 Q
58 ;
59 ;=======================================================
60OUTPUT(INDENT,IFIEVAL,NLINES,TEXT) ;Produce the clinical
61 ;maintenance output.
62 N DATE,IND,JND,MHTEST,NOUT,RATING,RSCORE,TEXTOUT,TSCORE
63 S MHTEST=IFIEVAL("MH TEST")
64 ;Remove the dashes surrounding the name.
65 S MHTEST=$TR(MHTEST,"-","")
66 S NLINES=NLINES+1
67 S TEXT(NLINES)=$$INSCHR^PXRMEXLC(INDENT," ")_"Mental Health Test: "_MHTEST
68 S IND=0
69 F S IND=+$O(IFIEVAL(IND)) Q:IND=0 D
70 . S DATE=IFIEVAL(IND,"DATE")
71 . S TEMP=$$EDATE^PXRMDATE(IFIEVAL(IND,"DATE"))
72 . S RSCORE=$G(IFIEVAL(IND,"RAW SCORE"))
73 . I RSCORE'="" S TEMP=TEMP_" raw score - "_RSCORE
74 . S TSCORE=$G(IFIEVAL(IND,"TRANSFORMED SCORE"))
75 . I TSCORE'="" S TEMP=TEMP_"; transformed score - "_TSCORE
76 . S RATING=$G(IFIEVAL(IND,"RATING"))
77 . I RATING'="" S TEMP=TEMP_" Rating: "_RATING
78 . D FORMATS^PXRMTEXT(INDENT+2,PXRMRM,TEMP,.NOUT,.TEXTOUT)
79 . F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND)
80 S NLINES=NLINES+1,TEXT(NLINES)=""
81 Q
82 ;
83 ;=======================================================
84SCHELP(MHIEN) ;Xecutable help for MH SCALE
85 N IND,JND,NUM,SCALE,TEMP,TEMP1
86 I MHIEN=0 D Q
87 . S SCALE(1)="This is not a valid Mental Health finding, selecting an MH scale does"
88 . S SCALE(2)="not make sense"
89 . D EN^DDIOL(.SCALE)
90 S SCALE(1)="SCALE NUMBER SCALE NAME"
91 S SCALE(2)="------------------------"
92 S IND=0
93 S JND=2
94 F S IND=$O(^YTT(601,MHIEN,"S",IND)) Q:+IND=0 D
95 . S TEMP=^YTT(601,MHIEN,"S",IND,0)
96 . S JND=JND+1
97 . S TEMP1=$P(TEMP,U,1)
98 . S NUM=6-$L(TEMP1)
99 . S SCALE(JND)=$$INSCHR^PXRMEXLC(NUM," ")_TEMP1_" "_$P(TEMP,U,2)
100 D EN^DDIOL(.SCALE)
101 Q
102 ;
103 ;=======================================================
104SCHELPF ;Xecutable help for MH SCALE in 811.9 findings.
105 N FIND0,MHIEN
106 S FIND0=^PXD(811.9,DA(1),20,DA,0)
107 I FIND0["YTT(601" S MHIEN=$P(FIND0,";",1)
108 E S MHIEN=0
109 D SCHELP(MHIEN)
110 Q
111 ;
112 ;=======================================================
113SCHELPT ;Xecutable help for MH SCALE in 811.5 findings.
114 N MHIEN,TFIND0
115 S TFIND0=^PXRMD(811.5,DA(1),20,DA,0)
116 I TFIND0["YTT(601" S MHIEN=$P(TFIND0,";",1)
117 E S MHIEN=0
118 D SCHELP(MHIEN)
119 Q
120 ;
121 ;=======================================================
122SEVALFI(DFN,ITEM,NGET,SDIR,BDT,EDT,NFOUND,FLIST) ;
123 N FIEV,FINDING,IND,YS,YSDATA
124 S YS("CODE")=ITEM,YS("DFN")=DFN
125 S YS("BEGIN")=BDT,YS("END")=EDT
126 ;YTAPI10A does not understand "*" for a limit so use 99.
127 I NGET="*" S NGET=99
128 S YS("LIMIT")=$S(SDIR=-1:NGET,1:-NGET)
129 ;DBIA #4458
130 D PTTEST^YTAPI10A(.YSDATA,.YS)
131 S NFOUND=$P(YSDATA(1),U,2)
132 I NFOUND=0 Q
133 F IND=1:1:NFOUND S FLIST(IND)=YSDATA(IND+1)
134 Q
135 ;
136 ;=======================================================
137SEVALPL(ITEM,NOCC,BDT,EDT,PLIST) ;Use MH API to get patient list. Called
138 ;from PXRMINDL.
139 N YS
140 ;YTAPI10A does not understand "*" for a limit so use 99.
141 I NOCC="*" S NOCC=99
142 S YS("CODE")=ITEM,YS("BEGIN")=BDT,YS("END")=EDT,YS("LIMIT")=NOCC
143 ;DBIA #4458
144 D OCCUR^YTAPI10A(PLIST,.YS)
145 Q
146 ;
147 ;=======================================================
148VSCALE(X,FIND0) ;Make sure that the mental health scale is valid.
149 ;Either the scale number or the scale name can be used.
150 N MHIEN,MHTEST,SCALE,VALID
151 S MHTEST=$P(FIND0,U,1)
152 S MHIEN=$P(MHTEST,";",1)
153 I +X>0 D Q VALID
154 . S VALID=$S($D(^YTT(601,MHIEN,"S",X)):1,1:0)
155 E D
156 . S SCALE=$O(^YTT(601,MHIEN,"S","C",X,""))
157 . S VALID=$S(SCALE="":0,1:1)
158 Q VALID
159 ;
160 ;=======================================================
161VSCALEF(X) ;Make sure that the mental health scale is valid for a finding.
162 I X="" Q 1
163 ;Do not execute as part of a verify fields.
164 I $G(DIUTIL)="VERIFY FIELDS" Q 1
165 ;Do not execute as part of exchange.
166 I $G(PXRMEXCH) Q 1
167 N FIND0
168 S FIND0=^PXD(811.9,DA(1),20,DA,0)
169 Q $$VSCALE(X,FIND0)
170 ;
171 ;=======================================================
172VSCALET(X) ;Make sure that the mental health scale is valid for a
173 ;term finding.
174 I X="" Q 1
175 ;Do not execute as part of a verify fields.
176 I $G(DIUTIL)="VERIFY FIELDS" Q 1
177 ;Do not execute as part of exchange.
178 I $G(PXRMEXCH) Q 1
179 N TFIND0
180 S TFIND0=^PXRMD(811.5,DA(1),20,DA,0)
181 Q $$VSCALE(X,TFIND0)
182 ;
Note: See TracBrowser for help on using the repository browser.