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

ABSPOSR9.m

Go to the documentation of this file.
ABSPOSR9  ;IHS/OIT/SCR - COLLECTION PRODUCTIVITY REPORT
 ;;1.0;PHARMACY POINT OF SALE;**38,40**;JUN 21, 2001;Build 38
 ; OPTION: ABSP RPT COLLECTION PRODUCT
 ; DISPLAYS COST AMOUNT RECOVERED FOR TRANSACTIONS THAT WERE REJECTED AT ONE TIME AND HAVE
 ; BECOME PAYABLE FOR A RANGE OF RELEASE DATES LIKE THE WRR, BUT ALSO INCLUDES
 ; REJECT CODES FROM THE MOST RECENT REJECTED TRANSACTION AND IDENTIFIES FIELDS AND MODIFIED
 ; VALUES THAT WERE USED TO MAKE THE CLAIM PAYABLE
EN ;  EP
 N ABSPQUIT,ABSPDONE,ABSPQUIT,ABSPPHRM,ABSPTMP,ABSPREJS,Y,X1,X2,ABSPEND,ABSPSTRT,ABSPDAT,ABSPPRXI
 N ABSPPHMP,ABSPPHMI,ABSPDATP,ABSPDATI,ABSPGRNP,ABSPGRNI,ABSPUSR,ABSPCNT,STARTIME,STOPTIME
 ;D AUTO^ABSPOSM1()
 S ABSPDONE=0
 S ABSPQUIT=0
 F  Q:ABSPDONE=1  D
 .S ABSPSTRT=$$BDT()
 .I ABSPSTRT=-1 D
 ..S ABSPQUIT=1
 ..S ABSPDONE=1
 ..Q
 .Q:ABSPQUIT
 .S ABSPEND=$$EDT()
 .I ABSPEND=-1 D
 ..S ABSPQUIT=1
 ..S ABSPDONE=1
 ..Q
 .Q:ABSPQUIT
 .I ABSPSTRT<0 S ABSPDONE=1 Q
 .I ABSPEND<0 S ABSPDONE=1 Q
 .S X2=ABSPSTRT,X1=ABSPEND D ^%DTC
 .I X<0 D EN^DDIOL("Ending Date is BEFORE Beginning Date Please enter new dates","","!!,*7")
 .I X>=0 S ABSPDONE=1
 .Q
 Q:ABSPQUIT
 S ABSPPHRM=$$CLNC()
 Q:ABSPPHRM=-1
 S ABSPUSR=$$USER()
 D ^XBCLS
 S ABSPTMP=""
 ;D FIND(ABSPSTRT,ABSPEND,ABSPPHRM,.ABSPTMP) IHS/OIT/SCR 083109 patch 34
 S STARTIME=$H
 D FIND(ABSPSTRT,ABSPEND,ABSPPHRM,ABSPUSR,.ABSPTMP,.ABSPREJS)
 S STOPTIME=$H
 S ^TMP("ABSPOSR9-RUNLOG",$J,STARTIME)=ABSPSTRT_"^"_ABSPEND_"^"_($P(STOPTIME,",",2)-$P(STARTIME,",",2))  ;IHS/OIT/CNI/RAN patch 40 081810 added for bench-mark
 S Y=ABSPSTRT D DD^%DT S ABSPFROM=Y
 S Y=ABSPEND D DD^%DT S ABSPTO=Y
 I $O(ABSPTMP(""))="" D
 .W !,"      ****NO RECORDS FOUND FOR DATE RANGE***",!!
 .N DIR
 .S DIR(0)="Y"
 .S DIR("A")="PRINT ANYWAY"
 .D ^DIR
 .I Y'=1 S ABSPQUIT=1
 .Q
 Q:ABSPQUIT
 D DEVSEL
 D PRHDR(ABSPSTRT,ABSPEND)
 S ABSPSDAT=""
 S ABSPGRNP=0,ABSPGRNI=0 ;IHS/OIT/SCR 082709 patch 34
 F  S ABSPSDAT=$O(ABSPTMP(ABSPSDAT)) Q:(ABSPSDAT="")!(ABSPQUIT)  D
 .S ABSPDATP=0,ABSPDATI=0 ;IHS/OIT/SCR 082709 patch 34
 .S ABSPPHRM=""
 .S Y=ABSPSDAT
 .D DD^%DT
 .;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 .S ABSPQUIT=$$WRITE^ABSPOSUU("!!?10,""RELEASED DATE: ""_Y")
 .Q:ABSPQUIT
 .F  S ABSPPHRM=$O(ABSPTMP(ABSPSDAT,ABSPPHRM)) Q:(ABSPPHRM="")!(ABSPQUIT)  D
 ..S ABSPPHMP=0,ABSPPHMI=0
 ..;IHS/OIT/CNI/RAN 05042010 patch 39 - When printing to screen, use paging
 ..S ABSPQUIT=$$WRITE^ABSPOSUU("!?15,""PHARMACY: ""_$P($G(^ABSP(9002313.56,ABSPPHRM,0)),U,1)")
 ..Q:ABSPQUIT
 ..I ABSPUSR="ALL" S ABSPQUIT=$$WRITE^ABSPOSUU("!,?19,""USER: ALL""")
 ..Q:ABSPQUIT
 ..I ABSPUSR'="ALL" S ABSPQUIT=$$WRITE^ABSPOSUU("!,?19,""USER: ""_$P($G(^VA(200,ABSPUSR,0)),U,1)")
 ..Q:ABSPQUIT
 ..S ABSPPRXI=""
 ..F  S ABSPPRXI=$O(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI)) Q:(ABSPPRXI="")!(ABSPQUIT)  D
 ...;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 ...S ABSPQUIT=$$WRITE^ABSPOSUU("!!,""RX #/REFILL: `""_ABSPPRXI_""/""_$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),U,1)")
 ...Q:ABSPQUIT
 ...S Y=$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),"^",2) D DD^%DT
 ...;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 ...S ABSPQUIT=$$WRITE^ABSPOSUU("!?5,""TRANSACTION DATE: ""_Y,?40,""RECOVERED BY: ""_$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),U,5)")
 ...Q:ABSPQUIT
 ...;W !?0,"TOTAL PRICE: "_$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),"^",3),?25,"PAID BY INSURER: "_$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),"^",4) ;IHS/OIT/SCR 122909 patch 36
 ...;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 ...S ABSPQUIT=$$WRITE^ABSPOSUU("!?5,""TOTAL PRICE: ""_$FNUMBER($P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),U,3),"","",2),?40,""PAID BY INSURER: ""_$FNUMBER($P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),U,4),"","",2)")
 ...Q:ABSPQUIT
 ...S ABSPPHMP=ABSPPHMP+$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),"^",3)
 ...S ABSPPHMI=ABSPPHMI+$P(ABSPTMP(ABSPSDAT,ABSPPHRM,ABSPPRXI),"^",4)
 ...;PRINT OUT REJECTION REASONS FOR THE REJECTION BEFORE THE PAID TXN
 ...S ABSPCNT=0
 ...F  S ABSPCNT=$O(ABSPRJCT(ABSPSDAT,ABSPPHRM,ABSPPRXI,ABSPCNT)) Q:(ABSPCNT="")!(ABSPQUIT)  D
 ....;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 ....S ABSPQUIT=$$WRITE^ABSPOSUU("!?15,ABSPCNT_"". REJECTION CODE: ""_ABSPRJCT(ABSPSDAT,ABSPPHRM,ABSPPRXI,ABSPCNT,""CODE"")")
 ....Q:ABSPQUIT
 ....S ABSPQUIT=$$WRITE^ABSPOSUU("?20,""REASON: ""_ABSPRJCT(ABSPSDAT,ABSPPHRM,ABSPPRXI,ABSPCNT,""REASON"")")
 ....Q:ABSPQUIT
 ...Q:ABSPQUIT
 ...;PRINT OUT FIELDS AND VALUES OF ENTRIES IN ABSP NCPDP OVERRIDE FILE FOR THIS TXN
 ...;W !!
 ...;S ABSPCNT=0
 ...;F  S ABSPCNT=$O(ABSPORID(ABSPSDAT,ABSPPRM,ATSPPRXI,ABSPCNT)) Q:ABSPCNT=""  D
 ...;.W !,?5,"MOST RECENT OVERIDE FIELD: "_ABSPORID(ABSPSDAT,ABSPPRM,ATSPPRXI,ABSPCNT,"FIELD")
 ...;.W !,?15,"CHANGED TO: "_ABSPORID(ABSPSDAT,ABSPPRM,ATSPPRXI,ABSPCNT,"NEW VALUE")
 ..Q:ABSPQUIT
 ..;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 ..S ABSPQUIT=$$WRITE^ABSPOSUU("!!,""PHARMACY TOTAL ""_$FNUMBER(ABSPPHMP,"","",2),?40,""INSURER PAID: ""_$FNUMBER(ABSPPHMI,"","",2)")
 ..Q:ABSPQUIT
 ..S ABSPDATP=ABSPDATP+ABSPPHMP
 ..S ABSPDATI=ABSPDATI+ABSPPHMI
 .;W !!,"TOTAL PRICE FOR DATE: "_ABSPPHMP,?25,"TOTAL PAID BY INSURER FOR DATE: "_ABSPPHMI
 .Q:ABSPQUIT
 .;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 .S ABSPQUIT=$$WRITE^ABSPOSUU("!!,""DATE TOTAL: ""_$FNUMBER(ABSPPHMP,"","",2),?40,""TOTAL PAID BY INSURER FOR DATE: ""_$FNUMBER(ABSPPHMI,"","",2)")
 .Q:ABSPQUIT
 .S ABSPGRNP=ABSPGRNP+ABSPDATP
 .S ABSPGRNI=ABSPGRNI+ABSPDATI
 I ABSPQUIT D ZEND Q
 ;W !!,"GRAND TOTAL PRICE: "_ABSPGRNP,?25,"GRAND TOTAL PAID BY INSURER :"_ABSPGRNI
 ;IHS/OIT/CNI/RAN 05042010 patch 38 - When printing to screen, use paging
 S ABSPQUIT=$$WRITE^ABSPOSUU("!!,""GRAND TOTAL: ""_$FNUMBER(ABSPGRNP,"","",2),?40,""GRAND TOTAL INSURER PAID: ""_$FNUMBER(ABSPGRNI,"","",2)")
 D ZEND   ;IHS/OIT/SCR 1/4/09 patch 36 close the printer device
 Q
CLNC() ; PICK WHICH OR ALL CLINIC PHARMACIES
 N DIC,X,Y,ABSPPHRM
 S DIC="^ABSP(9002313.56,"
 S DIC(0)="AEMQVZ"
 S DIC("A")="Please Select a Pharmacy or leave blank for ALL:  "
 D ^DIC K DIC
 I X["^" Q -1
 I Y=-1 S ABSPPHRM="ALL"
 I Y>-1 S ABSPPHRM=$P(Y,"^",1)
 Q ABSPPHRM
USER() ; PICK WHICH OR ALL NEW PESRSON
 ;IHS/OIT/SCR 083109 patch 34
 N DIC,X,Y,ABSPUSER
 S DIC="^VA(200,"
 S DIC(0)="AEMQVZ"
 S DIC("A")="Please Select a User or leave blank for ALL:  "
 D ^DIC K DIC
 I X["^" Q -1
 I Y=-1 S ABSPUSER="ALL"
 I Y>-1 S ABSPUSER=$P(Y,"^",1)
 Q ABSPUSER
DEVSEL ; SELECT DEVICE
 N ABSPSTOP
 S ABSPSTOP=0
 D ^%ZIS
 I POP D
 .D ^%ZIS
 .Q
 I $D(DUOUT) D
  .D ZEND
  .S ABSPSTOP=1
  .Q
 Q:ABSPSTOP
 I POP D
 .W "DEVICE UNAVAILABLE" G DEVSEL
 Q
FIND(ABSPSTRT,ABSPEND,ABSPPHRM,ABSPUSR,ABSPTMP,ABSPREJS) ;  FIND PAYABLE CLAIMS IN A DATE RANGE, AND THEN DETERMINE IF THEY WERE REJECTED AT ONE TIME...
 N ABSPDONE,ABSPRDT,ABSPTDAT,ABSPTRXN,ABSPPHM1,APSPTRXI,ABSPRICE,ABSPFND,ABSPRXI,ABSPTRXR,ABSPRXN,ABSPTRXR
 N ABSPUSR1,ABSPUSRN,ABSPRESP,ABSPPSTN,ABSPCNT
 ;S ABSPUSR1=0
 S ABSPRDT=ABSPSTRT-1
 S ABSPDONE=0
 S ABSPRMI=""
 F  S ABSPRDT=$O(^ABSPECX("RPT","B",ABSPRDT)) Q:ABSPRDT=""!ABSPDONE  D
 .I ABSPRDT>ABSPEND S ABSPDONE=1 Q
 .F ABSPJ=1:1 S ABSPRMI=$O(^ABSPECX("RPT","B",ABSPRDT,ABSPRMI)) Q:ABSPRMI'=+ABSPRMI  D
 ..I $P(^ABSPECX("RPT",ABSPRMI,0),U,6)'=4 Q   ; NOT A PAYABLE CLAIM
 ..S ABSPTRNS=$P(^ABSPECX("RPT",ABSPRMI,0),U,3)
 ..S ABSPPHM1=""
 ..I ABSPPHRM'="ALL" D
 ...I $P(^ABSPTL(ABSPTRNS,1),U,7)'=ABSPPHRM Q   ; NOT SELECTED PHARMACY
 ...S ABSPPHM1=ABSPPHRM
 ...Q
 ..I ABSPPHRM="ALL" S ABSPPHM1=$P(^ABSPTL(ABSPTRNS,1),U,7)    ; SET PHARMACY
 ..I ABSPPHM1="" Q
 ..S ABSPUSR1=-1
 ..I ABSPUSR'="ALL" D
 ...I $P(^ABSPTL(ABSPTRNS,0),U,17)'=ABSPUSR Q  ; NOT SELECTED USER
 ...S ABSPUSR1=ABSPUSR
 ...Q
 ..I ABSPUSR="ALL" S ABSPUSR1=$P(^ABSPTL(ABSPTRNS,1),U,17)    ; SET USER
 ..I ABSPUSR1=-1 Q
 ..;IHS/OIT/SCR 083109 patch 32 END
 ..S ABSPTRXI=$P(^ABSPTL(ABSPTRNS,1),U,11)
 ..S ABSPTRXR=$P(^ABSPTL(ABSPTRNS,1),U,1)
 ..I ABSPTRXI=""!(ABSPTRXR="") Q
 ..;NOW WE HAVE A PAYABLE CLAIM...BUT IT ONLY BELONGS ON THIS REPORT IF IT HAS BEEN REJECTED BEFORE
 ..;SO....WE HAVE TO  LOOK AT THE LOG OF TRANSACTIONS FOR THIS PRESCRIPTION BEFORE THE ONE
 ..;WE HAVE IN OUR HANDS...IF THAT ONE WAS REJECTED, PUT THIS INFO ON THE REPORT
 ..;Q $O(^ABSPTL("NON-FILEMAN","RXIRXR",RXI,RXR,""),-1)  ;FOUND IN ABSPOS57 AND ABSPOSBB
 ..S ABSPFND=0
 ..S ABSPTRN1=""
 ..F  S ABSPTRN1=$O(^ABSPTL("NON-FILEMAN","RXIRXR",ABSPTRXI,ABSPTRXR,ABSPTRN1),-1) Q:ABSPTRN1=""!(ABSPFND=1)  D
 ...S ABSPRWR=$$GET1^DIQ(9002313.57,ABSPTRN1_",","RESULT WITH REVERSAL")
 ...S ABSPRESP=$P(^ABSPTL(ABSPTRNS,0),U,5)  ;POINTER TO RESPONSE FILE
 ...S ABSPPSTN=$P(^ABSPTL(ABSPTRNS,0),U,9)  ;POSITION IN CLAIM
 ...;I ABSPRWR="E REJECTED" D
 ...I (ABSPRWR="E REJECTED")!(ABSPRWR="PAPER") D
 ....S ABSPPAID=0
 ....I (ABSPRESP'="")&(ABSPPSTN'="") S ABSPPAID=$$509^ABSPOS03(ABSPRESP,ABSPPSTN) ;(#509) Total Amount Paid
 ....S ABSPFND=1
 ....S ABSPRXI=$P(^ABSPECX("RPT",ABSPRMI,0),U,4) ;POINTER TO PRESCRIPTION FILE
 ....S ABSPRXN=$P($G(^PSRX(ABSPRXI,0)),U,1)  ;PRESCRIPTION NUMBER
 ....S ABSPTDAT=$P(^ABSPECX("RPT",ABSPRMI,0),U,2) ;TRANSACTION LAST UPDATE
 ....S ABSPTRXR=$P(^ABSPECX("RPT",ABSPRMI,0),U,5) ;REFIL NUMBER
 ....S ABSPRICE=$P(^ABSPTL(ABSPTRNS,5),U,5)  ;TOTAL PRICE
 ....S ABSPUSRI=$P(^ABSPTL(ABSPTRNS,0),U,17) ;USER LAST UPDATED - IHS/OIT/SCR 082709 patch 34
 ....;S ABSPUSRI=$P(^ABSPTL(ABSPTRNS,0),U,10)
 ....S ABSPUSRN=""
 ....;S ABSPUSRN=$P($G(^VA(200,ABSPUSRI,0)),"^",1)
 ....S:ABSPUSRI>0 ABSPUSRN=$P($G(^VA(200,ABSPUSRI,0)),"^",1)
 ....S ABSPTMP(ABSPRDT,ABSPPHM1,ABSPRXI)=ABSPTRXR_"^"_ABSPTDAT_"^"_ABSPRICE_"^"_ABSPPAID_"^"_ABSPUSRN
 ....;This populates ABSPREJS(n) with code:text format of each rejection for this position in this response
 ....S ABSPCNT=0
 ....S ABSPRSP=$P(^ABSPTL(ABSPTRN1,0),U,5)  ;POINTER TO RESPONSE FILE for REJECTED transaction
 ....S ABSPSTN=$P(^ABSPTL(ABSPTRN1,0),U,9)  ;POSITION IN CLAIM for REJECTED transaction
 ....I $G(ABSPRSP)'="" D
 .....;FOR EACH REJECTION CODE AND REASON associated to the REJECTED TRANSACTION, add it to an array
 .....D REJTEXT^ABSPOS03(ABSPRSP,ABSPSTN,.ABSPREJS)
 .....F  S ABSPCNT=$O(ABSPREJS(ABSPCNT)) Q:(ABSPCNT=""!ABSPQUIT)  D
 ......S ABSPRJCT(ABSPRDT,ABSPPHM1,ABSPRXI,ABSPCNT,"CODE")=$P(ABSPREJS(ABSPCNT),":",1)
 ......S ABSPRJCT(ABSPRDT,ABSPPHM1,ABSPRXI,ABSPCNT,"REASON")=$P(ABSPREJS(ABSPCNT),":",2)
 Q
PRHDR(ABSPSTRT,ABSPEND) ; PRINT HEADER
 N ABSPFEDT,ABSPFBDT
 U IO W @IOF
 S Y=ABSPSTRT
 D DD^%DT
 S ABSPFBDT=Y
 S Y=ABSPEND
 D DD^%DT
 S ABSPFEDT=Y
 W !,?19,"Pharmacy Point of Sale Collection Productivity Report"
 W !?22,"From "_ABSPFBDT_" TO "_ABSPFEDT
 Q
BDT()  ; ENTER BEGINING DATE
 N ABSPBDT,DIR,X1,X
 W !
 K DIR
 S DIR(0)="DEX"
 S DIR("A")="Enter Beginning Prescription Release Date"
 D ^DIR
 I $D(DIRUT) Q -1
 S ABSPBDT=+Y
 S X1=ABSPBDT D C^%DTC
 Q X
EDT()  ; ENTER END DATE
 N ABSPEDT,DIR,X1,X
 W !
 K DIR
 S DIR(0)="DEX"
 S DIR("A")="Enter Ending Prescription Release Date"
 D ^DIR
 I $D(DIRUT) Q -1
 S ABSPEDT=+Y
 S X1=ABSPEDT D C^%DTC
 Q X
ZEND   ;Close the device that was opened
 D ^%ZISC
 Q