| 1 | GMRCTIU ;SLC/DCM - Consults - TIU utilities ;2/26/02 11:46
 | 
|---|
| 2 |  ;;3.0;CONSULT/REQUEST TRACKING;**1,4,12,18,15,17,22,27**;DEC 27, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine invokes IA #2427,#2638,#2832,#3161
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | GET(GMRCO,GMRCTUFN,GMRCTUST,GMRCAUTH) ;update Consult from TIU 
 | 
|---|
| 7 |  ;GMRCO=IFN from file 123
 | 
|---|
| 8 |  ;GMRCTUFN=TIU IFN
 | 
|---|
| 9 |  ;GMRCTUST=TIU status of report
 | 
|---|
| 10 |  ;GMRCAUTH=Author of Document
 | 
|---|
| 11 |  N GMRCA,GMRCSTS,GMRCDFN,GMRCAD
 | 
|---|
| 12 |  S GMRCA=$S($G(GMRCTUST)["INCOMPLETE":9,1:10),GMRCSTS=$S(GMRCA=10:2,1:9)
 | 
|---|
| 13 |  I '+$G(GMRCA) S GMRCA=99,GMRCSTS=99
 | 
|---|
| 14 |  D:+$G(GMRCA) STATUS^GMRCTIU1
 | 
|---|
| 15 |  K GMRCOM,GMRCND,GMRCORNP,GMRCORTX,GMRCSA,GMRCSTS
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | DSPLAY(GMRCTUFN,LINECT) ;Get TIU results narrative and get it ready for display
 | 
|---|
| 19 |  ;GMRCTUFN=TIU IEN of results record
 | 
|---|
| 20 |  ;LINECT=line count for list manager
 | 
|---|
| 21 |  N ND,GMRCARR
 | 
|---|
| 22 |  D RPC^TIUSRV(.GMRCARR,GMRCTUFN)
 | 
|---|
| 23 |  S ND=0
 | 
|---|
| 24 |  F  S ND=$O(@GMRCARR@(ND)) Q:ND=""  S ^TMP("GMRCR",$J,"DT",LINECT,0)=@GMRCARR@(ND,0),LINECT=LINECT+1
 | 
|---|
| 25 |  ;D CLEAN^VALM10
 | 
|---|
| 26 |  K @GMRCARR,RESFL,GMRCTIUY
 | 
|---|
| 27 |  S:LINECT>1 LINECT=LINECT-1
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 | ENTER(GMRCO) ; Complete a consult with TIU note
 | 
|---|
| 30 |  N XQADATA,XQA,XQAID,XQAROU,XQFLG,XQAKILL
 | 
|---|
| 31 |  D ENTER^GMRCTIUE(GMRCO)
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | ADDEND(GMRCO) ; Make an addendum to a consult result
 | 
|---|
| 35 |  N XQADATA,XQA,XQAID,XQAROU,XQFLG,XQAKILL
 | 
|---|
| 36 |  D ADDEND^GMRCTIUE(GMRCO)
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | SEND(DFN,OVRRIDE,CP) ;Get consult list and return in ^TMP for TIU
 | 
|---|
| 40 |  ;DFN=Patient's Internal file number from file 2
 | 
|---|
| 41 |  ;OVRRIDE=BOOLEAN flag to override user validation
 | 
|---|
| 42 |  ;CP=2 if only return entries that may have CP docs attached
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  N GMRCI,TAB
 | 
|---|
| 45 |  Q:DFN=""!(DFN<1)
 | 
|---|
| 46 |  S TAB="",$P(TAB," ",30)=""
 | 
|---|
| 47 |  K ^TMP("GMRCR",$J,"TIU")
 | 
|---|
| 48 |  D GETCONSL(DFN,2,$G(OVRRIDE),$G(CP)) ;2=returns TIU format in ^TMP
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 | RPCLIST(GMRCY,DFN) ;Get consult list and return in GMRCY for GUI
 | 
|---|
| 52 |  N GMRCI
 | 
|---|
| 53 |  I '+$G(DFN) S GMRCY(0)=0
 | 
|---|
| 54 |  D GETCONSL(DFN,1) ;1=returns GUI format in GMRCY array
 | 
|---|
| 55 |  ; The consults will be returned from GETCONSL in the GMRCY array.
 | 
|---|
| 56 |  S GMRCY(0)=+$G(GMRCI)
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | GETCONSL(DFN,ORIGIN,OVRRIDE,GMRCCP) ;Get the patients consults
 | 
|---|
| 59 |  ;ORIGIN is whether the request is for GUI=1 or LM=2.
 | 
|---|
| 60 |  ;The logic loops through the "AD" cross-reference to find consults
 | 
|---|
| 61 |  ;The output will be formatted in GMRCY for the GUI if ORIGIN is 1.
 | 
|---|
| 62 |  ;The output will be formatted in ^TMP("GMRCR",$J,"TIU" if ORIGIN is 2.
 | 
|---|
| 63 |  ;GMRCCP = 1 = return only CP entries that can have CP doc attached
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  N GMRCQIT,GMRC,GMRCDA,GMRCDT,GMRCEDT,GMRCYR,GMRCSP,GMRCST,GMRCSTS
 | 
|---|
| 66 |  N GMRCTIU,GMRCTIUC,GMRCSS,GMRCSVC,GMRCPROC,GMRCNOTE,Y,GMRCDAT,GMRCAU
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ; Aug 2000 - MA changed routine to use Parameter global to set the
 | 
|---|
| 69 |  ; number of days to look backward when getting a list of consults.
 | 
|---|
| 70 |  S GMRCYR=$$FMADD^XLFDT(DT,-$$GET^XPAR("ALL","GMRC CONSULT LIST DAYS"))
 | 
|---|
| 71 |  S GMRCYR=9999999-GMRCYR,GMRCDAT=0
 | 
|---|
| 72 |  F  S GMRCDAT=$O(^GMR(123,"AD",DFN,GMRCDAT)) Q:'GMRCDAT!(GMRCDAT>GMRCYR)  D
 | 
|---|
| 73 |  . S GMRCDA=0
 | 
|---|
| 74 |  . F  S GMRCDA=$O(^GMR(123,"AD",DFN,GMRCDAT,GMRCDA)) Q:'GMRCDA  D
 | 
|---|
| 75 |  .. S GMRC(0)=$G(^GMR(123,GMRCDA,0))
 | 
|---|
| 76 |  .. S GMRCST=$P(GMRC(0),U,12)
 | 
|---|
| 77 |  .. I $P($G(^GMR(123,GMRCDA,12)),U,5)="P" Q  ;can't attach to IFC placer
 | 
|---|
| 78 |  .. I "25689"'[GMRCST Q  ;only return statuses c,p,a,s,pr
 | 
|---|
| 79 |  .. S GMRCDT=+GMRC(0)
 | 
|---|
| 80 |  .. S GMRCSS=$P(GMRC(0),U,5)
 | 
|---|
| 81 |  .. I '+$G(OVRRIDE) D  Q:'GMRCAU
 | 
|---|
| 82 |  ... S GMRCAU=$$VALID^GMRCAU(GMRCSS,GMRCDA)
 | 
|---|
| 83 |  ... I GMRCAU=3 S GMRCAU=0 ;exclude admin users
 | 
|---|
| 84 |  .. I '$G(GMRCCP),+$G(^GMR(123,GMRCDA,1)) Q  ;no CP requests for CPRS
 | 
|---|
| 85 |  .. I $G(GMRCCP),'+$G(^GMR(123,GMRCDA,1)) Q  ;only return CP requests 
 | 
|---|
| 86 |  .. S GMRCTIUC=0
 | 
|---|
| 87 |  .. D GETLIST^GMRCTIUL(GMRCDA,0,1,.GMRCTIUC)
 | 
|---|
| 88 |  .. I ORIGIN=1 D BLDGMRCY Q
 | 
|---|
| 89 |  .. I ORIGIN=2 D BLDTMP Q
 | 
|---|
| 90 |  .. Q
 | 
|---|
| 91 |  . Q
 | 
|---|
| 92 |  Q
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 | BLDGMRCY ;Build the GMRCY array of existing consults
 | 
|---|
| 95 |  S GMRCSTS=$P($G(^ORD(100.01,+GMRCST,0)),"^",1)
 | 
|---|
| 96 |  S GMRCSS=$P(GMRC(0),U,5),GMRCSVC=$P($G(^GMR(123.5,GMRCSS,0)),U)
 | 
|---|
| 97 |  S GMRCPROC=$P($G(^GMR(123.3,+$P(GMRC(0),U,8),0)),U)
 | 
|---|
| 98 |  S GMRCI=+$G(GMRCI)+1
 | 
|---|
| 99 |  S GMRCY(GMRCI)=GMRCDA_U_GMRCDT_U_GMRCSVC_U_GMRCPROC_U_GMRCSTS_U_+GMRCTIUC(0)
 | 
|---|
| 100 |  Q
 | 
|---|
| 101 | BLDTMP ;Build TMP global for TIU
 | 
|---|
| 102 |  S GMRCSTS=$G(^ORD(100.01,+GMRCST,.1))
 | 
|---|
| 103 |  S GMRCSP=$$ORTX^GMRCAU(GMRCDA)
 | 
|---|
| 104 |  S GMRCNOTE=$S(GMRCTIUC(0)=1:" note",1:" notes")
 | 
|---|
| 105 |  S GMRCEDT=$$FMTE^XLFDT(GMRCDT,"D")
 | 
|---|
| 106 |  S GMRCI=+$G(GMRCI)+1
 | 
|---|
| 107 |  S ^TMP("GMRCR",$J,"TIU",GMRCI,0)=$J(GMRCI,3)_"> "_$E(GMRCEDT_TAB,1,12)_" C#"_$E(GMRCDA_TAB,1,9)_$E(GMRCSP_TAB,1,21)_$E(GMRCSTS_TAB,1,4)_$E(+GMRCTIUC(0)_GMRCNOTE_TAB,1,10)
 | 
|---|
| 108 |  S ^TMP("GMRCR",$J,"TIU","B",GMRCI,GMRCDA)=""
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | ANYPENDG(DFN,USER) ; Determine if user can update any unresolved CSLTs
 | 
|---|
| 111 |  ; Input:
 | 
|---|
| 112 |  ;   DFN  = patient being worked on or the one to check from file 2
 | 
|---|
| 113 |  ;   USER = the person to check on from file 200
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  ; Output:
 | 
|---|
| 116 |  ;   1 = yes there are unresolved consult that could be completed
 | 
|---|
| 117 |  ;   0 = no unresolved consults that USER can update
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  N GMRCYR,GMRCDAT,GMRCDONE,GMRCDA,GMRCST,GMRC,GMRCSS,GMRCDT,GMRCAU
 | 
|---|
| 120 |  S GMRCYR=$$FMADD^XLFDT(DT,-$$GET^XPAR("ALL","GMRC CONSULT LIST DAYS"))
 | 
|---|
| 121 |  S GMRCYR=9999999-GMRCYR,GMRCDAT=0,GMRCDONE=0
 | 
|---|
| 122 |  F  S GMRCDAT=$O(^GMR(123,"AD",DFN,GMRCDAT)) Q:'GMRCDAT!(GMRCDAT>GMRCYR)!(GMRCDONE)  D
 | 
|---|
| 123 |  . S GMRCDA=0
 | 
|---|
| 124 |  . F  S GMRCDA=$O(^GMR(123,"AD",DFN,GMRCDAT,GMRCDA)) Q:'GMRCDA  D
 | 
|---|
| 125 |  .. S GMRC(0)=$G(^GMR(123,GMRCDA,0))
 | 
|---|
| 126 |  .. S GMRCST=$P(GMRC(0),U,12)
 | 
|---|
| 127 |  .. I $P($G(^GMR(123,GMRCDA,12)),U,5)="P" Q  ;can't attach to IFC placer
 | 
|---|
| 128 |  .. I +$G(^GMR(123,GMRCDA,1)) Q  ;can't complete CP's from NOTES tab
 | 
|---|
| 129 |  .. I "568"'[GMRCST Q  ;only return statuses p,a,s
 | 
|---|
| 130 |  .. S GMRCDT=+GMRC(0)
 | 
|---|
| 131 |  .. S GMRCSS=$P(GMRC(0),U,5)
 | 
|---|
| 132 |  .. D  Q:'GMRCAU
 | 
|---|
| 133 |  ... S GMRCAU=$$VALID^GMRCAU(GMRCSS,GMRCDA)
 | 
|---|
| 134 |  ... I GMRCAU=3 S GMRCAU=0 ;exclude admin users
 | 
|---|
| 135 |  ... I GMRCAU S GMRCDONE=1
 | 
|---|
| 136 |  Q GMRCDONE
 | 
|---|
| 137 |  ;
 | 
|---|