| 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 | 
|---|