Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSBVDLPA

PSBVDLPA.m

Go to the documentation of this file.
  1. PSBVDLPA ;BIRMINGHAM/EFC-BCMA UNIT DOSE VIRTUAL DUE LIST FUNCTIONS;03/06/16 3:06pm ;5/20/21 15:37
  1. ;;3.0;BAR CODE MED ADMIN;**5,16,13,38,32,58,70,83,114,106**;Mar 2004;Build 43
  1. ;Per VHA Directive 2004-038 (or future revisions regarding same), this routine should not be modified.
  1. ;
  1. ; called by PSBVDLUD to find patches not removed
  1. ;
  1. ; Reference/IA
  1. ; $$GET^XPAR/2263
  1. ; $$FMADD^XLFDT/10103
  1. ; GETPROVL^PSGSICH1/5653
  1. ; INTRDIC^PSGSICH1/5654
  1. ; PHARMACY OI file #(50.7)/2180
  1. ;
  1. ;*58 - add 29th piece to Results for Override/Intervention flag 1/0
  1. ;*70 - add 30th piece for consistency with psbvdlud routine.
  1. ; - add 32nd piece for clinic name for CO meds and a patch.
  1. ; - add 33rd piece to Results for Clinic ien ptr to file #44
  1. ;*83 - add 34th & 35th piece to Results. Remove flag & Remove time
  1. ;*106- add Hazardous to Handle & Dispose flags 36 & 37
  1. ;
  1. EN ;Search the Medlog file for patches that were Given and not Removed.
  1. ; Place these meds into the return Results array.
  1. ;
  1. N PSBGNODE,PSBIEN,PSBXDTI,PSBXXDTI,PSBZON,X,Y,PSBPBK,DSPDRG ;*83
  1. S PSBGNODE="^PSB(53.79,"_"""APATCH"""_","_DFN_")"
  1. F S PSBGNODE=$Q(@PSBGNODE) Q:PSBGNODE']"" Q:($QS(PSBGNODE,2)'="APATCH")!($QS(PSBGNODE,3)'=DFN) D
  1. .S PSBIEN=$QS(PSBGNODE,5)
  1. .S DSPDRG=$O(^PSB(53.79,PSBIEN,.5,0)) I 'DSPDRG Q
  1. .I $P(^PSB(53.79,PSBIEN,.5,DSPDRG,0),U,4)'="PATCH" Q
  1. .I "G"'[$P(^PSB(53.79,PSBIEN,0),U,9)!($D(PSBONVDL(PSBIEN))) Q
  1. .S PSBZON=$P(^PSB(53.79,PSBIEN,.1),"^")
  1. .D CLEAN^PSBVT
  1. .D PSJ1^PSBVT(DFN,PSBZON) Q:$G(PSBSCRT)=-1
  1. .;
  1. .S PSBPBK=+($$GET^XPAR("DIV","PSB VDL PATCH DAYS"))
  1. .I PSBPBK D NOW^%DTC I ($$FMADD^XLFDT($P(PSBOSP,"."),(PSBPBK))<X) Q
  1. .S $P(PSBREC,U,1)=DFN ; dfn
  1. .S $P(PSBREC,U,2)=PSBONX ; order numer
  1. .S $P(PSBREC,U,3)=PSBON ; order ien
  1. .S $P(PSBREC,U,4)="U" ; order type U unit dose
  1. .S $P(PSBREC,U,5)=PSBSCHT
  1. .S $P(PSBREC,U,6)=PSBSCH
  1. .S $P(PSBREC,U,7)=$S(PSBHSM:"HSM",PSBSM:"SM",1:"")
  1. .S $P(PSBREC,U,8)=PSBOITX
  1. .S $P(PSBREC,U,9)=PSBDOSE
  1. .S $P(PSBREC,U,10)=PSBMR
  1. .S:$D(PSBHSTAX(PSBOIT)) $P(PSBREC,U,11)=$O(PSBHSTAX(PSBOIT,""),-1),$P(PSBREC,U,20)=$O(PSBHSTAX(PSBOIT,$P(PSBREC,U,11),""),-1)
  1. .D:'$D(PSBHSTAX(PSBOIT))
  1. ..N PSBX,PSBY,PSBDONE S PSBDONE=0,PSBX="" F S PSBX=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,PSBX),-1) Q:PSBX="" D:'PSBDONE
  1. ...S PSBY="" F S PSBY=$O(^PSB(53.79,"AOIP",DFN,PSBOIT,PSBX,PSBY),-1) Q:PSBY="" D:'PSBDONE
  1. ....S:$P(^PSB(53.79,PSBY,0),U,9)'="N" $P(PSBREC,U,20)=$P(^PSB(53.79,PSBY,0),U,9) S:($P(PSBREC,U,20)'="N")&($P(PSBREC,U,20)]"") $P(PSBREC,U,11)=PSBX,PSBDONE=1
  1. .S $P(PSBREC,U,12)=PSBIEN
  1. .S $P(PSBREC,U,13)="G"
  1. .S $P(PSBREC,U,14)=$P(^PSB(53.79,PSBIEN,.1),U,3)
  1. .I $P(PSBREC,U,14)="" S $P(PSBREC,U,14)=PSBNOW\1
  1. .S $P(PSBREC,U,15)=PSBOIT
  1. .D:($G(PSBTAB)="CVRSHT")!($G(PSBTAB)="UDTAB")
  1. ..S $P(PSBREC,U,16)=PSBNJECT ;always send this flag *70
  1. ..I $P(PSBREC,U,9)?1.4N1"-"1.4N.E S $P(PSBREC,U,17)=1
  1. ..E S $P(PSBREC,U,17)=0
  1. ..S $P(PSBREC,U,19)=$S(PSBVNI]"":PSBVNI,PSBVNI']"":"***")
  1. ..S $P(PSBREC,U,23)=""
  1. ..S $P(PSBREC,U,26)=PSBOSP
  1. ..S $P(PSBREC,U,27)=$$LASTG^PSBCSUTL($P(PSBREC,U),$P(PSBREC,U,15))
  1. ..S $P(PSBREC,U,28)=0
  1. ..I ($G(PSBTAB)="CVRSHT") S $P(PSBREC,U,28)=1
  1. ..I ($G(PSBTAB)="UDTAB") I PSBSCHT'="O" S:(PSBOSTS="E")!(PSBOSTS["D") $P(PSBREC,U,28)=1
  1. ..;*58 determine if override or intervn exists, send 1/0 (true/false)
  1. ..N PSBARR D GETPROVL^PSGSICH1(DFN,PSBONX,.PSBARR)
  1. ..I $O(PSBARR(""))="" D INTRDIC^PSGSICH1(DFN,PSBONX,.PSBARR,2)
  1. ..S $P(PSBREC,U,29)=$S($O(PSBARR(""))]"":1,1:0)
  1. ..;add last site *70/*83
  1. ..S $P(PSBREC,U,30)=$$LASTSITE^PSBINJEC(DFN,PSBOIT) ;*83
  1. ..; piece 31 special IVPB use in vdl's not for coversheet
  1. ..I $G(PSBTAB)="CVRSHT" D ;If from coversheet use offset -1 *70
  1. ...S $P(PSBREC,U,31)=$G(PSBCLORD) ;clinic name
  1. ...S $P(PSBREC,U,32)=$G(PSBCLIEN) ;clinic ien ptr
  1. ..I $G(PSBTAB)="UDTAB" D ;Else must be Unit does VDL calling
  1. ...S $P(PSBREC,U,32)=$G(PSBCLORD) ;clinic name
  1. ...S $P(PSBREC,U,33)=$G(PSBCLIEN) ;clinic ien ptr
  1. ...S $P(PSBREC,U,35)=$P(^PSB(53.79,PSBIEN,.1),U,7) ;existing RM time
  1. ..; piece 34-35 reserved for Remove meds and set by PSBVDLU1
  1. ..S $P(PSBREC,U,36)=$G(PSBHAZHN) ;Hazardous to Handle *106
  1. ..S $P(PSBREC,U,37)=$G(PSBHAZDS) ;Hazardous to Dispose *106
  1. ..;
  1. ..; Place into Coversheet activity ARRAY
  1. ..S PSBDIDX="" I $D(^PSB(53.79,"AORD",DFN,PSBONX)) D
  1. ...S PSBXDTI="",PSBXDTI=$O(^PSB(53.79,"AORD",DFN,PSBONX,PSBXDTI),-1)
  1. ...Q:'$D(^PSB(53.79,"AORD",DFN,PSBONX,PSBXDTI,PSBIEN))
  1. ...S PSBADMX(PSBONX,PSBXDTI,PSBIEN)="",PSBDIDX=1
  1. ..I ('PSBDIDX)&$D(^PSB(53.79,"AORDX",DFN,PSBONX)) D
  1. ...S PSBXXDTI="",PSBXXDTI=$O(^PSB(53.79,"AORDX",DFN,PSBONX,PSBXXDTI),-1)
  1. ...Q:'$D(^PSB(53.79,"AORDX",DFN,PSBONX,PSBXXDTI,PSBIEN))
  1. ...S PSBADMX(PSBONX,PSBXXDTI,PSBIEN)=""
  1. .S $P(PSBREC,U,18)="PATCH"
  1. .S $P(PSBREC,U,21)=PSBOST
  1. .S $P(PSBREC,U,22)=PSBOSTS
  1. .S PSBDDS="" F Y=0:0 S Y=$O(PSBDDA(Y)) Q:'Y S:$P(PSBDDA(Y),U,4)="" $P(PSBDDA(Y),U,4)=1 S PSBDDS=PSBDDS_U_$P(PSBDDA(Y),U,1,4),$P(PSBDDS,U,1)=PSBDDS+1
  1. .S PSBQRR=1
  1. .; *83 Api below now calcs & adds MRR code & Remove time to (34,35)
  1. .D ADD^PSBVDLU1(PSBREC,PSBOTXT,$P(PSBREC,U,14),PSBDDS,"","",$S($G(PSBTAB)="CVRSHT":"CVRSHT",1:"UDTAB"))
  1. Q