VistA-WorldVistAEHR/r/PHARMACY_PRESCRIPTION_PRACT.../PPPPDX1.m

146 lines
4.4 KiB
Mathematica

PPPPDX1 ;ALB/DMB - PPP PDX ROUTINES ; 2/21/92
;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**2,8,21**;APR 7,1995
;;Per VHA Directive 10-93-142, this routine should not be modified.
;
SNDPDX(PATDFN,SPARRY,ERRARRY) ; Send a PDX message for a patient
;
N ARRYNM,DA,DIC,DIQ,DR,DUOUT,DTOUT,DOMAIN
N ERR,FFXIFN,I,PARMERR,PDXERR,RFNERR,STAPTR,TMP
N X,DOMARR,SEGARR,NOTARR,MSGPOS
;
S ERR=0
S PDXERR=-9008
S PARMERR=-9001
S RFNERR=-9009
S FFXIFN=0
;
I '$D(PATDFN) Q PARMERR
I '$D(@SPARRY) Q PARMERR
I PATDFN<1 Q PARMERR
I '$D(PDXSNT) S PDXSNT=0
;
S X="VAQUIN01" X ^%ZOSF("TEST") I ('$T) Q RFNERR
;
; Order through the station pointer array and generate PDX Request
;
F STAPTR=0:0 D Q:STAPTR=""
.S STAPTR=$O(@SPARRY@(STAPTR)) Q:STAPTR=""
.;
.; First get the domain name from the FFX file
.;
.S FFXIFN=$O(^PPP(1020.2,"APOV",PATDFN,STAPTR,""))
.I FFXIFN="" D Q
..S TMP=$$POSTERR(ERRARRY,FFXIFN,"Could Not Find Entry In APOV xref for Patient DFN "_PATDFN)
.S DOMAIN=$P($G(^PPP(1020.2,FFXIFN,1)),"^",5)
.S LNUM=0 I DOMAIN]"" S LNUM=$O(^PPP(1020.128,"A",DOMAIN,0))
.I LNUM S DOMAIN=$P(^PPP(1020.128,LNUM,0),"^",2)
PTCH .;DAVE B (PPP*1*21)
.S DATA=$G(^PPP(1020.2,FFXIFN,0))
.I DOMAIN="",$P(DATA,"^",2)'="" S DOMAIN=$$GETDOMNM^PPPGET3($P(DATA,"^",2))
.S XX=FFXIFN,DATA=$G(^PPP(1020.2,FFXIFN,0)),ERRTXT="No Domain Entry in FFX file for --> "
.I DOMAIN="" F IDX=1:1 S TMP=$O(@SPARRY@(IDX)) Q:TMP=""
.I DOMAIN="" S @ERRARRY@(IDX+1)=ERRTXT_$S($P(DATA,"^")="":FFXIFN,1:$$GETPATNM^PPPGET1($P(DATA,"^")))_" at "_$P(DATA,"^",2) Q
.K DOMARR
.S DOMARR(DOMAIN)=""
.;SET SEGMENT ARRAY (REQUEST MINIMAL AND MED PROFILE LONG)
.K SEGARR
.S SEGARR("PDX*MIN")=""
.S SEGARR("PDX*MPL")=""
.;SET NOTIFY ARRAY (DON'T NOTIFY ANYONE)
.K NOTARR
.S NOTARR=""
.;REQUEST PDX INFORMATION
.S X=$$PDX^VAQUIN01("REQ",PATDFN,"","","","DOMARR","SEGARR","NOTARR")
.;ERROR
.I (+X) D Q
..S TMP=$$POSTERR(ERRARRY,FFXIFN,"Error sending PDX to "_DOMAIN)
..S ERR=PDXERR
.S PDXSNT=PDXSNT+1
.S TMP=$$POSTMSG(ERRARRY,FFXIFN,PDXSNT)
.;
.; Update the last batch request date field
.;
.S DIE=1020.2,DA=FFXIFN,DR="6///TODAY" D ^DIE
;UPDATE STATISTICS
I PDXSNT>0 D
.S TMP=$$STATUPDT^PPPMSC1(2,PDXSNT)
.S @ERRARRY@(10001)=""
.S @ERRARRY@(10002)=""
.S @ERRARRY@(10003)="The following PDX request were generated by PPP on "_$$SLASHDT^PPPCNV1(DT)
.S @ERRARRY@(10004)=""
.S @ERRARRY@(10005)="NAME SSN STATION"
.S @ERRARRY@(10006)="------------------------- ---------- -------------------------"
.S MSGPOS=10006+PDXSNT
.;S @ERRARRY@(MSGPOS+1)=""
.;S @ERRARRY@(MSGPOS+2)=""
.;S @ERRARRY@(MSGPOS+3)="Total Sent = "_PDXSNT
;
Q ERR
;
POSTERR(ARRYNM,XRFIFN,ERRTXT) ; Add an error to the error list
;
N IDX,LKUPERR,PARMERR,PATDFN,PATNAME,SNIFN,STANAME,STATCODE,STATIFN
N STATTXT,TMP
;
S PARMERR=-9001
S LKUPERR=-9003
;
; Check Parameters
;
I '$D(ARRYNM) Q PARMERR
I '$D(XRFIFN) Q PARMERR
I ARRYNM="" Q PARMERR
I '$D(ERRTXT) S ERRTXT=""
;
; Get the patient name and station name
;
S PATNAME="UNKNOWN"
I FFXIFN'="" D
.S PATDFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^")
.I PATDFN'="" S PATNAME=$$GETPATNM^PPPGET1(PATDFN)
;
; Set the array
;
F IDX=1:1 S TMP=$O(@ARRYNM@(IDX)) Q:TMP=""
S @ARRYNM@(IDX+1)=ERRTXT_" --> Entry #: "_$S(PATNAME="UNKNOWN":$G(XRFIFN),1:PATNAME)_" at "_$S($G(DOMAIN)="":$P($G(^PPP(1020.2,XRFIFN,0)),"^",2),1:DOMAIN)
;
Q 0
;
POSTMSG(ARRYNM,XRFIFN,MSGCNT) ; Add message line for PDX's sent
;
N IDX,LKUPERR,PARMERR,PATDFN,PATNAME,SNIFN,STANAME
N TMP,PATSSN,SP25
;
S PARMERR=-9001
S LKUPERR=-9003
S SP25=" "
;
; Check Parameters
;
I '$D(ARRYNM) Q PARMERR
I '$D(XRFIFN) Q PARMERR
I ARRYNM="" Q PARMERR
I '$D(MSGCNT) Q PARMERR
;
; Get the patient name and station name and SSN
;
S PATNAME="UNKNOWN"
I FFXIFN'="" D
.S PATDFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^")
.I PATDFN'="" S PATNAME=$$GETPATNM^PPPGET1(PATDFN),PATSSN=$$GETSSN^PPPGET1(PATDFN)
; Set the array, beginning at 10,006
;
S IDX=10006+MSGCNT
S @ARRYNM@(IDX)=$E(PATNAME_SP25,1,25)_" "_$E(PATSSN_SP25,1,10)_" "_DOMAIN
;
Q 0
EDITSITE ;
W ! S DIC("A")="Select LEGACY SITE: ",DIC="^PPP(1020.128,",DIC(0)="QEALMZ",DLAYGO="1020.128"
D ^DIC I $D(DTOUT)!$D(DUOUT)!(Y<1) G END
S DIE="^PPP(1020.128,",(DA,PPPDA)=+Y,DR=".01;.02;1" D ^DIE
I $P($G(^PPP(1020.128,PPPDA,0)),"^",2)="" W !!,"Missing Merged Site for ",$P($G(^DIC(4.2,PPPDA,0)),"^"),!,"Now Deleting Entry." S DIK="^PPP(1020.128,",DA=PPPDA D ^DIK
G EDITSITE
END ;
K DIC,DIE,DA,Y,DR,DIK,PPPDA
Q