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

ABSPOSRT.m

Go to the documentation of this file.
  1. ABSPOSRT ;IHS/OIT/CNI/RAN - Transaction History Report
  1. ;;1.0;PHARMACY POINT OF SALE;**40,47**;JUN 21, 2001;Build 38
  1. ; ABSP TRANSACTION HISTORY REPORT
  1. ; DISPLAYS ALL TRANSACTIONS FOR A GIVEN PRESCRIPTION
  1. EN ;
  1. N ABSPQUIT,ABSPDONE,ABSPSTRT,ABSPEND,ABSPLCNT,ABSPREJ,ABSPRJ,U,ABSPTMP,ABSPTMPC,ABSPCLM,ABSPUSER,ABSPPPHM,X
  1. S U="^"
  1. I $D(ZTQPARAM) D START
  1. S ABSPDONE=0
  1. S ABSPQUIT=0
  1. F Q:ABSPDONE=1 D
  1. .S ABSPSTRT=$$BDT()
  1. .I ABSPSTRT=-1 D
  1. ..S ABSPQUIT=1
  1. ..S ABSPDONE=1
  1. .Q:ABSPQUIT
  1. .S ABSPEND=$$EDT()
  1. .I ABSPEND=-1 D
  1. ..S ABSPQUIT=1
  1. ..S ABSPDONE=1
  1. ..Q
  1. .Q:ABSPQUIT
  1. .I ABSPSTRT<0 S ABSPDONE=1 Q
  1. .I ABSPEND<0 S ABSPDONE=1 Q
  1. .S X2=ABSPSTRT,X1=ABSPEND D ^%DTC
  1. .I X<0 D EN^DDIOL("Ending Date is BEFORE Beginning Date Please enter new dates","","!!,*7")
  1. .I X>=0 S ABSPDONE=1
  1. .Q
  1. Q:ABSPQUIT
  1. S ABSPQUIT=$$CLNC^ABSPOSUU()
  1. Q:ABSPQUIT=-1
  1. S ABSPQUIT=$$USER^ABSPOSUU()
  1. D DEVSEL
  1. Q:ABSPQUIT=-1
  1. D ^XBCLS
  1. D FIND
  1. D NEXT
  1. Q
  1. DEVSEL ; SELECT DEVICE
  1. N ABSPSTOP
  1. S ABSPSTOP=0
  1. D ^%ZIS
  1. I POP D
  1. .D ^%ZIS
  1. .Q
  1. I $D(DUOUT) D
  1. .D ZEND
  1. .S ABSPSTOP=1
  1. .Q
  1. Q:ABSPSTOP
  1. I POP D
  1. .W "DEVICE UNAVAILABLE" G DEVSEL
  1. Q
  1. FIND ; FIND TRANSACTIONS BY TRANSACTION DATE USING "AH" CROSS REFERENCE
  1. N ABSPRDT,ABSPDONE,ABSPDONE,ABSPTRN,ABSPTPTL,ABSPRESC,ABSPRESP
  1. S ABSPRDT=ABSPSTRT
  1. S ABSPEND=ABSPEND_".99999999"
  1. S ABSPDONE=0
  1. ;GO THROUGH INDEX BY TRANSACTION DATE
  1. F S ABSPRDT=$O(^ABSPTL("AH",ABSPRDT)) Q:(ABSPRDT="")!(ABSPDONE)!(+ABSPRDT=0) D
  1. .I ABSPRDT>ABSPEND S ABSPDONE=1 Q
  1. .S ABSPTRN=""
  1. .F S ABSPTRN=$O(^ABSPTL("AH",ABSPRDT,ABSPTRN)) Q:(ABSPTRN="")!(ABSPDONE) D
  1. ..S ABSPRESC=$P(^ABSPTL(ABSPTRN,0),U)
  1. ..D GETINFO($P(ABSPRDT,"."),ABSPTRN,ABSPRESC)
  1. Q
  1. GETINFO(ABSPRDT,ABSPTRN,ABSPRESC) ;GET ALL INFO FOR THIS PARTICULAR TRANSACTION
  1. N ABSPTPTL,ABSPPRI,DO,ABSPTYPI,ABSPTTYP,ABSPRNUM,ABSPREA,ABSPBAMT,ABSPPHM1,ABSPPAID,ABSPUSR1,ABSPCLMI,ABSPORIG,ABSP9PTL,ABSP1PTL,ABSPTDT,ABSPTL
  1. M ABSPTL(ABSPTRN)=^ABSPTL(ABSPTRN)
  1. S ABSPTPTL=ABSPTL(ABSPTRN,0)
  1. S ABSP1PTL=ABSPTL(ABSPTRN,1)
  1. S ABSP9PTL=$G(ABSPTL(ABSPTRN,9))
  1. S ABSPPRI=$P(ABSPTPTL,U,5)
  1. S ABSPCLMI=$P(ABSPTPTL,U,4)
  1. I ABSPPRI="" D ;NON ELECTRONIC...THIS IS A PAPER CLAIM
  1. . S ABSPTTYP="PAPER"
  1. . S (ABSPRNUM,ABSPREA)=""
  1. . S ABSPPAID=0
  1. . I '$D(ABSPTL(ABSPTRN,5)) S ABSPTTYP="REVERSED",ABSPBAMT=0
  1. S ABSPPHM1=$P(ABSP1PTL,U,7) ; SET PHARMACY
  1. I (ABSPPPHM'="ALL")&&(ABSPPHM1'=ABSPPPHM) Q ; NOT SELECTED PHARMACY
  1. I ABSPPHM1="" S ABSPPHM1=ABSPPPHM
  1. S ABSPUSR1=$P(ABSPTPTL,U,17)
  1. I (ABSPUSER'="ALL"),(ABSPUSR1'=ABSPUSER) Q ; NOT SELECTED USER
  1. I ABSPUSR1="" S ABSPUSR1=ABSPUSER
  1. I $D(ABSPTL(ABSPTRN,5)) S ABSPBAMT=$P(ABSPTL(ABSPTRN,5),U,5) ;Billed amount
  1. ELSE S ABSPBAMT=0
  1. I ABSPPRI'="" D ;SKIP ALL THIS IF WE HAVE PAPER CLAIM
  1. .S DO=$P(ABSPTPTL,U,9)
  1. .I '$D(^ABSPR(ABSPPRI,1000,DO)) S DO=$$GETDO^ABSPOSUU(ABSPPRI,$P(ABSPRESC,"."))
  1. .Q:DO=""
  1. .S ABSPTYPI=$P(^ABSPR(ABSPPRI,1000,DO,500),U)
  1. .S ABSPTTYP=$S(ABSPTYPI="P":"PAYABLE",ABSPTYPI="R":"REJECTED",ABSPTYPI="D":"DUPLICATE",1:"PAPER")
  1. .S (ABSPRNUM,ABSPREA)=""
  1. .I ABSPTYPI="R" D
  1. .. I '$D(^ABSPR(ABSPPRI,1000,DO,511)) S (ABSPRNUM,ABSPREA)="UKN" ;Added to skip junk data in PMAA test area
  1. .. E D
  1. ... S ABSPRNUM=$P(^ABSPR(ABSPPRI,1000,DO,511,1,0),U)
  1. ... I '$D(^ABSPF(9002313.93,"B",ABSPRNUM)) S ABSPREA="Reject Code description not entered,See NCPDP Rejects" Q ;IHS/OIT/RCS PATCH 47
  1. ... S ABSPREA=$P(^ABSPF(9002313.93,$O(^ABSPF(9002313.93,"B",ABSPRNUM,"")),0),U,2)
  1. .. S ABSPPAID=0
  1. .I ABSPTYPI="P" D
  1. ..S ABSPPAID=$$DFF2EXT^ABSPECFM($P(^ABSPR(ABSPPRI,1000,DO,500),U,9)),ABSPRESP(ABSPPRI)=""
  1. ..S (ABSPRNUM,ABSPREA)=""
  1. .I ABSPTYPI="D" S ABSPPAID=0
  1. I ABSP9PTL'="" D
  1. . S ABSPTDT=$P(ABSPTPTL,U,8)
  1. . I $P(ABSP9PTL,U)=1 S ABSPTTYP="CLOSED",ABSPRNUM="",ABSPREA="",ABSPBAMT=0,ABSPPAID=0
  1. . I ($P(ABSP9PTL,U)=0)&($P(ABSP9PTL,U,4)=ABSPTDT) S ABSPTTYP="REOPENED"
  1. Q:$G(ABSPTTYP)=""
  1. I '$D(ABSPTMPC(ABSPRESC)) S ABSPTMPC(ABSPRESC)=1
  1. E S ABSPTMPC(ABSPRESC)=ABSPTMPC(ABSPRESC)+1
  1. S ^TMP("ABSPOSRT",$J,ABSPRDT,ABSPPHM1,ABSPUSR1,ABSPRESC,ABSPTRN)=ABSPTMPC(ABSPRESC)_U_ABSPTTYP_U_ABSPRNUM_U_ABSPREA_U_ABSPBAMT_U_ABSPPAID_U_ABSPPRI
  1. S ABSPCLM(ABSPRESC)=ABSPCLMI
  1. Q
  1. NEXT ; WHAT TO DO NEXT
  1. N ABSPSTOP,ABSPOUT
  1. S (ABSPSTOP,ABSPOUT)=0
  1. D PRHDR
  1. I $O(^TMP("ABSPOSRT",$J,""))="" D
  1. .W !!," NO TRANSACTIONS FOUND FOR THE SELECTED DATE(S)"
  1. .D ZEND
  1. .S ABSPSTOP=1
  1. .Q
  1. Q:ABSPSTOP
  1. I ABSPOUT D ZEND Q
  1. D PRNTDTL
  1. D ZEND
  1. Q
  1. PRHDR ; PRINT HEADER
  1. N ABSPFEDT,ABSPFBDT,Y
  1. U IO W:$D(ABSPSUM) @IOF
  1. S Y=ABSPSTRT
  1. D DD^%DT
  1. S ABSPFBDT=Y
  1. S Y=$P(ABSPEND,".")
  1. D DD^%DT
  1. S ABSPFEDT=Y
  1. W @IOF
  1. W !,?16,"Pharmacy Point of Sale Transaction History Report"
  1. W !?22,"From: "_ABSPFBDT_" TO: "_ABSPFEDT
  1. W !?18,"Pharmacy: "_ABSPPPHM
  1. W !?22,"User: "_ABSPUSER
  1. Q
  1. PRNTDHD ; PRINT HEADER
  1. ;IHS/OIT/CNI/RAN 04272010 patch 39 - When printing to screen, use paging
  1. S ABSPOUT=$$WRITE^ABSPOSUU("!,""SUBMISSION"",?14,""STATUS"",?25,""REJ"",?30,""REJ REASON"",?58,""BILLED AMT"",?70,""PAID AMT""")
  1. Q:ABSPOUT
  1. Q
  1. PRNTDTL ; PRINT DETAIL
  1. N ABSPTRDT,ABSPOUT,Y,ABSPFRDT,ABSPPPHM,ABSPPHMN,ABSPRESC,ABSPTRN,STRING,ABSPSUB,ABSPTYP,ABSPRJCD,ABSPREA,ABSPBAMT,ABSPPAID,ABSPUSRN
  1. N ABSPRXGT,ABSPSBGT,ABSPAYGT,ABSPDATE,ABSPUSR,ABSPHARM,ABSPRESP,ABSPREST,ABSPAID1,ABSPUSER,ABSPCLMI,ABSPPRI,ABSPPRX,ABSPPRXR,ABSPOTH
  1. S (ABSPRXGT,ABSPSBGT,ABSPAYGT)=0
  1. S (ABSPTRDT,ABSPOUT)=""
  1. F S ABSPTRDT=$O(^TMP("ABSPOSRT",$J,ABSPTRDT)) Q:(ABSPTRDT="")!(ABSPOUT) D
  1. .M ABSPTMP(ABSPTRDT)=^TMP("ABSPOSRT",$J,ABSPTRDT)
  1. .S ABSPPPHM=""
  1. .S Y=ABSPTRDT
  1. .D DD^%DT
  1. .S ABSPFRDT=Y ; FORMATTED DATE
  1. .S ABSPPPHM=""
  1. .F S ABSPPPHM=$O(ABSPTMP(ABSPTRDT,ABSPPPHM)) Q:(ABSPPPHM="")!(ABSPOUT) D
  1. ..S ABSPPHMN=$P($G(^ABSP(9002313.56,ABSPPPHM,0)),U,1)
  1. ..I ABSPPHMN="" S ABSPPHMN="UKN"
  1. ..Q:ABSPOUT
  1. ..;IHS/OIT/CNI/RAN 04272010 patch 39 - When printing to screen, use paging
  1. ..S ABSPOUT=$$WRITE^ABSPOSUU("!!,?5,""PHARMACY: "",ABSPPHMN,"" TRANSACTION DATE: "",ABSPFRDT")
  1. ..Q:ABSPOUT
  1. ..S ABSPUSER=""
  1. ..F S ABSPUSER=$O(ABSPTMP(ABSPTRDT,ABSPPPHM,ABSPUSER)) Q:(ABSPUSER="")!(ABSPOUT) D
  1. ...S ABSPUSRN="UKN"
  1. ...S:ABSPUSER>0 ABSPUSRN=$P($G(^VA(200,ABSPUSER,0)),"^",1)
  1. ...S ABSPOUT=$$WRITE^ABSPOSUU("!!,?5,""POS USER: "",ABSPUSRN")
  1. ...Q:ABSPOUT
  1. ...S ABSPRESC=""
  1. ...F S ABSPRESC=$O(ABSPTMP(ABSPTRDT,ABSPPPHM,ABSPUSER,ABSPRESC)) Q:(ABSPRESC="")!(ABSPOUT) D
  1. ....I '$D(ABSPREST(ABSPRESC)) D
  1. .....S ABSPRXGT=ABSPRXGT+1
  1. .....S ABSPREST(ABSPRESC)=""
  1. ....S ABSPDATE(ABSPTRDT,"RX")=$G(ABSPDATE(ABSPTRDT,"RX"))+1
  1. ....S ABSPHARM(ABSPTRDT,ABSPPPHM,"RX")=$G(ABSPHARM(ABSPTRDT,ABSPPPHM,"RX"))+1
  1. ....S ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,"RX")=$G(ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,"RX"))+1
  1. ....S ABSPPRX=$P(ABSPRESC,".")
  1. ....S ABSPCLMI=ABSPCLM(ABSPRESC)
  1. ....I ABSPCLMI="" S ABSPPRXR=0
  1. ....E S ABSPPRXR=$P($P(^ABSPC(ABSPCLMI,400,$P(^ABSPC(ABSPCLMI,400,0),U,3),400),U,3),"D3",2)
  1. ....S ABSPOTH=$$OTHERS(ABSPRESC,ABSPSTRT,ABSPEND)
  1. ....I ABSPOTH S ABSPPRXR=ABSPPRXR_" **"
  1. ....S ABSPOUT=$$WRITE^ABSPOSUU("!!,?25,""RX/REFILL: "",ABSPPRX,""/"",ABSPPRXR")
  1. ....Q:ABSPOUT
  1. ....D PRNTDHD
  1. ....S ABSPTRN=""
  1. ....F S ABSPTRN=$O(ABSPTMP(ABSPTRDT,ABSPPPHM,ABSPUSER,ABSPRESC,ABSPTRN)) Q:(ABSPTRN="")!(ABSPOUT) D
  1. .....S ABSPSBGT=ABSPSBGT+1
  1. .....S ABSPDATE(ABSPTRDT,"SUB")=$G(ABSPDATE(ABSPTRDT,"SUB"))+1
  1. .....S ABSPHARM(ABSPTRDT,ABSPPPHM,"SUB")=$G(ABSPHARM(ABSPTRDT,ABSPPPHM,"SUB"))+1
  1. .....S ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,"SUB")=$G(ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,"SUB"))+1
  1. .....S STRING=ABSPTMP(ABSPTRDT,ABSPPPHM,ABSPUSER,ABSPRESC,ABSPTRN)
  1. .....S ABSPSUB=$P(STRING,U)
  1. .....S ABSPTYP=$P(STRING,U,2)
  1. .....S ABSPRJCD=$P(STRING,U,3)
  1. .....S ABSPREA=$P(STRING,U,4)
  1. .....S ABSPBAMT=$P(STRING,U,5)
  1. .....S ABSPPAID=$P(STRING,U,6)
  1. .....S ABSPPRI=$P(STRING,U,7)
  1. .....I (ABSPPRI'="")&&('$D(ABSPRESP(ABSPPRI))) D
  1. ......S ABSPAID1=ABSPPAID
  1. ......S ABSPRESP(ABSPPRI)=""
  1. .....E S ABSPAID1=0
  1. .....S ABSPAYGT=ABSPAYGT+ABSPPAID
  1. .....S ABSPDATE(ABSPTRDT,"PAY")=$G(ABSPDATE("DT",ABSPTRDT,"PAY"))+ABSPAID1
  1. .....S ABSPHARM(ABSPTRDT,ABSPPPHM,"PAY")=$G(ABSPHARM(ABSPTRDT,ABSPPPHM,"PAY"))+ABSPAID1
  1. .....S ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,"PAY")=$G(ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,"PAY"))+ABSPAID1
  1. .....S ABSPOUT=$$WRITE^ABSPOSUU("!,ABSPSUB,?14,ABSPTYP,?25,ABSPRJCD,?30,ABSPREA,?58,$J($FN(ABSPBAMT,"","",2),10),?70,$J($FN(ABSPPAID,"","",2),8)")
  1. ....Q:ABSPOUT
  1. ....I ABSPOTH S ABSPOUT=$$WRITE^ABSPOSUU("!!,""`**` Denotes this prescription has additional transactions "",!,?5,""outside the date range of this report.""")
  1. ...Q:ABSPOUT
  1. ...S ABSPOUT=$$WRITE^ABSPOSUU("!!,""FOR USER "",ABSPUSRN,"":""")
  1. ...Q:ABSPOUT
  1. ...S ABSPOUT=$$WRITE^ABSPOSUU("!,""Prescriptions: "",ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,""RX"")")
  1. ...Q:ABSPOUT
  1. ...S ABSPOUT=$$WRITE^ABSPOSUU("!,""POS Submissions: "",ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,""SUB"")")
  1. ...Q:ABSPOUT
  1. ...S ABSPOUT=$$WRITE^ABSPOSUU("!,""Total Paid: $"",$J($FN(ABSPUSR(ABSPTRDT,ABSPPPHM,ABSPUSER,""PAY""),"","",2),6)")
  1. ...Q:ABSPOUT
  1. ..Q:ABSPOUT
  1. ..S ABSPOUT=$$WRITE^ABSPOSUU("!!,""FOR PHARMACY "",ABSPPHMN,"":""")
  1. ..Q:ABSPOUT
  1. ..S ABSPOUT=$$WRITE^ABSPOSUU("!,""Prescriptions: "",ABSPHARM(ABSPTRDT,ABSPPPHM,""RX"")")
  1. ..Q:ABSPOUT
  1. ..S ABSPOUT=$$WRITE^ABSPOSUU("!,""POS Submissions: "",ABSPHARM(ABSPTRDT,ABSPPPHM,""SUB"")")
  1. ..Q:ABSPOUT
  1. ..S ABSPOUT=$$WRITE^ABSPOSUU("!,""Total Paid: $"",$J($FN(ABSPHARM(ABSPTRDT,ABSPPPHM,""PAY""),"","",2),6)")
  1. ..Q:ABSPOUT
  1. .K ABSPTMP(ABSPTRDT)
  1. .Q:ABSPOUT
  1. .S ABSPOUT=$$WRITE^ABSPOSUU("!!,""FOR TRANSACTION DATE "",ABSPFRDT,"":""")
  1. .Q:ABSPOUT
  1. .S ABSPOUT=$$WRITE^ABSPOSUU("!,""Prescriptions: "",ABSPDATE(ABSPTRDT,""RX"")")
  1. .Q:ABSPOUT
  1. .S ABSPOUT=$$WRITE^ABSPOSUU("!,""POS Submissions: "",ABSPDATE(ABSPTRDT,""SUB"")")
  1. .Q:ABSPOUT
  1. .S ABSPOUT=$$WRITE^ABSPOSUU("!,""Total Paid: $"",$J($FN(ABSPDATE(ABSPTRDT,""PAY""),"","",2),6)")
  1. .Q:ABSPOUT
  1. S ABSPOUT=$$WRITE^ABSPOSUU("!!!,""Report Totals:""")
  1. Q:ABSPOUT
  1. S ABSPOUT=$$WRITE^ABSPOSUU("!!!,""Prescriptions: "",ABSPRXGT")
  1. Q:ABSPOUT
  1. S ABSPOUT=$$WRITE^ABSPOSUU("!,""POS Submissions: "",ABSPSBGT")
  1. Q:ABSPOUT
  1. S ABSPOUT=$$WRITE^ABSPOSUU("!,""Total Paid: $"",$J($FN(ABSPAYGT,"","",2),6)")
  1. Q:ABSPOUT
  1. Q
  1. ZEND ; END AND KILL VARIABLES
  1. K ^TMP("ABSPOSRT",$J)
  1. D ^%ZISC
  1. Q
  1. START ;
  1. N X,Y,ABSPJ,ABSPRJC,ABSPPAT,ABSPPIEN
  1. I $D(ZTQPARAM) D
  1. .I $P(ZTQPARAM,";",1)["T-1" S ABSPSTRT=DT-1
  1. .I $P(ZTQPARAM,";",2)["T-1" S ABSPEND=DT-1
  1. .S ABSPINS="ALL"
  1. .S ABSPPPHM="ALL"
  1. .S ABSPRTYP="D"
  1. .D FIND
  1. .D ZEND
  1. .Q
  1. Q
  1. BDT() ; ENTER BEGINING DATE
  1. N ABSPBDT,DIR,X1,X,Y
  1. W !
  1. K DIR
  1. S DIR(0)="DEX"
  1. S DIR("A")="Enter Beginning POS Transaction Date"
  1. D ^DIR
  1. I $D(DIRUT) Q -1
  1. S ABSPBDT=+Y
  1. S X1=ABSPBDT D C^%DTC
  1. Q X
  1. EDT() ; ENTER END DATE
  1. N ABSPEDT,DIR,X1,X,Y
  1. W !
  1. K DIR
  1. S DIR(0)="DEX"
  1. S DIR("A")="Enter Ending POS Transaction Date"
  1. D ^DIR
  1. I $D(DIRUT) Q -1
  1. S ABSPEDT=+Y
  1. S X1=ABSPEDT D C^%DTC
  1. Q X
  1. OTHERS(ABSPRESC,ABSPSTRT,ABSPEND) ;CHECK FOR OTHER TRANSACTIONS OUTSIDE DATE RANGE
  1. ;See if there are any transactions outside the date range
  1. N X,ABSPTRN,ABSPDT,DONE
  1. S ABSPTRN=""
  1. S (X,DONE)=0
  1. F S ABSPTRN=$O(^ABSPTL("B",ABSPRESC,ABSPTRN)) Q:(ABSPTRN="")!(DONE) D
  1. . S ABSPDT=$P(^ABSPTL(ABSPTRN,0),U,8)
  1. . I (ABSPDT<ABSPSTRT)!(ABSPDT>ABSPEND) S (X,DONE)=1
  1. Q X