Changeset 636 for FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMMH.m
- Timestamp:
- Dec 4, 2009, 8:26:01 PM (14 years ago)
- Location:
- FOIAVistA/tag/r
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMMH.m
r628 r636 1 PXRMMH ; SLC/PKR - Handle mental health findings. ; 11/23/20072 ;;2.0;CLINICAL REMINDERS;**4 ,6**;Feb 04, 2005;Build 1231 PXRMMH ; SLC/PKR - Handle mental health findings. ;04/05/2005 2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21 3 3 ; 4 4 ;======================================================= … … 12 12 D EVALPL^PXRMINDL(.FINDPA,ENODE,.TERMARR,PLIST) 13 13 Q 14 ;15 14 ;======================================================= 16 15 EVALTERM(DFN,FINDPA,ENODE,TERMARR,TFIEVAL) ;Evaluate mental … … 20 19 ; 21 20 ;======================================================= 22 GETDATA(DAS P,FIEVT) ;Return the data for a MH Administrationsentry.21 GETDATA(DAS,FIEVT) ;Return the data for a Psych Instrument Patient entry. 23 22 ;Some tests require the YSP key in order to get a score. 24 N DAS,DATA,IND,SCALE 25 S DAS=$P(DASP,"S",1) 26 S SCALE=+$P(DASP,"S",2) 27 ;DBIA #5043 28 D ENDAS71^YTQPXRM6(.DATA,DAS) 29 I $G(DATA(1))="[ERROR]" Q 30 I SCALE=0 S SCALE=+$O(DATA("SI","")) 31 S FIEVT("MH TEST")=$P(DATA(2),U,3) 32 S IND=0 33 F S IND=$O(DATA("SI",IND)) Q:IND="" S FIEVT("S",IND)=$P(DATA("SI",IND),U,3,4) 34 S IND=0 35 F S IND=$O(DATA("R",IND)) Q:IND="" S FIEVT("R",IND)=$P(DATA("R",IND),U,6) 36 I $D(DATA("SI",SCALE)) S FIEVT("VALUE")=FIEVT("S",SCALE),FIEVT("SCALE NAME")=$P(DATA("SI",SCALE),U,2) 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 37 Q 38 38 ; 39 39 ;======================================================= 40 40 MHVOUT(INDENT,IFIEVAL,NLINES,TEXT) ;Produce the MHV output. 41 N DATE,IND,JND,MHTEST,NOUT,SCALE,SNAME,SCORE,TEXTOUT 42 S MHTEST="Mental Health Test: "_IFIEVAL("MH TEST")_" = " 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_" = " 43 46 S IND=0 44 47 F S IND=+$O(IFIEVAL(IND)) Q:IND=0 D 45 . S DATE= "("_$$EDATE^PXRMDATE(IFIEVAL(IND,"DATE"))_")"46 . S TEMP=MHTEST_DATE47 . S SNAME=$G(IFIEVAL(IND,"SCALE NAME"))48 . I SNAME'="" S TEMP=TEMP_" scale: "_SNAME_" -"49 . S SCORE=$ G(IFIEVAL(IND,"VALUE"))50 . I SCORE'="" S TEMP=TEMP_" raw score: "_$P(SCORE,U,1)_", transformed score: "_$P(SCORE,U,2)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"))_")" 51 54 . D FORMATS^PXRMTEXT(INDENT+2,PXRMRM,TEMP,.NOUT,.TEXTOUT) 52 55 . F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND) … … 57 60 OUTPUT(INDENT,IFIEVAL,NLINES,TEXT) ;Produce the clinical 58 61 ;maintenance output. 59 N IND,JND,MHTEST,NOUT,SCALE,SNAME,SCORE,TEXTOUT62 N DATE,IND,JND,MHTEST,NOUT,RATING,RSCORE,TEXTOUT,TSCORE 60 63 S MHTEST=IFIEVAL("MH TEST") 64 ;Remove the dashes surrounding the name. 65 S MHTEST=$TR(MHTEST,"-","") 61 66 S NLINES=NLINES+1 62 67 S TEXT(NLINES)=$$INSCHR^PXRMEXLC(INDENT," ")_"Mental Health Test: "_MHTEST 63 68 S IND=0 64 69 F S IND=+$O(IFIEVAL(IND)) Q:IND=0 D 70 . S DATE=IFIEVAL(IND,"DATE") 65 71 . S TEMP=$$EDATE^PXRMDATE(IFIEVAL(IND,"DATE")) 66 . S SNAME=$G(IFIEVAL(IND,"SCALE NAME")) 67 . I SNAME'="" S TEMP=TEMP_" scale: "_SNAME_" -" 68 . S SCORE=$G(IFIEVAL(IND,"VALUE")) 69 . I SCORE'="" S TEMP=TEMP_" raw score: "_$P(SCORE,U,1)_", transformed score: "_$P(SCORE,U,2) 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 70 78 . D FORMATS^PXRMTEXT(INDENT+2,PXRMRM,TEMP,.NOUT,.TEXTOUT) 71 79 . F JND=1:1:NOUT S NLINES=NLINES+1,TEXT(NLINES)=TEXTOUT(JND) … … 75 83 ;======================================================= 76 84 SCHELP(MHIEN) ;Xecutable help for MH SCALE 77 N DATA,IND,JND,NUM,SCALE,SNUM85 N IND,JND,NUM,SCALE,TEMP,TEMP1 78 86 I MHIEN=0 D Q 79 87 . S SCALE(1)="This is not a valid Mental Health finding, selecting an MH scale does" 80 88 . S SCALE(2)="not make sense" 81 89 . D EN^DDIOL(.SCALE) 82 ;DBIA #5053 83 D SCALES^YTQPXRM5(.DATA,MHIEN) 84 I DATA(1)="ERROR" D Q 85 . S SCALE(1)="There are no scales for this test." 86 . D EN^DDIOL(.SCALE) 87 S SCALE(1)="Valid scales are:" 88 S SCALE(2)="SCALE NUMBER SCALE NAME" 89 S SCALE(3)="------------------------" 90 S IND=0,JND=3 91 F S IND=$O(DATA("S",IND)) Q:IND="" D 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) 92 96 . S JND=JND+1 93 . S NUM=6-$L(IND) 94 . S SCALE(JND)=$$INSCHR^PXRMEXLC(NUM," ")_(IND)_" "_$P(DATA("S",IND),U,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) 95 100 D EN^DDIOL(.SCALE) 96 101 Q 97 102 ; 98 103 ;======================================================= 99 SCHELPD(DA) ;Xecutable help for MH SCALE in Result Group file 801.41100 N MHIEN101 S MHIEN=+$P($G(^PXRMD(801.41,DA,50)),U)102 D SCHELP^PXRMMH(MHIEN)103 Q104 ;=======================================================105 104 SCHELPF ;Xecutable help for MH SCALE in 811.9 findings. 106 105 N FIND0,MHIEN 107 106 S FIND0=^PXD(811.9,DA(1),20,DA,0) 108 I FIND0["YTT(601 .71" S MHIEN=$P(FIND0,";",1)107 I FIND0["YTT(601" S MHIEN=$P(FIND0,";",1) 109 108 E S MHIEN=0 110 109 D SCHELP(MHIEN) … … 115 114 N MHIEN,TFIND0 116 115 S TFIND0=^PXRMD(811.5,DA(1),20,DA,0) 117 I TFIND0["YTT(601 .71" S MHIEN=$P(TFIND0,";",1)116 I TFIND0["YTT(601" S MHIEN=$P(TFIND0,";",1) 118 117 E S MHIEN=0 119 118 D SCHELP(MHIEN) … … 121 120 ; 122 121 ;======================================================= 123 SCNAME(TEST,SCNUM) ;Given the test ien and scale number return the124 ;scale name.125 N DATA,SCNAME126 D SCALES^YTQPXRM5(.DATA,TEST)127 Q $G(DATA("S",SCNUM))128 ;129 ;=======================================================130 122 SEVALFI(DFN,ITEM,NGET,SDIR,BDT,EDT,NFOUND,FLIST) ; 131 N FIEV,FINDING,IND,YS, DATA123 N FIEV,FINDING,IND,YS,YSDATA 132 124 S YS("CODE")=ITEM,YS("DFN")=DFN 133 125 S YS("BEGIN")=BDT,YS("END")=EDT 134 ; PTTEST^YTQPXRM2does not understand "*" for a limit so use 99.126 ;YTAPI10A does not understand "*" for a limit so use 99. 135 127 I NGET="*" S NGET=99 136 128 S YS("LIMIT")=$S(SDIR=-1:NGET,1:-NGET) 137 ;DBIA # 5035138 D PTTEST^YT QPXRM2(.DATA,.YS)139 S NFOUND=$P( DATA(1),U,2)129 ;DBIA #4458 130 D PTTEST^YTAPI10A(.YSDATA,.YS) 131 S NFOUND=$P(YSDATA(1),U,2) 140 132 I NFOUND=0 Q 141 F IND=1:1:NFOUND S FLIST(IND)= DATA(IND+1)133 F IND=1:1:NFOUND S FLIST(IND)=YSDATA(IND+1) 142 134 Q 143 135 ; … … 147 139 N YS 148 140 ;YTAPI10A does not understand "*" for a limit so use 99. 149 ;OCCUR^YTQPXRM1 does not understand "*" for a limit so use 99.150 141 I NOCC="*" S NOCC=99 151 142 S YS("CODE")=ITEM,YS("BEGIN")=BDT,YS("END")=EDT,YS("LIMIT")=NOCC 152 ;DBIA # 5034153 D OCCUR^YT QPXRM1(PLIST,.YS)143 ;DBIA #4458 144 D OCCUR^YTAPI10A(PLIST,.YS) 154 145 Q 155 146 ; … … 157 148 VSCALE(X,FIND0) ;Make sure that the mental health scale is valid. 158 149 ;Either the scale number or the scale name can be used. 159 N DATA,IND,MHIEN,MHTEST,SCALE,VALID150 N MHIEN,MHTEST,SCALE,VALID 160 151 S MHTEST=$P(FIND0,U,1) 161 152 S MHIEN=$P(MHTEST,";",1) 162 D SCALES^YTQPXRM5(.DATA,MHIEN)163 I +X>0 S VALID=$S($D(DATA("S",X)):1,1:0)153 I +X>0 D Q VALID 154 . S VALID=$S($D(^YTT(601,MHIEN,"S",X)):1,1:0) 164 155 E D 165 . S IND=1,VALID=0 166 . F S IND=$O(DATA("S",IND)) Q:(VALID)!(IND="") D 167 .. I X=$P(DATA("S",IND),U,1) S VALID=1 Q 168 I 'VALID D EN^DDIOL(X_" is not a valid scale for this test!") 169 I $O(DATA(""),-1)>20 H 1 156 . S SCALE=$O(^YTT(601,MHIEN,"S","C",X,"")) 157 . S VALID=$S(SCALE="":0,1:1) 170 158 Q VALID 171 ;172 ;=======================================================173 VSCALED(X,DA) ;Make sure that the mental health scale is valid for a result174 ;group.175 I X="" Q 1176 ;Do not execute as part of a verify fields.177 I $G(DIUTIL)="VERIFY FIELDS" Q 1178 ;Do not execute as part of exchange.179 I $G(PXRMEXCH) Q 1180 N MHTEST181 S MHTEST=$P($G(^PXRMD(801.41,DA,50)),U)182 Q $$VSCALE(X,MHTEST)183 159 ; 184 160 ;======================================================= … … 205 181 Q $$VSCALE(X,TFIND0) 206 182 ; 207 ;=======================================================208 WARN ;Warn the user that they must select a scale if they intend to use209 ;a condition.210 W !,"Remember that the score is returned as raw score^transformed score,"211 W !,"so if your Condition uses the raw score use +V or $P(V,U,1) and if"212 W !,"it uses the transformed score use $P(V,U,2)."213 Q214 ;
Note:
See TracChangeset
for help on using the changeset viewer.