| 1 | GMRCMED ;SLC/JFR - MEDICINE INTERFACE ROUTINES; 2/20/01 13:32
 | 
|---|
| 2 |  ;;3.0;CONSULT/REQUEST TRACKING;**15,47**;DEC 27, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine invokes IA #147,#2757,#3160,#3171
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | SET(NUM) ; set selected med result into GMRCMEDR
 | 
|---|
| 7 |  I NUM<1!(NUM>VALMCNT) D  Q
 | 
|---|
| 8 |  . W !,$C(7),NUM_" is not a valid selection. "
 | 
|---|
| 9 |  . W !,"Choose a number between 1 and "_VALMCNT
 | 
|---|
| 10 |  I '$D(^TMP("GMRCR",$J,"DT",NUM,1)) D  Q
 | 
|---|
| 11 |  . D EXAC^GMRCADC("The displayed item is not selectable")
 | 
|---|
| 12 |  I $D(GMRCMEDR) D RESETIT(GMRCMEDR)
 | 
|---|
| 13 |  S GMRCMEDR=NUM
 | 
|---|
| 14 |  D CNTRL^VALM10(NUM,1,80,IORVON,IORVOFF)
 | 
|---|
| 15 |  D WRITE^VALM10(NUM)
 | 
|---|
| 16 |  S VALMBCK=""
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | RESETIT(NUM) ;return prev. selected number to normal video 
 | 
|---|
| 19 |  D CNTRL^VALM10(NUM,1,80,IOINORM,IOINORM)
 | 
|---|
| 20 |  D WRITE^VALM10(NUM)
 | 
|---|
| 21 |  S VALMBCK="" K GMRCSEL
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | RESULTS(ROOT,GMRCDFN) ;get list of results from Medicine
 | 
|---|
| 24 |  ; ROOT = "MCAR(691","MCAR(691.5" etc. (global root w/o comma)
 | 
|---|
| 25 |  ; return list formatted in ^TMP("GMRCMC",$J
 | 
|---|
| 26 |  N S5,CNT,REC
 | 
|---|
| 27 |  K ^TMP("GMRCMC",$J)
 | 
|---|
| 28 |  S S5=ROOT D EN^MCARPS2(GMRCDFN)
 | 
|---|
| 29 |  I '$D(^TMP("OR",$J,"MCAR")) D  Q
 | 
|---|
| 30 |  . ;D EXAC^GMRCADC("No results found for"_$P(ROOT,U,2))
 | 
|---|
| 31 |  S CNT=1,REC=0
 | 
|---|
| 32 |  F  S REC=$O(^TMP("OR",$J,"MCAR","OT",REC)) Q:'REC  D
 | 
|---|
| 33 |  . N MCDATA,DATA,ONEDATA
 | 
|---|
| 34 |  . S MCDATA=^TMP("OR",$J,"MCAR","OT",REC),DATA=""
 | 
|---|
| 35 |  . Q:$D(^GMR(123,"R",$P(MCDATA,U,2)_";"_ROOT_","))
 | 
|---|
| 36 |  . Q:$$SCRNDRFT($P(MCDATA,U,2),$P(ROOT,"(",2))
 | 
|---|
| 37 |  . S DATA=$$SETSTR^VALM1(CNT,DATA,2,$L(REC))
 | 
|---|
| 38 |  . S DATA=$$SETSTR^VALM1($P(MCDATA,U),DATA,6,23)
 | 
|---|
| 39 |  . S DATA=$$SETSTR^VALM1($P(MCDATA,U,6),DATA,30,$L($P(MCDATA,U,6)))
 | 
|---|
| 40 |  . S DATA=$$SETSTR^VALM1($P(MCDATA,U,7),DATA,50,$L($P(MCDATA,U,7)))
 | 
|---|
| 41 |  . S ^TMP("GMRCR",$J,"DT",CNT,0)=DATA
 | 
|---|
| 42 |  . ;S ONEDATA=REC_U_$P(MCDATA,U,2)_";"_ROOT_","_U_$P(MCDATA,U,3,5)
 | 
|---|
| 43 |  . ;S ONEDATA=ONEDATA_U_$P(MCDATA,U,11)
 | 
|---|
| 44 |  . S ONEDATA=$P(MCDATA,U,2)_";"_ROOT_","
 | 
|---|
| 45 |  . S ^TMP("GMRCR",$J,"DT",CNT,1)=ONEDATA
 | 
|---|
| 46 |  . S CNT=CNT+1
 | 
|---|
| 47 |  K ^TMP("OR",$J,"MCAR")
 | 
|---|
| 48 |  Q 
 | 
|---|
| 49 | PHDR ;set protocols into actions
 | 
|---|
| 50 |  S VALMSG=$$CJ^XLFSTR("Select action or item number    ?? for help",80)
 | 
|---|
| 51 |  S XQORM("M")=3
 | 
|---|
| 52 |  D SHOW^VALM
 | 
|---|
| 53 |  S XQORM("#")=$O(^ORD(101,"B","GMRCACT SELECT MED RESULT",0))_"^1:"_VALMCNT
 | 
|---|
| 54 |  S XQORM("KEY","EX")=$O(^ORD(101,"B","GMRCACT QUIT",0))_"^1"
 | 
|---|
| 55 |  S XQORM("KEY","Q")=$O(^ORD(101,"B","GMRCACT QUIT",0))_"^1"
 | 
|---|
| 56 |  S XQORM("KEY","CLOSE")=$O(^ORD(101,"B","GMRCACT QUIT",0))_"^1"
 | 
|---|
| 57 |  S XQORM("KEY","NX")=$O(^ORD(101,"B","GMRCACT NEXT SCREEN",0))_"^1"
 | 
|---|
| 58 |  S XQORM("KEY","AR")=$O(^ORD(101,"B","GMRCACT ASSOCIATE RESULTS",0))_"^1"
 | 
|---|
| 59 |  S XQORM("KEY","DR")=$O(^ORD(101,"B","GMRCACT DISPLAY MED RESULT",0))_"^1"
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | SELECT(CNT) ;grab an item from list
 | 
|---|
| 63 |  N DIR,DUOUT,DTOUT,DIRUT,X,Y
 | 
|---|
| 64 |  S DIR(0)="NO^1:"_CNT,DIR("A")="Select item"
 | 
|---|
| 65 |  D ^DIR I $D(DIRUT) Q 0
 | 
|---|
| 66 |  Q +Y
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 | DISPRES(ITEM) ;
 | 
|---|
| 69 |  I '+$G(^TMP("GMRCR",$J,"DT",1,1)) D  Q  ; no result there
 | 
|---|
| 70 |  . D EXAC^GMRCADC("There are no results to display")
 | 
|---|
| 71 |  N GMRCDFN
 | 
|---|
| 72 |  I '$G(ITEM),'$G(GMRCMEDR) D  Q:'ITEM
 | 
|---|
| 73 |  . S ITEM=$$SELECT(VALMCNT)
 | 
|---|
| 74 |  . D SET(ITEM)
 | 
|---|
| 75 |  I $G(GMRCMEDR) S ITEM=GMRCMEDR
 | 
|---|
| 76 |  N I,GMRCRES,GMRCDFN,GMRCVTIT
 | 
|---|
| 77 |  S GMRCRES=$G(^TMP("GMRCR",$J,"DT",ITEM,1))
 | 
|---|
| 78 |  Q:'$L(GMRCRES)
 | 
|---|
| 79 |  M ^TMP("GMRCR",$J,"DTSV")=^TMP("GMRCR",$J,"DT")
 | 
|---|
| 80 |  K ^TMP("GMRCR",$J,"DT")
 | 
|---|
| 81 |  S GMRCDFN=$G(DFN)
 | 
|---|
| 82 |  D START^ORWRP(80,"EN^MCAPI(GMRCRES)")
 | 
|---|
| 83 |  I '$D(^TMP("ORDATA",$J,1)) D  Q
 | 
|---|
| 84 |  . S ^TMP("GMRCR",$J,"DTLIST",1,0)="Unable to locate result"
 | 
|---|
| 85 |  S I=0 F  S I=$O(^TMP("ORDATA",$J,1,I)) Q:'I  D
 | 
|---|
| 86 |  . S ^TMP("GMRCR",$J,"DTLIST",I,0)=^TMP("ORDATA",$J,1,I)
 | 
|---|
| 87 |  K ^TMP("ORDATA",$J) ; clean up from OR WORKSTATION
 | 
|---|
| 88 |  S DFN=$S(+GMRCDFN:GMRCDFN,$G(ORVP):+ORVP,1:0)
 | 
|---|
| 89 |  S GMRCVTIT="Medicine Result Display"
 | 
|---|
| 90 |  S VALMCNT=$O(^TMP("GMRCR",$J,"DTLIST",999999),-1)
 | 
|---|
| 91 |  D EN^VALM("GMRC DETAILED DISPLAY")
 | 
|---|
| 92 |  M ^TMP("GMRCR",$J,"DT")=^TMP("GMRCR",$J,"DTSV")
 | 
|---|
| 93 |  K ^TMP("GMRCR",$J,"DTSV")
 | 
|---|
| 94 |  S VALMBCK="R",VALMCNT=$O(^TMP("GMRCR",$J,"DT",999999),-1)
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 | AR(ITEM) ;associate specific result and complete consult
 | 
|---|
| 98 |  I '+$G(^TMP("GMRCR",$J,"DT",1,1)) D  Q  ; no result there
 | 
|---|
| 99 |  . D EXAC^GMRCADC("There are no results to associate")
 | 
|---|
| 100 |  N DIR,X,Y,RESTXT,RESULT
 | 
|---|
| 101 |  I '$G(ITEM),'$G(GMRCMEDR) D  Q:'ITEM
 | 
|---|
| 102 |  . S ITEM=$$SELECT(VALMCNT)
 | 
|---|
| 103 |  . D SET(ITEM)
 | 
|---|
| 104 |  I $G(GMRCMEDR) S ITEM=GMRCMEDR
 | 
|---|
| 105 |  D FULL^VALM1
 | 
|---|
| 106 |  S RESTXT=$E(^TMP("GMRCR",$J,"DT",ITEM,0),6,80)
 | 
|---|
| 107 |  S RESULT=^TMP("GMRCR",$J,"DT",ITEM,1) Q:'+RESULT
 | 
|---|
| 108 |  I $D(^GMR(123,"R",RESULT)) D  Q
 | 
|---|
| 109 |  . D EXAC^GMRCADC("This result is already associated with a procedure.")
 | 
|---|
| 110 |  S DIR(0)="YA",DIR("B")="NO"
 | 
|---|
| 111 |  S DIR("A",1)="",DIR("A",2)="   "_RESTXT,DIR("A",3)=""
 | 
|---|
| 112 |  S DIR("A")="Are you sure you want to associate this result? "
 | 
|---|
| 113 |  D ^DIR I Y<1 Q
 | 
|---|
| 114 |  D MEDCOMP(GMRCO,RESULT,$$NOW^XLFDT,DUZ)
 | 
|---|
| 115 |  Q
 | 
|---|
| 116 | MEDCOMP(GMRCDA,GMRCRSLT,GMRCAD,GMRCORNP,GMRCALRT) ;add medicine result
 | 
|---|
| 117 |  ; update status and send alerts
 | 
|---|
| 118 |  ;  Input:
 | 
|---|
| 119 |  ;   GMRCDA - ien from file 123
 | 
|---|
| 120 |  ;   GMRCRSLT - medicine result in var ptr form (e.g. "19;MCAR(691.5,")
 | 
|---|
| 121 |  ;   GMRCAD   - FM date/time of action (optional)
 | 
|---|
| 122 |  ;   GMRCORNP - DUZ of person taking action
 | 
|---|
| 123 |  ;   GMRCALRT - array of users to receive alert  (optional)
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 |  I '$D(GMRCDA)!'$D(GMRCRSLT) Q
 | 
|---|
| 126 |  N GMRCO,GMRCSTS,GMRCA,GMRCDR,GMRCTYP,MSG
 | 
|---|
| 127 |  S GMRCO=GMRCDA,GMRCA=10,GMRCSTS=2
 | 
|---|
| 128 |  S GMRCDR="8////^S X=GMRCSTS;9////^S X=GMRCA;11////^S X=GMRCRSLT"
 | 
|---|
| 129 |  D STATUS^GMRCP
 | 
|---|
| 130 |  I $D(GMRCAD) D AUDIT^GMRCP
 | 
|---|
| 131 |  I '$D(GMRCAD) D AUDIT0^GMRCP
 | 
|---|
| 132 |  D ADDRSLT^GMRCTIUA(GMRCDA,GMRCRSLT)
 | 
|---|
| 133 |  S MSG="NEW RESULT ASSOCIATED",GMRCDFN=$P(^GMR(123,GMRCO,0),U,2)
 | 
|---|
| 134 |  D MSG^GMRCP(GMRCDFN,MSG,GMRCDA,23,.GMRCALRT,0)
 | 
|---|
| 135 |  S GMRCTYP=$P(^GMR(123,+GMRCDA,0),U,17)
 | 
|---|
| 136 |  D EN^GMRCHL7(GMRCDFN,GMRCDA,GMRCTYP,"","RE",$G(GMRCORNP),"")
 | 
|---|
| 137 |  Q
 | 
|---|
| 138 | REFRESH(GMRCIEN) ;update list of available results
 | 
|---|
| 139 |  N MCROOT,MCPROC,GMRCPROC
 | 
|---|
| 140 |  I $G(GMRCMEDR) D RESETIT(GMRCMEDR)
 | 
|---|
| 141 |  K ^TMP("GMRCR",$J,"DT"),GMRCMEDR
 | 
|---|
| 142 |  S GMRCPROC=$P(^GMR(123,GMRCIEN,0),"^",8)
 | 
|---|
| 143 |  S MCROOT=$$GET1^DIQ(697.2,+$P(^GMR(123.3,+GMRCPROC,0),U,5),1)
 | 
|---|
| 144 |  D RESULTS^GMRCMED(MCROOT,$P(^GMR(123,+GMRCIEN,0),U,2))
 | 
|---|
| 145 |  I '$O(^TMP("GMRCR",$J,"DT",0)) D
 | 
|---|
| 146 |  . S ^TMP("GMRCR",$J,"DT",1,0)="No further results to associate"
 | 
|---|
| 147 |  S VALMCNT=$O(^TMP("GMRCR",$J,"DT",""),-1)
 | 
|---|
| 148 |  S VALMBCK="R"
 | 
|---|
| 149 |  Q
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 | SCRNDRFT(GMRCMCDA,GMRCMCFL) ;screen out draft or marked for del med results
 | 
|---|
| 152 |  ; Input:
 | 
|---|
| 153 |  ;   GMRCDA   - ien from a MEDICINE file
 | 
|---|
| 154 |  ;   GMRCMCFL - file # from MEDICINE  (e.g. 691, 691.5, 699 etc.)
 | 
|---|
| 155 |  ; Output: Boolean 1=screen it out 0=include it
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 |  N GMRCMCST,GMRCMFD
 | 
|---|
| 158 |  I '$D(GMRCMCDA)!('$D(GMRCMCFL)) Q 0
 | 
|---|
| 159 |  S GMRCMCST=$$GET1^DIQ(GMRCMCFL,GMRCMCDA,1506,"I") ;get release code
 | 
|---|
| 160 |  S GMRCMCST=$S(GMRCMCST="D":0,GMRCMCST="PD":0,1:1) ;no D or PD
 | 
|---|
| 161 |  S GMRCMFD=$$GET1^DIQ(GMRCMCFL,GMRCMCDA,1511,"I") ;marked for del?
 | 
|---|
| 162 |  I GMRCMFD=1 Q 1 ;marked for del
 | 
|---|
| 163 |  I GMRCMCST=0 Q 1 ;screen out draft or prob draft
 | 
|---|
| 164 |  Q 0
 | 
|---|