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

ABMDTMS.m

Go to the documentation of this file.
  1. ABMDTMS ;IHS/ABM/THL - INTERFACE WITH PYXIS/M SYSTEMS;
  1. ;;2.6;IHS 3P BILLING SYSTEM;**10,21**;NOV 12, 2009;Build 379
  1. ;;
  1. ; IHS/SD/SDR - v2.5 p8 - Link to Omnicell
  1. ; Code supplied by Carlene McIntyre to connect TPB to Omnicell
  1. ;
  1. ; IHS/SD/SDR - v2.6 CSV
  1. ;IHS/SD/SDR - 2.6*21 - HEAT110091 - Default rev code for Meds to 250
  1. ;
  1. EN F D EN1 Q:$D(ABMQUIT)!$D(ABMOUT)
  1. EXITOUT K ABM,ABMAR,ABMDA,ABMDTMS,ABMFL,ABMFN,ABMHDR,ABMI,ABMJ,ABMOUT,ABMQUIT,ABMROU,ABMVALM,ABMX,ABMQUIT,ABMOUT,ABMDA,DFN,VALMBCK,VISDATE,PATIENT,ABMDTMS
  1. K ^TMP("ABMDTMS",$J)
  1. Q
  1. EN1 ;
  1. D EXITOUT
  1. D CLAIM
  1. Q:$D(ABMQUIT)
  1. D DISPLAY
  1. I $D(ABMQUIT) K ABMQUIT Q
  1. Q
  1. CLAIM ;SELECT CLAIM
  1. S DIC="^ABMDCLM("_DUZ(2)_","
  1. S DIC(0)="AEMQZ"
  1. S DIC("A")="Select CLAIM Number: "
  1. W !
  1. D ^DIC K DIC
  1. I +Y<1 S ABMQUIT="" Q
  1. S ABMDA=+Y
  1. CL1 ;CLAIM ALREADY IDENTIFIED
  1. S ABM0=$G(^ABMDCLM(DUZ(2),ABMDA,0))
  1. S DFN=+ABM0,ABMNUM=ABMDA
  1. Q
  1. DISPLAY ;DISPLAY SULLPY ITEMS
  1. D DATE
  1. Q:'$G(ABMBEGIN)!'$G(ABMEND)
  1. D DISP1
  1. Q
  1. DATE ;SELECT DATE RANGE FOR ITEM CHARGES
  1. S PATIENT=$P($G(^DPT(DFN,0)),U)
  1. S FROM=$G(^ABMDCLM(DUZ(2),ABMDA,7))
  1. S TO=$P(FROM,U,2)
  1. S FROM=+FROM
  1. S Y=FROM
  1. X ^DD("DD")
  1. S VISDATE=Y
  1. S Y=TO
  1. I Y X ^DD("DD") S TO=Y
  1. W !!,"PATIENT: ",PATIENT," VISIT DATE: ",VISDATE
  1. W:TO]"" " TO: ",TO
  1. S DIR("B")=VISDATE
  1. S DIR(0)="DO"
  1. S DIR("A")="Beginning Date for Supply/Med Charges"
  1. S DIR("?")="Enter the earliest date to include for supply/med charges"
  1. W !
  1. D ^DIR K DIR
  1. I Y<1 S ABMQUIT="" Q
  1. S ABMBEGIN=+Y
  1. S ABMEND=+Y
  1. S Y=DT
  1. X ^DD("DD")
  1. S DIR("B")=Y
  1. S DIR(0)="DO"
  1. S DIR("A")="Ending Date for Supply/Med Charges"
  1. S DIR("?")="Enter the last date to include for supply/med charges"
  1. W !
  1. D ^DIR K DIR
  1. I 'Y S ABMEND=ABMBEGIN
  1. S ABMEND=+Y
  1. Q
  1. DINIT ;EP;LIST ALL SUPPLY ITEMS IN THE DATE RANGE
  1. K ^TMP("ABMDTMS",$J)
  1. S ABMCNT=0
  1. D HEAD
  1. S ABM=ABMBEGIN-1
  1. F S ABM=$O(^AUPNSUP("ASUP",DFN,ABM)) Q:'ABM!(ABM>(ABMEND+.9999)) D
  1. .S ABMSDA=0
  1. .F S ABMSDA=$O(^AUPNSUP("ASUP",DFN,ABM,ABMSDA)) Q:'ABMSDA D
  1. ..D SUPPSET
  1. ..Q:ABM0=""
  1. ..D FORMAT
  1. S (VALMCNT,ABMJ)=J
  1. Q
  1. SUPPSET ;SET SUPPLY VARIABLES
  1. S ABM0=$G(^AUPNSUP(ABMSDA,0))
  1. S ABM1=$G(^AUPNSUP(ABMSDA,1))
  1. S ABM2=$G(^AUPNSUP(ABMSDA,2))
  1. Q
  1. S J=0
  1. S X=""
  1. S $E(X,19)="3P NUM: "_ABMNUM
  1. D J
  1. S $E(X,18)="PATIENT: "_PATIENT
  1. D J
  1. S $E(X,9)="ADMIT/VISIT FROM: "_VISDATE_" TO: "_TO
  1. D J
  1. S X=""
  1. S $E(X,51)="TRANCODE/"
  1. S $E(X,67)="REV/"
  1. D J
  1. S X="SUPPLY/MED NAME"
  1. S $E(X,36)="QUAN"
  1. S $E(X,44)="PRICE"
  1. S $E(X,51)="NDC"
  1. S $E(X,61)="HCPC"
  1. S $E(X,67)="DEPT"
  1. S $E(X,72)="CLAIM NO."
  1. D J
  1. S X="--------------------------------------------------------------------------------"
  1. D J
  1. S JHEAD=J
  1. Q
  1. FORMAT ;FORMAT DATA FOR DISPLAY
  1. S SUPPLY=$P(ABM0,U)
  1. S PATIENT=$P($G(^DPT(DFN,0)),U)
  1. S ADMIT=$G(^ABMDCLM(DUZ(2),ABMDA,6))
  1. S DISCHARG=$P(ADMIT,U,3)
  1. S ADMIT=+ADMIT
  1. S FROM=$G(^ABMDCLM(DUZ(2),ABMDA,7))
  1. S TO=$P(FROM,U,2)
  1. S FROM=+FROM
  1. I ADMIT D
  1. .S Y=ADMIT
  1. .X ^DD("DD")
  1. .S ADMIT=Y
  1. I DISCHARG D
  1. .S Y=DISCHARG
  1. .X ^DD("DD")
  1. .S DISCHARG=Y
  1. I FROM D
  1. .S Y=ADMIT
  1. .X ^DD("DD")
  1. .S FROM=Y
  1. I TO D
  1. .S Y=TO
  1. .X ^DD("DD")
  1. .S TO=Y
  1. S Y=$P(ABM0,U,3)
  1. X ^DD("DD")
  1. S ISSUDATE=Y
  1. S CLAIM=$P(ABM0,U,6)
  1. S TRANCODE=$P(ABM1,U)
  1. S MEDDA=$P(ABM1,U,3)
  1. S NDC=$P($G(^PSDRUG(+MEDDA,2)),U,4)
  1. S DEPTCODE=$P(ABM1,U,5)
  1. S QUANTITY=$P(ABM2,U,3)
  1. S PRICE=$P(ABM2,U,4)
  1. S HCPCCODE=$P($$CPT^ABMCVAPI(+$P(ABM2,U,5),FROM),U,2) ;CSV-c
  1. S REVCODE=$P($G(^AUTTREVN(+$P(ABM2,U,6),0)),U)
  1. S ABMCNT=ABMCNT+1
  1. S X=ABMCNT
  1. S $E(X,4)=$E(SUPPLY,1,32)
  1. S $E(X,36)=$J(QUANTITY,4)
  1. S $E(X,40)=$J($FN(PRICE,"P",2),10)
  1. S $E(X,51)=$E(TRANCODE,1,10)
  1. S $E(X,61)=$E(HCPCCODE,1,6)
  1. S $E(X,67)=$E(REVCODE,1,3)
  1. S:CLAIM]"" $E(X,71)=$E(CLAIM,1,10)
  1. D J
  1. S X=" "_ISSUDATE
  1. S $E(X,51)=$E(NDC,1,12)
  1. S $E(X,67)=DEPTCODE
  1. D J
  1. S ^TMP("ABMSUP",$J,ABMCNT)=ABMSDA
  1. Q
  1. ADDITEM ;ADD SUPPLY TO CLAIM
  1. N ABMJ,ABMX
  1. F ABMJ=1:1 S ABMX=$P(ABMSET,",",ABMJ) Q:'ABMX D A1
  1. Q
  1. A1 ;ADD ITEMS TO THE CLAIM
  1. S DA(1)=ABMDA
  1. S ABMSDA=$G(^TMP("ABMSUP",$J,ABMX))
  1. Q:'ABMSDA
  1. D SUPPSET
  1. S X=""
  1. I $P(ABM1,U,3) D I 1
  1. .S X=$P(ABM1,U,3)
  1. .I '$D(^PSDRUG(+X,0)) S X="" Q
  1. .S DIC="^ABMDCLM("_DUZ(2)_","_ABMDA_",23,"
  1. .S $P(^ABMDCLM(DUZ(2),DA(1),23,0),U,2)="9002274.3023P"
  1. .;S DIC("DR")=".02///"_$P(ABM2,U,6)_";.03////"_$P(ABM2,U,3)_";.04////"_$P(ABM2,U,4)_";.05////"_$S($G(DISPFEE):DISPFEE,1:4.5)_";.06////"_$S($P(ABM2,U,7)]"":$P(ABM2,U,7),1:"NOT STATED")_";.14////"_$P(ABM0,U,3) ;;abm*2.6*21 IHS/SD/SDR HEAT110091
  1. .;start new abm*2.6*21 IHS/SD/SDR HEAT110091
  1. .S DIC("DR")=".02///"_$S(+$P(ABM2,U,6)'=0:$P(ABM2,U,6),1:250)_";.03////"_$P(ABM2,U,3)_";.04////"_$P(ABM2,U,4)_";.05////"_$S($G(DISPFEE):DISPFEE,1:4.5)_";.06////"_$S($P(ABM2,U,7)]"":$P(ABM2,U,7),1:"NOT STATED")_";.14////"_$P(ABM0,U,3)
  1. .;end new abm*2.6*21 IHS/SD/SDR HEAT110091
  1. .S DIC("DR")=DIC("DR")_";.24////"_$P($G(^PSDRUG($P(ABM1,U,3),2)),U,4) ;NDC abm*2.6*10 HEAT74646
  1. E I $P(ABM2,U,5) D I 1
  1. .S X=+$P(ABM2,U,5)
  1. .I '$D(^ICPT(+X,0)) S X="" Q
  1. .S DIC="^ABMDCLM("_DUZ(2)_","_ABMDA_",43,"
  1. .S $P(^ABMDCLM(DUZ(2),DA(1),43,0),U,2)="9002274.3043P"
  1. .S DIC("DR")=".02///"_$P(ABM2,U,6)_";.03////"_$P(ABM2,U,3)_";.04////"_$P(ABM2,U,4)_";.06////"_$S($P(ABM2,U,7)]"":$P(ABM2,U,7),1:"NOT STATED")_";.14////"_$P(ABM0,U,3)
  1. E I $P(ABM2,U,6) D I 1
  1. .S X=+$P(ABM2,U,6)
  1. .I '$D(^AUTTREVN(+X,0)) S X="" Q
  1. .S DIC="^ABMDCLM("_DUZ(2)_","_ABMDA_",25,"
  1. .S $P(^ABMDCLM(DUZ(2),DA(1),25,0),U,2)="9002274.3025P"
  1. .S DIC("DR")=".02///"_$P(ABM2,U,3)_";.03////"_$P(ABM2,U,4)_";.04////"_$P(ABM2,U,2)
  1. Q:'X
  1. S DIC(0)="L"
  1. D FILE^DICN
  1. K DIC,DD,DA,DR
  1. S DA=ABMSDA
  1. S DIE="^AUPNSUP("
  1. S DR=".06////"_ABMDA
  1. D ^DIE
  1. K DIC,DD,DIE,DA,DR
  1. Q
  1. DISP1 ;DISPLAY ALL RELEVANT ITEMS
  1. S ABMHDR=""
  1. S ABMVALM="ABMDTMS HL7 SUPPLY LIST"
  1. D VALM(ABMVALM)
  1. Q
  1. SELECT ;EP;SELECT ITEMS TO ADD TO CLAIM
  1. I $G(ABMDTMS)'="E" S ABMDTMS="A"
  1. S DIR(0)="LO^1:"_ABMCNT
  1. S DIR("A")="Select Charges to add or edit"
  1. W !
  1. D ^DIR K DIR
  1. K ABMQUIT
  1. I '+Y D BACK Q
  1. S ABMSET=Y
  1. I ABMDTMS="A" D ADD I 1
  1. E D EDIT
  1. K ABMDTMS
  1. D BACK
  1. D DINIT
  1. Q
  1. ADD D SURE
  1. I $D(ABMQUIT) K ABMQUIT Q
  1. D ADDITEM
  1. Q
  1. SURE ;CONFIRM TRANSFER OF SUPPLIES
  1. W !!,"Are you certain you want to charge these items to the Claim/Bill"
  1. W !,ABMSET
  1. S DIR(0)="YO"
  1. S DIR("A")="Charge these supplies/meds to Claim/Bill "_ABMNUM_" "
  1. S DIR("B")="NO"
  1. W !
  1. D ^DIR K DIR
  1. I 'Y S ABMQUIT="" Q
  1. Q
  1. BACK S VALMBCK="R"
  1. Q
  1. J ;SET TEMP ARRAY
  1. S J=J+1
  1. S ^TMP("ABMDTMS",$J,J,0)=X
  1. S X=""
  1. Q
  1. VALM(ABMVALM) ;EP; -- main entry point for list templates
  1. S VALMSG="- Previous Screen Q Quit ?? for More Actions"
  1. S VALMCC=1 ;1=screen mode, 0=scrolling mode
  1. D BACK
  1. D TERM^VALM0
  1. D CLEAR^VALM1
  1. D EN^VALM(ABMVALM)
  1. D CLEAR^VALM1
  1. Q
  1. OPEN(DFN,ABMDA) ;EP;TO PROCESS WHEN CLAIM ALREAY IDENTIFIED
  1. I $D(ABMDTMS("OUT")) K ABMDTMS Q
  1. S ABMDTMS("OUT")=""
  1. Q:'DFN!'ABMDA
  1. K ABMQUIT
  1. S PATIENT=$P($G(^DPT(DFN,0)),U)
  1. S FROM=$G(^ABMDCLM(DUZ(2),ABMDA,7))
  1. S TO=DT
  1. S FROM=+FROM
  1. N X,Y,Z
  1. S Z=0
  1. S X=FROM-1
  1. F S X=$O(^AUPNSUP("ASUP",DFN,X)) Q:'X!Z!(X>TO) D
  1. .S Y=0
  1. .F S Y=$O(^AUPNSUP("ASUP",DFN,X,Y)) Q:'Y D
  1. ..S Z=Z+1
  1. Q:'Z
  1. W @IOF
  1. W !!,"There are SUPPLIES/MEDS on file that may need to be added to this claim."
  1. D CL1
  1. D DISPLAY
  1. Q
  1. HDR ;EP; -- header code
  1. S VALMHDR(1)=$G(ABMHDR)
  1. S VALMSG="- Previous Screen Q Quit ?? for More Actions"
  1. Q
  1. ;
  1. HELP ;EP; -- help code
  1. S X="?"
  1. D DISP^XQORM1
  1. W !!
  1. Q
  1. ;
  1. EXIT ;EP; -- exit code
  1. K ^TMP("ABMLM",$J)
  1. K ABMAR,ABMDIR,ABMFL,ABMFN,ABMHDR,ABMI,ABMROU,ABMDIR
  1. I '$G(XQORS) D CLEAR^VALM1
  1. Q
  1. EDIN ;
  1. S ABMDTMS="E"
  1. D SELECT
  1. K ABDMTMS
  1. Q
  1. EDIT ;EDIT SUPPLY ITEMS
  1. N ABMJ,ABMX
  1. F ABMJ=1:1 S ABMX=$P(ABMSET,",",ABMJ) Q:'ABMX D E1
  1. Q
  1. E1 ;EDIT ITEMS
  1. S DA=$G(^TMP("ABMSUP",$J,ABMX))
  1. Q:'DA
  1. S DR="[ABMDTMS SUPPLY EDIT]"
  1. S (DDSFILE,DIE)="^AUPNSUP("
  1. D ^DDS
  1. Q