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

ABMDF24.m

Go to the documentation of this file.
  1. ABMDF24 ; IHS/ASDST/DMJ - Set NCPDP Print Array ;
  1. ;;2.6;IHS Third Party Billing;**1,3**;NOV 12, 2009
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - Format changes
  1. ; Adrian made these changes and asked they be included
  1. ;
  1. ; IHS/SD/SDR - v2.5 p11 - NPI
  1. ;
  1. ; IHS/SD/SDR - v2.5 p13 - NO IM
  1. ;
  1. ; IHS/SD/SDR - v2.6 CSV
  1. ; IHS/SD/SDR - abm*2.6*1 - HEAT5361 - Added provider NPI to print
  1. ; IHS/SD/SDR - abm*2.6*3 - HEAT12251 - default DOS to claim header svc from dt
  1. ;
  1. START ;EP - enter here
  1. K ABMP,ABMF
  1. S ABMP("EXP")=24
  1. D TXST^ABMDFUTL
  1. S ABMTOT(1)=0,ABMTOT(2)=0,ABMTOT(3)=0
  1. D LOOP
  1. F I=1:1:3 D
  1. .S $P(ABMY("TOT"),"^",I)=ABMTOT(I)
  1. K ABM,ABMV,ABMF,ABMS,ABMR,ABMFP,ABMTOT
  1. D ^%ZISC
  1. Q
  1. ;
  1. LOOP ;loop through ABMY array
  1. S ABMY("N")=0
  1. F S ABMY("N")=$O(ABMY(ABMY("N"))) Q:'ABMY("N") D
  1. .S ABMTOT(3)=ABMTOT(3)+1
  1. .S ABMP("BDFN")=0
  1. .F S ABMP("BDFN")=$O(ABMY(ABMY("N"),ABMP("BDFN"))) Q:'ABMP("BDFN") D
  1. ..D ENT
  1. Q
  1. ;
  1. ENT ;EP - one bill
  1. Q:'$D(^ABMDBILL(DUZ(2),ABMP("BDFN"),0))
  1. S ABMTOT(1)=+$G(ABMTOT(1))+1
  1. S ABMTOT(2)=+$G(ABMTOT(2))+$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),2)),U)
  1. K ABMFP
  1. D GET1
  1. D FSET1
  1. D GET2
  1. S DIE="^ABMDBILL(DUZ(2),"
  1. S DA=ABMP("BDFN")
  1. S DR=".04////B;.16////A;.17////"_ABMP("XMIT")
  1. D ^ABMDDIE
  1. Q:$D(ABM("DIE-FAIL"))
  1. K ^ABMDBILL(DUZ(2),"AS",+^ABMDBILL(DUZ(2),ABMP("BDFN"),0),"A",ABMP("BDFN"))
  1. K ^ABMDBILL(DUZ(2),"AC","A",ABMP("BDFN"))
  1. Q
  1. ;
  1. GET1 ;EP for setting up export array
  1. K ABMP("INS"),ABMP("CDFN"),ABMFP
  1. S ABM0=^ABMDBILL(DUZ(2),ABMP("BDFN"),0)
  1. S ABMP("B0")=ABM0 ;abm*2.6*1 HEAT5361
  1. S ABMP("INS")=$P(ABM0,"^",8)
  1. S ABMPOL=$$SBR^ABMUTLP(ABMP("BDFN"))
  1. S ABMPAT=$P(ABM0,"^",5)
  1. S ABMDOB=$P(^DPT(ABMPAT,0),"^",3)
  1. S ABMSEX=$P(^DPT(ABMPAT,0),"^",2)
  1. S ABMSEX=$S(ABMSEX="M":1,ABMSEX="F":2,1:0)
  1. S ABMREL=$$REL^ABMUTLP(ABMP("BDFN"))
  1. S ABMREL=$S(+ABMREL=1:1,+ABMREL=2:2,+ABMREL=3:3,1:4)
  1. S ABMID=$$PNUM^ABMUTLP(ABMP("BDFN"))
  1. S ABMGID=$G(ABMP("GRP#"))
  1. S ABMLDFN=$P(ABM0,"^",3)
  1. S ABMPAUTH=$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),5)),"^",12)
  1. S ABMCSZ=$P(^AUTTLOC(ABMLDFN,0),"^",11,18)
  1. S ABMPHONE=$P(ABMCSZ,U)
  1. S ABMPHONE=$TR(ABMPHONE,"("," ")
  1. S ABMPHONE=$TR(ABMPHONE,")"," ")
  1. S ABMSTATE=$P(ABMCSZ,"^",4)
  1. S ABMSTATE=$P($G(^DIC(5,+ABMSTATE,0)),U)
  1. S ABMSPN=$P($G(^ABMNINS(ABMLDFN,ABMP("INS"),1,997,0)),"^",8)
  1. Q
  1. FSET1 ;set printing array patient info
  1. S ABMFP(1,5)=ABMID ;ID
  1. S ABMFP(1,40)=ABMGID ;GROUP ID
  1. S ABMFP(1,55)="Claim# "_ABMP("PCN")
  1. S ABMFP(5,5)=$P($G(^DPT(ABMPAT,0)),U) ;PATIENT NAME
  1. S ABMFP(3,51)=$P($G(^AUTNINS(ABMP("INS"),0)),U) ;PLAN NAME
  1. S ABMFP(3,5)=$P($G(^AUPN3PPH(ABMPOL,0)),U) ;NAME
  1. ;PATIENT DOB/GENDER/RELATIONSHIP
  1. S ABMFP(7,10)=$E(ABMDOB,4,5)
  1. S ABMFP(7,15)=$E(ABMDOB,6,7)
  1. S ABMFP(7,20)=$E(ABMDOB,1,3)+1700
  1. S ABMFP(7,46)=ABMSEX
  1. S ABMFP(7,65)=ABMREL
  1. ;
  1. S ABMFP(9,8)=$P(^DIC(4,ABMLDFN,0),U) ;PHARMACY NAME
  1. ;PHARMACY ADDRESS
  1. S ABMFP(11,8)=$P(ABMCSZ,"^",2)
  1. ;PHARMACY SERVICE PROVIDER ID
  1. S ABMNPIU=$$NPIUSAGE^ABMUTLF(ABMLDFN,ABMP("INS"))
  1. I $G(ABMNPIU)="N"!($G(ABMNPIU)="B") D
  1. .S ABMLNPI=$S($P($G(^ABMNINS(ABMLDFN,ABMP("INS"),1,ABMP("VTYP"),1)),U,8)'="":$P(^ABMNINS(ABMLDFN,ABMP("INS"),1,ABMP("VTYP"),1),U,8),$P($G(^ABMDPARM(ABMLDFN,1,2)),U,12)'="":$P(^ABMDPARM(ABMLDFN,1,2),U,12),1:ABMLDFN)
  1. .S ABMFP(11,45)=$S($P($$NPI^XUSNPI("Organization_ID",ABMLNPI),U)'="":$P($$NPI^XUSNPI("Organization_ID",ABMLNPI),U),1:"")
  1. .S ABMFP(11,67)="01"
  1. I $G(ABMNPIU)'="N",($G(ABMFP(11,45))="") D
  1. .I ABMSPN="" D
  1. ..S ABMFP(11,45)=$P(ABMCSZ,U,8)
  1. ..S ABMFP(11,67)=11
  1. .I ABMSPN'="" D
  1. ..S ABMFP(11,45)=ABMSPN
  1. ..S ABMFP(11,67)="07"
  1. ;PHARMACY CITY/PHONE NUMBER
  1. S ABMFP(13,8)=$P(ABMCSZ,"^",3)
  1. S ABMFP(13,44)=ABMPHONE
  1. ;PHARMACY STATE/ZIP/FAX NUMBER
  1. S ABMFP(15,12)=ABMSTATE
  1. S ABMFP(15,28)=$P(ABMCSZ,"^",5)
  1. ;
  1. S ABMFP(20,52)="SIGNATURE ON FILE"
  1. Q
  1. GET2 ;rx multiple
  1. S ABMI=0,ABMCNT=0
  1. F S ABMI=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),23,ABMI)) Q:'ABMI D
  1. .S ABMCNT=ABMCNT+1
  1. .S ABMRX0=^ABMDBILL(DUZ(2),ABMP("BDFN"),23,ABMI,0)
  1. .D FSET2
  1. .I ABMCNT=2 D PRT
  1. I ABMCNT=1 D PRT
  1. Q
  1. FSET2 ;set printing array rx multiple
  1. S ABMCHARG=$P(ABMRX0,"^",3)*$P(ABMRX0,"^",4)
  1. S ABMLINE=$S(ABMCNT=1:28,1:47)
  1. S ABMFP(ABMLINE,67)=$J(ABMCHARG,8,2)
  1. S ABMLINE=ABMLINE+2
  1. S ABMDFEE=$P(ABMRX0,"^",5)
  1. S ABMGROSS=ABMCHARG+ABMDFEE
  1. S ABMFP(ABMLINE,67)=$J(ABMDFEE,8,2)
  1. S ABMLINE=$S(ABMCNT=1:33,1:51)
  1. S ABMFP(ABMLINE,1)=$P(ABMRX0,"^",22)
  1. I ABMFP(ABMLINE,1)="" D
  1. .S ABMFP(ABMLINE,1)=$O(^PSRX("B",+$P(ABMRX0,"^",6),0))
  1. S:ABMFP(ABMLINE,1)="" ABMFP(ABMLINE,1)=$G(ABMRXNUM)
  1. S ABMFP(ABMLINE,16)=1 ;qualifier
  1. S ABMFP(ABMLINE,18)=$$POSDT^ABMDUTL($P(ABMRX0,"^",25)) ;date written
  1. S ABMFP(ABMLINE,29)=$$POSDT^ABMDUTL($P(ABMRX0,"^",14)) ;dos
  1. I ABMFP(ABMLINE,29)="" S ABMFP(ABMLINE,29)=$$POSDT^ABMDUTL($P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),7)),"^")) ;abm*2.6*3 HEAT12251
  1. S ABMFP(ABMLINE,41)=$P(ABMRX0,"^",19)+1 ;fill #
  1. S ABMFP(ABMLINE,43)=$J($P(ABMRX0,"^",3),13,3) ;quantity
  1. S ABMFP(ABMLINE,58)=$P(ABMRX0,"^",20) ;days supply
  1. S ABMLINE=ABMLINE+4
  1. I $P(ABMRX0,"^",24) D
  1. .S ABMFP(ABMLINE,1)=$P(ABMRX0,"^",24) ;ndc
  1. .S ABMFP(ABMLINE,19)="03"
  1. I '$P(ABMRX0,"^",24) D
  1. .S ABMDRUG=$P($G(^PSDRUG(+ABMRX0,0)),U) ;drug name
  1. .S ABMFP(ABMLINE,1)=$E(ABMDRUG,1,17)
  1. I ABMPAUTH'="" D
  1. .S ABMFP(ABMLINE,26)=ABMPAUTH ;prior auth #
  1. .S ABMFP(ABMLINE,39)=1
  1. I $G(ABMNPIU)="N"!($G(ABMNPIU)="B") D
  1. .S ABMLNPI=$S($P($G(^ABMNINS(ABMLDFN,ABMP("INS"),1,ABMP("VTYP"),1)),U,8)'="":$P(^ABMNINS(ABMLDFN,ABMP("INS"),1,ABMP("VTYP"),1),U,8),$P($G(^ABMDPARM(ABMLDFN,1,2)),U,12)'="":$P(^ABMDPARM(ABMLDFN,1,2),U,12),1:ABMLDFN)
  1. .S ABMFP(ABMLINE,43)=$S($P($$NPI^XUSNPI("Organization_ID",ABMLNPI),U)'="":$P($$NPI^XUSNPI("Organization_ID",ABMLNPI),U),1:"")
  1. .S ABMFP(ABMLINE,58)="05"
  1. I $G(ABMNPIU)'="N",($G(ABMFP(ABMLINE,43))="") D
  1. .S ABMFP(ABMLINE,43)=$P($G(^DIC(4,DUZ(2),"DEA")),U)
  1. .S ABMFP(ABMLINE,58)="12"
  1. S ABMLINE=$S(ABMCNT=1:ABMLINE+1,1:ABMLINE+2)
  1. S ABMFP(ABMLINE,67)=$J(ABMGROSS,8,2)
  1. S ABMLINE=$S(ABMCNT=1:ABMLINE+3,1:ABMLINE+2)
  1. ;start new code abm*2.6*1 HEAT5361
  1. ;Attending provider
  1. S ABM("X")=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),41,"C","A",0)) D
  1. .Q:'ABM("X")
  1. .D SELBILL^ABMDE4X
  1. I $G(ABMNPIU)="N"!($G(ABMNPIU)="B") D
  1. .S ABMPNPI=$S($P($$NPI^XUSNPI("Individual_ID",$P(ABM("A"),U,2)),U)>0:$P($$NPI^XUSNPI("Individual_ID",$P(ABM("A"),U,2)),U),1:"")
  1. .S ABMFP(ABMLINE,15)=ABMPNPI
  1. .S ABMFP(ABMLINE,30)="05"
  1. ;end new code HEAT5361
  1. S ABMDXP=+$P(ABMRX0,"^",13)
  1. I '$D(^ABMDBILL(DUZ(2),ABMP("BDFN"),17,"C",ABMDXP)) D
  1. .S ABMDXP=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),17,"C",0))
  1. S ABMDX=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),17,"C",+ABMDXP,0))
  1. S ABMDX=$P($$DX^ABMCVAPI(+ABMDX,ABMP("VDT")),U,2) ;CSV-c
  1. S ABMFP(ABMLINE,43)=ABMDX
  1. S ABMFP(ABMLINE,52)="01"
  1. S ABMLINE=$S(ABMCNT=1:ABMLINE+3,1:ABMLINE+4)
  1. S ABMFP(ABMLINE,67)=$J(ABMGROSS,8,2)
  1. S:ABMCNT=1 ABMLINE=ABMLINE+1
  1. S ABMFP(ABMLINE,47)=$J(ABMGROSS,8,2)
  1. Q
  1. ;
  1. PRT ;print
  1. D EN^ABMFPRT(.ABMFP)
  1. S J=27
  1. F S J=$O(ABMFP(J)) Q:'J D
  1. .K ABMFP(J)
  1. S ABMCNT=0
  1. Q