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

APSQDAWP.m

Go to the documentation of this file.
  1. APSQDAWP ;IHS/ITSC/ENM/POC - CALCULATE THE AWP [ 08/29/2003 3:14 PM ]
  1. ;;6.0;OUTPATIENT PHARMACY;**3,4**;11/11/2002
  1. ;ADDED IN ACTUAL ACQISTION COST IHS/OKCAO/POC 11/11/2002
  1. ;CALCULATE THE AWP EITHER FORM THE NDC NUMBER IN THE DRUG FILE OR THE NDC NUMBER IN THE ^APSAMDF FILE IHS/OKCAO/POC 8/18/2000 [ 06/04/2001 12:28 PM ]
  1. AWP(NDC,DRUGIEN,MESS) ;EP - NDC NUMBER PASSED MESSAGE IF ANY SENT BACK
  1. ;REPLACED MESS WITH MESS("DIMSG",1) 2/16/2001
  1. N DRUGNDC,IENAWP,DISPUNT,DISAWP
  1. N CKDRUG,CKAWP,CKNDCIEN,CKCOST,DISPUNT,DISPDRUG,DISPNAME ;ENHANCED 5/21/2001
  1. ;
  1. ;LOOKING AT DRUG IN DRUG FILE
  1. ;Q:'$G(NDC) 0 ;ADDED FOR PSORXED ROUTINE PSFROM="WHERE FROM I.E. EDIT"ENHANCED 5/21/2001
  1. Q:'$G(DRUGIEN) 0 ;ADDED FOR PSORXED ROUTINE
  1. S (MESS("DIMSG",1),MESS)=""
  1. S DRUGNDC=$P($G(^PSDRUG(DRUGIEN,2)),"^",4)
  1. ;I NDC=DRUGNDC S DRUGAWP=$P($G(^PSDRUG(DRUGIEN,999999931)),"^",2) S:DRUGAWP="" MESS="NDC FOR THIS DRUG IN DRUG FILE HAS NO AWP PER DISPENSE UNIT!" Q $FN(DRUGAWP,"",2)
  1. ;I NDC=DRUGNDC S DRUGAWP=$P($G(^PSDRUG(DRUGIEN,999999931)),"^",2) S:DRUGAWP="" (MESS("DIMSG",1),MESS)="NDC FOR THIS DRUG IN DRUG FILE HAS NO AWP PER DISPENSE UNIT!" Q $FN(DRUGAWP,"",6)
  1. I ($G(NDC)']"")!(NDC=DRUGNDC) S DRUGAWP=$P($G(^PSDRUG(DRUGIEN,999999931)),"^",2) S:DRUGAWP="" (MESS("DIMSG",1),MESS)="MESSAGE: NDC FOR THIS DRUG IN DRUG FILE HAS NO AWP PER DISPENSE UNIT!" Q $FN(DRUGAWP,"",6) ;ENHANCED 5/21/2001
  1. Q:$G(NDC)']"" 0 ;SHOULD NEVER GET HERE ENHANCED 5/21/2001
  1. ;
  1. ;NOW LOOKING AT OTHER DRUGS IN DRUG FILE
  1. S (MESS("DIMSG",1),MESS)=""
  1. S NDC=$TR(NDC,"-") ;STRIP OUT DASHES
  1. D Q:$D(CKAWP) CKAWP ;CKAWP IS AWP FROM ANOTHER DRUG IN THE DRUG FILE ENHANCE 5/21/2001
  1. .K CKAWP
  1. .S CKNDCIEN=0 F S CKNDCIEN=$O(^PSDRUG("ZNDC",NDC,CKNDCIEN)) Q:(CKNDCIEN'=+CKNDCIEN)!$D(CKAWP) D
  1. ..I $S('$D(^PSDRUG(+CKNDCIEN,"I")):0,DT'>^("I"):0,1:1) Q ;INACTIVE DRUG
  1. ..I $P($G(^PSDRUG(+CKNDCIEN,9999999)),U,3)'=+PSOSITE Q ;NOT THIS DIVISION PATCH 4 12/21/2001
  1. ..S CKDRUG=$P(^PSDRUG(+CKNDCIEN,0),U,1) ;THIS DRUG NAME
  1. ..S CKAWP=$P($G(^PSDRUG(+CKNDCIEN,999999931)),U,2) ;THIS DRUG AWP
  1. ..S CKUNT=$P($G(^PSDRUG(+CKNDCIEN,660)),U,5) ;THIS DRUG DISPENSE UNIT PER ORDER UNIT
  1. ..S DISPUNT=$P($G(^PSDRUG(DRUGIEN,660)),U,5) ;ORIGINAL DRUG DISPENSE UNIT PER ORDER UNIT
  1. ..;S DISPDRUG= ;ORIGINAL DRUG NAME
  1. ..I DISPUNT="" S (MESS("DIMSG",1),MESS)="MESSAGE: NO DISPENSE UNIT PER ORDER UNIT FOR THE DRUG IN THIS DRUG IN THE DRUG FILE" S CKAWP=0 Q
  1. ..I CKUNT="" S (MESS("DIMSG",1),MESS)="MESSAGE: NO DISPENSE UNIT PER ORDER UNIT FOR TEH DRUG IN THE DRUG FILE "_CKDRUG S CKAWP=0 Q
  1. ..I CKUNT'=DISPUNT S (MESS("DIMSG",1),MESS)="WARNING: DRUG DISPENSE UNIT PER ORDER UNIT "_DISPUNT_" FOR THIS DRUG IN DRUG FILE NOT THE SAME AS DRUG DISPENSE UNIT PER ORDER UNIT "_CKUNT_" FOR THE DRUG "_CKDRUG_" IN THE DRUG FILE" Q
  1. ..S (MESS("DIMSG",1),MESS)="MESSAGE: NDC'S DRUG FILE NAME IS "_CKDRUG
  1. ..Q
  1. .Q
  1. ;END OF ENHANCE 5/21/2001
  1. ;
  1. ;NOW LOOKING AT AWP MED TRANSACTION FILE
  1. ;S NDC=$TR(NDC,"-") ;STRIP OUT DASHES
  1. S (MESS("DIMSG",1),MESS)=""
  1. S IENAWP=$O(^APSAMDF("B",NDC,""))
  1. I IENAWP="" S (MESS("DIMSG",1),MESS)="NDC HAS NO AWP ENTRY IN THE AWP MED-TRANSACTION FILE" Q 0
  1. S DISPUNT=$P($G(^PSDRUG(DRUGIEN,660)),"^",5)
  1. I DISPUNT="" S (MESS("DIMSG",1),MESS)="MESSAGE: NO DISPENSE UNITS PER ORDER UNIT FOR THIS DRUG IN DRUG FILE" Q 0
  1. S DISPAWP=$P($G(^APSAMDF(IENAWP,1)),"^",3) ;DISPENSE UNITS PER ORDER UNIT OF AWP FILE
  1. ;I DISPUNT'=DISPAWP S DISPNAME=$P($G(^APSAMDF(IENAWP,2)),"^",1),MESS="DRUG DISPENSE UNIT "_DISPUNT_" NOT SAME AS AWP DISPENSE UNIT "_DISPAWP_" FOR DRUG "_DISPNAME Q 0
  1. S DISPNAME=$P($G(^APSAMDF(IENAWP,2)),"^",1),(MESS("DIMSG",1),MESS)="MESSAGE: NDC'S AWP MED TRANSACTION FILE NAME IS "_DISPNAME ;IHS/OKCAO/POC 2/12/2001 CHANGE TO BE LESS RESTRICTIVE
  1. I DISPUNT'=DISPAWP S (MESS("DIMSG",1),MESS)="WARNING: DRUG DISPENSE UNIT PER ORDER UNIT "_DISPUNT_" NOT SAME AS AWP DISPENSE UNIT PER ORDER UNIT "_DISPAWP_" FOR AWP DRUG "_DISPNAME ;IHS/OKCAO/POC 2/12/2001
  1. ;ABOVE LINE - WILL SUBSTITUTE THIS LINE FOR ABOVE MAYBE TO ALLOW UNITS NOT TO BE MATCHED UP BUT TAKE FOR ONE DRUG-CHANGE TO BE LESS RESTRICTIVE
  1. ;Q $FN($P($G(^APSAMDF(IENAWP,0)),"^",3),"",2) ;AWP PER DISPENSE UNIT
  1. Q $FN($P($G(^APSAMDF(IENAWP,0)),"^",3),"",6) ;AWP PER DISPENSE UNIT
  1. ;
  1. COST(NDC,DRUGIEN,MESS) ;EP - NDC NUMBER PASSED MESSAGE IF ANY SENT BACK
  1. ;IMPROVE COST
  1. N DRUGNDC,IENAWP,DISPUNT,DISAWP,DISPCOST,COSTPU ;IHS/OCKAO/POC 6/28/2002
  1. N CKDRUG,CKAWP,CKNDCIEN,CKCOST,DISPUNT,DISPDRUG,DISPNAME ;ENHANCED 5/21/2001
  1. ;LOOKING AT THE DRUG IN THE DRUG FILE
  1. ;Q:'$G(NDC) 0 ;ADDED FOR PSORXED ROUTINE CAN CHECK OUT PSFROM VARIABLEENHANCE 5/21/2001
  1. Q:'$G(DRUGIEN) 0 ;ADDED FOR PSORXED ROUTINE
  1. S (MESS("DIMSG",1),MESS)=""
  1. S DRUGNDC=$P($G(^PSDRUG(DRUGIEN,2)),"^",4)
  1. ;I NDC=DRUGNDC S DRUGAWP=$P($G(^PSDRUG(DRUGIEN,999999931)),"^",2) S:DRUGAWP="" MESS="NDC FOR THIS DRUG IN DRUG FILE HAS NO AWP PER DISPENSE UNIT!" Q $FN(DRUGAWP,"",2)
  1. ;I NDC=DRUGNDC S DRUGCOST=$P($G(^PSDRUG(DRUGIEN,660)),"^",6) S:DRUGCOST="" (MESS("DIMSG",1),MESS)="NDC FOR THIS DRUG IN DRUG FILE HAS NO AWP PER DISPENSE UNIT!" Q $FN(DRUGCOST,"",6)
  1. I ($G(NDC)']"")!(NDC=DRUGNDC) S DRUGCOST=$P($G(^PSDRUG(DRUGIEN,660)),"^",6) S:DRUGCOST="" (MESS("DIMSG",1),MESS)="NDC FOR THIS DRUG IN DRUG FILE HAS NO AAC PER DISPENSE UNIT!" Q $FN(DRUGCOST,"",6) ;ENHANCE 5/21/2001
  1. Q:$G(NDC)']"" 0 ;SHOULD NEVER GET HERE ENHANCE 5/21/2001
  1. ;
  1. ;LOOKING AT OTHER DRUGS IN THE DRUG FILE ENHANCE 5/21/2001
  1. S (MESS("DIMSG",1),MESS)=""
  1. S NDC=$TR(NDC,"-") ;STRIP OUT DASHES
  1. D Q:$D(CKCOST) CKCOST
  1. .K CKCOST
  1. .S CKNDCIEN=0 F S CKNDCIEN=$O(^PSDRUG("ZNDC",NDC,CKNDCIEN)) Q:((CKNDCIEN'=+CKNDCIEN)!$D(CKCOST)) D
  1. ..I $S('$D(^PSDRUG(+CKNDCIEN,"I")):0,DT'>^("I"):0,1:1) Q ;INACTIVE DRUG
  1. ..I $P($G(^PSDRUG(+CKNDCIEN,9999999)),U,3)'=+PSOSITE Q ;NOT THIS DIVISION PATCH 4
  1. ..S CKDRUG=$P(^PSDRUG(+CKNDCIEN,0),U,1) ;THIS DRUG NAME
  1. ..S CKCOST=$P($G(^PSDRUG(+CKNDCIEN,660)),U,6) ;THIS DRUG COST
  1. ..S CKUNT=$P($G(^PSDRUG(+CKNDCIEN,660)),U,5) ;THIS DRUG DISPENSE UNIT PER ORDER UNIT
  1. ..S DISPUNT=$P($G(^PSDRUG(DRUGIEN,660)),U,5) ;THE ORIGINAL DRUG DISPENSE UNIT PER ORDER UNIT
  1. ..I DISPUNT="" S (MESS("DIMSG",1),MESS)="MESSAGE: NO DISPENSE UNIT PER ORDER UNIT FOR THIS DRUG IN DRUG FILE" S CKCOST=0 Q
  1. ..I CKUNT="" S (MESS("DIMSG",1),MESS)="MESSAGE: NO DISPENSE UNIT PER ORDER UNIT FOR THE DRUG IN THE DRUG FILE "_CKDRUG S CKCOST=0 Q
  1. ..I CKUNT'=DISPUNT S (MESS("DIMSG",1),MESS)="WARNING: DRUG DISPENSE UNIT PER ORDER UNIT OF "_DISPUNT_" FOR THIS DRUG NOT THE SAME AS DRUG DISPENSE UNIT PER ORDER UNIT OF "_CKUNT_" FOR THE DRUG "_CKDRUG Q
  1. ..S (MESS("DIMSG",1),MESS)="MESSAGE: NDC'S DRUG FILE NAME IS "_CKDRUG
  1. ..Q
  1. .Q
  1. ;END OF CHANGES ENHANCE 5/21/2001
  1. ;
  1. ;BELOW ARE CHANGES FOR COST IHS/OKCAO/POC 6/28/2002
  1. S (MESS("DIMSG",1),MESS)=""
  1. ;S NDC=$TR(NDC,"-") ;STRIP OUT DASHES
  1. S IENAWP=$O(^APSAMDF("B",NDC,"")) ;&&
  1. I IENAWP="" S (MESS("DIMSG",1),MESS)="NDC HAS NO COST ENTRY IN THE AWP MED-TRANSACTION FILE" Q 0
  1. S DISPUNT=$P($G(^PSDRUG(DRUGIEN,660)),"^",5)
  1. I DISPUNT="" S (MESS("DIMSG",1),MESS)="NO DISPENSE UNITS PER ORDER UNIT FOR THIS DRUG" Q 0
  1. S DISPCOST=$P($G(^APSAMDF(IENAWP,1)),"^",3) ;***DISPENSE UNITS PER ORDER UNIT OF SOME COST FILE ;&&
  1. S DISPNAME=$P($G(^APSAMDF(IENAWP,2)),"^",1),(MESS("DIMSG",1),MESS)="MESSAGE: NDC'S COST MED TRANSACTION FILE NAME IS "_DISPNAME
  1. I DISPUNT'=DISPCOST S (MESS("DIMSG",1),MESS)="WARNING: DRUG DISPENSE UNIT PER ORDER UNIT "_DISPUNT_" NOT SAME AS COST DISPENSE UNIT PER ORDER UNIT "_DISPCOST_" FOR COST DRUG "_DISPNAME
  1. S COSTPU=$FN($P($G(^APSAMDF(IENAWP,4)),"^",3),"",6) ;COST PER UNIT OF COST DRUG FIELD 403 IN AWP FILE
  1. I 'COSTPU S (MESS("DIMSG",1),MESS)="WARNING: NO COST PER DISPENSE UNIT PER ORDER UNIT FOR THIS DRUG ENTRY "_DISPNAME_" IN COST FILE"
  1. Q COSTPU