| [1442] | 1 | C0PTEST   ; ERX/GPL - eRx Refill utilities ; 3/19/10 11:53am
 | 
|---|
 | 2 |         ;;0.1;C0P;nopatch;noreleasedate;Build 26
 | 
|---|
 | 3 |         ;Copyright 2009,2010 George Lilly.  Licensed under the terms of the GNU
 | 
|---|
 | 4 |         ;General Public License See attached copy of the License.
 | 
|---|
 | 5 |         ;
 | 
|---|
 | 6 |         ;This program is free software; you can redistribute it and/or modify
 | 
|---|
 | 7 |         ;it under the terms of the GNU General Public License as published by
 | 
|---|
 | 8 |         ;the Free Software Foundation; either version 2 of the License, or
 | 
|---|
 | 9 |         ;(at your option) any later version.
 | 
|---|
 | 10 |         ;
 | 
|---|
 | 11 |         ;This program is distributed in the hope that it will be useful,
 | 
|---|
 | 12 |         ;but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|---|
 | 13 |         ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|---|
 | 14 |         ;GNU General Public License for more details.
 | 
|---|
 | 15 |         ;
 | 
|---|
 | 16 |         ;You should have received a copy of the GNU General Public License along
 | 
|---|
 | 17 |         ;with this program; if not, write to the Free Software Foundation, Inc.,
 | 
|---|
 | 18 |         ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
|---|
 | 19 |         ;
 | 
|---|
 | 20 |         Q
 | 
|---|
 | 21 |         ;
 | 
|---|
 | 22 | TESTMEDS        ; PRINT OUT MEDICATIONS FOR INPATIENTS WITH MEDS BUT NO INPATIENT
 | 
|---|
 | 23 |         ; MEDS
 | 
|---|
 | 24 |         S ZI=""
 | 
|---|
 | 25 |         D BUILD^C0QPRML
 | 
|---|
 | 26 |         S GNEW=$NA(C0QLIST("NoMedOrders"))
 | 
|---|
 | 27 |         S GOLD=$NA(C0QLIST("HasMed"))
 | 
|---|
 | 28 |         K G
 | 
|---|
 | 29 |         D UNITY^C0QSET("G",GNEW,GOLD)
 | 
|---|
 | 30 |         F  S ZI=$O(G(1,ZI)) Q:ZI=""  D  ; FOR EACH PATIENT IN BOTH LISTS
 | 
|---|
 | 31 |         . K GG
 | 
|---|
 | 32 |         . D COVER^ORWPS(.GG,ZI) ; GET MED LIST
 | 
|---|
 | 33 |         . W !,"PATIENT: ",ZI,!
 | 
|---|
 | 34 |         . ZWR GG
 | 
|---|
 | 35 |         Q
 | 
|---|
 | 36 |         ;
 | 
|---|
 | 37 | TESTREQ(ZDUZ,ZDFN)      ; TEST REFILL REQUEST
 | 
|---|
 | 38 |         I '$D(ZDFN) S ZDFN=""
 | 
|---|
 | 39 |         D REFREQ("ZG",ZDUZ,ZDFN)
 | 
|---|
 | 40 |         W !
 | 
|---|
 | 41 |         ZWR C0PRXML
 | 
|---|
 | 42 |         Q
 | 
|---|
 | 43 |         ;
 | 
|---|
 | 44 | REFREQ(GRTN,IDUZ,IDFN)  ; MAKE A WEB SERVICE CALL TO GENERATE A REFIL REQUEST
 | 
|---|
 | 45 |         ; 
 | 
|---|
 | 46 |         N GPL,C0PFARY,GVOR
 | 
|---|
 | 47 |         D ENCREQ("GPL",IDUZ,IDFN)
 | 
|---|
 | 48 |         S GVOR("XMLIN")=GPL
 | 
|---|
 | 49 |         S GVOR("ORIG-FILL-DATE")=""
 | 
|---|
 | 50 |         S GVOR("CREATE-MED-YN")="0"
 | 
|---|
 | 51 |         ;D EN^C0PMAIN("GG","GURL",IDUZ,IDFN,"GENREFILL","GVOR")
 | 
|---|
 | 52 |         D INITXPF^C0PWS2("C0PFARY")
 | 
|---|
 | 53 |         D SOAP^C0PWS2("GRTN","GENREFILL",IDUZ,IDFN,"GVOR")
 | 
|---|
 | 54 |         ;D SOAP^C0CSOAP("GRTN","GENREFILL",,,"GG","C0PFARY") ;
 | 
|---|
 | 55 |         Q
 | 
|---|
 | 56 |         ;
 | 
|---|
 | 57 | GG1     ; IDENTIFY ORPHAN NODES IN ^PS(55,DFN,"NVA",
 | 
|---|
 | 58 |         S ZI="" S BAD="" S ZN=0
 | 
|---|
 | 59 |         F  S ZI=$O(^PS(55,ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 60 |         . S ZJ=""
 | 
|---|
 | 61 |         . F  S ZJ=$O(^PS(55,ZI,"NVA",ZJ)) Q:ZJ=""  D  ; FOR EACH NVA DRUG
 | 
|---|
 | 62 |         . . I $D(^PS(55,ZI,"NVA",ZJ,1,7,0)) D  ; IF THE CODES NODE EXISTS
 | 
|---|
 | 63 |         . . . I '$D(^PS(55,ZI,"NVA",ZJ,1,0)) D  ; I NO ZERO NODE
 | 
|---|
 | 64 |         . . . . S BAD(ZI,ZJ)=""
 | 
|---|
 | 65 |         . . . . S ZN=ZN+1
 | 
|---|
 | 66 |         K ^G
 | 
|---|
 | 67 |         M ^G("BAD")=BAD
 | 
|---|
 | 68 |         ZWR BAD
 | 
|---|
 | 69 |         W !,"BAD COUNT: ",ZN
 | 
|---|
 | 70 |         Q
 | 
|---|
 | 71 |         ;
 | 
|---|
 | 72 | GG2     ; DISPLAY THE BAD NODES
 | 
|---|
 | 73 |         S ZI=""
 | 
|---|
 | 74 |         F  S ZI=$O(^G("BAD",ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 75 |         . S ZJ=""
 | 
|---|
 | 76 |         . F  S ZJ=$O(^G("BAD",ZI,ZJ)) Q:ZJ=""  D  ;
 | 
|---|
 | 77 |         . . W !,^PS(55,ZI,"NVA",ZJ,1,7,0)
 | 
|---|
 | 78 |         . . I $D(^PS(55,ZI,"NVA",ZJ,1,0)) W !,"ERROR, DRUG EXISTS!"
 | 
|---|
 | 79 |         Q
 | 
|---|
 | 80 |         ;
 | 
|---|
 | 81 | GGKILL  ; KILL THE BAD NODES
 | 
|---|
 | 82 |         S ZI=""
 | 
|---|
 | 83 |         F  S ZI=$O(^G("BAD",ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 84 |         . S ZJ=""
 | 
|---|
 | 85 |         . F  S ZJ=$O(^G("BAD",ZI,ZJ)) Q:ZJ=""  D  ;
 | 
|---|
 | 86 |         . . W !,^PS(55,ZI,"NVA",ZJ,1,7,0)
 | 
|---|
 | 87 |         . . I $D(^PS(55,ZI,"NVA",ZJ,1,0)) D  Q  ;
 | 
|---|
 | 88 |         . . . W !,"    ERROR, DRUG EXISTS!"
 | 
|---|
 | 89 |         . . . W !,"    NODE NOT KILLED, PLEASE REVIEW"
 | 
|---|
 | 90 |         . . K ^PS(55,ZI,"NVA",ZJ,1,7,0)
 | 
|---|
 | 91 |         . . W !,"     BAD NODE KILLED"
 | 
|---|
 | 92 |         Q
 | 
|---|
 | 93 |         ;
 | 
|---|
 | 94 | GTEST   ; TESTING RENEWAL PROCESSING
 | 
|---|
 | 95 |         K G
 | 
|---|
 | 96 |         D SOAP^C0PWS2("G","REFILLS",135,961)
 | 
|---|
 | 97 |         S ZI=""
 | 
|---|
 | 98 |         F  S ZI=$O(G(ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 99 |         . S ZG=G(ZI,"RenewalRequestGuid")
 | 
|---|
 | 100 |         . I ZG="" W !,"ERROR NULL GUID"
 | 
|---|
 | 101 |         . S ZT=$O(^TMP("C0E","INDEX",ZG,""))
 | 
|---|
 | 102 |         . I ZT'="" D  ; HAVE A TOKEN
 | 
|---|
 | 103 |         . . S ZM1=G(ZI,"DrugInfo")
 | 
|---|
 | 104 |         . . S ZM2=^TMP("C0E","TOKEN",ZT,"renewalToken")
 | 
|---|
 | 105 |         . . S ZM3=^TMP("C0E","TOKEN",ZT,"medication")
 | 
|---|
 | 106 |         . . W !,!,"GUID:",ZG,!," TOKEN: ",ZT
 | 
|---|
 | 107 |         . . W !,"DRUG1: ",ZM1,!," DRUG2: ",ZM2,!," DRUG3: ",ZM3
 | 
|---|
 | 108 |         . . ;ZWR ^TMP("C0E","TOKEN",ZT,*)
 | 
|---|
 | 109 |         Q
 | 
|---|
 | 110 |         ;
 | 
|---|
 | 111 | GTEST2  ; SECOND TEST - FINDING INCONSISTANCIES IN RENEWAL ALERTS
 | 
|---|
 | 112 |         S ZI=""
 | 
|---|
 | 113 |         S ZN=0
 | 
|---|
 | 114 |         S ZTMP=$NA(^TMP("C0E","TOKEN"))
 | 
|---|
 | 115 |         F  S ZI=$O(@ZTMP@(ZI)) Q:ZI=""  D  ; FOR EACH TOKEN
 | 
|---|
 | 116 |         . I @ZTMP@(ZI,"C0PRenewalName")["request for" D  ; MED WHERE NAME SHOULD BE
 | 
|---|
 | 117 |         . . W !,!,"TOKEN:",ZI
 | 
|---|
 | 118 |         . . W !,"GUID:",@ZTMP@(ZI,"C0PGuid")
 | 
|---|
 | 119 |         . . W !,@ZTMP@(ZI,"C0PRenewalName")
 | 
|---|
 | 120 |         . . W !,@ZTMP@(ZI,"medication")
 | 
|---|
 | 121 |         . . W !,@ZTMP@(ZI,"renewalToken")
 | 
|---|
 | 122 |         . . S ISTR=@ZTMP@(ZI,"renewalToken")
 | 
|---|
 | 123 |         . . S IDUZ=@ZTMP@(ZI,"IDUZ")
 | 
|---|
 | 124 |         . . S ZALRT=$P(ISTR,";",3) ; RENEWAL TOKEN
 | 
|---|
 | 125 |         . . S ^G2(IDUZ,ZALRT,ISTR)=""
 | 
|---|
 | 126 |         . . S ZN=ZN+1
 | 
|---|
 | 127 |         W !,!,"NUMBER OF TOKENS:",ZN
 | 
|---|
 | 128 |         Q
 | 
|---|
 | 129 |         ;
 | 
|---|
 | 130 | GTEST3  ; USE ^G2 TO TRY AND FIND THE ALERTS
 | 
|---|
 | 131 |         ;
 | 
|---|
 | 132 |         S ZDUZ=""
 | 
|---|
 | 133 |         F  S ZDUZ=$O(^G2(ZDUZ)) Q:ZDUZ=""  D  ;
 | 
|---|
 | 134 |         . S ZALRT=""
 | 
|---|
 | 135 |         . F  S ZALRT=$O(^G2(ZDUZ,ZALRT)) Q:ZALRT=""  D  ; 
 | 
|---|
 | 136 |         . . W !,!,ZALRT
 | 
|---|
 | 137 |         . . W !,$G(^XTV(8992,ZDUZ,"XQA",ZALRT,0))
 | 
|---|
 | 138 |         . . S NXTALRT=$O(^XTV(8992,ZDUZ,"XQA",ZALRT)) ; NEXT ALERT
 | 
|---|
 | 139 |         . . W !,"NEXT:",NXTALRT
 | 
|---|
 | 140 |         . . I NXTALRT'="" W !,$G(^XTV(8992,ZDUZ,"XQA",NXTALRT,0))
 | 
|---|
 | 141 |         Q
 | 
|---|
 | 142 |         ;
 | 
|---|
 | 143 | GINDEX  ; INDEX THE ^TMP("C0E","TOKEN") ARRAY BY GUID
 | 
|---|
 | 144 |         S ZI=""
 | 
|---|
 | 145 |         S ZN=0
 | 
|---|
 | 146 |         F  S ZI=$O(^TMP("C0E","TOKEN",ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 147 |         . S ZG=^TMP("C0E","TOKEN",ZI,"C0PGuid")
 | 
|---|
 | 148 |         . S ^TMP("C0E","INDEX",ZG,ZI)=""
 | 
|---|
 | 149 |         . S ZN=ZN+1
 | 
|---|
 | 150 |         W !,"NUMBER OF TOKENS: ",ZN
 | 
|---|
 | 151 |         Q
 | 
|---|
 | 152 |         ;
 | 
|---|
 | 153 | ENCREQ(ZRTN,ZDUZ,ZDFN)  ; ENCODE AN NCSCRIPT RENEWAL REQUEST
 | 
|---|
 | 154 |         ;
 | 
|---|
 | 155 |         D GENTEST("GPL","GURL",ZDUZ,ZDFN,1)
 | 
|---|
 | 156 |         ;S ZI=""
 | 
|---|
 | 157 |         ;S GPL(1)="RxInput="_GPL(1)
 | 
|---|
 | 158 |         S ZI=0 ; 
 | 
|---|
 | 159 |         ;F  S ZI=$O(GPL(ZI)) Q:ZI=""  D  ; MAKE IT XML SAFE
 | 
|---|
 | 160 |         ;. S GPL(ZI)=$$SYMENC^MXMLUTL(GPL(ZI))
 | 
|---|
 | 161 |         ;. W !,GPL(ZI)
 | 
|---|
 | 162 |         S ZI=0
 | 
|---|
 | 163 |         S G=""
 | 
|---|
 | 164 |         K GPL(0) ; GET RID OF LINE COUNT
 | 
|---|
 | 165 |         F  S ZI=$O(GPL(ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 166 |         . S G=G_GPL(ZI)
 | 
|---|
 | 167 |         S @ZRTN=$$ENCODE^RGUTUU(G)
 | 
|---|
 | 168 |         ;S @ZRTN=G
 | 
|---|
 | 169 |         Q
 | 
|---|
 | 170 |         ;
 | 
|---|
 | 171 | CERTTEST        ; GENERATE XML FILES FOR NEWCROP CERTIFICATION
 | 
|---|
 | 172 |         ;
 | 
|---|
 | 173 |         N ZII
 | 
|---|
 | 174 |         S ZDFN=18 ; TEST PATIENT TO USE
 | 
|---|
 | 175 |         F ZII=154,155,156,157 D  ; IENS OF SUBSCRIBER PROFILES
 | 
|---|
 | 176 |         . D CERTONE(ZII,ZDFN)
 | 
|---|
 | 177 |         Q
 | 
|---|
 | 178 |         ;
 | 
|---|
 | 179 | CERTONE(ZI,ZDFN)        ; GENERATE ONE XML FILE 
 | 
|---|
 | 180 |         N ZN
 | 
|---|
 | 181 |         D EN^C0PMAIN("C0PG1","G2",ZI,ZDFN) ; GET THE NCSCRIPT
 | 
|---|
 | 182 |         S ZN=$P($P(^VA(200,ZI,0),U,1),",",2) ; GIVEN NAME OF USER
 | 
|---|
 | 183 |         ; ON OUR SYSTEM THESE ARE ERX,DOCTOR ERX,MID-LEVEL ERX,NURSE AND ERX,MANAGER
 | 
|---|
 | 184 |         S ZN=ZN_".xml" ; APPEND .xml extension
 | 
|---|
 | 185 |         K C0PG1(0)
 | 
|---|
 | 186 |         S ZDIR=^TMP("C0CCCR","ODIR")
 | 
|---|
 | 187 |         W !,$$OUTPUT^C0CXPATH("C0PG1(1)",ZN,ZDIR)
 | 
|---|
 | 188 |         Q
 | 
|---|
 | 189 |         ;
 | 
|---|
 | 190 | GENTEST(RTNXML,RTNURL,ZDUZ,ZDFN,ZFILE)  ; GENERATE A TEST 
 | 
|---|
 | 191 |         ; CLICK-THROUGH HTLM FILE FOR
 | 
|---|
 | 192 |         ; GENERATING REFILL REQUESTS , XML IS RETURNED IN RTN,PASSED BY NAME
 | 
|---|
 | 193 |         ; IF ZFILE IS 1, THE FILE IS WRITTEN TO HOST FILE
 | 
|---|
 | 194 |         D EN^C0PMAIN("C0PG1","G2",ZDUZ,ZDFN) ; GET THE NCSCRIPT
 | 
|---|
 | 195 |         ;D GETMEDS("G6",ZDFN) ;GET MEDICATIONS
 | 
|---|
 | 196 |         ;D QUERY^C0CXPATH("G6","//NewPrescription[1]","G7") ;JUST THE FIRST ONE
 | 
|---|
 | 197 |         ;D INSERT^C0CXPATH("C0PG1","G7","//NCScript")
 | 
|---|
 | 198 |         K C0PG1(0)
 | 
|---|
 | 199 |         M @RTNXML=C0PG1 ;
 | 
|---|
 | 200 |         S ZDIR=^TMP("C0CCCR","ODIR")
 | 
|---|
 | 201 |         I $G(ZFILE)=1 W $$OUTPUT^C0CXPATH("C0PG1(1)","REFILL-"_ZDFN_".xml",ZDIR)
 | 
|---|
 | 202 |         Q
 | 
|---|
 | 203 |         ;
 | 
|---|
 | 204 | GETMEDS(OUTARY,ZDFN)    ; GET THE PATIENT'S MEDS AND PUT INTO XML
 | 
|---|
 | 205 |         ;
 | 
|---|
 | 206 |         N ZG,ZG2,ZB,ZN
 | 
|---|
 | 207 |         S DEBUG=0
 | 
|---|
 | 208 |         D GETTEMP^C0PWS2("ZG","OUTMEDS") ;GET THE MEDICATIONS TEMPLATE
 | 
|---|
 | 209 |         D SOAP^C0PWS2("ZG2","GETMEDS",$$PRIMARY^C0PMAIN(),ZDFN) ; GET MEDS 
 | 
|---|
 | 210 |         I '$D(ZG2) Q  ; SHOULDN'T HAPPEN
 | 
|---|
 | 211 |         I ZG2(1,"Status")'="OK" D  Q  ; BAD RETURN FROM WEB SERVER
 | 
|---|
 | 212 |         . W $G(ZG2(1,"Message")),!
 | 
|---|
 | 213 |         N ZI S ZI=""
 | 
|---|
 | 214 |         S ZN=$NA(^TMP("C0PREFIL",$J))
 | 
|---|
 | 215 |         K @ZN
 | 
|---|
 | 216 |         F  S ZI=$O(ZG2(ZI)) Q:ZI=""  D  ; FOR EACH MED
 | 
|---|
 | 217 |         . N ZV
 | 
|---|
 | 218 |         . S ZV=$NA(@ZN@("DATA",ZI))
 | 
|---|
 | 219 |         . S ZX=$NA(@ZN@("XML",ZI))
 | 
|---|
 | 220 |         . S @ZV@("dispenseNumber")=$G(ZG2(ZI,"Dispense"))
 | 
|---|
 | 221 |         . S @ZV@("dosage")="Take "_$G(ZG2(ZI,"DosageNumberDescription"))_" "_$G(ZG2(ZI,"Route"))_" "_$G(ZG2(ZI,"DosageFrequencyDescription"))
 | 
|---|
 | 222 |         . S @ZV@("drugIdentifier")=ZG2(ZI,"DrugID")
 | 
|---|
 | 223 |         . S @ZV@("drugIdentifierType")="FDB"
 | 
|---|
 | 224 |         . S @ZV@("pharmacistMessage")="No childproof caps please"
 | 
|---|
 | 225 |         . S @ZV@("pharmacyIdentifier")=1231212
 | 
|---|
 | 226 |         . S @ZV@("refillCount")=ZG2(ZI,"Refills")
 | 
|---|
 | 227 |         . S @ZV@("substitution")="SubstitutionAllowed"
 | 
|---|
 | 228 |         . D MAP^C0CXPATH("ZG",ZV,ZX)
 | 
|---|
 | 229 |         . D QUEUE^C0CXPATH("ZB",ZX,2,$O(@ZX@(""),-1))
 | 
|---|
 | 230 |         D BUILD^C0CXPATH("ZB",OUTARY)
 | 
|---|
 | 231 |         K @ZN ;CLEAN UP
 | 
|---|
 | 232 |         Q
 | 
|---|
 | 233 |         ;
 | 
|---|
 | 234 |         ;B
 | 
|---|
 | 235 |         ;
 | 
|---|
 | 236 |         ;D GET^C0PCUR(.ZG2,ZDFN) ; GET THE MEDS FOR THIS PATIENT
 | 
|---|
 | 237 |         ;D EXTRACT^C0CALERT("ZG",ZDFN,"ZG2","ALGYCBK^C0PALGY3(ALTVMAP,A1)")
 | 
|---|
 | 238 |         S ZN=$O(ZR(""),-1) ;NUMBER OF LINES IN OUTPUT
 | 
|---|
 | 239 |         D QUEUE^C0CXPATH("ZB","ZG2",2,ZN-1)
 | 
|---|
 | 240 |         D BUILD^C0CXPATH("ZB",OUTARY)
 | 
|---|
 | 241 |         Q
 | 
|---|
 | 242 |         ; 
 | 
|---|
 | 243 | RGUIDS(ZARY,ZDUZ)       ; RETURNS AN ARRAY OF ALL REFILL REQUEST GUIDS FOR 
 | 
|---|
 | 244 |         ; DUZ ZDUZ. ZARY IS PASSED BY NAME
 | 
|---|
 | 245 |         ; FORMAT IS @ZARY@("GUID")=IEN
 | 
|---|
 | 246 |         ; THIS ROUTINE IS REUSED FOR THE STATUS ROUTINE - INCOMPLETE ORDERS
 | 
|---|
 | 247 |         N ZI,ZJ,ZK,ZL,ZM,ZN
 | 
|---|
 | 248 |         S ZI=0
 | 
|---|
 | 249 |         ;F  S ZI=$O(^XTV(8992.1,"R",ZDUZ,ZI)) Q:ZI=""  D  ; ALL ALERT FOR DUZ
 | 
|---|
 | 250 |         F  S ZI=$O(^XTV(8992,ZDUZ,"XQA",ZI)) Q:ZI=""  D  ; USE XQA MULTIPLE
 | 
|---|
 | 251 |         . S ZL=^XTV(8992,ZDUZ,"XQA",ZI,0) ; 
 | 
|---|
 | 252 |         . S ZM=$P(ZL,U,2) ; RECORD ID
 | 
|---|
 | 253 |         . S ZN=$O(^XTV(8992.1,"B",ZM,"")) ;IEN OF ALERT TRACKING RECORD
 | 
|---|
 | 254 |         . S ZK=$$GET1^DIQ(8992.1,ZN_",",.03)
 | 
|---|
 | 255 |         . I ZK'["OR,1130" Q  ; NOT OUR PACKAGE - ALL ERX ALERTS START WITH 1130
 | 
|---|
 | 256 |         . ; 11305 IS FOR REFILLS
 | 
|---|
 | 257 |         . ; 11306 IS FOR INCOMPLETE ORDERS
 | 
|---|
 | 258 |         . S ZJ=""
 | 
|---|
 | 259 |         . S ZJ=$$GET1^DIQ(8992.1,ZN_",",2)
 | 
|---|
 | 260 |         . I ZJ="" Q
 | 
|---|
 | 261 |         . ; FOR RENEWALS (11305) NEED TO PULL THE GUID OUT - IT IS THE FIRST PIECE
 | 
|---|
 | 262 |         . ; OTHERWISE USE THE ENTIRE STRING. FOR INCOMPLETE ORDERS THIS WILL
 | 
|---|
 | 263 |         . ; INCLUDE THE MED AND PRESCRIPTION DATE
 | 
|---|
 | 264 |         . I ZK["OR,11305" S ZJ=$P(ZJ,"^",1) ; FIRST PIECE IS THE GUILD GUID^DOB^SEX
 | 
|---|
 | 265 |         . S @ZARY@(ZJ)=ZN
 | 
|---|
 | 266 |         Q
 | 
|---|
 | 267 |         ;
 | 
|---|
 | 268 | EN      ; BATCH ENTRY POINT FOR REFILL (RENEWAL) STATUS AND FAILEDFAX CHECKING
 | 
|---|
 | 269 |         D REFILL
 | 
|---|
 | 270 |         K ZRSLT
 | 
|---|
 | 271 |         ;D STATUS ; ALSO RUN CHECK FOR INCOMPLETE ORDERS
 | 
|---|
 | 272 |         D FAILFAX ; ALSO RUN CHECK FOR FAILED FAXES
 | 
|---|
 | 273 |         Q
 | 
|---|
 | 274 |         ;
 | 
|---|
 | 275 | REFILL  ; PULL REFILL REQUESTS AND POST ALERTS
 | 
|---|
 | 276 |         ;
 | 
|---|
 | 277 |         N ZDUZ ; USER NUMBER UNDER WHICH WE BUILD THE WEB SERVICE CALL
 | 
|---|
 | 278 |         N ZDFN ; PATIENT NUMBER USED TO BUILD THE WEB SERVICE CALL
 | 
|---|
 | 279 |         S ZDUZ=$$PRIMARY^C0PMAIN() ; PRIMARY ERX USER FOR BATCH CALLS
 | 
|---|
 | 280 |         ;S ZDUZ=DUZ ; SHOULD CHANGE THIS FOR PRODUCTION TO A "BATCH" USER
 | 
|---|
 | 281 |         S ZDFN="" ; NO PATIENT NEEDED FOR THESE CALLS
 | 
|---|
 | 282 |         ; S ZDFN=18 ; SHOULD NOT NEED THIS BE MAKE THE CALL - FIX IN EN^C0PMAIN
 | 
|---|
 | 283 |         N ZRSLT
 | 
|---|
 | 284 |         D SOAP^C0PWS2("ZRSLT","REFILLS",ZDUZ,ZDFN) ; WS CALL TO RETURN REFILS
 | 
|---|
 | 285 |         ;S XXX=YYY  ;
 | 
|---|
 | 286 |         I $G(ZRSLT(1,"Status"))'="OK" Q  ; NO ROWS WERE RETURNED
 | 
|---|
 | 287 |         I $G(ZRSLT(1,"RowCount"))=0 Q  ; NO ROWS WERE RETURNED
 | 
|---|
 | 288 |         D NOTIPURG^XQALBUTL(11305) ; DELETE ALL CURRENT REFILL ALERTS
 | 
|---|
 | 289 |         S C0PNPIF=$$GET1^DIQ(C0PAF,C0PACCT_",",8,"I") ; LEGACY FLAG TO USE NPI FOR SID
 | 
|---|
 | 290 |         N ZI S ZI=0
 | 
|---|
 | 291 |         N ZAPACK S ZAPACK="OR" ; ALERT PACKAGE CODE
 | 
|---|
 | 292 |         N ZADFN S ZADFN=0 ; DFN TO ASSOCIATE ALERT WITH - WE DON'T KNOW THIS
 | 
|---|
 | 293 |         N ZACODE S ZACODE=11305 ; IEN TO OE/RR NOTIFICATIONS file for eRx Refills
 | 
|---|
 | 294 |         F  S ZI=$O(ZRSLT(ZI)) Q:+ZI=0  D  ; FOR EACH RETURNED REFILL REQUEST
 | 
|---|
 | 295 |         . N ZSID S ZSID=ZRSLT(ZI,"ExternalDoctorId") ; NPI FOR SUBSCRIBER
 | 
|---|
 | 296 |         . I C0PNPIF'=1 S ZDUZ=$O(^VA(200,"AC0PSID",ZSID,"")) ; GUID SID
 | 
|---|
 | 297 |         . E  S ZDUZ=$O(^VA(200,"C0PNPI",ZSID,"")) ; DUZ FOR SUBSCRIBER
 | 
|---|
 | 298 |         . S ZRSLT("DUZ",ZDUZ,ZI)=""
 | 
|---|
 | 299 |         N ZJ S ZJ=""
 | 
|---|
 | 300 |         F  S ZJ=$O(ZRSLT("DUZ",ZJ)) Q:ZJ=""  D  ; FOR EACH PROVIDER
 | 
|---|
 | 301 |         . N ZGUIDS
 | 
|---|
 | 302 |         . D RGUIDS("ZGUIDS",ZJ) ; GET ARRAY OF CURRENT ACTIVE GUIDS
 | 
|---|
 | 303 |         . S ZI=""
 | 
|---|
 | 304 |         . F  S ZI=$O(ZRSLT("DUZ",ZJ,ZI)) Q:ZI=""  D  ; FOR EACH REQUEST
 | 
|---|
 | 305 |         . . N ZRRG S ZRRG=ZRSLT(ZI,"RenewalRequestGuid") ;renewal request number
 | 
|---|
 | 306 |         . . I $D(ZGUIDS(ZRRG)) D  Q  ; THIS REQUEST IS A DUPLICATE, SKIP IT 
 | 
|---|
 | 307 |         . . . W ZRRG_" IS A DUP",!
 | 
|---|
 | 308 |         . . N ZDATE S ZDATE=$P(ZRSLT(ZI,"ReceivedTimestamp")," ",1) ;DATE RECEIVED
 | 
|---|
 | 309 |         . . I $G(^TMP("C0P","TestNoMatch"))=1 D  ;
 | 
|---|
 | 310 |         . . . S ZRSLT(ZI,"PatientMiddleName")="XXX" ;TESTING NO MATCH  REMOVE ME
 | 
|---|
 | 311 |         . . ;I DUZ=135 S ZRSLT(ZI,"PatientMiddleName")="Uta" ;TESTING NO MATCH REMOVE
 | 
|---|
 | 312 |         . . N ZPAT S ZPAT=$G(ZRSLT(ZI,"PatientLastName"))_","_$G(ZRSLT(ZI,"PatientFirstName")) ; PATIENT NAME LAST,FIRST
 | 
|---|
 | 313 |         . . I $G(ZRSLT(ZI,"PatientMiddleName"))'="" S ZPAT=ZPAT_" "_$G(ZRSLT(ZI,"PatientMiddleName"))
 | 
|---|
 | 314 |         . . S ZDOB=$G(ZRSLT(ZI,"PatientDOB")) ;patient date of birth
 | 
|---|
 | 315 |         . . S ZSEX=$G(ZRSLT(ZI,"PatientGender")) ;patient gender
 | 
|---|
 | 316 |         . . S ZADFN=$$PATMAT(ZPAT,ZDOB,ZSEX) ; TRY AND MATCH THE PATIENT
 | 
|---|
 | 317 |         . . ;W "DFN="_ZADFN," ",ZI,!
 | 
|---|
 | 318 |         . . N ZXQAID S ZXQAID=ZAPACK_","_ZADFN_","_ZACODE ; FORMAT FOR P1 OF XQAID
 | 
|---|
 | 319 |         . . N ZMED S ZMED=ZRSLT(ZI,"DrugInfo")
 | 
|---|
 | 320 |         . . ;S XQA(ZDUZ)="" ; WHO TO SEND THE ALERT TO
 | 
|---|
 | 321 |         . . I '$D(^TMP("C0P","AlertVerify")) S XQA(ZJ)="" ; WHO TO SEND THE ALERT TO
 | 
|---|
 | 322 |         . . E  D  ; AlertVerify sends alerts only to testers, not recipients
 | 
|---|
 | 323 |         . . . ; use this when installing eRx to verify ewd installation
 | 
|---|
 | 324 |         . . . N ZZZ S ZZZ=""
 | 
|---|
 | 325 |         . . . F  S ZZZ=$O(^TMP("C0P","AlertVerify",ZZZ)) Q:ZZZ=""  D  ; WHICH DUZ 
 | 
|---|
 | 326 |         . . . . S XQA(ZZZ)="" ; MARK THIS USER TO RECIEVE ALERTS
 | 
|---|
 | 327 |         . . ;S XQA(135)="" ; ALWAYS SEND TO GPL
 | 
|---|
 | 328 |         . . ;S XQA(148)="" ; ALWAYS SEND TO RICH
 | 
|---|
 | 329 |         . . N ZP6 ; STRING THAT CPRS WILL RETURN FOR MATCHING 
 | 
|---|
 | 330 |         . . I ZADFN=0 D  ; NO MATCH
 | 
|---|
 | 331 |         . . . S XQAMSG="no match: ): [eRx] "_ZPAT_" Renewal request for "_ZMED
 | 
|---|
 | 332 |         . . . S ZP6=ZPAT_" Renewal request for "_ZMED
 | 
|---|
 | 333 |         . . E  D  ;
 | 
|---|
 | 334 |         . . . S XQAMSG=ZPAT_": ): [eRx] Renewal request for "_ZMED
 | 
|---|
 | 335 |         . . . S ZP6="Renewal request for "_ZMED
 | 
|---|
 | 336 |         . . ;S XQAMSG=$E(XQAMSG,1,70) ; TRUNCATE TO 70 CHARS
 | 
|---|
 | 337 |         . . S XQAID=ZXQAID ; PACKAGE IDENTIFIER 
 | 
|---|
 | 338 |         . . ;S XQADATA=ZRRG ; THE GUID OF THE REQUEST. NEEDED TO PROCESS THE ALERT
 | 
|---|
 | 339 |         . . S XQADATA=ZRRG_"^"_ZDOB_"^"_ZSEX ; SAVE DOB AND SEX WITH GUID
 | 
|---|
 | 340 |         . . W "SENDING",XQAID_" "_XQADATA,!
 | 
|---|
 | 341 |         . . D SETUP^XQALERT ; MAKE THE CALL TO SET THE ALERT
 | 
|---|
 | 342 |         K ZRSLT
 | 
|---|
 | 343 |         ;D STATUS ; ALSO RUN CHECK FOR INCOMPLETE ORDERS
 | 
|---|
 | 344 |         ;D FAILFAX ; ALSO RUN CHECK FOR FAILED FAXES
 | 
|---|
 | 345 |         Q
 | 
|---|
 | 346 |         ;
 | 
|---|
 | 347 | PATMAT(ZNAME,INDOB,INSEX)       ;EXTRINSIC TO TRY AND MATCH THE PATIENT 
 | 
|---|
 | 348 |         ; RETURNS ZERO IF NO EXACT MATCH IS FOUND
 | 
|---|
 | 349 |         N ZP
 | 
|---|
 | 350 |         S ZP=$O(^DPT("B",ZNAME,""))
 | 
|---|
 | 351 |         I ZP="" Q 0 ; EXACT MATCH NOT FOUND ON NAME
 | 
|---|
 | 352 |         ; CHECK DATE OF BIRTH
 | 
|---|
 | 353 |         ;W "CHECKING DATE OF BIRTH",!
 | 
|---|
 | 354 |         N DOB
 | 
|---|
 | 355 |         S DOB=$$GET1^DIQ(2,ZP_",",.03,"I") ; PATIENT'S DATE OF BIRTH IN VISTA
 | 
|---|
 | 356 |         N ZD ;INCOMING DATE OF BIRTH IS IN YYYYMMDD FORMAT
 | 
|---|
 | 357 |         S ZD=($E(INDOB,1,4)-1700)_$E(INDOB,5,8) ; DATE OF BIRTH CONVERTED TO FM FORMAT
 | 
|---|
 | 358 |         ;W ZD_" "_DOB,!
 | 
|---|
 | 359 |         I +ZD'=+DOB Q 0 ; DATE OF BIRTH DOES NOT MATCH
 | 
|---|
 | 360 |         ;
 | 
|---|
 | 361 |         ; CHECK GENDER
 | 
|---|
 | 362 |         ;W "CHECKING GENDER",!
 | 
|---|
 | 363 |         N GENDER
 | 
|---|
 | 364 |         S GENDER=$$GET1^DIQ(2,ZP_",",.02,"I") ; PATIENT'S GENDER IN VISTA
 | 
|---|
 | 365 |         ;W GENDER_INSEX,!
 | 
|---|
 | 366 |         I GENDER'=INSEX Q 0 ;GENDER DOESN'T MATCH
 | 
|---|
 | 367 |         Q ZP
 | 
|---|
 | 368 |         ;
 | 
|---|
 | 369 | STATUS  ; BATCH CALL TO RETRIEVE ERX ACCOUNT STATUS
 | 
|---|
 | 370 |         ; RETURNS UNFINISHED ORDERS FOR ALL PROVIDERS
 | 
|---|
 | 371 |         ; AND SENDS STATUS ALERTS
 | 
|---|
 | 372 |         N VOR
 | 
|---|
 | 373 |         S VOR("STATUS-SECTION-TYPE")="AllDoctorReview"
 | 
|---|
 | 374 |         S VOR("SORT-ORDER")="A"
 | 
|---|
 | 375 |         S VOR("INCLUDE-SCHEMA")="N"
 | 
|---|
 | 376 |         S ZDUZ=$$PRIMARY^C0PMAIN() ; PRIMARY ERX USER FOR BATCH CALLS
 | 
|---|
 | 377 |         K ZRSLT
 | 
|---|
 | 378 |         ; D SOAP^C0PWS1("ZRSLT","STATUS",ZDUZ,"","VOR")
 | 
|---|
 | 379 |         D SOAP^C0PWS2("ZRSLT","STATUS",ZDUZ,"","VOR")
 | 
|---|
 | 380 |         I '$D(ZRSLT) Q  ; SHOULDN'T HAPPEN
 | 
|---|
 | 381 |         I $G(ZRSLT(1,"DrugInfo"))="" Q  ; NO ROWS
 | 
|---|
 | 382 |         S C0PNPIF=$$GET1^DIQ(C0PAF,C0PACCT_",",8,"I") ; LEGACY FLAG TO USE NPI FOR SID
 | 
|---|
 | 383 |         N ZI S ZI=0
 | 
|---|
 | 384 |         N ZAPACK S ZAPACK="OR" ; ALERT PACKAGE CODE
 | 
|---|
 | 385 |         N ZADFN S ZADFN=0 ; DFN TO ASSOCIATE ALERT WITH - WE DON'T KNOW THIS
 | 
|---|
 | 386 |         N ZACODE S ZACODE=11306 ; IEN TO OE/RR NOTIFICATIONS file for eRx incomplete
 | 
|---|
 | 387 |         ; orders
 | 
|---|
 | 388 |         F  S ZI=$O(ZRSLT(ZI)) Q:+ZI=0  D  ; FOR EACH RETURNED REFILL REQUEST
 | 
|---|
 | 389 |         . N ZSID S ZSID=$G(ZRSLT(ZI,"ExternalDoctorId")) ; NPI FOR SUBSCRIBER
 | 
|---|
 | 390 |         . I ZSID="" Q  ; NO EXTERNAL ID FOR THIS STATUS
 | 
|---|
 | 391 |         . I C0PNPIF'=1 S ZDUZ=$O(^VA(200,"AC0PSID",ZSID,"")) ; GUID SID
 | 
|---|
 | 392 |         . E  S ZDUZ=$O(^VA(200,"C0PNPI",ZSID,"")) ; DUZ FOR SUBSCRIBER
 | 
|---|
 | 393 |         . S ZRSLT("DUZ",ZDUZ,ZI)=""
 | 
|---|
 | 394 |         N ZJ S ZJ=""
 | 
|---|
 | 395 |         D RMSTATUS ; REMOVE ALL STATUS ALERTS
 | 
|---|
 | 396 |         F  S ZJ=$O(ZRSLT("DUZ",ZJ)) Q:ZJ=""  D  ; FOR EACH PROVIDER
 | 
|---|
 | 397 |         . N ZGUIDS
 | 
|---|
 | 398 |         . D RGUIDS("ZGUIDS",ZJ) ; GET ARRAY OF CURRENT ACTIVE ALERTS
 | 
|---|
 | 399 |         . S ZI=""
 | 
|---|
 | 400 |         . F  S ZI=$O(ZRSLT("DUZ",ZJ,ZI)) Q:ZI=""  D  ; FOR EACH REQUEST
 | 
|---|
 | 401 |         . . N ZRRG S ZRRG=$G(ZRSLT(ZI,"DrugInfo")) ; first piece of XQDATA
 | 
|---|
 | 402 |         . . S $P(ZRRG,"^",2)=$G(ZRSLT(ZI,"PrescriptionDate")) ; second piece
 | 
|---|
 | 403 |         . . I $D(ZGUIDS(ZRRG)) D  Q  ; THIS REQUEST IS A DUPLICATE, SKIP IT 
 | 
|---|
 | 404 |         . . . ;W ZRRG_" IS A DUP",!
 | 
|---|
 | 405 |         . . I ZRRG="^" D  Q ; THIS IS AN ERROR
 | 
|---|
 | 406 |         . . . B
 | 
|---|
 | 407 |         . . N ZDATE S ZDATE=$P($G(ZRSLT(ZI,"PrescriptionDate"))," ",1) ;
 | 
|---|
 | 408 |         . . N ZPAT S ZPAT=$G(ZRSLT(ZI,"ExternalPatientId")) ; format PATIENTDFN
 | 
|---|
 | 409 |         . . I ZPAT="" Q  ;THIS IS AN ERROR
 | 
|---|
 | 410 |         . . S ZADFN=$P(ZPAT,"PATIENT",2) ; EXTRACT THE DFN
 | 
|---|
 | 411 |         . . S ZPAT=$$GET1^DIQ(2,ZADFN_",",.01) ;PATIENT'S NAME
 | 
|---|
 | 412 |         . . ;W "DFN="_ZADFN," ",ZI,!
 | 
|---|
 | 413 |         . . N ZXQAID S ZXQAID=ZAPACK_","_ZADFN_","_ZACODE ; FORMAT FOR P1 OF XQAID
 | 
|---|
 | 414 |         . . N ZMED S ZMED=ZRSLT(ZI,"DrugInfo")
 | 
|---|
 | 415 |         . . ;S XQA(ZDUZ)="" ; WHO TO SEND THE ALERT TO
 | 
|---|
 | 416 |         . . S XQA(ZJ)="" ; WHO TO SEND THE ALERT TO
 | 
|---|
 | 417 |         . . ;S XQA(135)="" ; ALWAYS SEND TO GPL
 | 
|---|
 | 418 |         . . ;S XQA(148)="" ; ALWAYS SEND TO RICH
 | 
|---|
 | 419 |         . . N ZP6 ; STRING THAT CPRS WILL RETURN FOR MATCHING 
 | 
|---|
 | 420 |         . . I ZADFN=0 D  ; NO MATCH
 | 
|---|
 | 421 |         . . . S XQAMSG="no match: ): [eRx] "_ZPAT_" Incomplete Order for "_ZMED
 | 
|---|
 | 422 |         . . . S ZP6=ZPAT_" Incomplete Order for "_ZMED
 | 
|---|
 | 423 |         . . E  D  ;
 | 
|---|
 | 424 |         . . . S XQAMSG=ZPAT_": ): [eRx] Incomplete Order for "_ZMED
 | 
|---|
 | 425 |         . . . S ZP6="Incomplete Order for "_ZMED
 | 
|---|
 | 426 |         . . ;S XQAMSG=$E(XQAMSG,1,70) ; TRUNCATE TO 70 CHARS
 | 
|---|
 | 427 |         . . S XQAID=ZXQAID ; PACKAGE IDENTIFIER
 | 
|---|
 | 428 |         . . S XQADATA=ZRRG ; THE GUID OF THE REQUEST. NEEDED TO PROCESS THE ALERT
 | 
|---|
 | 429 |         . . D SETUP^XQALERT ; MAKE THE CALL TO SET THE ALERT
 | 
|---|
 | 430 |         Q
 | 
|---|
 | 431 |         ;
 | 
|---|
 | 432 | RMSTATUS        ; DELETES ALL STATUS ALERTS FOR ALL USERS (THEY WILL BE
 | 
|---|
 | 433 |         ; RESTORED NEXT TIME STATUS^C0PREFIL IS RUN - IN ERX BATCH
 | 
|---|
 | 434 |         D NOTIPURG^XQALBUTL(11306) ;
 | 
|---|
 | 435 |         W !,"ALL ERX STATUS ALERTS HAVE BEEN DELETED"
 | 
|---|
 | 436 |         Q
 | 
|---|
 | 437 |         ;
 | 
|---|
 | 438 | FAILFAX ; BATCH CALL TO RETRIEVE ERX FAILED FAX STATUS
 | 
|---|
 | 439 |         ; RETURNS A COUNT OF FAILED FAXES AND AN ARRAY OF PATIENTS
 | 
|---|
 | 440 |         N VOR,ZRSLT
 | 
|---|
 | 441 |         S VOR("STATUS-SECTION-TYPE")="FailedFax"
 | 
|---|
 | 442 |         ;S VOR("ACCOUNT-PARTNERNAME")="demo"
 | 
|---|
 | 443 |         S VOR("SORT-ORDER")="A"
 | 
|---|
 | 444 |         S VOR("INCLUDE-SCHEMA")="N"
 | 
|---|
 | 445 |         S ZDUZ=$$PRIMARY^C0PMAIN() ; PRIMARY ERX USER FOR BATCH CALLS
 | 
|---|
 | 446 |         D SOAP^C0PWS1("ZRSLT","STATUS",ZDUZ,"","VOR")
 | 
|---|
 | 447 |         N ZCOUNT
 | 
|---|
 | 448 |         S ZCOUNT=$O(ZRSLT(""),-1) ; HOW MANY FAILED FAXES
 | 
|---|
 | 449 |         I +ZCOUNT=0 Q  ; NO FAILED FAXES
 | 
|---|
 | 450 |         ;I $G(ZRSLT(1,"RowCount"))=0 Q  ; NO FAILED FAXES
 | 
|---|
 | 451 |         ;I $G(ZRSLT(1,"RowCount"))="" Q  ; SHOULD NOT HAPPEN
 | 
|---|
 | 452 |         N XQA,XQAMSG,XQAID,XQAKILL
 | 
|---|
 | 453 |         S XQAID="C0P" ; GOING TO FIRST KILL ALL FAILED FAX ALERTS
 | 
|---|
 | 454 |         D DELETEA^XQALERT ; KILL ALL FAILED FAX ALERTS
 | 
|---|
 | 455 |         S XQA("G.ERX HELP DESK")=""
 | 
|---|
 | 456 |         ;S XQA(135)=""
 | 
|---|
 | 457 |         S XQAID="C0P"
 | 
|---|
 | 458 |         S XQAMSG="eRx: "_ZCOUNT_" Failed Faxes on ePrescribing"
 | 
|---|
 | 459 |         D SETUP^XQALERT ; CREATE NEW FAILED FAX ALERTS TO THE MAILGROUP
 | 
|---|
 | 460 |         Q
 | 
|---|
 | 461 |         ;
 | 
|---|
 | 462 | RUN     ; USED TO PROCESS AN ALERT. THIS ROUTINE IS LISTED IN
 | 
|---|
 | 463 |         ; 0E/RR CPRS NOTIFICATIONS AS THE ROUTINE TO RUN TO PROCESS
 | 
|---|
 | 464 |         ; A C0P ERX ALERT
 | 
|---|
 | 465 |         W "MADE IT TO RUN C0PREFIL",!
 | 
|---|
 | 466 |         W XQADATA
 | 
|---|
 | 467 |         B
 | 
|---|
 | 468 |         Q
 | 
|---|
 | 469 |         ;
 | 
|---|
 | 470 | GETALRT(ZARY,ZID)       ; LOOKS UP AN ALERT BY USING THE "RECORDID" FROM CPRS,
 | 
|---|
 | 471 |         ; PASSED BY VALUE IN ZID. RESULTS ARE RETURNED IN ZARY, PASSED BY NAME
 | 
|---|
 | 472 |         ;N ZIEN
 | 
|---|
 | 473 |         ;S ZIEN=$O(^XTV(8992.1,"B",ZID,"")) ;IEN IN THE ALERT TRACKING FILE
 | 
|---|
 | 474 |         ;I ZIEN="" W "ERROR RETRIEVING ALERT",! Q  ;
 | 
|---|
 | 475 |         D GETN^C0CRNF(ZARY,8992.1,ZID,"B") ; GET ALL THE ALERT FIELDS
 | 
|---|
 | 476 |         ; THE FORMAT IS @ZARY@("DATA FOR PROCESSING")="FILE^FIELD^VALUE"
 | 
|---|
 | 477 |         ; ALL POPULATED FIELDS (BUT NOT SUBFILES) ARE RETURNED
 | 
|---|
 | 478 |         Q
 | 
|---|
 | 479 |         ; 
 | 
|---|
 | 480 | UPDIE     ; INTERNAL ROUTINE TO CALL UPDATE^DIE AND CHECK FOR ERRORS
 | 
|---|
 | 481 |         K ZERR
 | 
|---|
 | 482 |         D CLEAN^DILF
 | 
|---|
 | 483 |         D UPDATE^DIE("","C0PFDA","","ZERR")
 | 
|---|
 | 484 |         I $D(ZERR) D  ;
 | 
|---|
 | 485 |         . W "ERROR",!
 | 
|---|
 | 486 |         . ZWR ZERR
 | 
|---|
 | 487 |         . B
 | 
|---|
 | 488 |         K C0PFDA
 | 
|---|
 | 489 |         Q
 | 
|---|
 | 490 |         ;
 | 
|---|
 | 491 | FIND    ; FIND ALL CURRENT ALERTS
 | 
|---|
 | 492 |         N ZI S ZI="" ; DUZ
 | 
|---|
 | 493 |         F  S ZI=$O(^XTV(8992,"AXQAN","OR,0,11305",ZI)) Q:ZI=""  D  ;
 | 
|---|
 | 494 |         . N ZJ S ZJ="" ; TIME STAMP
 | 
|---|
 | 495 |         . F  S ZJ=$O(^XTV(8992,"AXQAN","OR,0,11305",ZI,ZJ)) Q:ZJ=""  D  ;
 | 
|---|
 | 496 |         . . N ZZ,ZT
 | 
|---|
 | 497 |         . . S ZZ=$G(^XTV(8992,ZI,"XQA",ZJ,0))
 | 
|---|
 | 498 |         . . S ZT=$P(ZZ,U,2)
 | 
|---|
 | 499 |         . . Q:ZT=""
 | 
|---|
 | 500 |         . . S ZG=$O(^XTV(8992.1,"B",ZT,""))
 | 
|---|
 | 501 |         . . Q:ZG=""
 | 
|---|
 | 502 |         . . S ZGUID=$G(^XTV(8992.1,ZG,2))
 | 
|---|
 | 503 |         . . Q:ZGUID=""
 | 
|---|
 | 504 |         . . S ZGUID=$P(ZGUID,U,1)
 | 
|---|
 | 505 |         . . W !,ZI," ",ZJ," ",ZT," ",ZG," ",ZGUID
 | 
|---|
 | 506 |         . . ;ZWR ^XTV(8992.1,ZG,*)
 | 
|---|
 | 507 |         . . S G(ZJ,ZT,ZGUID)=""
 | 
|---|
 | 508 |         Q
 | 
|---|
 | 509 |         ;
 | 
|---|