| 1 | GMRCART ;SLC/DCM,DLT,JFR - Result display logic ;12/17/01 22:39 | 
|---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**4,15,17,23,22,38**;DEC 27, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | ; This routine invokes IA #2638,#10060 | 
|---|
| 5 | ; | 
|---|
| 6 | RT(GMRCO) ;Result Display logic - called from GMRCA1 | 
|---|
| 7 | N GMRCCT,GMRCTMP,GMRCSR,GMRCTUFN,GMRCSTS,GMRCMSG | 
|---|
| 8 | ; | 
|---|
| 9 | S GMRCSR=$P($G(^GMR(123,+GMRCO,0)),"^",15),GMRCTUFN=$P(^(0),"^",20) | 
|---|
| 10 | S GMRCSTS=$P($G(^GMR(123,+GMRCO,0)),"^",12) | 
|---|
| 11 | I '$$RESOLUS^GMRCAU(GMRCSTS),('+GMRCSR&('GMRCTUFN)) S GMRCMSG="No results available for review." D EXAC^GMRCADC(GMRCMSG),END S GMRCQUT=1 Q | 
|---|
| 12 | ; | 
|---|
| 13 | W !,"Compiling Result Display..." | 
|---|
| 14 | I $D(IOTM),$D(IOBM),$D(IOSTBM) D FULL^VALM1 | 
|---|
| 15 | K ^TMP("GMRCR",$J,"DT") S GMRCCT=1 | 
|---|
| 16 | S XQORM("A")="Select Action: " | 
|---|
| 17 | S:$D(VALMAR) GMRCVAL=VALMAR | 
|---|
| 18 | S GMRCTMP="^TMP(""GMRCR"",$J,""DT"")" | 
|---|
| 19 | S GMRCDVL="",$P(GMRCDVL,"-",41)="" | 
|---|
| 20 | ; | 
|---|
| 21 | D GETRSLT(GMRCTMP) | 
|---|
| 22 | ; | 
|---|
| 23 | D EN^VALM("GMRC RESULTS DISPLAY") | 
|---|
| 24 | S:$D(GMRCVAL) VALMAR=GMRCVAL S:$D(LNCT) VALMCNT=LNCT | 
|---|
| 25 | D KILL^VALM10() | 
|---|
| 26 | K OREND,ORAGE,ORIO,ORDOB,ORFT,ORHI,ORIFN,ORNP,ORL,ORPD,ORPNM,ORPV,ORSEQ,ORSEX,ORWARD,ORDG | 
|---|
| 27 | K GMRCDVL,GMRCLCT,GMRCRPT,GMRCTUFN,GMRCVAL,MCFILE,MCPROC,GMRCX,GMRCTO,GMRCPRNM | 
|---|
| 28 | D END | 
|---|
| 29 | Q | 
|---|
| 30 | ; | 
|---|
| 31 | GETRSLT(TMPGLOB,GMRCDET) ;load the results into global defined in TMPGLOB | 
|---|
| 32 | ;used for GUI formated results and list manager | 
|---|
| 33 | ; | 
|---|
| 34 | ;I GMRCDET=1 coming from a detailed display not results display | 
|---|
| 35 | ; | 
|---|
| 36 | N GMRCCT,GMRCCTS,SF,TAB | 
|---|
| 37 | S TAB="",$P(TAB," ",31)="" | 
|---|
| 38 | S GMRCDVL="",$P(GMRCDVL,"-",41)="" | 
|---|
| 39 | K @TMPGLOB,^TMP("GMRCR",$J,"CP") | 
|---|
| 40 | S GMRCCT=1 | 
|---|
| 41 | S:'$D(GMRCDET) GMRCDET=0 | 
|---|
| 42 | I $L($P(^GMR(123,GMRCO,0),"^",19)) S SF=$P(^(0),"^",19),@TMPGLOB@(GMRCCT,0)="Significant Findings: "_$S(SF="Y":"**Yes**",SF="N":"No",1:"Unknown"),GMRCCT=GMRCCT+1 | 
|---|
| 43 | ;S @TMPGLOB@(GMRCCT,0)=GMRCDVL_GMRCDVL,GMRCCT=GMRCCT+1 ;GMRCDVL_GMRCDVL | 
|---|
| 44 | D PRINT^GMRCTIUP(GMRCO,GMRCCT,1,GMRCDET) | 
|---|
| 45 | S GMRCCTS=GMRCCT ;save the line count before printing med and TIU notes | 
|---|
| 46 | D GETMCAR | 
|---|
| 47 | D GETCP | 
|---|
| 48 | D GETRES | 
|---|
| 49 | ; I '$D(GMRCDET) D GETREMOT(GMRCO,TMPGLOB,.GMRCCT) | 
|---|
| 50 | I GMRCCT=GMRCCTS D  ;check if count changed for notes or med results | 
|---|
| 51 | . S:+$L($G(SF)) @TMPGLOB@(GMRCCT,0)=GMRCDVL_GMRCDVL,GMRCCT=GMRCCT+1 ;GMRCDVL_GMRCDVL | 
|---|
| 52 | . S @TMPGLOB@(GMRCCT,0)="No local TIU results or Medicine results available for this consult" | 
|---|
| 53 | . S GMRCCT=GMRCCT+1 | 
|---|
| 54 | ; | 
|---|
| 55 | I '$D(GMRCDET) D GETCOM | 
|---|
| 56 | I GMRCCT>2 S @TMPGLOB@(GMRCCT,0)="",$P(@TMPGLOB@(GMRCCT,0),"=",81)="",GMRCCT=GMRCCT+1 | 
|---|
| 57 | Q | 
|---|
| 58 | ; | 
|---|
| 59 | GETMCAR ;load the medicine results into TMPGLOB | 
|---|
| 60 | Q:'$O(^TMP("GMRCR",$J,"MCAR",0)) | 
|---|
| 61 | N ND,ND1 | 
|---|
| 62 | S ND=0 F  S ND=$O(^TMP("GMRCR",$J,"MCAR",ND)) Q:ND=""!(ND?1A.E)  D | 
|---|
| 63 | .S @TMPGLOB@(GMRCCT,0)="",$P(^(0),"-",80)="",GMRCCT=GMRCCT+1 | 
|---|
| 64 | .S @TMPGLOB@(GMRCCT,0)=TAB_"Medicine Package Report",GMRCCT=GMRCCT+1 | 
|---|
| 65 | .S ND1=0 F  S ND1=$O(^TMP("GMRCR",$J,"MCAR",ND,ND1)) Q:ND1=""  S @TMPGLOB@(GMRCCT,0)=^TMP("GMRCR",$J,"MCAR",ND,ND1,0),GMRCCT=GMRCCT+1 | 
|---|
| 66 | .Q | 
|---|
| 67 | K ^TMP("GMRCR",$J,"MCAR") | 
|---|
| 68 | Q | 
|---|
| 69 | ; | 
|---|
| 70 | GETCP ; Load up any Clin. Proc. results | 
|---|
| 71 | Q:'$O(^TMP("GMRCR",$J,"CP",0)) | 
|---|
| 72 | N ND,ND1 | 
|---|
| 73 | S ND=0 F  S ND=$O(^TMP("GMRCR",$J,"CP",ND)) Q:ND=""!(ND?1A.E)  D | 
|---|
| 74 | .S @TMPGLOB@(GMRCCT,0)="",$P(^(0),"-",80)="",GMRCCT=GMRCCT+1 | 
|---|
| 75 | .S @TMPGLOB@(GMRCCT,0)=TAB_"Clinical Procedure Report",GMRCCT=GMRCCT+1 | 
|---|
| 76 | .S ND1=0 F  S ND1=$O(^TMP("GMRCR",$J,"CP",ND,ND1)) Q:ND1=""  D | 
|---|
| 77 | .. S @TMPGLOB@(GMRCCT,0)=^TMP("GMRCR",$J,"CP",ND,ND1,0),GMRCCT=GMRCCT+1 | 
|---|
| 78 | .Q | 
|---|
| 79 | K ^TMP("GMRCR",$J,"CP") | 
|---|
| 80 | Q | 
|---|
| 81 | ; | 
|---|
| 82 | GETRES ;load the TIU notes into TMPGLOB | 
|---|
| 83 | Q:'+$O(^TMP("GMRCR",$J,"RES",0)) | 
|---|
| 84 | ; | 
|---|
| 85 | N ND,ND1 | 
|---|
| 86 | S ND=0 F  S ND=$O(^TMP("GMRCR",$J,"RES",ND)) Q:(ND="")!(ND?1A.E)  D | 
|---|
| 87 | . I $D(^TMP("GMRCR",$J,"RES",ND,"TEXT","GMRCRPT")) D | 
|---|
| 88 | . . S @TMPGLOB@(GMRCCT,0)="",GMRCCT=GMRCCT+1 | 
|---|
| 89 | . . S @TMPGLOB@(GMRCCT,0)=$E(GMRCDVL,1,80-$L(^TMP("GMRCR",$J,"RES",ND,"TEXT","GMRCRPT"))\2)_^("GMRCRPT")_$E(GMRCDVL,1,80-$L(^("GMRCRPT"))\2) | 
|---|
| 90 | . . S GMRCCT=GMRCCT+1 | 
|---|
| 91 | . S:'$D(^TMP("GMRCR",$J,"RES",ND,"TEXT","GMRCRPT")) @TMPGLOB@(GMRCCT,0)=GMRCDVL_GMRCDVL,GMRCCT=GMRCCT+1 | 
|---|
| 92 | . S:$O(^TMP("GMRCR",$J,"RES",ND,"TEXT",0)) @TMPGLOB@(GMRCCT,0)="",GMRCCT=GMRCCT+1 | 
|---|
| 93 | . S ND1=0 F  S ND1=$O(^TMP("GMRCR",$J,"RES",ND,"TEXT",ND1)) Q:ND1?1A.E!(ND1="")  S @TMPGLOB@(GMRCCT,0)=^TMP("GMRCR",$J,"RES",ND,"TEXT",ND1,0),GMRCCT=GMRCCT+1 | 
|---|
| 94 | . I $O(^TMP("GMRCR",$J,"RES",ND,"ADD",0)) S ND1=0 F  S ND1=$O(^TMP("GMRCR",$J,"RES",ND,"ADD",ND1)) Q:ND1=""   D | 
|---|
| 95 | . . S @TMPGLOB@(GMRCCT,0)="",GMRCCT=GMRCCT+1 | 
|---|
| 96 | . . S @TMPGLOB@(GMRCCT,0)=TAB_"ADDENDUM TO REPORT",GMRCCT=GMRCCT+1 | 
|---|
| 97 | . . S ND2=0 F  S ND2=$O(^TMP("GMRCR",$J,"RES",ND,"ADD",ND1,ND2)) Q:ND2=""!(ND2?1A.E)  S @TMPGLOB@(GMRCCT,0)=^TMP("GMRCR",$J,"RES",ND,"ADD",ND1,ND2,0),GMRCCT=GMRCCT+1 | 
|---|
| 98 | . . Q | 
|---|
| 99 | . Q | 
|---|
| 100 | K ^TMP("GMRCR",$J,"RES") | 
|---|
| 101 | Q | 
|---|
| 102 | ; | 
|---|
| 103 | GETCOM ;Get the comments for resolution actions | 
|---|
| 104 | S GMRCSTS=$P($G(^GMR(123,+GMRCO,0)),"^",12) | 
|---|
| 105 | Q:'$$RESOLUS^GMRCAU(+GMRCSTS) | 
|---|
| 106 | ; | 
|---|
| 107 | ;Loop thru actions to find the resolution type actions | 
|---|
| 108 | N ND,ND1,ND2 | 
|---|
| 109 | S ND="" F  S ND=$O(^GMR(123,+GMRCO,40,"B",ND)) Q:ND=""  S ND1=$O(^GMR(123,+GMRCO,40,"B",ND,"")) D | 
|---|
| 110 | . ; | 
|---|
| 111 | . ;Check for resulting action types:complete,sig finding,dc,cancel | 
|---|
| 112 | . N GMRCAIEN | 
|---|
| 113 | . S GMRCAIEN=$P($G(^GMR(123,+GMRCO,40,ND1,0)),"^",2) | 
|---|
| 114 | . I '$$RESOLUA^GMRCAU(GMRCAIEN) Q | 
|---|
| 115 | . ; | 
|---|
| 116 | . ;save the action header info in case there are comments | 
|---|
| 117 | . N GMRCAHDR,GMRCPROV,GMRCENBY,GMRCENDT | 
|---|
| 118 | . D SAVEHDR | 
|---|
| 119 | . ; | 
|---|
| 120 | . ;check for comments, print header on first pass | 
|---|
| 121 | . S ND2=0 | 
|---|
| 122 | . F  S ND2=$O(^GMR(123,GMRCO,40,ND1,1,ND2)) Q:ND2=""  D | 
|---|
| 123 | . . I +$G(GMRCAHDR) D GETHDR ;GMRCAHDR will =1 on first pass | 
|---|
| 124 | . . S @TMPGLOB@(GMRCCT,0)=^GMR(123,GMRCO,40,ND1,1,ND2,0),GMRCCT=GMRCCT+1 | 
|---|
| 125 | . . Q | 
|---|
| 126 | . Q | 
|---|
| 127 | Q | 
|---|
| 128 | ; | 
|---|
| 129 | SAVEHDR ;Save the action header info to print later if there are comments | 
|---|
| 130 | S GMRCAHDR=1 ;flag to print action header on first pass of comments | 
|---|
| 131 | ;save the provider, entered by and date | 
|---|
| 132 | S GMRCPROV=$P(^GMR(123,GMRCO,40,ND1,0),"^",4),GMRCENBY=$P(^(0),"^",5) | 
|---|
| 133 | S GMRCENDT=$$FMTE^XLFDT($P($G(^GMR(123,GMRCO,40,ND1,0)),"^",3)) | 
|---|
| 134 | Q | 
|---|
| 135 | ; | 
|---|
| 136 | GETHDR ;Print the comment header if the action had a comment | 
|---|
| 137 | S @TMPGLOB@(GMRCCT,0)="",GMRCCT=GMRCCT+1 | 
|---|
| 138 | S @TMPGLOB@(GMRCCT,0)=$$CENTER^GMRCP5D("("_$P($G(^GMR(123.1,GMRCAIEN,0)),"^",8)_" Comment)"),GMRCCT=GMRCCT+1 | 
|---|
| 139 | S @TMPGLOB@(GMRCCT,0)="      Entered by: "_$S($L(GMRCENBY):$P(^VA(200,GMRCENBY,0),"^",1),1:"")_" - "_GMRCENDT,GMRCCT=GMRCCT+1 | 
|---|
| 140 | I +GMRCPROV S @TMPGLOB@(GMRCCT,0)="      Responsible Clinician: "_$P($G(^VA(200,GMRCPROV,0)),"^",1),GMRCCT=GMRCCT+1 | 
|---|
| 141 | K GMRCAHDR | 
|---|
| 142 | Q | 
|---|
| 143 | ; | 
|---|
| 144 | GETREMOT(GMRCDA,GMRCAR,GMRCNT) ;retrieve remote results and load up in display | 
|---|
| 145 | ; Input: | 
|---|
| 146 | ; GMRCDA  = consult ien from file 123 | 
|---|
| 147 | ; GMRCAR  = array to return results in (e.g. $NA(^TMP("GMRCAR",$J)) ) | 
|---|
| 148 | ; GMRCNT  = number within GMRCAR to start placing results (pass by ref) | 
|---|
| 149 | ; | 
|---|
| 150 | ;Output: | 
|---|
| 151 | ; array containing remote results in format: | 
|---|
| 152 | ;   ^TMP("GMRCAR",$J,1,0)= result text line 1 | 
|---|
| 153 | ;   ^TMP("GMRCAR",$J,2,0)= result text line 2 | 
|---|
| 154 | ; | 
|---|
| 155 | I '$O(^GMR(123,GMRCDA,51,0)) Q  ;no remote results | 
|---|
| 156 | N HDR,GMRCREM,GMRCDATA,FTR,GMRCIO | 
|---|
| 157 | S @GMRCAR@(GMRCNT,0)="",GMRCNT=GMRCNT+1 | 
|---|
| 158 | S HDR=$$REPEAT^XLFSTR("*",31)_" REMOTE RESULTS "_$$REPEAT^XLFSTR("*",31) | 
|---|
| 159 | S FTR=$$REPEAT^XLFSTR("*",27)_" END OF REMOTE RESULTS "_$$REPEAT^XLFSTR("*",28) | 
|---|
| 160 | S @GMRCAR@(GMRCNT,0)=HDR,GMRCNT=GMRCNT+1 | 
|---|
| 161 | S @GMRCAR@(GMRCNT,0)="",GMRCNT=GMRCNT+1 | 
|---|
| 162 | S GMRCREM=0 F  S GMRCREM=$O(^GMR(123,GMRCDA,51,GMRCREM)) Q:'GMRCREM  D | 
|---|
| 163 | . N GMRCSITE,GMRCRES,GMRCSTA,GMRCRPC,GMRCREM0 | 
|---|
| 164 | . S GMRCREM0=^GMR(123,GMRCDA,51,GMRCREM,0) Q:'$L(GMRCREM0) | 
|---|
| 165 | . S GMRCSTA=$$STA^XUAF4($P(GMRCREM0,U,3)) | 
|---|
| 166 | . D F4^XUAF4(GMRCSTA,.GMRCSITE) I '+GMRCSITE Q | 
|---|
| 167 | . S GMRCRES=$P(GMRCREM0,U,2)_"," | 
|---|
| 168 | . I GMRCRES["TIU" S GMRCRPC="TIU GET RECORD TEXT",GMRCRES=+GMRCRES | 
|---|
| 169 | . I GMRCRES["MCAR" S GMRCRPC="ORQQCN GET MED RESULT DETAILS" | 
|---|
| 170 | . D SAVDEV^%ZISUTL("GMRCIO") ; save off current device settings | 
|---|
| 171 | . D DIRECT^XWB2HL7(.GMRCDATA,GMRCSTA,GMRCRPC,"0",GMRCRES) | 
|---|
| 172 | . D USE^%ZISUTL("GMRCIO") ; restore IO to previous settings | 
|---|
| 173 | . D RMDEV^%ZISUTL("GMRCIO") ; kills data saved in GMRCIO | 
|---|
| 174 | . I '$D(GMRCDATA) Q | 
|---|
| 175 | . S @GMRCAR@(GMRCNT,0)=$$CJ^XLFSTR($S(GMRCRES["MCAR":"Medicine report from:",1:"TIU Document from:"),80),GMRCNT=GMRCNT+1 | 
|---|
| 176 | . S @GMRCAR@(GMRCNT,0)=$$CJ^XLFSTR(GMRCSITE("NAME"),80) | 
|---|
| 177 | . S GMRCNT=GMRCNT+1 | 
|---|
| 178 | . S @GMRCAR@(GMRCNT,0)=$$CJ^XLFSTR("Associated on: "_$$FMTE^XLFDT(+GMRCREM0),80),GMRCNT=GMRCNT+1 | 
|---|
| 179 | . S @GMRCAR@(GMRCNT,0)="",GMRCNT=GMRCNT+1 | 
|---|
| 180 | . N GMRCQT S GMRCQT=0 | 
|---|
| 181 | . I '$L($G(GMRCDATA)) D | 
|---|
| 182 | .. N I S I="" F  S I=$O(GMRCDATA(I)) Q:I=""!(GMRCQT)  D | 
|---|
| 183 | ... I $P(GMRCDATA(I),U)=-1 D  S GMRCQT=1 Q | 
|---|
| 184 | .... S @GMRCAR@(GMRCNT,0)="Report not currently available" | 
|---|
| 185 | .... S GMRCNT=GMRCNT+1 | 
|---|
| 186 | ... S @GMRCAR@(GMRCNT,0)=GMRCDATA(I),GMRCNT=GMRCNT+1 | 
|---|
| 187 | . I $L($G(GMRCDATA)),$D(@GMRCDATA) D | 
|---|
| 188 | .. N I S I="" F  S I=$O(@GMRCDATA@(I)) Q:I=""!(GMRCQT)  D | 
|---|
| 189 | ... I $P(@GMRCDATA@(I),U)=-1 D  S GMRCQT=1 Q | 
|---|
| 190 | .... S @GMRCAR@(GMRCNT,0)="Report not currently available" | 
|---|
| 191 | .... S GMRCNT=GMRCNT+1 | 
|---|
| 192 | ... S @GMRCAR@(GMRCNT,0)=@GMRCDATA@(I),GMRCNT=GMRCNT+1 | 
|---|
| 193 | .. K @GMRCDATA | 
|---|
| 194 | . K GMRCDATA | 
|---|
| 195 | . Q | 
|---|
| 196 | S @GMRCAR@(GMRCNT,0)="",GMRCNT=GMRCNT+1 | 
|---|
| 197 | S @GMRCAR@(GMRCNT,0)=FTR,GMRCNT=GMRCNT+1 | 
|---|
| 198 | S @GMRCAR@(GMRCNT,0)="" | 
|---|
| 199 | Q | 
|---|
| 200 | ; | 
|---|
| 201 | END ;kill off variables and exit | 
|---|
| 202 | I $D(DTOUT)!$D(DIROUT) S GMRCQIT="" | 
|---|
| 203 | K DTOUT,DIROUT,DUOUT | 
|---|
| 204 | S:$D(^TMP("GMRC",$J,"CURRENT","MENU")) XQORM("HIJACK")=^("MENU") | 
|---|
| 205 | Q | 
|---|