ABMDESMH ; IHS/SD/SDR - Profession Services for Seperate Bill ;
;;2.6;IHS 3P BILLING SYSTEM;**10,14**;NOV 12, 2009;Build 238
;
; IHS/SD/SDR - V2.5 p5 - 5/18/04 - Modified to put POS and TOS by line item
; IHS/SD/SDR - v2.5 p13 - IM25574
; Correction to CPT Modifier in Medical multiple
;
; IHS/SD/SDR - v2.6 CSV
;IHS/SD/SDR - 2.6*14 - HEAT161263 - Changed to use $$GET1^DIQ so output transform will execute for SNOMED/Provider Narrative
;
K ABMS I $D(ABMP("FLAT")),$P(ABMP("FLAT"),U,3)]"" G FLAT
;
S ABMS("TOT")=0
MS S:'$D(ABMS("I")) ABMS("I")=1 S ABMX="""""",ABMX("ER")=0 F ABMS("I")=ABMS("I"):1 S ABMX=$O(@(ABMP("GL")_"21,""C"","_ABMX_")")) Q:'ABMX S ABMX("X")=$O(^(ABMX,"")) D MS1
G PRO
;
MS1 S ABMX(0)=@(ABMP("GL")_"21,"_ABMX("X")_",0)"),ABMX(1)=$G(^(1))
S ABMX("R")=$P(ABMX(0),U,3)
I +$P(ABMX(0),U,7)=0!(ABMX("R")=""&($P(^ABMDEXP(ABMP("EXP"),0),U)["UB")) S ABMS("I")=ABMS("I")-1 Q
I (ABMX("R")<960!(ABMX("R")>963))&(ABMX("R")'=969) S ABMS("I")=ABMS("I")-1 Q
S ABMS("TOT")=ABMS("TOT")+$P(ABMX(0),U,7)
; ABMS(#)=Charge^date from^date to^CPT Code^Corr. ICD^units^typ serv^Description
MSH S ABMS(ABMS("I"))=$P(ABMX(0),U,7)
S $P(ABMS(ABMS("I")),U,2)=$$HDT^ABMDUTL($P(ABMX(0),U,5)),$P(ABMS(ABMS("I")),U,3)=$$HDT^ABMDUTL($P(ABMX(0),U,5))
S ABMX("C")=$P(ABMX(0),U) D CPT S $P(ABMS(ABMS("I")),U,4)=ABMX("C")_$S($P(ABMX(0),U,9)]"":"-"_$P(ABMX(0),U,9),1:"")_$S($P(ABMX(1),U)]"":"-"_$P(ABMX(1),U),1:"")_$S($P(ABMX(1),U,2)]"":"-"_$P(ABMX(1),U,2),1:"")
S ABMX("D")=$P(ABMX(0),U,4) D ICD S $P(ABMS(ABMS("I")),U,5)=ABMX("D")
S $P(ABMS(ABMS("I")),U,6)=1
I $P(ABMX(0),"^",16) D
. S $P(ABMS(ABMS("I")),U,7)=$P($G(^ABMDCODE($P(ABMX(0),"^",16),0)),"^")
E S $P(ABMS(ABMS("I")),U,7)=$S($P(^DIC(81.1,$P($$CPT^ABMCVAPI(+ABMX(0),ABMP("VDT")),U,4),0),U,3)=2:2,1:1) ;CSV-c
S $P(ABMS(ABMS("I")),U,10)=$P($G(ABMX(0)),"^",15) ;POS
;S $P(ABMS(ABMS("I")),U,8)=$P(^AUTNPOV($P(ABMX(0),U,6),0),U) ;abm*2.6*14 HEAT161263
S $P(ABMS(ABMS("I")),U,8)=$$GET1^DIQ(9999999.27,$P(ABMX(0),U,6),"01","E") ;abm*2.6*14 HEAT161263
Q
;
PRO S ABMX=0 F ABMS("I")=ABMS("I"):1 S ABMX=$O(@(ABMP("GL")_"27,"_ABMX_")")) Q:'ABMX S ABMX("X")=ABMX D PRO1
G ANS
;
PRO1 S ABMX(0)=@(ABMP("GL")_"27,"_ABMX("X")_",0)")
S ABMX("SUB")=($P(ABMX(0),U,3)*$P(ABMX(0),U,4))
S ABMS("TOT")=ABMS("TOT")+ABMX("SUB")
;
PROH S ABMS(ABMS("I"))=ABMX("SUB")
D HDT^ABMDESM1
;
S ABMX("C")=$P(ABMX(0),U) D CPT
S $P(ABMS(ABMS("I")),U,4)=ABMX("C")_$S($P(ABMX(0),U,5)]"":"-"_$P($$MOD^ABMCVAPI($P(ABMX(0),U,5),"",ABMP("VDT")),U,2),1:"")_$S($P(ABMX(0),U,8)]"":"-"_$P(ABMX(0),U,8),1:"")_$S($P(ABMX(0),U,9)]"":"-"_$P(ABMX(0),U,9),1:"") ;CSV-c
;
S ABMX("D")=$P(ABMX(0),U,6) D ICD S $P(ABMS(ABMS("I")),U,5)=ABMX("D")
S $P(ABMS(ABMS("I")),U,6)=$P(ABMX(0),U,3)
S $P(ABMS(ABMS("I")),U,7)=1
S $P(ABMS(ABMS("I")),U,8)=$P($$CPT^ABMCVAPI(+ABMX(0),ABMP("VDT")),U,3) ;CSV-c
Q
;
ANS S ABMX=0 F ABMS("I")=ABMS("I"):1 S ABMX=$O(@(ABMP("GL")_"39,"_ABMX_")")) Q:'ABMX S ABMX("X")=ABMX D ANS1
G XIT
;
ANS1 S ABMX(0)=@(ABMP("GL")_"39,"_ABMX("X")_",0)")
S ABMX("R")=$P(ABMX(0),U,2) I ABMX("R")'=963 S ABMS("I")=ABMS("I")-1 Q
S ABMX("C")=$P(ABMX(0),U,3) ; D ANESTH^ABMDESMA
S ABMX("SUB")=ABMX("C")+$P(ABMX(0),U,4)
S ABMS("TOT")=ABMS("TOT")+ABMX("SUB")
ANSH S ABMS(ABMS("I"))=ABMX("SUB") D HDT^ABMDESM1
S ABMX("C")=$P(ABMX(0),U) D CPT S $P(ABMS(ABMS("I")),U,4)=ABMX("C")_"-47"
S $P(ABMS(ABMS("I")),U,6)=1,$P(ABMS(ABMS("I")),U,7)=7
S $P(ABMS(ABMS("I")),U,8)="ANESTHESIA IN ASSOC W/ CPT:"_$P($$CPT^ABMCVAPI(+ABMX(0),ABMP("VDT")),U,2) ;CSV-c
Q
;
CPT ;
S:ABMX("C")]"" ABMX("C")=$P($$CPT^ABMCVAPI(ABMX("C"),ABMP("VDT")),U,2) ;CSV-c
Q
ICD ;
S:ABMX("D")]"" ABMX("D")=$P($$DX^ABMCVAPI(ABMX("D"),ABMP("VDT")),U,2) ;CSV-c
Q
;
XIT S ABMP("EXP",ABMP("VTYP",999))=ABMS("TOT")
K ABMX
Q
;
FLAT S $P(ABMS(1),U,2)=$$HDT^ABMDUTL($P($G(@(ABMP("GL")_"7)")),U))
S $P(ABMS(1),U,3)=$$HDT^ABMDUTL($P($G(@(ABMP("GL")_"7)")),U,2))
;I $P($G(^AUTNINS(ABMP("INS"),2)),U)="R" S $P(ABMS(1),U,4)=90250 ;abm*2.6*10 HEAT73780
I $$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABMP("INS"),".211","I"),1,"I")="R" S $P(ABMS(1),U,4)=90250 ;abm*2.6*10 HEAT73780
S ABMX("FDAYS")=$S($P(ABMS(1),U,2)=$P(ABMS(1),U,3):1,1:$P(ABMP("FLAT"),U,8))
S ABMX("NARR")=$S(ABMX("FDAYS")>0:ABMX("FDAYS"),1:1)
S ABMX("NARR2")=" "_$S(ABMX("NARR")>1:"DAYS",1:"DAY")_" @ $"_$J($P(ABMP("FLAT"),U,4),4,2)
S $P(ABMS(1),U,8)=ABMX("NARR")_ABMX("NARR2")
S ABMS("TOT")=$P(ABMP("FLAT"),U,4)*$S(ABMX("FDAYS")>0:ABMX("FDAYS"),1:1)
S $P(ABMS(1),U,1)=ABMS("TOT")
S $P(ABMS(1),U,6)=$S(ABMX("FDAYS")>0:ABMX("FDAYS"),1:1)
S $P(ABMS(1),U,7)=1
G XIT
ABMDESMH ; IHS/SD/SDR - Profession Services for Seperate Bill ;
+1 ;;2.6;IHS 3P BILLING SYSTEM;**10,14**;NOV 12, 2009;Build 238
+2 ;
+3 ; IHS/SD/SDR - V2.5 p5 - 5/18/04 - Modified to put POS and TOS by line item
+4 ; IHS/SD/SDR - v2.5 p13 - IM25574
+5 ; Correction to CPT Modifier in Medical multiple
+6 ;
+7 ; IHS/SD/SDR - v2.6 CSV
+8 ;IHS/SD/SDR - 2.6*14 - HEAT161263 - Changed to use $$GET1^DIQ so output transform will execute for SNOMED/Provider Narrative
+9 ;
+10 KILL ABMS
IF $DATA(ABMP("FLAT"))
IF $PIECE(ABMP("FLAT"),U,3)]""
GOTO FLAT
+11 ;
+12 SET ABMS("TOT")=0
MS IF '$DATA(ABMS("I"))
SET ABMS("I")=1
SET ABMX=""""""
SET ABMX("ER")=0
FOR ABMS("I")=ABMS("I"):1
SET ABMX=$ORDER(@(ABMP("GL")_"21,""C"","_ABMX_")"))
IF 'ABMX
QUIT
SET ABMX("X")=$ORDER(^(ABMX,""))
DO MS1
+1 GOTO PRO
+2 ;
MS1 SET ABMX(0)=@(ABMP("GL")_"21,"_ABMX("X")_",0)")
SET ABMX(1)=$GET(^(1))
+1 SET ABMX("R")=$PIECE(ABMX(0),U,3)
+2 IF +$PIECE(ABMX(0),U,7)=0!(ABMX("R")=""&($PIECE(^ABMDEXP(ABMP("EXP"),0),U)["UB"))
SET ABMS("I")=ABMS("I")-1
QUIT
+3 IF (ABMX("R")<960!(ABMX("R")>963))&(ABMX("R")'=969)
SET ABMS("I")=ABMS("I")-1
QUIT
+4 SET ABMS("TOT")=ABMS("TOT")+$PIECE(ABMX(0),U,7)
+5 ; ABMS(#)=Charge^date from^date to^CPT Code^Corr. ICD^units^typ serv^Description
MSH SET ABMS(ABMS("I"))=$PIECE(ABMX(0),U,7)
+1 SET $PIECE(ABMS(ABMS("I")),U,2)=$$HDT^ABMDUTL($PIECE(ABMX(0),U,5))
SET $PIECE(ABMS(ABMS("I")),U,3)=$$HDT^ABMDUTL($PIECE(ABMX(0),U,5))
+2 SET ABMX("C")=$PIECE(ABMX(0),U)
DO CPT
SET $PIECE(ABMS(ABMS("I")),U,4)=ABMX("C")_$SELECT($PIECE(ABMX(0),U,9)]"":"-"_$PIECE(ABMX(0),U,9),1:"")_$SELECT($PIECE(ABMX(1),U)]"":"-"_$PIECE(ABMX(1),U),1:"")_$SELECT($PIECE(ABMX(1),U,2)]"":"-"_$PIECE(ABMX(1),U,2),1:"")
+3 SET ABMX("D")=$PIECE(ABMX(0),U,4)
DO ICD
SET $PIECE(ABMS(ABMS("I")),U,5)=ABMX("D")
+4 SET $PIECE(ABMS(ABMS("I")),U,6)=1
+5 IF $PIECE(ABMX(0),"^",16)
Begin DoDot:1
+6 SET $PIECE(ABMS(ABMS("I")),U,7)=$PIECE($GET(^ABMDCODE($PIECE(ABMX(0),"^",16),0)),"^")
End DoDot:1
+7 ;CSV-c
IF '$TEST
SET $PIECE(ABMS(ABMS("I")),U,7)=$SELECT($PIECE(^DIC(81.1,$PIECE($$CPT^ABMCVAPI(+ABMX(0),ABMP("VDT")),U,4),0),U,3)=2:2,1:1)
+8 ;POS
SET $PIECE(ABMS(ABMS("I")),U,10)=$PIECE($GET(ABMX(0)),"^",15)
+9 ;S $P(ABMS(ABMS("I")),U,8)=$P(^AUTNPOV($P(ABMX(0),U,6),0),U) ;abm*2.6*14 HEAT161263
+10 ;abm*2.6*14 HEAT161263
SET $PIECE(ABMS(ABMS("I")),U,8)=$$GET1^DIQ(9999999.27,$PIECE(ABMX(0),U,6),"01","E")
+11 QUIT
+12 ;
PRO SET ABMX=0
FOR ABMS("I")=ABMS("I"):1
SET ABMX=$ORDER(@(ABMP("GL")_"27,"_ABMX_")"))
IF 'ABMX
QUIT
SET ABMX("X")=ABMX
DO PRO1
+1 GOTO ANS
+2 ;
PRO1 SET ABMX(0)=@(ABMP("GL")_"27,"_ABMX("X")_",0)")
+1 SET ABMX("SUB")=($PIECE(ABMX(0),U,3)*$PIECE(ABMX(0),U,4))
+2 SET ABMS("TOT")=ABMS("TOT")+ABMX("SUB")
+3 ;
PROH SET ABMS(ABMS("I"))=ABMX("SUB")
+1 DO HDT^ABMDESM1
+2 ;
+3 SET ABMX("C")=$PIECE(ABMX(0),U)
DO CPT
+4 ;CSV-c
SET $PIECE(ABMS(ABMS("I")),U,4)=ABMX("C")_$SELECT($PIECE(ABMX(0),U,5)]"":"-"_$PIECE($$MOD^ABMCVAPI($PIECE(ABMX(0),U,5),"",ABMP("VDT")),U,2),1:"")_$SELECT($PIECE(ABMX(0),U,8)]"":"-"_...
... $PIECE(ABMX(0),U,8),1:"")_$SELECT($PIECE(ABMX(0),U,9)]"":"-"_$PIECE(ABMX(0),U,9),1:"")
+5 ;
+6 SET ABMX("D")=$PIECE(ABMX(0),U,6)
DO ICD
SET $PIECE(ABMS(ABMS("I")),U,5)=ABMX("D")
+7 SET $PIECE(ABMS(ABMS("I")),U,6)=$PIECE(ABMX(0),U,3)
+8 SET $PIECE(ABMS(ABMS("I")),U,7)=1
+9 ;CSV-c
SET $PIECE(ABMS(ABMS("I")),U,8)=$PIECE($$CPT^ABMCVAPI(+ABMX(0),ABMP("VDT")),U,3)
+10 QUIT
+11 ;
ANS SET ABMX=0
FOR ABMS("I")=ABMS("I"):1
SET ABMX=$ORDER(@(ABMP("GL")_"39,"_ABMX_")"))
IF 'ABMX
QUIT
SET ABMX("X")=ABMX
DO ANS1
+1 GOTO XIT
+2 ;
ANS1 SET ABMX(0)=@(ABMP("GL")_"39,"_ABMX("X")_",0)")
+1 SET ABMX("R")=$PIECE(ABMX(0),U,2)
IF ABMX("R")'=963
SET ABMS("I")=ABMS("I")-1
QUIT
+2 ; D ANESTH^ABMDESMA
SET ABMX("C")=$PIECE(ABMX(0),U,3)
+3 SET ABMX("SUB")=ABMX("C")+$PIECE(ABMX(0),U,4)
+4 SET ABMS("TOT")=ABMS("TOT")+ABMX("SUB")
ANSH SET ABMS(ABMS("I"))=ABMX("SUB")
DO HDT^ABMDESM1
+1 SET ABMX("C")=$PIECE(ABMX(0),U)
DO CPT
SET $PIECE(ABMS(ABMS("I")),U,4)=ABMX("C")_"-47"
+2 SET $PIECE(ABMS(ABMS("I")),U,6)=1
SET $PIECE(ABMS(ABMS("I")),U,7)=7
+3 ;CSV-c
SET $PIECE(ABMS(ABMS("I")),U,8)="ANESTHESIA IN ASSOC W/ CPT:"_$PIECE($$CPT^ABMCVAPI(+ABMX(0),ABMP("VDT")),U,2)
+4 QUIT
+5 ;
CPT ;
+1 ;CSV-c
IF ABMX("C")]""
SET ABMX("C")=$PIECE($$CPT^ABMCVAPI(ABMX("C"),ABMP("VDT")),U,2)
+2 QUIT
ICD ;
+1 ;CSV-c
IF ABMX("D")]""
SET ABMX("D")=$PIECE($$DX^ABMCVAPI(ABMX("D"),ABMP("VDT")),U,2)
+2 QUIT
+3 ;
XIT SET ABMP("EXP",ABMP("VTYP",999))=ABMS("TOT")
+1 KILL ABMX
+2 QUIT
+3 ;
FLAT SET $PIECE(ABMS(1),U,2)=$$HDT^ABMDUTL($PIECE($GET(@(ABMP("GL")_"7)")),U))
+1 SET $PIECE(ABMS(1),U,3)=$$HDT^ABMDUTL($PIECE($GET(@(ABMP("GL")_"7)")),U,2))
+2 ;I $P($G(^AUTNINS(ABMP("INS"),2)),U)="R" S $P(ABMS(1),U,4)=90250 ;abm*2.6*10 HEAT73780
+3 ;abm*2.6*10 HEAT73780
IF $$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABMP("INS"),".211","I"),1,"I")="R"
SET $PIECE(ABMS(1),U,4)=90250
+4 SET ABMX("FDAYS")=$SELECT($PIECE(ABMS(1),U,2)=$PIECE(ABMS(1),U,3):1,1:$PIECE(ABMP("FLAT"),U,8))
+5 SET ABMX("NARR")=$SELECT(ABMX("FDAYS")>0:ABMX("FDAYS"),1:1)
+6 SET ABMX("NARR2")=" "_$SELECT(ABMX("NARR")>1:"DAYS",1:"DAY")_" @ $"_$JUSTIFY($PIECE(ABMP("FLAT"),U,4),4,2)
+7 SET $PIECE(ABMS(1),U,8)=ABMX("NARR")_ABMX("NARR2")
+8 SET ABMS("TOT")=$PIECE(ABMP("FLAT"),U,4)*$SELECT(ABMX("FDAYS")>0:ABMX("FDAYS"),1:1)
+9 SET $PIECE(ABMS(1),U,1)=ABMS("TOT")
+10 SET $PIECE(ABMS(1),U,6)=$SELECT(ABMX("FDAYS")>0:ABMX("FDAYS"),1:1)
+11 SET $PIECE(ABMS(1),U,7)=1
+12 GOTO XIT