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

PSSTRENG.m

Go to the documentation of this file.
  1. PSSTRENG ;BIR/RTR-Mismatch Strength Report ;06/28/07
  1. ;;1.0;PHARMACY DATA MANAGEMENT;**129**;9/30/97;Build 67
  1. ;Reference to ^PS(50.607 supported by DBIA 2221
  1. EN ;
  1. DEV ;
  1. N IOP,%ZIS,POP,ZTRTN,ZTDESC,ZTSK,DUOUT,DTOUT,DIRUT,DIROUT,X,Y,DIR
  1. W !!,"This report will print Dosage information for all entries in the DRUG (#50)",!,"File that have a different Strength than what is in the VA PRODUCT (#50.68)"
  1. W !,"File match. If these drugs have Local Possible Dosages, you need to be careful",!,"when populating the new Dose Unit and Numeric Dose fields to be used for Dosage"
  1. W !,"checks, because the Dosage check will be based on the VA Product. This report",!,"can only identify Strength mismatches if the Drug qualifies for Possible"
  1. W !,"Dosages, and a Strength has been defined in the DRUG (#50) File.",!
  1. W !?3,"This report is designed for 132 column format!",!
  1. K IOP,%ZIS,POP S %ZIS="QM" D ^%ZIS I $G(POP)>0 K IOP,%ZIS,POP W !!,"Nothing queued to print.",! K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
  1. I $D(IO("Q")) S ZTRTN="START^PSSTRENG",ZTDESC="Mismatch Strength Report" D ^%ZTLOAD K %ZIS W !!,"Report queued to print.",! K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR Q
  1. START ;
  1. U IO
  1. N PSSLINE,PSSYEAR,X,X1,X2,PSSOUT,PSSNAME,PSSCT,PSSIEN,PSSA,PSSB,PSSC,PSSD,PSSDV,PSSE,PSSINA,PSSINAD,PSSSTND1,PSSSTND3,PSSSTNDS,PSSSTNDZ
  1. N PSSNF,PSSUNIT,PSSAPU,PSSNODE,PSSMSG,PSSSTR,PSSNWD,PSSNWDN,PSSFOUND,Y,PSSMSXXX,PSSNWDS,PSSNWDSS
  1. S X1=DT,X2=-365 D C^%DTC S PSSYEAR=$G(X) K X,X1,X2
  1. S (PSSOUT,PSSFOUND)=0,PSSDV=$S($E(IOST,1,2)'="C-":"P",1:"C"),PSSCT=1
  1. K PSSLINE S $P(PSSLINE,"-",130)=""
  1. D HD
  1. PASS ;
  1. S PSSNAME="" F S PSSNAME=$O(^PSDRUG("B",PSSNAME)) Q:PSSNAME=""!($G(PSSOUT)) D
  1. .F PSSIEN=0:0 S PSSIEN=$O(^PSDRUG("B",PSSNAME,PSSIEN)) Q:'PSSIEN!($G(PSSOUT)) D
  1. ..Q:'$D(^PSDRUG(PSSIEN,0))
  1. ..K PSSINA,PSSNF,PSSINAD,PSSUNIT,PSSAPU,PSSNODE,PSSMSG,PSSMSXXX,PSSSTNDS,PSSSTNDZ,PSSSTND1,PSSSTND3,PSSSTR S PSSNF=$S($P($G(^PSDRUG(PSSIEN,0)),"^",9):1,1:0),PSSINA=$P($G(^PSDRUG(PSSIEN,"I")),"^"),PSSNODE=$G(^PSDRUG(PSSIEN,"DOS"))
  1. ..;Quit if no Strength in File 50
  1. ..S (PSSMSXXX,PSSSTR)=$P(PSSNODE,"^") S PSSMSXXX=$S($E(PSSMSXXX,1)=".":"0"_PSSMSXXX,1:PSSMSXXX)
  1. ..I PSSMSXXX="" Q
  1. ..S PSSSTND1=$P($G(^PSDRUG(PSSIEN,"ND")),"^"),PSSSTND3=$P($G(^("ND")),"^",3)
  1. ..I 'PSSSTND3!('PSSSTND1) Q
  1. ..S PSSSTNDZ=$$PROD0^PSNAPIS(+PSSSTND1,+PSSSTND3) S PSSSTNDS=$P(PSSSTNDZ,"^",3) S PSSSTNDS=$S($E(PSSSTNDS,1)=".":"0"_PSSSTNDS,1:PSSSTNDS)
  1. ..I $G(PSSSTNDS)="" Q
  1. ..I PSSSTNDS=PSSMSXXX Q
  1. ..;PSS*1*78 Aadding the Space for Dosages, - Depending on work group decision, you may need to chane this!
  1. ..S PSSFOUND=1
  1. ..S PSSMSG=$P($G(^PSDRUG(PSSIEN,0)),"^",10)
  1. ..S PSSAPU=$P($G(^PSDRUG(PSSIEN,2)),"^",3)
  1. ..I $G(PSSINA) S PSSINAD=$E(PSSINA,4,5)_"/"_$E(PSSINA,6,7)_"/"_$E(PSSINA,2,3)
  1. ..I $P(PSSNODE,"^",2) S PSSUNIT=$P($G(^PS(50.607,+$P(PSSNODE,"^",2),0)),"^")
  1. ..;S PSSSTR=PSSMSXXX
  1. ..W !!!,"("_$G(PSSIEN)_")",?19,$G(PSSNAME)_$S($G(PSSNF):" *N/F*",1:"") W ?72,"Inactive Date: "_$G(PSSINAD)
  1. ..I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ..I $G(PSSMSG)'="" W !?12,$G(PSSMSG)
  1. ..;I '$O(^PSDRUG(PSSIEN,"DOS1",0)),'$O(^PSDRUG(PSSIEN,"DOS2",0)) Q
  1. ..I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ..W !?12,"Strength: "_$G(PSSMSXXX) W ?43,"Units: " I $G(PSSUNIT)'="" W $G(PSSUNIT)
  1. ..I $G(PSSUNIT)'="",$L(PSSUNIT)>15 W !
  1. ..W ?66,"Application Package: "_$G(PSSAPU)
  1. ..I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ..S PSSA=0 K PSSC,PSSD,PSSE W !?4,"Possible Dosages: " D
  1. ...F PSSB=0:0 S PSSB=$O(^PSDRUG(PSSIEN,"DOS1",PSSB)) Q:'PSSB!($G(PSSOUT)) S PSSC=$P($G(^(PSSB,0)),"^"),PSSD=$P($G(^(0)),"^",2),PSSE=$P($G(^(0)),"^",3) I $G(PSSC),$G(PSSD) S PSSA=1 D
  1. ....I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ....W !?3,"Dispense Units Per Dose: "_$S($E($G(PSSC),1)=".":"0",1:"")_$G(PSSC),?44,"Dose: " D
  1. .....I $G(PSSUNIT)'["/" W $S($E($G(PSSD),1)=".":"0",1:"")_$G(PSSD)_$G(PSSUNIT) W ?78,"Package: "_$G(PSSE) D OUT Q
  1. .....D SETD D ZERO W $G(PSSCALC),?78,"Package: "_$G(PSSE) D OUT
  1. ..Q:$G(PSSOUT)
  1. ..I 'PSSA W "(None)"
  1. ..S PSSA=0 W !?4,"Local Possible Dosages: " F PSSB=0:0 S PSSB=$O(^PSDRUG(PSSIEN,"DOS2",PSSB)) Q:'PSSB!($G(PSSOUT)) D
  1. ...I $P($G(^PSDRUG(PSSIEN,"DOS2",PSSB,0)),"^")'="" S PSSA=1 D
  1. ....I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ....K PSSNWD,PSSNWDN,PSSNWDS,PSSNWDSS
  1. ....S PSSNWD=$P($G(^PSDRUG(PSSIEN,"DOS2",PSSB,0)),"^",5) I PSSNWD S PSSNWDN=$P($G(^PS(51.24,+$G(PSSNWD),0)),"^")
  1. ....W !?6,$P($G(^PSDRUG(PSSIEN,"DOS2",PSSB,0)),"^")
  1. ....I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ....S PSSNWDS=$P($G(^PSDRUG(PSSIEN,"DOS2",PSSB,0)),"^",6) S PSSNWDSS=$S($E(PSSNWDS,1)=".":"0"_$G(PSSNWDS),1:$G(PSSNWDS))
  1. ....W !?6,"Numeric Dose: "_$G(PSSNWDSS),?46,"Dose Unit: "_$G(PSSNWDN),?92,"Package: ",$P($G(^PSDRUG(PSSIEN,"DOS2",PSSB,0)),"^",2)
  1. ....I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ..Q:$G(PSSOUT) I 'PSSA W "(None)"
  1. ..I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ..W !?3,"Note: Strength of "_PSSMSXXX_" does not match NDF strength of "_PSSSTNDS_"."
  1. ..I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. ..W !?3,"VA PRODUCT MATCH: "_$P(PSSSTNDZ,"^")
  1. ..I ($Y+5)>IOSL D HD Q:$G(PSSOUT)
  1. END ;
  1. I '$G(PSSOUT),'PSSFOUND W !,"No mismatches found."
  1. I $G(PSSDV)="P" W !!,"End of Report.",!
  1. I '$G(PSSOUT),$G(PSSDV)="C" W !!,"End of Report." K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
  1. I $G(PSSDV)="C" W !
  1. E W @IOF
  1. ENDX K PSSCALC,PSSDFOI,PSSDFOIN,PSSDF,PSSDZZ D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
  1. Q
  1. HD ;
  1. I $G(PSSDV)="C",$G(PSSCT)'=1 W ! K DIR S DIR(0)="E",DIR("A")="Press Return to continue, '^' to exit" D ^DIR K DIR I 'Y S PSSOUT=1 Q
  1. W @IOF
  1. W !,"Mismatched Strength Report",?119,"PAGE: "_$G(PSSCT),!,PSSLINE S PSSCT=PSSCT+1
  1. Q
  1. SETD ;
  1. N PSSVA,PSSVA1,PSSVB,PSSVB1,PSSDASH,PSSNDFS,PSSDASH2,PSSDASH3,PSSDASH4,PSSDASH5 K PSSCALC
  1. S PSSDASH=0 S PSSNDFS=$$PSJST^PSNAPIS(+$P($G(^PSDRUG(PSSIEN,"ND")),"^"),+$P($G(^PSDRUG(PSSIEN,"ND")),"^",3)) S PSSNDFS=+$P($G(PSSNDFS),"^",2) I $G(PSSNDFS),$G(PSSSTR),+$G(PSSSTR)'=+$G(PSSNDFS) S PSSDASH=1
  1. S PSSVA=$P(PSSUNIT,"/"),PSSVB=$P(PSSUNIT,"/",2),PSSVA1=+$G(PSSVA),PSSVB1=+$G(PSSVB)
  1. I $G(PSSDASH) S PSSDASH2=PSSSTR/PSSNDFS,PSSDASH3=PSSDASH2*PSSC S PSSDASH4=PSSDASH3*$S($G(PSSVB1):PSSVB1,1:1) S PSSDASH5=$S('$G(PSSVB1):PSSDASH4_$G(PSSVB),1:PSSDASH4_$P(PSSVB,PSSVB1,2))
  1. S PSSCALC=$S('$G(PSSVA1):PSSD,1:($G(PSSVA1)*PSSD))_$S($G(PSSVA1):$P(PSSVA,PSSVA1,2),1:PSSVA)_"/"_$S($G(PSSDASH):$G(PSSDASH5),'$G(PSSVB1):+$G(PSSC)_$G(PSSVB),1:(+$G(PSSC)*+PSSVB1)_$P(PSSVB,PSSVB1,2))
  1. Q
  1. OUT ;
  1. K PSSDFOI,PSSDFOIN,PSSDF,PSSDZZ
  1. Q:$G(PSSE)'["O"
  1. S PSSDFOI=$P($G(^PSDRUG(PSSIEN,2)),"^") Q:'PSSDFOI
  1. S PSSDF=$P($G(^PS(50.7,+PSSDFOI,0)),"^",2)
  1. S PSSDFOIN=$P($G(^PS(50.606,+$G(PSSDF),0)),"^")
  1. Q:'PSSDF
  1. K PSSDZ F PSSDZZ=0:0 S PSSDZZ=$O(^PS(50.606,PSSDF,"NOUN",PSSDZZ)) Q:'PSSDZZ!($G(PSSDZ)'="") I $P($G(^(PSSDZZ,0)),"^")'="" S PSSDZ=$P($G(^(0)),"^")
  1. I $G(PSSDZ)="" S PSSDZ=$G(PSSDFOIN)
  1. I $G(PSSC) D PARN
  1. W ?94,$S($E($G(PSSC),1)=".":"0",1:"")_$G(PSSC)_" "_$S($G(PSSDZN)'="":$G(PSSDZN),1:$G(PSSDZ))
  1. K PSSDFOI,PSSDF,PSSDZ,PSSDZZ,PSSDZN,PSSDZNX,PSSDFOIN
  1. Q
  1. PARN ;
  1. K PSSDZN,PSSDZNX
  1. Q:$G(PSSDZ)=""
  1. Q:$L(PSSDZ)'>3
  1. S PSSDZNX=$E(PSSDZ,($L(PSSDZ)-2),$L(PSSDZ))
  1. I $G(PSSDZNX)="(S)"!($G(PSSDZNX)="(s)") D
  1. .I $G(PSSC)'>1 S PSSDZN=$E(PSSDZ,1,($L(PSSDZ)-3))
  1. .I $G(PSSC)>1 S PSSDZN=$E(PSSDZ,1,($L(PSSDZ)-3))_$E(PSSDZNX,2)
  1. Q
  1. ZERO ;Leading zeros
  1. I $E($G(PSSCALC),1)="." S PSSCALC="0"_$G(PSSCALC)
  1. N PSSLEZ,PSSLEZ1,PSSLEZD
  1. I $G(PSSCALC)["/." S PSSLEZD=$G(PSSCALC) D
  1. .S PSSLEZ=$P(PSSLEZD,"/."),PSSLEZ1=$P(PSSLEZD,"/.",2)
  1. .S PSSCALC=$G(PSSLEZ)_"/0."_$G(PSSLEZ1)
  1. Q