| 1 | GMRCSLM1 ;SLC/DCM - Gather data and format ^TMP global for consult tracking Silent call for use by List Manager and GUI ;10/9/01 23:12
 | 
|---|
| 2 |  ;;3.0;CONSULT/REQUEST TRACKING;**1,4,10,12,15,17,22,32**;DEC 27, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine invokes IA #2638,#2740
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  G AD
 | 
|---|
| 7 | SVC(NODE) ;Check for a valid service
 | 
|---|
| 8 |  K GMRCDEAV
 | 
|---|
| 9 |  I '$D(^GMR(123,NODE,0)) Q 0
 | 
|---|
| 10 |  I '+$P(^GMR(123,NODE,0),"^",5) Q 0
 | 
|---|
| 11 |  I '$D(^TMP("GMRCS",$J,$P(^GMR(123,NODE,0),"^",5))) Q 0
 | 
|---|
| 12 |  Q 1
 | 
|---|
| 13 | AD ;Main entry point. Loop through AD x-ref in file 123; Find consults that have been released to requested service
 | 
|---|
| 14 |  ;;DFN and GMRCSSNM must be defined when this entry point is called
 | 
|---|
| 15 |  ;;DFN=Internal File Number of Patient in ^DPT
 | 
|---|
| 16 |  ;;GMRCSSNM=Service Name of a Hospital Service from file ^GMR(123.5
 | 
|---|
| 17 |  ;;If GMRCSSNM is not defined or is null, then no records will be found.
 | 
|---|
| 18 |  ;;GMRCOER must be passed so that proper formatting for GUI or List Manager can be performed.  GMRCOER is passed as 0 for List Manager, 1 for GUI.
 | 
|---|
| 19 |  ;;GMRCDT1 and GMRCDT2 are passed in as start and stop dates for the lookup. If GMRCDT1="" or GMRCDT1="ALL", then all dates are searched.
 | 
|---|
| 20 |  ;;GMRCIS=IFC site (if defined); Values: R(equesting) or C(onsulting)
 | 
|---|
| 21 |  ;;  ***********************************************************
 | 
|---|
| 22 |  K ^TMP("GMRCR",$J,"CS"),GMRCNUL
 | 
|---|
| 23 |  I $D(GMRCSSS) S (GMRCDG,GMRCSS)=GMRCSSS,GMRCSSNM=($P($G(^GMR(123.5,+GMRCSS,0)),"^",1)) D SERV1^GMRCASV K GMRCSSS ;reset after forward
 | 
|---|
| 24 |  S TAB="",$P(TAB," ",41)="",BLK=0,LNCT=1 S:'$D(GMRCOER) GMRCOER=0
 | 
|---|
| 25 |  S GMRCD=0 F  S GMRCD=$O(^GMR(123,"AD",DFN,GMRCD)) Q:'GMRCD  S GMRCDA=0 F  S GMRCDA=$O(^GMR(123,"AD",DFN,GMRCD,GMRCDA)) Q:'GMRCDA  I $$SVC(GMRCDA) D SET
 | 
|---|
| 26 |  D END Q
 | 
|---|
| 27 | SET ;;Format entries into a word processing 'TMP("GMRCR",$J,"CS",' global that List Manager can display
 | 
|---|
| 28 |  ;;GMRCOER is a variable that signals that data is being formatted for the OE/RR GUI; this data is formatted differently than the data for List Manager.
 | 
|---|
| 29 |  ;;GMRCOER=0 : Data is List Manager formatted.
 | 
|---|
| 30 |  ;;GMRCOER=1 : Data is OE/RR GUI formatted.
 | 
|---|
| 31 |  S:'$D(TAB) TAB="",$P(TAB," ",30)=""
 | 
|---|
| 32 |  S GMRCIFN=$G(GMRCDA) I '$L(GMRCIFN),$D(XQADATA) S (GMRCDA,GMRCIFN)=+XQADATA
 | 
|---|
| 33 |  S GMRCSEX=$S($P(^DPT(DFN,0),"^",2)="M":"MALE",1:"FEMALE")
 | 
|---|
| 34 |  I '$D(^GMR(123,+GMRCIFN,0)) S GMRCQUT=1 Q
 | 
|---|
| 35 |  S PROC="",GMRC(0)=^GMR(123,GMRCIFN,0)
 | 
|---|
| 36 |  ;IF Consults
 | 
|---|
| 37 |  N GMRCCK
 | 
|---|
| 38 |  I $D(GMRCIS) D  Q:'GMRCCK
 | 
|---|
| 39 |  . S GMRCCK=1
 | 
|---|
| 40 |  . S:'$P($G(GMRC(0)),"^",23) GMRCCK=0
 | 
|---|
| 41 |  . I GMRCCK=1 D
 | 
|---|
| 42 |  . . S GMRC(12)=$G(^GMR(123,GMRCIFN,12))
 | 
|---|
| 43 |  . . I GMRCIS="R",$P(GMRC(12),"^",5)'="P" S GMRCCK=0
 | 
|---|
| 44 |  . . I GMRCIS="C",$P(GMRC(12),"^",5)'="F" S GMRCCK=0
 | 
|---|
| 45 |  I $D(GMRCSTCK),GMRCSTCK'="" N STATUS,TITLE D  Q:'STATUS
 | 
|---|
| 46 |  . N I
 | 
|---|
| 47 |  . F I=1:1 S STATUS=$P(GMRCSTCK,",",I) Q:STATUS=$P(GMRC(0),"^",12)  Q:'STATUS
 | 
|---|
| 48 |  . Q
 | 
|---|
| 49 |  I $D(GMRCVP),GMRCVP'=$P(GMRC(0),"^",8) Q
 | 
|---|
| 50 |  S (GMRCFMDT,X)=$P(GMRC(0),"^",7) I GMRCDT1'="ALL",$P(X,".",1)<GMRCDT1!($P(X,".",1)>GMRCDT2) Q
 | 
|---|
| 51 |  I GMRCOER'=2 D
 | 
|---|
| 52 |  . S BLK=BLK+1
 | 
|---|
| 53 |  . S ^TMP("GMRCR",$J,"CS","AD",BLK,LNCT,GMRCDA)=""
 | 
|---|
| 54 |  D REGDTM^GMRCU S CDT=$P(X," ")
 | 
|---|
| 55 |  S PROC=$S($P(GMRC(0),U,17)="P":"Procedure",1:"Consult")
 | 
|---|
| 56 |  I PROC'="Consult" S PROC=$$GET1^DIQ(123.3,+$P(GMRC(0),"^",8),.01)
 | 
|---|
| 57 |  S:PROC="" PROC="Consult"
 | 
|---|
| 58 |  S TO=+$P(GMRC(0),"^",5)
 | 
|---|
| 59 |  I +TO S TOD=$S($P($G(^GMR(123.5,+TO,0)),"^",2)=9:1,1:0)
 | 
|---|
| 60 |  I '$D(TOD) S TOD=0
 | 
|---|
| 61 |  S TO=$S(+TO:$P($G(^GMR(123.5,+TO,0)),"^",1),1:"")
 | 
|---|
| 62 |  S TO=$S(TOD:"<",1:"")_TO
 | 
|---|
| 63 |  S TO=$S(GMRCOER:TO,1:$E(TO,1,40))_$S(TOD:">",1:"")
 | 
|---|
| 64 |  I '$L(TO) S TO="**Unknown Service**"
 | 
|---|
| 65 |  S STS=$P(GMRC(0),"^",12) D
 | 
|---|
| 66 |  . I '+STS,'$D(^ORD(100.01,+STS,0)) Q
 | 
|---|
| 67 |  . I '+GMRCOER S STS=$P(^ORD(100.01,+STS,.1),"^",1) Q
 | 
|---|
| 68 |  . I GMRCOER=1 S STS=$P(^ORD(100.01,+STS,0),"^") Q
 | 
|---|
| 69 |  . S STS=$P(^ORD(100.01,+STS,.1),"^")
 | 
|---|
| 70 |  I $S(STS="":1,'$D(^ORD(100.01,+$P(GMRC(0),"^",12),0)):1,1:0) S STS=99,$P(GMRC(0),"^",12)=STS,STS=$S(GMRCOER=1:$P(^ORD(100.01,5,0),"^",1),1:$P(^ORD(100.01,+STS,.1),"^",1))
 | 
|---|
| 71 |  D SERVPROC
 | 
|---|
| 72 |  I 'GMRCOER D  Q
 | 
|---|
| 73 |  . S ^TMP("GMRCR",$J,"CS",LNCT,0)=BLK_$E(TAB,1,(4-$L(BLK)))_CDT_"  "_$E(STS,1,3)_$S(STS?1A:"  ",STS?2A:" ",1:"")_" "_$J(GMRCDA,7)_" "_$S($P(GMRC(0),"^",19)="Y":"*",1:" ")_TITLE
 | 
|---|
| 74 |  . S LNCT=LNCT+1
 | 
|---|
| 75 |  I GMRCOER D
 | 
|---|
| 76 |  . N DATA
 | 
|---|
| 77 |  . S DATA=GMRCDA_U_GMRCFMDT_U_STS_U_TO_U_PROC_U
 | 
|---|
| 78 |  . S DATA=DATA_$S($P(GMRC(0),U,19)="Y":"*",1:"")_U
 | 
|---|
| 79 |  . S DATA=DATA_TITLE_U_$P(GMRC(0),U,3)
 | 
|---|
| 80 |  . D  ;get type of record for proper icon in GUI
 | 
|---|
| 81 |  .. ; "C"=reg cons, "P"=reg proc, "M"=clin proc, "I"=IF cons, "R"=IF proc
 | 
|---|
| 82 |  .. I +$G(^GMR(123,GMRCDA,1)) S $P(DATA,U,9)="M" Q
 | 
|---|
| 83 |  .. S $P(DATA,U,9)=$P(GMRC(0),U,17)
 | 
|---|
| 84 |  .. N GMRCGVER
 | 
|---|
| 85 |  .. S GMRCGVER=$P($G(ORWCLVER),".",3,4) ;GUI version running
 | 
|---|
| 86 |  .. I GMRCGVER'>19.1 Q  ;will crash at less than 19.1
 | 
|---|
| 87 |  .. I $P(GMRC(0),U,23) S $P(DATA,U,9)=$S($P(DATA,U,9)="P":"R",1:"I")
 | 
|---|
| 88 |  . S ^TMP("GMRCR",$J,"CS",LNCT,0)=DATA
 | 
|---|
| 89 |  . S LNCT=LNCT+1
 | 
|---|
| 90 |  . K STSOER Q
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | END I LNCT<2 S (BLK,LNCT,GMRCNUL)=1,GMRCNPM="< PATIENT DOES NOT HAVE ANY CONSULTS/REQUESTS "_$S($D(GMRCPRNM):"FOR "_GMRCPRNM,1:"")_" ON FILE. >",GMRCNPM=$E(TAB,1,(80-$L(GMRCNPM))\80)_GMRCNPM,^TMP("GMRCR",$J,"CS",LNCT,0)=GMRCNPM D
 | 
|---|
| 93 |  .I $D(GMRCDT1)&($D(GMRCDT2)),GMRCDT1'="ALL" S LNCT=LNCT+1,^TMP("GMRCR",$J,"CS",LNCT,0)="Between Dates: "_$$FMTE^XLFDT(GMRCDT1)_" and "_$$FMTE^XLFDT(GMRCDT2)
 | 
|---|
| 94 |  .I $D(GMRCSTCK),$L(GMRCSTCK) S LNCT=LNCT+1,^TMP("GMRCR",$J,"CS",LNCT,0)="With Status: " S STS="" F I=1:1 S STS=$P(GMRCSTCK,",",I) Q:STS=""  S ^TMP("GMRCR",$J,"CS",LNCT,0)=^(0)_$P($G(^ORD(100.01,+STS,0)),"^",1)_" "
 | 
|---|
| 95 |  .Q
 | 
|---|
| 96 |  E  S (BLK,LNCT)=LNCT-1,^TMP("GMRCR",$J,"CS",0)="^^^"_LNCT
 | 
|---|
| 97 |  I $D(GMRCALFL) S (BLK,LNCT)=1
 | 
|---|
| 98 |  K TO,TOD,END,FLG,GMRC(0),GMRCD,GMRCDG,GMRCIFN,GMRCFMDT,GMRCNPM,GMRCWARD
 | 
|---|
| 99 |  K I,PROC,STS,URG
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 | OER(DFN,GMRCDG,GMRCDT1,GMRCDT2,GMRCSTCK,GMRCOER) ;;GUI interface for CPRS
 | 
|---|
| 102 |  ;;DFN=Patient internal file number
 | 
|---|
| 103 |  ;;GMRCDG:  Internal file number of consult service from file 123.5
 | 
|---|
| 104 |  ;;GMRCDT1:  Beginning date for lookup
 | 
|---|
| 105 |  ;;GMRCDT2:  Ending date for lookup
 | 
|---|
| 106 |  ;;GMRCSTCK: IEN from OER Status File [^OER(100.01)] to screen results
 | 
|---|
| 107 |  ;;     so that only consults with a desired status are displayed
 | 
|---|
| 108 |  ;;     Can be sent as a set of statuses: i.e., 6,5,2
 | 
|---|
| 109 |  ;;      (GMRCSTCK=GMRC STATUS CHECK)
 | 
|---|
| 110 |  ;;GMRCOER=0 if request is from CONSULTS
 | 
|---|
| 111 |  ;;       =1 if request is for CPRS List Manager
 | 
|---|
| 112 |  ;;       =2 if for CPRS GUI
 | 
|---|
| 113 |  I GMRCDT1="" S GMRCDT1="ALL"
 | 
|---|
| 114 |  I GMRCDG="" S GMRCDG=$O(^GMR(123.5,"B","ALL SERVICES",0))
 | 
|---|
| 115 |  S:'$D(GMRCOER) GMRCOER=1
 | 
|---|
| 116 |  D SERV1^GMRCASV,AD
 | 
|---|
| 117 |  K ^TMP("GMRCS",$J),^TMP("GMRCSLIST",$J)
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 | SERVPROC ; Build contents of SERV/PROC field for List Manager
 | 
|---|
| 120 |  N TYPE,OTXT
 | 
|---|
| 121 |  S TITLE=""
 | 
|---|
| 122 |  S TYPE=""
 | 
|---|
| 123 |  S OTXT=$P($G(^GMR(123,GMRCDA,1.11)),"^")
 | 
|---|
| 124 |  I OTXT="" D BUILD2
 | 
|---|
| 125 |  I OTXT'="" D BUILD1
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 | BUILD1 ;OTXT does contain information
 | 
|---|
| 128 |  N FLG,BADFLG,TPROC,TTO,LEN,ABBRS,ABBRP
 | 
|---|
| 129 |  S TPROC=$$UP^XLFSTR(PROC),TTO=$$UP^XLFSTR(TO)
 | 
|---|
| 130 |  S TITLE=OTXT,OTXT=$$UP^XLFSTR(OTXT)
 | 
|---|
| 131 |  S BADFLG=0
 | 
|---|
| 132 |  I PROC="Consult" S FLG=1,TYPE="Cons"
 | 
|---|
| 133 |  I PROC'="Consult" S FLG=0,TYPE="Proc"
 | 
|---|
| 134 |  S LEN=$L(TITLE)
 | 
|---|
| 135 |  I TO="" S TO="No Service"
 | 
|---|
| 136 |  I LEN<30,FLG=1,OTXT'=TTO S TITLE=TITLE_" "_TO_" "_TYPE Q
 | 
|---|
| 137 |  I LEN<30,FLG=1,OTXT=TTO S TITLE=TITLE_" "_TYPE Q
 | 
|---|
| 138 |  I TO["<" S BADFLG=1
 | 
|---|
| 139 |  S ABBRS=$$SVC^GMRCAU(GMRCDA),ABBRP=$$PROC^GMRCAU(GMRCDA)
 | 
|---|
| 140 |  I LEN<30,FLG=0,TPROC'=OTXT,TTO'=TPROC S TITLE=TITLE_" "_PROC_" "_TO_" "_TYPE Q
 | 
|---|
| 141 |  I LEN<30,FLG=0,TPROC=OTXT,TTO'=TPROC S TITLE=TITLE_" "_TO_" "_TYPE Q
 | 
|---|
| 142 |  I LEN<30,FLG=0,TPROC=OTXT,TTO=TPROC S TITLE=TITLE_" "_TYPE Q
 | 
|---|
| 143 |  I LEN>30,FLG=1,TTO'=OTXT S TITLE=TITLE_" "_TO_" "_TYPE Q
 | 
|---|
| 144 |  I LEN>30,FLG=1,TTO=OTXT S TITLE=TITLE_" "_TYPE Q
 | 
|---|
| 145 |  I LEN>30,FLG=0,TPROC'=OTXT,TTO'=TPROC S TITLE=TITLE_" "_ABBRP_" "_TYPE Q
 | 
|---|
| 146 |  I LEN>30,FLG=0,TTO'=OTXT,BADFLG=0 S TITLE=TITLE_" "_ABBRS_" "_TYPE Q
 | 
|---|
| 147 |  I LEN>30,FLG=0,TTO'=OTXT,BADFLG=1 S TITLE=TITLE_" "_"<"_ABBRS_">"_TYPE Q
 | 
|---|
| 148 |  Q
 | 
|---|
| 149 | BUILD2 ;OTXT contains no information
 | 
|---|
| 150 |  N FLG,TPROC,TTO,LEN
 | 
|---|
| 151 |  S TPROC=$$UP^XLFSTR(PROC),TTO=$$UP^XLFSTR(TO)
 | 
|---|
| 152 |  I PROC="Consult" S TITLE=TO,LEN=$L(TITLE),FLG=1,TYPE="Cons"
 | 
|---|
| 153 |  I PROC'="Consult" S TITLE=PROC,LEN=$L(TITLE),FLG=0,TYPE="Proc"
 | 
|---|
| 154 |  I FLG=1 S TITLE=TITLE_" "_TYPE Q
 | 
|---|
| 155 |  I FLG=0,TTO=TPROC S TITLE=TITLE_" "_TYPE Q
 | 
|---|
| 156 |  I FLG=0,TTO'=TPROC S TITLE=TITLE_" "_TO_" "_TYPE Q
 | 
|---|
| 157 |  Q
 | 
|---|