| 1 | GMRCDIS ;SLC/JFR - LM ROUTINE TO DISASSOCIATE MED RESULTS; 11/5/01 11:20
 | 
|---|
| 2 |  ;;3.0;CONSULT/REQUEST TRACKING;**15,22**;DEC 27, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine invokes IA #2324,#3042,#3120
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | EN ;invoke list template
 | 
|---|
| 7 |  D EN^VALM("GMRC DISASSOC RESULTS")
 | 
|---|
| 8 |  Q
 | 
|---|
| 9 | HDR ;format list template header
 | 
|---|
| 10 |  N GMRCVTIT
 | 
|---|
| 11 |  S GMRCVTIT="Procedure/Medicine Resulting"
 | 
|---|
| 12 |  D HDR^GMRCSLDT
 | 
|---|
| 13 |  S VALMHDR(2)="Consult No.: "_GMRCO
 | 
|---|
| 14 |  S VALMHDR(2)=$$SETSTR^VALM1("Associated Medicine Results",VALMHDR(2),30,28)
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | PHDR    ;set protocols into actions
 | 
|---|
| 17 |  S VALMSG=$$CJ^XLFSTR("Select action or item number    ?? for help",80)
 | 
|---|
| 18 |  S XQORM("M")=3
 | 
|---|
| 19 |  D SHOW^VALM
 | 
|---|
| 20 |  S XQORM("#")=$O(^ORD(101,"B","GMRCACT SELECT MED RESULT",0))_"^1:"_VALMCNT
 | 
|---|
| 21 |  S XQORM("KEY","EX")=$O(^ORD(101,"B","GMRCACT QUIT",0))_"^1"
 | 
|---|
| 22 |  S XQORM("KEY","Q")=$O(^ORD(101,"B","GMRCACT QUIT",0))_"^1"
 | 
|---|
| 23 |  S XQORM("KEY","CLOSE")=$O(^ORD(101,"B","GMRCACT QUIT",0))_"^1"
 | 
|---|
| 24 |  S XQORM("KEY","NX")=$O(^ORD(101,"B","GMRCACT NEXT SCREEN",0))_"^1"
 | 
|---|
| 25 |  S XQORM("KEY","DM")=$O(^ORD(101,"B","GMRCACT DISASSOC MED RSLT",0))_"^1"
 | 
|---|
| 26 |  S XQORM("KEY","DR")=$O(^ORD(101,"B","GMRCACT DISPLAY MED RESULT",0))_"^1"
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 | INIT ; set up array into ^TMP("GMRCR",$J,"DT"...
 | 
|---|
| 29 |  ; should already have it
 | 
|---|
| 30 |  S VALMCNT=$O(^TMP("GMRCR",$J,"DT",999999),-1),VALMBG=1
 | 
|---|
| 31 |  Q
 | 
|---|
| 32 | GETRES(GMRCO) ; get associated MEDICINE results and format
 | 
|---|
| 33 |  N RES,GMRCMCR,CNT,DATA
 | 
|---|
| 34 |  S RES=0,CNT=1
 | 
|---|
| 35 |  F  S RES=$O(^GMR(123,GMRCO,50,RES)) Q:'RES  D
 | 
|---|
| 36 |  . I $G(^GMR(123,GMRCO,50,RES,0))'["MCAR" Q
 | 
|---|
| 37 |  . S GMRCMCR=$$SINGLE^MCAPI(^GMR(123,GMRCO,50,RES,0))
 | 
|---|
| 38 |  . S DATA=""
 | 
|---|
| 39 |  . S DATA=$$SETSTR^VALM1(CNT,DATA,2,$L(CNT))
 | 
|---|
| 40 |  . S DATA=$$SETSTR^VALM1($P(GMRCMCR,U),DATA,6,23)
 | 
|---|
| 41 |  . S DATA=$$SETSTR^VALM1($P(GMRCMCR,U,6),DATA,30,$L($P(GMRCMCR,U,6)))
 | 
|---|
| 42 |  . S DATA=$$SETSTR^VALM1($P(GMRCMCR,U,7),DATA,50,$L($P(GMRCMCR,U,7)))
 | 
|---|
| 43 |  . S ^TMP("GMRCR",$J,"DT",CNT,0)=DATA
 | 
|---|
| 44 |  . S ^TMP("GMRCR",$J,"DT",CNT,1)=^GMR(123,GMRCO,50,RES,0)
 | 
|---|
| 45 |  . S CNT=CNT+1
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | DIS(GMRCO) ;select consult and start disassoc process
 | 
|---|
| 48 |  N GMRCQUT,GMRCQIT,GMRCSS,GMRCMSG
 | 
|---|
| 49 |  I '+$G(GMRCO) D SELECT^GMRCA2(.GMRCO) I $D(GMRCQUT) Q
 | 
|---|
| 50 |  I '+$G(GMRCO) Q
 | 
|---|
| 51 |  I '$$LOCK^GMRCA1(GMRCO) Q
 | 
|---|
| 52 |  S GMRCMSG=$$REMUSR(GMRCO,DUZ) I '+GMRCMSG D  Q
 | 
|---|
| 53 |  . N MSG
 | 
|---|
| 54 |  . I '$L($P(GMRCMSG,U,2)) D
 | 
|---|
| 55 |  .. S MSG="You are not authorized to disassociate results."
 | 
|---|
| 56 |  . D EXAC^GMRCADC($S($D(MSG):MSG,1:$P(GMRCMSG,U,2)))
 | 
|---|
| 57 |  D GETRES(GMRCO)
 | 
|---|
| 58 |  D EN
 | 
|---|
| 59 |  D UNLOCK^GMRCA1(GMRCO)
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 | EXIT ;
 | 
|---|
| 62 |  K ^TMP("GMRCR",$J,"DT")
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 | EN1(GMRCRSLT) ; select result and verify remove action
 | 
|---|
| 65 |  I '+$G(^TMP("GMRCR",$J,"DT",1,1)) D  Q  ;no result there
 | 
|---|
| 66 |  . D EXAC^GMRCADC("There are no results to remove")
 | 
|---|
| 67 |  N RESTXT,RESULT,DIR,X,Y,DUOUT,DTOUT,DIROUT
 | 
|---|
| 68 |  I '$G(ITEM),'$G(GMRCMEDR) D  Q:'ITEM
 | 
|---|
| 69 |  . S ITEM=$$SELECT^GMRCMED(VALMCNT)
 | 
|---|
| 70 |  . D SET^GMRCMED(ITEM)
 | 
|---|
| 71 |  I $G(GMRCMEDR) S ITEM=GMRCMEDR
 | 
|---|
| 72 |  D FULL^VALM1
 | 
|---|
| 73 |  S RESTXT=$E(^TMP("GMRCR",$J,"DT",ITEM,0),6,80)
 | 
|---|
| 74 |  S RESULT=^TMP("GMRCR",$J,"DT",ITEM,1) Q:'+RESULT
 | 
|---|
| 75 |  S DIR(0)="YA",DIR("B")="NO"
 | 
|---|
| 76 |  S DIR("A",1)="",DIR("A",2)="   "_RESTXT,DIR("A",3)=""
 | 
|---|
| 77 |  S DIR("A")="Are you sure you want to disassociate this result? "
 | 
|---|
| 78 |  D ^DIR I Y<1 Q
 | 
|---|
| 79 |  D REMOVE(GMRCO,RESULT)
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | REMOVE(GMRCO,RSLT,GMRCAD,GMRCORNP) ;disassociate result
 | 
|---|
| 82 |  ; remove rslt, log actv, update sts, send alerts
 | 
|---|
| 83 |  ; Input:
 | 
|---|
| 84 |  ;  GMRCO    - ien from file 123
 | 
|---|
| 85 |  ;  RSLT     - medicine result in var ptr form (e.g. "19;MCAR(691.5,")
 | 
|---|
| 86 |  ;  GMRCAD   - FM date/time of action (optional)
 | 
|---|
| 87 |  ;  GMRCORNP - DUZ of person performing action  (optional) 
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  N GMRCRES,DIK,DA,GMRCQUT,GMRCQIT
 | 
|---|
| 90 |  S GMRCRES=$O(^GMR(123,+GMRCO,50,"B",RSLT,0)) I 'GMRCRES D  Q
 | 
|---|
| 91 |  . D EXAC^GMRCADC("This result is no longer associated with the request")
 | 
|---|
| 92 |  ; delete result entry
 | 
|---|
| 93 |  S DA(1)=+GMRCO,DA=GMRCRES,DIK="^GMR(123,"_DA(1)_",50," D ^DIK
 | 
|---|
| 94 |  I $P(^GMR(123,+GMRCO,0),U,15)=RSLT D
 | 
|---|
| 95 |  . N DA,DIE,DR
 | 
|---|
| 96 |  . S DIE="^GMR(123,",DA=+GMRCO,DR="11///@" D ^DIE
 | 
|---|
| 97 |  ; update activity tracking
 | 
|---|
| 98 |  N GMRCA,GMRCRSLT
 | 
|---|
| 99 |  S GMRCA=12,GMRCRSLT=RSLT
 | 
|---|
| 100 |  D AUDIT^GMRCP
 | 
|---|
| 101 |  ; Update status back to active if not completed before
 | 
|---|
| 102 |  N GMRCDFN,GMRCTYP
 | 
|---|
| 103 |  S GMRCDFN=$P(^GMR(123,+GMRCO,0),U,2)
 | 
|---|
| 104 |  I $$STSCHG(GMRCO) D
 | 
|---|
| 105 |  . N GMRCSTS
 | 
|---|
| 106 |  . S GMRCSTS=6 D STATUS^GMRCP
 | 
|---|
| 107 |  . ; update CPRS
 | 
|---|
| 108 |  . S GMRCTYP=$P(^GMR(123,+GMRCO,0),U,17)
 | 
|---|
| 109 |  . D EN^GMRCHL7(GMRCDFN,+GMRCO,GMRCTYP,"","SC",$G(GMRCORNP),"")
 | 
|---|
| 110 |  ; send notification?
 | 
|---|
| 111 |  I '$G(GMRCORNP) S GMRCORNP=DUZ
 | 
|---|
| 112 |  I GMRCORNP'=$P(^GMR(123,+GMRCO,0),U,14) D
 | 
|---|
| 113 |  . Q:'$P(^GMR(123,+GMRCO,0),U,14)
 | 
|---|
| 114 |  . N GMRCADUZ,GMRCORTX
 | 
|---|
| 115 |  . S GMRCADUZ($P(^GMR(123,+GMRCO,0),U,14))=""
 | 
|---|
| 116 |  . S GMRCORTX="Result removed from "_$$ORTX^GMRCAU(+GMRCO)
 | 
|---|
| 117 |  . D MSG^GMRCP(GMRCDFN,GMRCORTX,GMRCO,27,.GMRCADUZ,0)
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 | STSCHG(GMRCIEN) ;completed before or go back
 | 
|---|
| 121 |  I $O(^GMR(123,GMRCIEN,50,0)) Q 0 ;still at least one result
 | 
|---|
| 122 |  I $O(^GMR(123,GMRCIEN,51,0)) Q 0 ;still at least one remote result
 | 
|---|
| 123 |  N CHG,ACT,I S ACT=0,CHG=1,I=0
 | 
|---|
| 124 |  F  S I=$O(^GMR(123,GMRCIEN,40,I)) Q:'I  D
 | 
|---|
| 125 |  . S ACT(0)=^GMR(123,GMRCIEN,40,I,0),ACT(2)=$G(^(2))
 | 
|---|
| 126 |  . I $P(ACT(0),U,2)=10,('$L($P(ACT(0),U,9))&('$L($P(ACT(2),U,4)))) D
 | 
|---|
| 127 |  .. S CHG=0 ; admin completed before if no results
 | 
|---|
| 128 |  . Q
 | 
|---|
| 129 |  Q CHG
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 | REFRESH(GMRCIEN) ;re-build list of associated results
 | 
|---|
| 132 |  I $G(GMRCMEDR) D RESETIT^GMRCMED(GMRCMEDR)
 | 
|---|
| 133 |  K ^TMP("GMRCR",$J,"DT"),GMRCMEDR
 | 
|---|
| 134 |  D GETRES(GMRCIEN)
 | 
|---|
| 135 |  I '$O(^TMP("GMRCR",$J,"DT",0)) D
 | 
|---|
| 136 |  . S ^TMP("GMRCR",$J,"DT",1,0)="No further results to disassociate"
 | 
|---|
| 137 |  S VALMCNT=$O(^TMP("GMRCR",$J,"DT",""),-1)
 | 
|---|
| 138 |  S VALMBCK="R"
 | 
|---|
| 139 |  Q
 | 
|---|
| 140 | REMUSR(GMRCIEN,USER) ; check to see if user is authorized to remove results
 | 
|---|
| 141 |  N GMRCSS,GMRCCLS,RES
 | 
|---|
| 142 |  I '+$P($G(^GMR(123,GMRCIEN,0)),U,8) Q 0
 | 
|---|
| 143 |  S GMRCSS=$P(^GMR(123,GMRCIEN,0),U,5) I 'GMRCSS Q 0  ;no service
 | 
|---|
| 144 |  S GMRCCLS=$P($G(^GMR(123.5,GMRCSS,1)),U,6) I 'GMRCCLS Q 0  ;no class
 | 
|---|
| 145 |  I '$O(^GMR(123,GMRCIEN,50,0)) Q "0^There are no results associated with this request." ;no results to remove
 | 
|---|
| 146 |  S RES=""
 | 
|---|
| 147 |  F  S RES=$O(^GMR(123,GMRCIEN,50,"B",RES)) Q:RES=""  Q:RES["MCAR"
 | 
|---|
| 148 |  I RES="" Q "0^There are no Medicine results associated with this request." ;no med results
 | 
|---|
| 149 |  I '$G(USER) S USER=DUZ
 | 
|---|
| 150 |  I $$ISA^USRLM(USER,GMRCCLS) Q 1  ;part of USR CLASS in fld 1.06
 | 
|---|
| 151 |  Q 0
 | 
|---|