PPPSCN1 ;ALB/DMB - PPP XREF SCAN ROUTINE ; 2/18/91 ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;;APR 7,1995 ;;Per VHA Directive 10-93-142, this routine should not be modified. XREFSCAN ; Scan the FFX file for bad PDX results ; N RSLTPTR,UNSPTR,PROCPTR,AUTOPTR,CODE,ERRORS,LBRD,TMP,XFIFN N XSCNEND,XSCNSTRT ; S PPPMRT="XREFSCAN_PPPSCN1" S XSCNSTRT=1004 S XSCNEND=1005 S ERRORS=0 ; ; Get the IFN's for the PDX Status codes ; S RSLTPTR=$$GETSTPTR^PPPGET7("VAQ-RSLT") S UNSPTR=$$GETSTPTR^PPPGET7("VAQ-UNSOL") S PROCPTR=$$GETSTPTR^PPPGET7("VAQ-PROC") S AUTOPTR=$$GETSTPTR^PPPGET7("VAQ-AUTO") ; S TMP=$$LOGEVNT^PPPMSC1(XSCNSTRT,PPPMRT) S LBRD=$P(^PPP(1020.1,1,0),"^",6) I LBRD'="" D .S ^TMP("PPP",$J,"ERR",1)="The following status were found while running XREFSCAN for last PDX batch" .S ^TMP("PPP",$J,"ERR",2)="dated: "_$$DTE^PPPUTL1(LBRD,0) .S ^TMP("PPP",$J,"ERR",3)=" " .F XFIFN=0:0 D Q:XFIFN="" ..S XFIFN=$O(^PPP(1020.2,"C",LBRD,XFIFN)) Q:XFIFN="" ..S CODE=$P($G(^PPP(1020.2,XFIFN,1)),"^",3) ..I ((CODE'=RSLTPTR)&(CODE'=UNSPTR)&(CODE'=PROCPTR)&(CODE'=AUTOPTR)) D ...S TMP=$$ADD2LIST("^TMP(""PPP"",$J,""ERR"")",XFIFN) ...S ERRORS=1 E D .S ^TMP("PPP",$J,"ERR",1)=" " .S ^TMP("PPP",$J,"ERR",2)="Last Batch Request Date Not Found" .S ERRORS=1 I ERRORS D .S TMP=$$SNDBLTN^PPPMSC1("PPP - Nightly PDX Result Scan","PRESCRIPTION PRACTICES","^TMP(""PPP"",$J,""ERR"",") S TMP=$$LOGEVNT^PPPMSC1(XSCNEND,PPPMRT) K PPPMRT,^TMP("PPP",$J,"ERR") Q ; ADD2LIST(ARRYNM,XRFIFN) ; Add an error to the error list ; N IDX,LKUPERR,PARMERR,PATDFN,PATNAME,SNIFN,STANAME,STATCODE,STATIFN N STATTXT,TMP,FFXDOM ; S PARMERR=-9001 S LKUPERR=-9003 ; ; Check Parameters ; I '$D(ARRYNM) Q PARMERR I '$D(XRFIFN) Q PARMERR I ARRYNM=""!(XRFIFN<1) Q PARMERR ; ; Get the patient name ; S PATDFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^") I PATDFN="" Q LKUPERR S PATNAME=$$GETPATNM^PPPGET1(PATDFN) Q:PATNAME<0 LKUPERR ; ; Get the station name/domain ; S FFXDOM=$P($G(^PPP(1020.2,XRFIFN,1)),"^",5) S SNIFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^",2) I SNIFN="" Q LKUPERR S STANAME=$$GETSTANM^PPPGET1(SNIFN) Q:STANAME<0 LKUPERR ; ; Get the PDX Status and text from FFX file ; S STATCODE="" S STATTXT="" ; S STATIFN=$P($G(^PPP(1020.2,XRFIFN,1)),"^",3) I STATIFN'="" D .S TMP=$$GETPDXST^PPPGET7(STATIFN) .S STATCODE=$P(TMP,"^",1) .S STATTXT=$P(TMP,"^",2) ; I ((STATCODE="-1")!(STATCODE="")) D CHKPDX I ((STATCODE="-1")!(STATCODE="")) D .S STATCODE="NULL",STATTXT="NOTHING RETURNED" ; ; Set the array ; F IDX=1:1 D Q:TMP="" .S TMP=$O(@ARRYNM@(IDX)) Q:TMP="" S @ARRYNM@(IDX+1)="PDX Status For "_PATNAME_" at "_STANAME_" is: "_STATTXT ; Q 0 ; CHKPDX ; -- Checks actual PDX when status is not in 1020.2 N EXIT,PDXPTR ; S (PDXPTR,EXIT)=0 F S PDXPTR=$O(^VAT(394.61,"PATPTR",PATDFN,PDXPTR)) Q:PDXPTR=""!EXIT D .S PDXDOM=$P($G(^VAT(394.61,PDXPTR,"ATHR2")),"^",2) .I PDXDOM=FFXDOM D ..S STATIFN=$P($G(^VAT(394.61,PDXPTR,0)),"^",2) ..S TMP=$$GETPDXST^PPPGET7(STATIFN) ..S STATCODE=$P(TMP,"^",1) ..S STATTXT=$P(TMP,"^",2) ..S EXIT=1 ; END ; -- End of code Q ;