| 1 | PPPSCN1 ;ALB/DMB - PPP XREF SCAN ROUTINE ; 2/18/91 | 
|---|
| 2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;;APR 7,1995 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | XREFSCAN ; Scan the FFX file for bad PDX results | 
|---|
| 5 | ; | 
|---|
| 6 | N RSLTPTR,UNSPTR,PROCPTR,AUTOPTR,CODE,ERRORS,LBRD,TMP,XFIFN | 
|---|
| 7 | N XSCNEND,XSCNSTRT | 
|---|
| 8 | ; | 
|---|
| 9 | S PPPMRT="XREFSCAN_PPPSCN1" | 
|---|
| 10 | S XSCNSTRT=1004 | 
|---|
| 11 | S XSCNEND=1005 | 
|---|
| 12 | S ERRORS=0 | 
|---|
| 13 | ; | 
|---|
| 14 | ; Get the IFN's for the PDX Status codes | 
|---|
| 15 | ; | 
|---|
| 16 | S RSLTPTR=$$GETSTPTR^PPPGET7("VAQ-RSLT") | 
|---|
| 17 | S UNSPTR=$$GETSTPTR^PPPGET7("VAQ-UNSOL") | 
|---|
| 18 | S PROCPTR=$$GETSTPTR^PPPGET7("VAQ-PROC") | 
|---|
| 19 | S AUTOPTR=$$GETSTPTR^PPPGET7("VAQ-AUTO") | 
|---|
| 20 | ; | 
|---|
| 21 | S TMP=$$LOGEVNT^PPPMSC1(XSCNSTRT,PPPMRT) | 
|---|
| 22 | S LBRD=$P(^PPP(1020.1,1,0),"^",6) | 
|---|
| 23 | I LBRD'="" D | 
|---|
| 24 | .S ^TMP("PPP",$J,"ERR",1)="The following status were found while running XREFSCAN for last PDX batch" | 
|---|
| 25 | .S ^TMP("PPP",$J,"ERR",2)="dated: "_$$DTE^PPPUTL1(LBRD,0) | 
|---|
| 26 | .S ^TMP("PPP",$J,"ERR",3)=" " | 
|---|
| 27 | .F XFIFN=0:0 D  Q:XFIFN="" | 
|---|
| 28 | ..S XFIFN=$O(^PPP(1020.2,"C",LBRD,XFIFN)) Q:XFIFN="" | 
|---|
| 29 | ..S CODE=$P($G(^PPP(1020.2,XFIFN,1)),"^",3) | 
|---|
| 30 | ..I ((CODE'=RSLTPTR)&(CODE'=UNSPTR)&(CODE'=PROCPTR)&(CODE'=AUTOPTR)) D | 
|---|
| 31 | ...S TMP=$$ADD2LIST("^TMP(""PPP"",$J,""ERR"")",XFIFN) | 
|---|
| 32 | ...S ERRORS=1 | 
|---|
| 33 | E  D | 
|---|
| 34 | .S ^TMP("PPP",$J,"ERR",1)=" " | 
|---|
| 35 | .S ^TMP("PPP",$J,"ERR",2)="Last Batch Request Date Not Found" | 
|---|
| 36 | .S ERRORS=1 | 
|---|
| 37 | I ERRORS D | 
|---|
| 38 | .S TMP=$$SNDBLTN^PPPMSC1("PPP - Nightly PDX Result Scan","PRESCRIPTION PRACTICES","^TMP(""PPP"",$J,""ERR"",") | 
|---|
| 39 | S TMP=$$LOGEVNT^PPPMSC1(XSCNEND,PPPMRT) | 
|---|
| 40 | K PPPMRT,^TMP("PPP",$J,"ERR") | 
|---|
| 41 | Q | 
|---|
| 42 | ; | 
|---|
| 43 | ADD2LIST(ARRYNM,XRFIFN) ; Add an error to the error list | 
|---|
| 44 | ; | 
|---|
| 45 | N IDX,LKUPERR,PARMERR,PATDFN,PATNAME,SNIFN,STANAME,STATCODE,STATIFN | 
|---|
| 46 | N STATTXT,TMP,FFXDOM | 
|---|
| 47 | ; | 
|---|
| 48 | S PARMERR=-9001 | 
|---|
| 49 | S LKUPERR=-9003 | 
|---|
| 50 | ; | 
|---|
| 51 | ; Check Parameters | 
|---|
| 52 | ; | 
|---|
| 53 | I '$D(ARRYNM) Q PARMERR | 
|---|
| 54 | I '$D(XRFIFN) Q PARMERR | 
|---|
| 55 | I ARRYNM=""!(XRFIFN<1) Q PARMERR | 
|---|
| 56 | ; | 
|---|
| 57 | ; Get the patient name | 
|---|
| 58 | ; | 
|---|
| 59 | S PATDFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^") | 
|---|
| 60 | I PATDFN="" Q LKUPERR | 
|---|
| 61 | S PATNAME=$$GETPATNM^PPPGET1(PATDFN) Q:PATNAME<0 LKUPERR | 
|---|
| 62 | ; | 
|---|
| 63 | ; Get the station name/domain | 
|---|
| 64 | ; | 
|---|
| 65 | S FFXDOM=$P($G(^PPP(1020.2,XRFIFN,1)),"^",5) | 
|---|
| 66 | S SNIFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^",2) | 
|---|
| 67 | I SNIFN="" Q LKUPERR | 
|---|
| 68 | S STANAME=$$GETSTANM^PPPGET1(SNIFN) Q:STANAME<0 LKUPERR | 
|---|
| 69 | ; | 
|---|
| 70 | ; Get the PDX Status and text from FFX file | 
|---|
| 71 | ; | 
|---|
| 72 | S STATCODE="" | 
|---|
| 73 | S STATTXT="" | 
|---|
| 74 | ; | 
|---|
| 75 | S STATIFN=$P($G(^PPP(1020.2,XRFIFN,1)),"^",3) | 
|---|
| 76 | I STATIFN'="" D | 
|---|
| 77 | .S TMP=$$GETPDXST^PPPGET7(STATIFN) | 
|---|
| 78 | .S STATCODE=$P(TMP,"^",1) | 
|---|
| 79 | .S STATTXT=$P(TMP,"^",2) | 
|---|
| 80 | ; | 
|---|
| 81 | I ((STATCODE="-1")!(STATCODE="")) D CHKPDX | 
|---|
| 82 | I ((STATCODE="-1")!(STATCODE="")) D | 
|---|
| 83 | .S STATCODE="NULL",STATTXT="NOTHING RETURNED" | 
|---|
| 84 | ; | 
|---|
| 85 | ; Set the array | 
|---|
| 86 | ; | 
|---|
| 87 | F IDX=1:1 D  Q:TMP="" | 
|---|
| 88 | .S TMP=$O(@ARRYNM@(IDX)) Q:TMP="" | 
|---|
| 89 | S @ARRYNM@(IDX+1)="PDX Status For "_PATNAME_" at "_STANAME_" is: "_STATTXT | 
|---|
| 90 | ; | 
|---|
| 91 | Q 0 | 
|---|
| 92 | ; | 
|---|
| 93 | CHKPDX ; -- Checks actual PDX when status is not in 1020.2 | 
|---|
| 94 | N EXIT,PDXPTR | 
|---|
| 95 | ; | 
|---|
| 96 | S (PDXPTR,EXIT)=0 | 
|---|
| 97 | F  S PDXPTR=$O(^VAT(394.61,"PATPTR",PATDFN,PDXPTR)) Q:PDXPTR=""!EXIT  D | 
|---|
| 98 | .S PDXDOM=$P($G(^VAT(394.61,PDXPTR,"ATHR2")),"^",2) | 
|---|
| 99 | .I PDXDOM=FFXDOM D | 
|---|
| 100 | ..S STATIFN=$P($G(^VAT(394.61,PDXPTR,0)),"^",2) | 
|---|
| 101 | ..S TMP=$$GETPDXST^PPPGET7(STATIFN) | 
|---|
| 102 | ..S STATCODE=$P(TMP,"^",1) | 
|---|
| 103 | ..S STATTXT=$P(TMP,"^",2) | 
|---|
| 104 | ..S EXIT=1 | 
|---|
| 105 | ; | 
|---|
| 106 | END ; -- End of code | 
|---|
| 107 | Q | 
|---|
| 108 | ; | 
|---|