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

PSORXVW2.m

Go to the documentation of this file.
  1. PSORXVW2 ;ISC-BIRM/PDW - view cmop activity logs ; 4/13/12 2:54pm
  1. ;;7.0;OUTPATIENT PHARMACY;**33,71,117,152,148,367,361,655,720**;DEC 1997;Build 1
  1. ; External Referrence to file # 550.2 granted by DBIA 2231
  1. ;External reference to ^PS(50.607 supported by DBIA 2221
  1. ;External reference to ^PS(51.2 supported by DBIA 2226
  1. ;External reference to File ^PS(55 supported by DBIA 2228
  1. ;External reference to VA(200 supported by DBIA 10060
  1. ;get data from event multiple
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" "
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="CMOP Event Log:",IEN=IEN+1
  1. S ^TMP("PSOAL",$J,IEN,0)="Date/Time Rx Ref TRN-Order Stat Comments",IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0),"=",79)="="
  1. F PSXA=0:0 S PSXA=$O(^PSRX(DA,4,PSXA)) Q:'PSXA S PSX4=^(PSXA,0) D FIX D
  1. . S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=$$DATE(DA,$P(PSX4,"^",3),PSXA)_" "_$S('PSXFIL:"Orig",1:"Ref "_$G(PSXFIL))_" "_$G(PSXBREF)
  1. . S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_" "_$G(PSXT)_" "_$S($G(PSXTST)=3:$E($P($G(PSXCAN),"^"),1,35),$G(PSXNDC)'="":"NDC: "_PSXNDC,1:"")
  1. . I PSXCAR'=""!(PSXID'="") D
  1. . . N X S X="Carrier: "_$E(PSXCAR,1,21)
  1. . . S X=$$SETSTR^VALM1("Pkg ID: ",X,32,8)
  1. . . S X=X_PSXID
  1. . . S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=X
  1. . ; FDA Medication Guide
  1. . N FDAMGDOC S FDAMGDOC=$G(^PSRX(DA,4,PSXA,"FDA"))
  1. . I FDAMGDOC'="" D
  1. . . S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="FDA Med Guide: "_$E(FDAMGDOC,1,61)
  1. . . I $L(FDAMGDOC)>61 D
  1. . . . F Q:$E(FDAMGDOC,62,999)="" D
  1. . . . . S FDAMGDOC=$E(FDAMGDOC,62,999),IEN=IEN+1
  1. . . . . S ^TMP("PSOAL",$J,IEN,0)=$E(FDAMGDOC,1,61)
  1. D:$O(^PSRX(DA,5,0))
  1. .S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" "
  1. .S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="CMOP Lot#/Expiration Date Log:",IEN=IEN+1
  1. .S ^TMP("PSOAL",$J,IEN,0)="Rx Ref Lot # Expiration Date"
  1. .S IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0),"=",79)="="
  1. .F PSXZ=0:0 S PSXZ=$O(^PSRX(DA,5,PSXZ)) Q:PSXZ']"" S PSXLOT=^(PSXZ,0) D
  1. ..S EXPDT=$P(PSXLOT,U,2)
  1. ..S EXPDT=$E(EXPDT,4,5)_"/"_$E(EXPDT,6,7)_"/"_$E(EXPDT,2,3)
  1. ..S RXREF=$P(PSXLOT,U,3)
  1. ..S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=$S(RXREF=0:"Orig",RXREF>0:"Ref "_RXREF,1:"")_" "_$P(PSXLOT,U)_" "_EXPDT
  1. FINI K ANS,Y,%,I,Z,PSXLOT,PSXL,PSX4,F,PSXA,C,ER,PSXFIL,PSX4,PSXREA,PSXVID
  1. K PSXREL,PSXTRDT,PSXT,PSXLOC,DTOUT,DUOUT,PSXSEQ,PSXA,PSXML,P,I1,I2
  1. K PSXP,PSXE,PSXE1,PSXERR,PSXBAT,ZD1,ZD2,ZDT,RXREF,PSXZ,PSXTST,PSXTCAN
  1. K PSXRDT,PSXNDC,PSXM,PSXL1,PSXCAN,PSX1,EXPDT,PSXBREF,RXREF1
  1. K PSXCAR,PSXID
  1. Q
  1. FIX ; translate data
  1. S PSXBAT=$P(PSX4,U),PSXSEQ=$P(PSX4,U,2)
  1. S PSXFIL=$P(PSX4,U,3),PSXTST=$P(PSX4,U,4)
  1. S PSXBREF=$G(PSXBAT)_"-"_$G(PSXSEQ)
  1. S PSXZT=$P(PSX4,U,5),PSXZT1=$P(PSXZT,"."),PSXZT2=$P(PSXZT,".",2)
  1. I $G(PSXZT)']"" K PSXZT,PSXZT1,PSXZT2 G F1
  1. S PSXZT2=$E(PSXZT2,1,4)
  1. S PSXZT1=$E(PSXZT1,4,5)_"/"_$E(PSXZT1,6,7)_"/"_$E(PSXZT1,2,3)
  1. S PSXTCAN=PSXZT1_"@"_PSXZT2 K PSXZT1,PSXZT2,PSXZT
  1. F1 S PSXNDC=$P(PSX4,U,8)
  1. S PSXCAN=$G(^PSRX(DA,4,PSXA,1))
  1. S PSXCAR=$P(PSXCAN,U,3)
  1. S PSXID=$P(PSXCAN,U,4)
  1. ; get cmop site
  1. S I1=PSXBAT ; S I1=$O(^PSX(550.2,"B",PSXBAT,""))
  1. P1 ; get transmission d/t
  1. S ZDT=$P(^PSX(550.2,I1,0),U,6),ZD1=$P(ZDT,"."),ZD2=$P(ZDT,".",2)
  1. S ZD2=$E(ZD2,1,4)
  1. S ZD1=$E(ZD1,4,5)_"/"_$E(ZD1,6,7)_"/"_$E(ZD1,2,3)
  1. S PSXTRDT=ZD1_"@"_ZD2
  1. Q1 S:PSXTST=0 PSXT="TRAN"
  1. S PSXRDT="Not Released"
  1. I PSXTST=1 D
  1. .I PSXFIL>0,('$D(^PSRX(DA,1,PSXFIL,0))) S PSXT="Disp Refill Deleted" Q
  1. .I PSXFIL,$D(^PSRX(DA,"RTS",0)),$$REFRTS(DA,PSXFIL) S PSXT="Disp Refill Deleted" Q
  1. .S PSX1=$S(PSXFIL=0:$P(^PSRX(DA,2),"^",13),1:$P(^PSRX(DA,1,PSXFIL,0),"^",18))
  1. .Q:PSX1']""
  1. .I PSX1'["." S PSXRDT=$E(PSX1,4,5)_"/"_$E(PSX1,6,7)_"/"_$E(PSX1,2,3) G SKIP
  1. .S ZR=PSX1,ZR1=$P(ZR,"."),ZR2=$P(ZR,".",2)
  1. .S ZR2=$E(ZR2,1,4)
  1. .S PSXRDT=$E(ZR1,4,5)_"/"_$E(ZR1,6,7)_"/"_$E(ZR1,2,3)_"@"_ZR2
  1. .K ZR,ZR1,ZR2
  1. SKIP .S PSXT="DISP"
  1. S:PSXTST=2 PSXT="RTRN"
  1. S:PSXTST=3 PSXT="NDISP"
  1. Q
  1. ;
  1. COPAY ;Copay activity log
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" ",IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="Copay Activity Log:"
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="# Date Reason Rx Ref Initiator Of Activity",IEN=IEN+1,$P(^TMP("PSOAL",$J,IEN,0),"=",79)="="
  1. I '$O(^PSRX(DA,"COPAY",0)) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="There's NO Copay activity to report" Q
  1. F N=0:0 S N=$O(^PSRX(DA,"COPAY",N)) Q:'N S P1=^(N,0),DTT=P1\1 D DAT^PSORXVW1 D
  1. .S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=N_" "_DAT_" ",$P(RN," ",21)=" ",REA=$P(P1,"^",2),REA=$F("ARICE",REA)-1
  1. .I REA D
  1. ..S STA=$P("ANNUAL CAP REACHED^COPAY RESET^IB-INITIATED COPAY^REMOVE COPAY CHARGE^RX EDITED^","^",REA)
  1. ..S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_STA_$E(RN,$L(STA)+1,21)
  1. .E S $P(STA," ",21)=" ",^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_STA
  1. .K STA,RN S $P(RN," ",15)=" ",RF=+$P(P1,"^",4)
  1. .S RFT=$S(RF>0:"REFILL "_RF,1:"ORIGINAL")
  1. .S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_RFT_$E(RN,$L(RFT)+1,15)_$S($D(^VA(200,+$P(P1,"^",3),0)):$P(^(0),"^"),1:$P(P1,"^",3))
  1. .S:$P(P1,"^",5)]""!($P(P1,"^",6)]"")!($P(P1,"^",7)]"") IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)="Comment: "_$P(P1,"^",5)
  1. .I $P(P1,"^",6)]"" S ^TMP("PSOAL",$J,IEN,0)=^TMP("PSOAL",$J,IEN,0)_" Old value="_$P(P1,"^",6)_" New value="_$P(P1,"^",7)
  1. Q
  1. DOSE ;displays dosing instruction for both simple and complex Rxs.
  1. I '$O(^PSRX(DA,6,0)) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Dosage: " Q
  1. F I=0:0 S I=$O(^PSRX(DA,6,I)) Q:'I S DOSE=^PSRX(DA,6,I,0) D DOSE1
  1. K DOSE
  1. Q
  1. DOSE1 ;
  1. I '$P(DOSE,"^",2),$P(DOSE,"^",9)]"" S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Verb: "_$P(DOSE,"^",9)
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" *Dosage: "_$S($E($P(DOSE,"^"),1)="."&($P(DOSE,"^",2)):"0",1:"")_$P(DOSE,"^")_$S($P(DOSE,"^",3):$P(^PS(50.607,$P(DOSE,"^",3),0),"^"),1:"")
  1. I '$P(DOSE,"^",2),$P($G(^PS(55,PSODFN,"LAN")),"^") S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Oth. Lang. Dosage: "_$G(^PSRX(DA,6,I,1))
  1. I $P(DOSE,"^",2),$P(DOSE,"^",9)]"" S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Verb: "_$P(DOSE,"^",9)
  1. I $P(DOSE,"^",2) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Dispense Units: "_$S($E($P(DOSE,"^",2),1)=".":"0",1:"")_$P(DOSE,"^",2)
  1. I $P(DOSE,"^",2) S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" Noun: "_$P(DOSE,"^",4)
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" *Route: "_$S($P(DOSE,"^",7):$P(^PS(51.2,$P(DOSE,"^",7),0),"^"),1:"")
  1. S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" *Schedule: "_$P(DOSE,"^",8)
  1. I $P(DOSE,"^",5)]"" S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" *Duration: "_$P(DOSE,"^",5)_" ("_$S($P(DOSE,"^",5)["M":"MINUTES",$P(DOSE,"^",5)["H":"HOURS",$P(DOSE,"^",5)["L":"MONTHS",$P(DOSE,"^",5)["W":"WEEKS",1:"DAYS")_")"
  1. I $P(DOSE,"^",6)]"" S IEN=IEN+1,^TMP("PSOAL",$J,IEN,0)=" *Conjunction: "_$S($P(DOSE,"^",6)="A":"AND",$P(DOSE,"^",6)="T":"THEN",$P(DOSE,"^",6)="X":"EXCEPT",1:"")
  1. Q
  1. ;
  1. DATE(RX,RFL,PSXA) ;
  1. N ZDT,ZD1,ZD2,PSXSDT S PSXSDT=0 ; ;p655 For dispensed status return shipping date
  1. I $G(PSXTST)=1 D
  1. . S ZDT=$P($G(^PSRX(RX,4,PSXA,1)),"^",2) K PSXA
  1. . S ZD1=$P(ZDT,"."),ZD1=$E(ZD1,4,5)_"/"_$E(ZD1,6,7)_"/"_$E(ZD1,2,3)
  1. . S ZD2=$E($P(ZDT,".",2),1,4)
  1. . S PSXSDT=ZD1_"@"_ZD2
  1. I +PSXSDT Q PSXSDT ;--p655 end
  1. ;
  1. I $G(PSXTST)=3,$G(PSXTCAN)'="" Q PSXTCAN
  1. ;original code: I $G(PSXTST)=1 Q $G(PSXRDT)
  1. I $G(PSXTST)=3,'RFL,$$GET1^DIQ(52,RX,32.1,"I") Q $$FMTE^XLFDT($$GET1^DIQ(52,RX,32.1,"I"),2)
  1. I $G(PSXTST)=3,RFL,$$GET1^DIQ(52.1,RFL_","_RX,5,"I") Q $$FMTE^XLFDT($$GET1^DIQ(52.1,RFL_","_RX,32.1,"I"),2)
  1. Q $G(PSXTRDT)
  1. ;
  1. DAT S DAT="",DTT=DTT\1 Q:DTT'?7N S DAT=$E(DTT,4,5)_"/"_$E(DTT,6,7)_"/"_$E(DTT,2,3)
  1. Q
  1. REFRTS(PSORXN,PSOFN) ; p720 (Rx#,Fill Number) Return 1 if refill is returned to stock and label is created after RTS
  1. N PSXA,PSFILL,RTS,LBLDT,LBLFLN
  1. F PSXA=0:0 S PSXA=$O(^PSRX(PSORXN,"RTS",PSXA)) Q:'PSXA D
  1. . S PSFILL=$P($G(^PSRX(PSORXN,"RTS",1,0)),"^",2) Q:PSFILL'=PSOFN
  1. . S RTS(PSFILL)=$P($G(^PSRX(PSORXN,"RTS",1,0)),"^") ; rts date
  1. Q:'$D(RTS(PSOFN)) 0
  1. F PSXA=0:0 S PSXA=$O(^PSRX(PSORXN,"L",PSXA)) Q:'PSXA D
  1. . S LBLFLN=$P($G(^PSRX(PSORXN,"L",PSXA,0)),"^",2) ; label fill number
  1. . Q:LBLFLN'=PSOFN
  1. . S LBLDT=$P($G(^PSRX(PSORXN,"L",PSXA,0)),"^") ; label date/time
  1. Q:$G(LBLDT)>(RTS(PSOFN)) 1
  1. Q 0