| 1 | HLEVSRV4 ;O-OIFO/LJA - Event Monitor SERVER ;02/04/2004 14:42
 | 
|---|
| 2 |  ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | LICEXT ; Change license date...  (Resets CODEXP,EXPNOW)
 | 
|---|
| 5 |  N CUT
 | 
|---|
| 6 |  W !
 | 
|---|
| 7 |  S CUT=$$ASKDATE^HLEVAPI2("Enter NEW CUTOFF DATE/TIME","EXT")
 | 
|---|
| 8 |  I CUT'?7N1"."1.N W "  no action taken..." QUIT  ;->
 | 
|---|
| 9 |  S $P(^XTMP(XTMP,"CODE"),U)=CUT
 | 
|---|
| 10 |  S ^XTMP(XTMP,0)=$$FMADD^XLFDT(CUT,7)_U_$$NOW^XLFDT_U_"VistA HL7 Remote Request License"
 | 
|---|
| 11 |  S ^XTMP(XTMP,"USER")=$$NOW^XLFDT_U_DUZ
 | 
|---|
| 12 |  W !!,"The current license has been changed to "
 | 
|---|
| 13 |  W $$FMTE^XLFDT(CUT),"..."
 | 
|---|
| 14 |  S CODEXP=CUT,EXPNOW=$S(CUT>NOW:0,1:1)
 | 
|---|
| 15 |  D SETLIC^HLEVSRV3(CODEXP_U_CODE)
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | LICUSER ; Enter new users now...
 | 
|---|
| 19 |  ; IOINHI,IOINORM -- req
 | 
|---|
| 20 |  N POSX,USER
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  W !!,"Enter the email address of the recipient(s).  (Enter the address of an"
 | 
|---|
| 23 |  W !,"existing user and they will be removed.)"
 | 
|---|
| 24 |  W !!,IOINHI,"Hint:",IOINORM,"   "
 | 
|---|
| 25 |  S POSX=8
 | 
|---|
| 26 |  W "You may enter ""something"" that is less exact than the complete"
 | 
|---|
| 27 |  W !,?POSX,"email address and not compromise security.  For example, if"
 | 
|---|
| 28 |  W !,?POSX,"the remote requester is named 'John Doe' and will be sending"
 | 
|---|
| 29 |  W !,?POSX,"requests from the Buffalo VAMC, you still might not know"
 | 
|---|
| 30 |  W !,?POSX,"the exact email address to enter.  (E.g., Should you enter"
 | 
|---|
| 31 |  W !,?POSX,"'JOHN.DOE@MED.VA.GOV' or 'DOE.JOHN@BUFFALO.VA.GOV'?)  And, this"
 | 
|---|
| 32 |  W !,?POSX,"is why it is often advantageous to enter something like"
 | 
|---|
| 33 |  W !,?POSX,"'DOE@BUFFALO' and also 'DOE@MED.VA.GOV'.  When a remote "
 | 
|---|
| 34 |  W !,?POSX,"request is received, as long as 'DOE' is in the sender's"
 | 
|---|
| 35 |  W !,?POSX,"name, and either 'BUFFALO' or 'MED.VA.GOV' is in the"
 | 
|---|
| 36 |  W !,?POSX,"address, it will be honored."
 | 
|---|
| 37 |  W !
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  F  D  QUIT:USER']""
 | 
|---|
| 40 |  .  S USER=$$FT^HLEVSRV2("Enter REMOTE ADDRESS","","O")
 | 
|---|
| 41 |  .  I USER']""!(USER[U) S USER="" QUIT  ;->
 | 
|---|
| 42 |  .  I USER'?1.E1"@"1.E D  QUIT  ;->
 | 
|---|
| 43 |  .  .  W !!,?5,"No action taken! (Use 'NAME@ADDRESS' format.)"
 | 
|---|
| 44 |  .  .  W !
 | 
|---|
| 45 |  .  S USER=$$UP^XLFSTR(USER)
 | 
|---|
| 46 |  .  I $D(^XTMP(XTMP,"USER",USER)) D  QUIT  ;->
 | 
|---|
| 47 |  .  .  KILL ^XTMP(XTMP,"USER",USER)
 | 
|---|
| 48 |  .  .  W "  removed..."
 | 
|---|
| 49 |  .  S ^XTMP(XTMP,"USER",USER)=$$NOW^XLFDT_U_$G(DUZ)
 | 
|---|
| 50 |  .  W "  added..."
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | LICNEW ; Create new license...  (Creates CODE,CODEXP,EXPNOW)
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  I $G(^XTMP(XTMP,"CODE"))]"" D  I '$$YN^HLCSRPT4("Continue","No") W "  no action taken..." QUIT  ;->
 | 
|---|
| 56 |  .  W !!,IOINHI,"Warning!!",IOINORM
 | 
|---|
| 57 |  .  W "  The current license, along with all licensed requesters, will"
 | 
|---|
| 58 |  .  W "                   be deleted if you continue."
 | 
|---|
| 59 |  .  W !
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  S (CODEXP,EXPNOW)="",CODE=$$CODE^HLEVSRV3
 | 
|---|
| 62 |  W !!,"License '",IOINHI,CODE,IOINORM,"' will be used after you enter cutoff date..."
 | 
|---|
| 63 |  W !!,"Defaulting 'NOW + 7 days' below..."
 | 
|---|
| 64 |  W !
 | 
|---|
| 65 |  S CODEXP=$$ASKDATE^HLEVAPI2("Enter CUTOFF DATE","EXT",$P($$FMTE^XLFDT(+$$FMADD^XLFDT($$NOW^XLFDT,7)),":",1,2))
 | 
|---|
| 66 |  I CODEXP'?7N1"."1.N S (CODE,CODEXP,EXPNOW)="" QUIT  ;->
 | 
|---|
| 67 |  ; Accept any date.  For user will have opportunity to change later.
 | 
|---|
| 68 |  S EXPNOW=$S(CODEXP<NOW:1,1:0) ; Is license expired?
 | 
|---|
| 69 |  D SETLIC^HLEVSRV3(CODEXP_U_CODE)
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  Q
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 | LICAN ; Cancel current license...
 | 
|---|
| 74 |  ; XTMP -- req
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ; If no license exists...
 | 
|---|
| 77 |  I '$D(^XTMP(XTMP)) D  QUIT  ;->
 | 
|---|
| 78 |  .  W !,"No license exists..."
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  W !!,"If you cancel license, the code and all requesters will be removed!"
 | 
|---|
| 81 |  W !
 | 
|---|
| 82 |  I '$$YN^HLCSRPT4("OK to cancel license","No") D  QUIT  ;->
 | 
|---|
| 83 |  .  W "  no action taken..."
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  KILL ^XTMP(XTMP)
 | 
|---|
| 86 |  W "  license canceled..."
 | 
|---|
| 87 |  S (CODE,CODEXP,EXPNOW)=""
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 | CHKLIC(CODEXM,FROM) ; Called by server action to see if passed in license
 | 
|---|
| 92 |  ; matches current license.  If so, data will be returned to
 | 
|---|
| 93 |  ; requester.  If not, a refusal email will be returned to XMFROM.
 | 
|---|
| 94 |  N OXMZ,OXTMP
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  S OXMZ=$G(XMZ),OXTMP=$G(XTMP)
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  N CODE,CUT,NOW,XTMP
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  S XTMP="HLEV REMOTE LICENSE",NOW=$$NOW^XLFDT
 | 
|---|
| 101 |  S CODE=$G(^XTMP(XTMP,"CODE")),CUT=+CODE,CODE=$P(CODE,U,2,999)
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ; If no requester known...
 | 
|---|
| 104 |  I $G(XMFROM)']"" D  QUIT  ;->
 | 
|---|
| 105 |  .  D REFUSE("requester unknown.")
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  ; If no code exists...
 | 
|---|
| 108 |  I CODE']"" D   QUIT  ;->
 | 
|---|
| 109 |  .  D REFUSE("no license exists.")
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ; License has expired...
 | 
|---|
| 112 |  I CUT<NOW D REFUSE("the current license has expired.") QUIT  ;->
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  ; Incorrect code sent by remote requester...
 | 
|---|
| 115 |  I CODEXM'=CODE D REFUSE("incorrect code received.") QUIT  ;->
 | 
|---|
| 116 |  ;
 | 
|---|
| 117 |  ; Is remote requester licensed?
 | 
|---|
| 118 |  I '$$LICENSED($G(XMFROM)) D  QUIT  ;->
 | 
|---|
| 119 |  .  D REFUSE("Requester is not licensed.")
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ; Set XMY so report returned to remote requester...
 | 
|---|
| 122 |  I $G(XMFROM)]"" S XMY(XMFROM)=""
 | 
|---|
| 123 |  ;
 | 
|---|
| 124 |  D RECXTMP("Request# "_XMZ_" from "_$G(XMFROM)_" honored. ["_OXTMP_"]")
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | LICENSED(FROM) ; Is requester licensed?
 | 
|---|
| 129 |  N OK,USER
 | 
|---|
| 130 |  S FROM=$$UP^XLFSTR(FROM)
 | 
|---|
| 131 |  S ADDR=$P(FROM,"@",2) QUIT:ADDR']"" "" ;->
 | 
|---|
| 132 |  S FROM=$P(FROM,"@") QUIT:FROM']"" "" ;->
 | 
|---|
| 133 |  S OK=0,USER=""
 | 
|---|
| 134 |  F  S USER=$O(^XTMP(XTMP,"USER",USER)) Q:USER']""!(OK)  D
 | 
|---|
| 135 |  .  S FROM(1)=$P(USER,"@"),ADDR(1)=$P(USER,"@",2)
 | 
|---|
| 136 |  .  QUIT:FROM'[FROM(1)  ;-> License NAME not in XMFROM
 | 
|---|
| 137 |  .  QUIT:ADDR'[ADDR(1)  ;-> License ADDR not in XMFROM
 | 
|---|
| 138 |  .  S OK=1
 | 
|---|
| 139 |  Q $S(OK:1,1:"")
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 | REFUSE(REA) ; Send refusal email back to remote requester...
 | 
|---|
| 142 |  ; XMFROM,XTMP -- req
 | 
|---|
| 143 |  N HOLD,NO,TEXT,XMDUZ,XMSUB,XMTEXT
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 |  D RECXTMP("Refused ("_REA_")  Request# "_$G(XMZ)_"  from "_$G(XMFROM))
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  N XMZ
 | 
|---|
| 148 |  S XMDUZ=.5,XMSUB="HL7 Remote Request Refusal: "_$G(XMFROM)
 | 
|---|
| 149 |  S XMTEXT="HOLD("
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  D MAILADD("The following remote request for VistA HL7 data has been refused.")
 | 
|---|
| 152 |  D MAILADD("Details are included below."),MAILADD("")
 | 
|---|
| 153 |  D MAILADD("              Requester: "_$G(XMFROM))
 | 
|---|
| 154 |  D MAILADD("               Message#: "_$G(OXMZ))
 | 
|---|
| 155 |  D MAILADD("                 Reason: "_REA)
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 |  S XMY("HL7SystemMonitoring@med.va.gov")=""
 | 
|---|
| 158 |  I $G(XMFROM)]"" S XMY(XMFROM)=""
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 |  D ^XMD
 | 
|---|
| 161 |  ;
 | 
|---|
| 162 |  QUIT
 | 
|---|
| 163 |  ;
 | 
|---|
| 164 | MAILADD(T) S NO=$O(HOLD(":"),-1)+1,HOLD(NO)=T
 | 
|---|
| 165 |  Q
 | 
|---|
| 166 |  ;
 | 
|---|
| 167 | RECXTMP(TXT) ; Record in ^XTMP for remote requests...
 | 
|---|
| 168 |  ; XTMP -- req
 | 
|---|
| 169 |  S NO=$O(^XTMP(XTMP,"REQ",":"),-1)+1
 | 
|---|
| 170 |  S ^XTMP(XTMP,"REQ",+NO)=TXT
 | 
|---|
| 171 |  Q
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 | EOR ;HLEVSRV4 - Event Monitor SERVER ;5/16/03 14:42
 | 
|---|