[613] | 1 | OCXCACHE ;SLC/RJS,CLA - ORDER CHECK CACHE CONTROLLER ;4/16/02 16:28
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**143**;Dec 17,1997
|
---|
| 3 | ;; ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
|
---|
| 4 | ;
|
---|
| 5 | GETDATA(OCXRES,OCXCALL,OCXDFN,OCXTIME) ;
|
---|
| 6 | ;
|
---|
| 7 | ;
|
---|
| 8 | N OCXDATA K OCXRES S OCXRES=""
|
---|
| 9 | ;
|
---|
| 10 | Q:'$L($G(OCXCALL)) 1
|
---|
| 11 | Q:'$L($G(OCXDFN)) 2
|
---|
| 12 | S ^XTMP("OCXCACHE",0)=$$FMADD^XLFDT($$NOW^XLFDT,1,"","","")_"^"_$$NOW^XLFDT
|
---|
| 13 | S:'$G(OCXTIME) OCXTIME=300
|
---|
| 14 | ;
|
---|
| 15 | K:($G(^XTMP("OCXCACHE",OCXDFN,OCXCALL,"TIME"))<$$NOW) ^XTMP("OCXCACHE",OCXDFN,OCXCALL)
|
---|
| 16 | ;
|
---|
| 17 | I '$D(^XTMP("OCXCACHE",OCXDFN,OCXCALL)) D
|
---|
| 18 | .I OCXCALL["$$" X "S OCXDATA="_OCXCALL
|
---|
| 19 | .E S OCXDATA="" D @OCXCALL
|
---|
| 20 | .M ^XTMP("OCXCACHE",OCXDFN,OCXCALL,"DATA")=OCXDATA
|
---|
| 21 | .S ^XTMP("OCXCACHE",OCXDFN,OCXCALL,"TIME")=$$NOW+OCXTIME
|
---|
| 22 | ;
|
---|
| 23 | M:$D(^XTMP("OCXCACHE",OCXDFN,OCXCALL,"DATA")) OCXRES=^XTMP("OCXCACHE",OCXDFN,OCXCALL,"DATA")
|
---|
| 24 | Q:'$D(^XTMP("OCXCACHE",OCXDFN,OCXCALL,"DATA")) 3
|
---|
| 25 | ;
|
---|
| 26 | Q 0
|
---|
| 27 | ;
|
---|
| 28 | NOW() Q $P($H,",",2)+($H*86400)
|
---|
| 29 | ;
|
---|
| 30 | PURGE ; Purge OCX namespaced entries in ^XTMP (Cache) that have expired.
|
---|
| 31 | ;
|
---|
| 32 | N OCXE0,OCXE1,OCXS
|
---|
| 33 | ;
|
---|
| 34 | ;S OCXS="OCX" F S OCXS=$O(^XTMP(OCXS)) Q:'$L(OCXS) Q:'($E(OCXS,1,3)="OCX") D
|
---|
| 35 | S OCXS="OCXCACHE" D
|
---|
| 36 | .S OCXE0=0 F S OCXE0=$O(^XTMP(OCXS,OCXE0)) Q:'$L(OCXE0) D
|
---|
| 37 | ..S OCXE1="" F S OCXE1=$O(^XTMP(OCXS,OCXE0,OCXE1)) Q:'$L(OCXE1) D
|
---|
| 38 | ...K:($G(^XTMP(OCXS,OCXE0,OCXE1,"TIME"))<$$NOW) ^XTMP(OCXS,OCXE0,OCXE1)
|
---|
| 39 | ;
|
---|
| 40 | Q
|
---|
| 41 | ;
|
---|
| 42 | ;Sample External Call
|
---|
| 43 | ;
|
---|
| 44 | ; S ORZ=$$LOCL^ORQQLR1(ORDFN,TEST,SPECIMEN)
|
---|
| 45 | ;
|
---|
| 46 | ; Changes to:
|
---|
| 47 | ;
|
---|
| 48 | ;S TEMP=$$GETDATA^OCXCACHE(.ORZ,"$$LOCL^ORQQLR1("_ORDFN_","_TEST_","_SPECIMEN_")",ORDFN,300)
|
---|
| 49 | ;
|
---|
| 50 | ;$$GETDATA^OCXCACHE(RESULTS,EXTERNAL CALL,PATIENT ID,TIMEOUT) ----> returns either a 1, 2, 3, or 0
|
---|
| 51 | ; 0 -> No Errors
|
---|
| 52 | ; 1 -> Missing External Call.
|
---|
| 53 | ; 2 -> Missing Patient ID.
|
---|
| 54 | ; 3 -> Cache Data Missing.
|
---|
| 55 | ;***Results = Data Value Returned,
|
---|
| 56 | ; Either Scalar or Array.
|
---|
| 57 | ;
|
---|
| 58 | ;***External Call = Routine call in a 'resolved parameter' format to
|
---|
| 59 | ; reduce the chances of cache returning the wrong values.
|
---|
| 60 | ;
|
---|
| 61 | ; If ORDFN=1234 and TEST=110 and SPECIMEN=119
|
---|
| 62 | ;
|
---|
| 63 | ; Then If this parameter is: "$$LOCL^ORQQLR1("_ORDFN_","_TEST_","_SPECIMEN_")"
|
---|
| 64 | ; then the value will be stored in subscript: "$$LOCL^ORQQLR1(1234,110,119)"
|
---|
| 65 | ;
|
---|
| 66 | ; If this parameter is: "$$LOCL^ORQQLR1(ORDFN,TEST,SPECIMEN)"
|
---|
| 67 | ; then the value will be stored in subscript: "$$LOCL^ORQQLR1(ORDFN,TEST,SPECIMEN)"
|
---|
| 68 | ;
|
---|
| 69 | ;***Object ID = If this is patient data then this will be the patient's DFN.
|
---|
| 70 | ; If this is user data then this will be the user's DUZ.
|
---|
| 71 | ; etc...
|
---|
| 72 | ;
|
---|
| 73 | ;***Timeout = (Optional Default = 300 (5 Minutes)) How long, in seconds, the data has to live in the cache.
|
---|
| 74 | ;
|
---|
| 75 | ;^XTMP("OCXCACHE",DFN,"$$LOCL^ORQQLR1(1234,110,119)","DATA")= Data
|
---|
| 76 | ;
|
---|
| 77 | ;^XTMP("OCXCACHE",DFN,"$$LOCL^ORQQLR1(1234,110,119)","TIME")= When the data will be deleted from the cache.
|
---|
| 78 | ;
|
---|
| 79 | ; $$NOW^OCXCACHE = The number of seconds since the "beginning of time". Used to determine if the data
|
---|
| 80 | ; node in the cache is past its expiration date or not.
|
---|
| 81 | ;
|
---|
| 82 | ; It is very important that ORMTIME is running if this routine is being used.
|
---|
| 83 | ; ORMTIME calls OCXOPURG which calls PURGE^OCXCACHE that cleans out expired data
|
---|
| 84 | ; in the cache. This will keep the cache from using up all the available diskspace
|
---|
| 85 | ; in the Volume Set or directory that ^XTMP resides in. PURGE^OCXCACHE can be run
|
---|
| 86 | ; manually from a programmer's prompt if needed.
|
---|
| 87 | ;
|
---|