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