| [613] | 1 | PPPPDX1 ;ALB/DMB - PPP PDX ROUTINES ; 2/21/92
 | 
|---|
 | 2 |  ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**2,8,21**;APR 7,1995
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 | SNDPDX(PATDFN,SPARRY,ERRARRY) ; Send a PDX message for a patient
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 |  N ARRYNM,DA,DIC,DIQ,DR,DUOUT,DTOUT,DOMAIN
 | 
|---|
 | 8 |  N ERR,FFXIFN,I,PARMERR,PDXERR,RFNERR,STAPTR,TMP
 | 
|---|
 | 9 |  N X,DOMARR,SEGARR,NOTARR,MSGPOS
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  S ERR=0
 | 
|---|
 | 12 |  S PDXERR=-9008
 | 
|---|
 | 13 |  S PARMERR=-9001
 | 
|---|
 | 14 |  S RFNERR=-9009
 | 
|---|
 | 15 |  S FFXIFN=0
 | 
|---|
 | 16 |  ;
 | 
|---|
 | 17 |  I '$D(PATDFN) Q PARMERR
 | 
|---|
 | 18 |  I '$D(@SPARRY) Q PARMERR
 | 
|---|
 | 19 |  I PATDFN<1 Q PARMERR
 | 
|---|
 | 20 |  I '$D(PDXSNT) S PDXSNT=0
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  S X="VAQUIN01" X ^%ZOSF("TEST") I ('$T) Q RFNERR
 | 
|---|
 | 23 |  ;
 | 
|---|
 | 24 |  ; Order through the station pointer array and generate PDX Request
 | 
|---|
 | 25 |  ;
 | 
|---|
 | 26 |  F STAPTR=0:0 D  Q:STAPTR=""
 | 
|---|
 | 27 |  .S STAPTR=$O(@SPARRY@(STAPTR)) Q:STAPTR=""
 | 
|---|
 | 28 |  .;
 | 
|---|
 | 29 |  .;  First get the domain name from the FFX file
 | 
|---|
 | 30 |  .;
 | 
|---|
 | 31 |  .S FFXIFN=$O(^PPP(1020.2,"APOV",PATDFN,STAPTR,""))
 | 
|---|
 | 32 |  .I FFXIFN="" D  Q
 | 
|---|
 | 33 |  ..S TMP=$$POSTERR(ERRARRY,FFXIFN,"Could Not Find Entry In APOV xref for Patient DFN "_PATDFN)
 | 
|---|
 | 34 |  .S DOMAIN=$P($G(^PPP(1020.2,FFXIFN,1)),"^",5)
 | 
|---|
 | 35 |  .S LNUM=0 I DOMAIN]"" S LNUM=$O(^PPP(1020.128,"A",DOMAIN,0))
 | 
|---|
 | 36 |  .I LNUM S DOMAIN=$P(^PPP(1020.128,LNUM,0),"^",2)
 | 
|---|
 | 37 | PTCH .;DAVE B (PPP*1*21)
 | 
|---|
 | 38 |  .S DATA=$G(^PPP(1020.2,FFXIFN,0))
 | 
|---|
 | 39 |  .I DOMAIN="",$P(DATA,"^",2)'="" S DOMAIN=$$GETDOMNM^PPPGET3($P(DATA,"^",2))
 | 
|---|
 | 40 |  .S XX=FFXIFN,DATA=$G(^PPP(1020.2,FFXIFN,0)),ERRTXT="No Domain Entry in FFX file for --> "
 | 
|---|
 | 41 |  .I DOMAIN="" F IDX=1:1 S TMP=$O(@SPARRY@(IDX)) Q:TMP=""
 | 
|---|
 | 42 |  .I DOMAIN="" S @ERRARRY@(IDX+1)=ERRTXT_$S($P(DATA,"^")="":FFXIFN,1:$$GETPATNM^PPPGET1($P(DATA,"^")))_" at "_$P(DATA,"^",2) Q
 | 
|---|
 | 43 |  .K DOMARR
 | 
|---|
 | 44 |  .S DOMARR(DOMAIN)=""
 | 
|---|
 | 45 |  .;SET SEGMENT ARRAY (REQUEST MINIMAL AND MED PROFILE LONG)
 | 
|---|
 | 46 |  .K SEGARR
 | 
|---|
 | 47 |  .S SEGARR("PDX*MIN")=""
 | 
|---|
 | 48 |  .S SEGARR("PDX*MPL")=""
 | 
|---|
 | 49 |  .;SET NOTIFY ARRAY (DON'T NOTIFY ANYONE)
 | 
|---|
 | 50 |  .K NOTARR
 | 
|---|
 | 51 |  .S NOTARR=""
 | 
|---|
 | 52 |  .;REQUEST PDX INFORMATION
 | 
|---|
 | 53 |  .S X=$$PDX^VAQUIN01("REQ",PATDFN,"","","","DOMARR","SEGARR","NOTARR")
 | 
|---|
 | 54 |  .;ERROR
 | 
|---|
 | 55 |  .I (+X) D  Q
 | 
|---|
 | 56 |  ..S TMP=$$POSTERR(ERRARRY,FFXIFN,"Error sending PDX to "_DOMAIN)
 | 
|---|
 | 57 |  ..S ERR=PDXERR
 | 
|---|
 | 58 |  .S PDXSNT=PDXSNT+1
 | 
|---|
 | 59 |  .S TMP=$$POSTMSG(ERRARRY,FFXIFN,PDXSNT)
 | 
|---|
 | 60 |  .;
 | 
|---|
 | 61 |  .; Update the last batch request date field
 | 
|---|
 | 62 |  .;
 | 
|---|
 | 63 |  .S DIE=1020.2,DA=FFXIFN,DR="6///TODAY" D ^DIE
 | 
|---|
 | 64 |  ;UPDATE STATISTICS
 | 
|---|
 | 65 |  I PDXSNT>0 D
 | 
|---|
 | 66 |  .S TMP=$$STATUPDT^PPPMSC1(2,PDXSNT)
 | 
|---|
 | 67 |  .S @ERRARRY@(10001)=""
 | 
|---|
 | 68 |  .S @ERRARRY@(10002)=""
 | 
|---|
 | 69 |  .S @ERRARRY@(10003)="The following PDX request were generated by PPP on "_$$SLASHDT^PPPCNV1(DT)
 | 
|---|
 | 70 |  .S @ERRARRY@(10004)=""
 | 
|---|
 | 71 |  .S @ERRARRY@(10005)="NAME                       SSN         STATION"
 | 
|---|
 | 72 |  .S @ERRARRY@(10006)="-------------------------  ----------  -------------------------"
 | 
|---|
 | 73 |  .S MSGPOS=10006+PDXSNT
 | 
|---|
 | 74 |  .;S @ERRARRY@(MSGPOS+1)=""
 | 
|---|
 | 75 |  .;S @ERRARRY@(MSGPOS+2)=""
 | 
|---|
 | 76 |  .;S @ERRARRY@(MSGPOS+3)="Total Sent = "_PDXSNT
 | 
|---|
 | 77 |  ;
 | 
|---|
 | 78 |  Q ERR
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 | POSTERR(ARRYNM,XRFIFN,ERRTXT) ; Add an error to the error list
 | 
|---|
 | 81 |  ;
 | 
|---|
 | 82 |  N IDX,LKUPERR,PARMERR,PATDFN,PATNAME,SNIFN,STANAME,STATCODE,STATIFN
 | 
|---|
 | 83 |  N STATTXT,TMP
 | 
|---|
 | 84 |  ;
 | 
|---|
 | 85 |  S PARMERR=-9001
 | 
|---|
 | 86 |  S LKUPERR=-9003
 | 
|---|
 | 87 |  ;
 | 
|---|
 | 88 |  ; Check Parameters
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 |  I '$D(ARRYNM) Q PARMERR
 | 
|---|
 | 91 |  I '$D(XRFIFN) Q PARMERR
 | 
|---|
 | 92 |  I ARRYNM="" Q PARMERR
 | 
|---|
 | 93 |  I '$D(ERRTXT) S ERRTXT=""
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  ; Get the patient name and station name
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 |  S PATNAME="UNKNOWN"
 | 
|---|
 | 98 |  I FFXIFN'="" D
 | 
|---|
 | 99 |  .S PATDFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^")
 | 
|---|
 | 100 |  .I PATDFN'="" S PATNAME=$$GETPATNM^PPPGET1(PATDFN)
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  ; Set the array
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 |  F IDX=1:1 S TMP=$O(@ARRYNM@(IDX)) Q:TMP=""
 | 
|---|
 | 105 |  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)
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 |  Q 0
 | 
|---|
 | 108 |  ;
 | 
|---|
 | 109 | POSTMSG(ARRYNM,XRFIFN,MSGCNT) ; Add message line for PDX's sent
 | 
|---|
 | 110 |  ;
 | 
|---|
 | 111 |  N IDX,LKUPERR,PARMERR,PATDFN,PATNAME,SNIFN,STANAME
 | 
|---|
 | 112 |  N TMP,PATSSN,SP25
 | 
|---|
 | 113 |  ;
 | 
|---|
 | 114 |  S PARMERR=-9001
 | 
|---|
 | 115 |  S LKUPERR=-9003
 | 
|---|
 | 116 |  S SP25="                        "
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 |  ; Check Parameters
 | 
|---|
 | 119 |  ;
 | 
|---|
 | 120 |  I '$D(ARRYNM) Q PARMERR
 | 
|---|
 | 121 |  I '$D(XRFIFN) Q PARMERR
 | 
|---|
 | 122 |  I ARRYNM="" Q PARMERR
 | 
|---|
 | 123 |  I '$D(MSGCNT) Q PARMERR
 | 
|---|
 | 124 |  ;
 | 
|---|
 | 125 |  ; Get the patient name and station name and SSN
 | 
|---|
 | 126 |  ;
 | 
|---|
 | 127 |  S PATNAME="UNKNOWN"
 | 
|---|
 | 128 |  I FFXIFN'="" D
 | 
|---|
 | 129 |  .S PATDFN=$P($G(^PPP(1020.2,XRFIFN,0)),"^")
 | 
|---|
 | 130 |  .I PATDFN'="" S PATNAME=$$GETPATNM^PPPGET1(PATDFN),PATSSN=$$GETSSN^PPPGET1(PATDFN)
 | 
|---|
 | 131 |  ; Set the array, beginning at 10,006
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 |  S IDX=10006+MSGCNT
 | 
|---|
 | 134 |  S @ARRYNM@(IDX)=$E(PATNAME_SP25,1,25)_"  "_$E(PATSSN_SP25,1,10)_"  "_DOMAIN
 | 
|---|
 | 135 |  ;
 | 
|---|
 | 136 |  Q 0
 | 
|---|
 | 137 | EDITSITE ;
 | 
|---|
 | 138 |  W ! S DIC("A")="Select LEGACY SITE: ",DIC="^PPP(1020.128,",DIC(0)="QEALMZ",DLAYGO="1020.128"
 | 
|---|
 | 139 |  D ^DIC I $D(DTOUT)!$D(DUOUT)!(Y<1) G END
 | 
|---|
 | 140 |  S DIE="^PPP(1020.128,",(DA,PPPDA)=+Y,DR=".01;.02;1" D ^DIE
 | 
|---|
 | 141 |  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
 | 
|---|
 | 142 |  G EDITSITE
 | 
|---|
 | 143 | END ;
 | 
|---|
 | 144 |  K DIC,DIE,DA,Y,DR,DIK,PPPDA
 | 
|---|
 | 145 |  Q
 | 
|---|