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

APSQAWP.m

Go to the documentation of this file.
  1. APSQAWP ;IHS/DSD/ENM - MATCH LOCAL NDC WITH FACTS & COMPARISON NDC ; [ 08/29/2003 3:11 PM ]
  1. ;;6.0;IHS PHARMACY MODIFICATIONS;**3,4**;11/11/2002
  1. ;TRIGGERED FROM NDC FIELD OF DRUG FILE UPDATE AWP,AAC 11/11/2002
  1. ;THIS WAS THE APSQAWP2 ROUTINE
  1. Q
  1. ;
  1. VSET I $D(^PSDRUG(APSPIRN,"I")) Q ;QUIT IF DRUG IS INACTIVE
  1. K XMB ;BE SAFE
  1. S XMB(9)=$S($G(DUZ)>0:$P($G(^VA(200,DUZ,0)),"^",1),1:"UNKNOWN") ;PERSON UPDATING
  1. S APSQCNT=0 ;A COUNTER FOR ENTRIES IN BULLETIN
  1. S APSDNAME=$P(^PSDRUG(APSPIRN,0),"^")
  1. S APSPNDC2=""
  1. I $L(APSPNDC)=11 S APSPNDC2=APSPNDC
  1. I $L(APSPNDC)<11 D ;
  1. .I $L(APSPNDC)=10 S APSPNDC2="0"_APSPNDC
  1. ;I $L(APSPNDC)=9 S APSPNDC2="00"_APSPNDC
  1. I $L(APSPNDC)<10!($L(APSPNDC)>11) S APSPERR=4 D ERR ;NDC < 10 & > 11 DIGITS
  1. S APSPNOD1=$S($D(^PSDRUG(APSPIRN,660)):^PSDRUG(APSPIRN,660),1:"UNK")
  1. I APSPNOD1="UNK" S APSPERR=1 D ERR ;660 NODE MISSING
  1. S APSP("DISP U")=$P($G(APSPNOD1),"^",5)
  1. I APSP("DISP U")="" S APSPERR=2 D ERR ;DISPENSE UNIT MISSING
  1. ;LOOK IN APSAMDF FOR A MATCHING NDC
  1. S APSA("MEDI-IRN")=0,APSA("TNDC")=0
  1. I $O(^APSAMDF("B",APSPNDC2,0)) D ;
  1. .S APSA("MEDI-IRN")=$O(^APSAMDF("B",APSPNDC2,APSA("MEDI-IRN")))
  1. .I APSA("MEDI-IRN")]"" S APSA("TNDC")=$P(^APSAMDF(APSA("MEDI-IRN"),0),"^")
  1. I APSA("MEDI-IRN")']""!(APSA("MEDI-IRN")=0) S APSPERR=5 D ERR Q ;NO NDC MATCH IN M-FILE
  1. S APSA("NODE0")=^APSAMDF(APSA("MEDI-IRN"),0),APSA("NODE1")=^APSAMDF(APSA("MEDI-IRN"),1),APSA("NODE2")=^APSAMDF(APSA("MEDI-IRN"),2)
  1. S APSA("NODE4")=$G(^APSAMDF(APSA("MEDI-IRN"),4)) ;IHS/OKCAO/POC 6/28/2002
  1. S APSA("DISP U")=$P($G(APSA("NODE1")),"^",3) ;AWP DISP UNIT
  1. I APSP("DISP U") I APSP("DISP U")'=APSA("DISP U") S APSPERR=3 D ERR ;DISP U 'MATCH
  1. ;GRAB AWP DATA FOR DRUG FILE UPDATE
  1. S APSA("AWP E-DATE")=$P($G(APSA("NODE0")),"^",2),APSA("AWP-P-D-U")=$P($G(APSA("NODE0")),"^",3),APSA("AWP-P-O-U")=$P($G(APSA("NODE0")),"^",4)
  1. S APSA("ACC-PRICE")=$P(APSA("NODE4"),U,4) ;IHS/OKCAO/POC 6/28/2002
  1. ;S APSA("ACC-SIZE")=$P(APSA("NODE4"),U,2) ;IHS/OKCAO/POC 6/28/2002
  1. S DIE="^PSDRUG(",DA=APSPIRN,DR="9999999.31////^S X=APSA(""AWP-P-O-U"");9999999.32////^S X=APSA(""AWP-P-D-U"");9999999.33////^S X=APSA(""AWP E-DATE"")"
  1. I +APSA("ACC-PRICE") S DR=DR_";13////^S X=APSA(""ACC-PRICE"")"
  1. ;IHS/ITSC/ENM/POC 07/09/03 POC CHANGES
  1. ;E S APSPERR=6 D ERR ;LET'S NOT QUIT BUT DO THE AWP STUFF
  1. E D
  1. .N APSPERR S APSPERR=6 D ERR ;DON'T QUIT BUT DO AWP STUFF
  1. .;DON'T CHANGE APSPERR VARIABLE IF DEFINED
  1. ;I +APSA("ACC-SIZE") S DR=DR_";402////^S X=APSA(""ACC-SIZE"")"
  1. ;E S APSPERR=7 D ERR ;LET'S NOT QUIT BUT DO THE AWP STUFF
  1. D:($G(APSPERR)>5)!('$G(APSPERR)) ^DIE ;SO DO IF ERR GR THAN 5-PROBLEM WITH AAC WHAT ABOUT WHEN APSPERR IS NOT DEFINED IHS/OKCAO/POC 12/10/2002
  1. K DIE,DA,DR,APSA("AWP-P-O-U"),APSA("AWP-P-D-U"),APSA("AWP E-DATE")
  1. K APSA("NODE0"),APSA("NODE1"),APSA("NODE2")
  1. K APSA("NODE4") ;IHS/OKCAO/POC 6/28/2002
  1. I '$G(APSPERR) S APSPERR=8 D ERR ;IHS/OKCAO/POC 7/12/2001 FOR REPORTI
  1. Q
  1. ;
  1. DEL ;DELETE THE AWP STUFF IF NDC DELETED IHS/OKCAO/POC
  1. ;S DIE="^PSDRUG(",DA=APSPIRN,DR="9999999.31////@;9999999.32////@;9999999.33////@"
  1. S DIE="^PSDRUG(",DA=APSPIRN,DR="9999999.31////@;9999999.32////@;9999999.33////@;13////@" ;IHS/OKCAO/POC 6/28/2002
  1. D ^DIE
  1. K DIE,DA,DR
  1. Q
  1. ERR ;
  1. S APSQCNT=APSQCNT+1 ;INCREASE CNT EACH TIME ERROR FOR A DRUG
  1. ;APPEND DRUG NAMES/ERROR CODES -
  1. I APSPERR=1 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - MISSING 660 NODE IN DRUG FILE"
  1. I APSPERR=2 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - MISSING DISPENSE UNIT IN DRUG FILE"
  1. I APSPERR=3 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - DISP UNITS DON'T MATCH - Medi = "_APSA("DISP U")_" / Local = "_APSP("DISP U")
  1. I APSPERR=4 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - NDC less than 10 or greater than 11 DIGITS"
  1. I APSPERR=5 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - NDC'S DON'T MATCH"
  1. I APSPERR=6 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - NO ACTUAL ACQUISTION PRICE FOR THIS NDC# IN THE AWP MED-TRANSACTION FILE" ;IHS/OKCAO/POC 6/28/2002
  1. ;I APSPERR=7 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - NO ACTUAL ACQUISTION SIZE FOR THIS NDC IN ACC FILE"
  1. I APSPERR=8 S XMB(APSQCNT)="("_APSPIRN_") "_APSDNAME_"-"_$G(APSPNDC)_" - NO PROBLEM WITH THIS PRICE UPDATE FOR AWP AND AAC" ;IHS/OKCAO/POC 7/12/2001 FOR REPORTING NO PROBLEMS
  1. Q
  1. MSG ;SETUP AND SEND BULLETIN
  1. ;BULLETIN ALREADY SET UP WITH XMB("ARRAY")
  1. S XMDUZ="PHARMACY NOTIFICATION"
  1. S XMB="APSQ DRUG AWP/AAC NOTIFICATION"
  1. D ^XMB
  1. Q
  1. ZAP ;CLEAN AWP FIELD FROM DRUG - FOR USE DURING TESTING ONLY
  1. K ^APSPCTRL("AWP DATE")
  1. S DIE="^PSDRUG(",APSAIRN=0
  1. F S APSAIRN=$O(^PSDRUG(APSAIRN)) Q:'APSAIRN D ;
  1. .K DA,D0
  1. .S DA=APSAIRN,DR="9999999.31////@;9999999.32////@;9999999.33////@"
  1. .D ^DIE
  1. K DIE,APSAIRN,DA,D0,DR
  1. Q
  1. ZAAP ;KILL ALL VARIABLES ON EXIT
  1. K XMB,APSLNAME,APSP,APSPDG,APSPNAME,APSPZ,XMDUZ,APSA,APSDNAME,APSPERR,APSPIRN,APSPNDC,APSPNDC2,APSPNOD1,APSPNOD2,J,X,XMSUB,XMTEXT
  1. K APSP("DISP U"),APSA("MEDI-IRN"),APSA("TNDC"),APSA("NODE0"),APSA("NODE1"),APSA("NODE2"),APSA("NODE3"),APSA("NODE4"),APSQCNT
  1. Q
  1. ZNDC ;EP - ENTRY POINT TO KILL AND RE-INDEX THE ^PSDRUG("ZNDC") X-REF
  1. W !!,"Re-Indexing the 'ZNDC' x-ref in file 50..........",!
  1. K ^PSDRUG("ZNDC") S DIK="^PSDRUG(",DIK(1)="31^ZNDC" D ENALL^DIK
  1. K DIK
  1. Q
  1. SINGLE ;EP - COME HERE FOR XREF FROM FILE PSDRUG -A TRIGGER IHS/OKCAO/POC 11/12/98
  1. Q:$D(APSQNOIN) ;MULTIPLE DIVISIONS DEFINED FROM RTN APSQRXM TO NOT REINDEX!!! IHS/OKCAO/POC 1/10/2001 PATCH 4 IHS/OKCAO/POC
  1. S APSPIRN=DA ;IEN
  1. S APSPNDC=$TR(X,"-")
  1. S APSQWORK=$S($G(APSQDEL):"DEL^APSQAWP",1:"VSET^APSQAWP")
  1. D EN^XBNEW("DO^APSQAWP","APS*")
  1. Q
  1. DO ;IF APSQDEL=1 THEN WILL DELETE ENTRY
  1. ;N DR,DA,D0,DD,DIE,DIC,X,Y
  1. ;SET VARIABLE
  1. D @APSQWORK
  1. D:'$G(APSQDEL) MSG,ZAAP
  1. K APSQDEL,APSQWORK
  1. Q