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

ABMDF28S.m

Go to the documentation of this file.
  1. ABMDF28S ; IHS/SD/SDR - PRINT UB-04 ;
  1. ;;2.6;IHS 3P BILLING SYSTEM;**21,23,27**;NOV 12, 2009;Build 486
  1. ;new routine abm*2.6*21
  1. ;IHS/SD/SDR-2.6*21 HEAT240744 - Added routine to resort line items for dialysis billing for Medi-Cal. All Z6004 CPTs should be reported as 1 line item
  1. ; with all dates, total units for all Z6004s, and a total $$.
  1. ;IHS/SD/SDR 2.6*23 HEAT247169 If there's an NDC on the line item add it to the description
  1. ;IHS/SD/SDR 2.6*23 HEAT347035 Make T1015 print on the top line for Medi-Cal
  1. ;IHS/SD/AML,SDR 2.6*27 CR8897 Change for Medi-Cal from-thru billing
  1. ;
  1. COMPILE ;EP
  1. K I,J,K
  1. ;make sure Z6004 codes are in chronological order
  1. S I=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..I J'="Z6004" Q ;looking for Z6004 specifically
  1. ..S K=0
  1. ..F S K=$O(ABMRV(I,J,K)) Q:'K D
  1. ...S ABMRTMP($P(ABMRV(I,J,K),U,10),I,J,K)=$G(ABMRV(I,J,K))
  1. ...K ABMRV(I,J,K)
  1. ;
  1. S ABMSDT=0
  1. S L=1
  1. F S ABMSDT=$O(ABMRTMP(ABMSDT)) Q:'ABMSDT D
  1. .S I=0
  1. .F S I=$O(ABMRTMP(ABMSDT,I)) Q:'I D
  1. ..S J=-1
  1. ..F S J=$O(ABMRTMP(ABMSDT,I,J)) Q:J="" D
  1. ...S K=0
  1. ...F S K=$O(ABMRTMP(ABMSDT,I,J,K)) Q:'K D
  1. ....S ABMRV(I,J,L)=$G(ABMRTMP(ABMSDT,I,J,K))
  1. ....S L=L+1
  1. ;
  1. ;now merge Z6004 entries into 1
  1. S ABMN=1
  1. S ABMI=1
  1. S I=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..I J'="Z6004" Q ;looking for Z6004 specifically
  1. ..S K=0
  1. ..F S K=$O(ABMRV(I,J,K)) Q:'K D
  1. ...I ABMN=1 D
  1. ....S ABMSLN=K ;keep track of 1st line with Z6004
  1. ....S ABMSDT=$P(ABMRV(I,J,K),U,10) ;save date from 1st line
  1. ....S ABMSMNTH=$P($$SDT^ABMDUTL(ABMSDT),"/")
  1. ....S ABMN=2
  1. ...I ABMN'=1 D
  1. ....I $P(ABMRV(I,J,K),U,27)>ABMSDT S $P(ABMRV(I,J,ABMSLN),U,27)=$P(ABMRV(I,J,K),U,27)
  1. ....I +$P(ABMRV(I,J,ABMSLN),U,27)=0!($P(ABMRV(I,J,K),U,10)>$P(ABMRV(I,J,ABMSLN),U,27)) S $P(ABMRV(I,J,ABMSLN),U,27)=$P(ABMRV(I,J,K),U,10) ;default to later start date if do SERVICE DATE TO
  1. ....S ABMSUNIT=+$G(ABMSUNIT)+$P(ABMRV(I,J,K),U,5) ;accumulate units
  1. ....S ABMSCHG=+$G(ABMSCHG)+$P(ABMRV(I,J,K),U,6) ;accumulate chgs
  1. ....S ABMSDT2=$P($$SDT^ABMDUTL($P(ABMRV(I,J,K),U,10)),"/",1,2)
  1. ....I (+$G(ABMRV(I,J,ABMSLN,1))'=0)&(ABMSMNTH=$P(ABMSDT2,"/")) S ABMSDT2=$P(ABMSDT2,"/",2)
  1. ....E S ABMSMNTH=$P(ABMSDT2,"/")
  1. ....I $G(ABMRV(I,J,ABMSLN,1))'="" S ABMSDT2=","_ABMSDT2
  1. ....I ($L($G(ABMRV(I,J,ABMSLN,ABMI)))+$L(ABMSDT2))>21 S ABMRV(I,J,ABMSLN,ABMI)=ABMRV(I,J,ABMSLN,ABMI)_",",ABMI=ABMI+1,ABMSDT2=$P(ABMSDT2,",",2)
  1. ....S ABMRV(I,J,ABMSLN,ABMI)=$G(ABMRV(I,J,ABMSLN,ABMI))_ABMSDT2
  1. ...I ABMSLN'=K K ABMRV(I,J,K)
  1. ..S $P(ABMRV(I,J,ABMSLN),U,5)=ABMSUNIT
  1. ..S $P(ABMRV(I,J,ABMSLN),U,6)=ABMSCHG
  1. Q
  1. ;
  1. Z6004PRT ;EP
  1. S ABMIJ=0
  1. F S ABMIJ=$O(ABMRV(I,J,L,ABMIJ)) Q:'ABMIJ D
  1. .S ABMCTR=ABMCTR+1
  1. .W !
  1. .S ABMDE="LAB "_$G(ABMRV(I,J,L,ABMIJ))_"^5^25"
  1. .D WRT^ABMDF28W ;#43
  1. ;S ABMDE=J_"^30^14" ;abm*2.6*27 IHS/SD/SDR CR8897
  1. S ABMDE=$P(ABMRV(I,J,L),U,2)_"^30^14" ;abm*2.6*27 IHS/SD/SDR CR8897
  1. D WRT^ABMDF28W
  1. S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,27))_"^45^6"
  1. D WRT^ABMDF28W ;#45
  1. S ABMDE=$P(ABMRV(I,J,L),U,5)_"^52^7R" ;Tot units/item
  1. D WRT^ABMDF28W ;#46
  1. S ABMDE=$FN($P(ABMRV(I,J,L),U,6),"T",2)
  1. S ABMDE=$TR(ABMDE,".")_"^61^9R" ;Tot chg per item
  1. D WRT^ABMDF28W ;#47
  1. Q
  1. ;
  1. 2LNMDS ;EP
  1. ;start new abm*2.6*9 HEAT18507
  1. S I=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..S K=0
  1. ..F S K=$O(ABMRV(I,J,K)) Q:'K D
  1. ...Q:$P(ABMRV(I,J,K),U,9)=""
  1. ...S L=K+.5
  1. ...S $P(ABMRV(I,J,L),U,9)=$P($P(ABMRV(I,J,K),U,9)," ",2,$L(ABMRV(I,J,K)," "))
  1. ...S $P(ABMRV(I,J,K),U,9)=$P($P(ABMRV(I,J,K),U,9)," ")
  1. ...S K=L
  1. ;end new HEAT18507
  1. ;
  1. PGCNT ;EP
  1. ;cnt lines for page numbering
  1. S ABMLCNT=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .I 'ABMITMZ S ABMLCNT=ABMLCNT+1 Q
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..S L=0
  1. ..F S L=$O(ABMRV(I,J,L)) Q:+L=0 D
  1. ...;S ABMLCNT=ABMLCNT+1 ;abm*2.6*21 IHS/SD/SDR HEAT240744
  1. ...;start new abm*2.6*21 IHS/SD/SDR HEAT240744
  1. ...S ABMIJ=0
  1. ...F S ABMIJ=$O(ABMRV(I,J,L,ABMIJ)) Q:'ABMIJ D
  1. ....S ABMLCNT=ABMLCNT+1
  1. ....S ABMDE="LAB "_$G(ABMRV(I,J,L,ABMIJ))_"^5^25"
  1. ;end new abm*2.6*21 IHS/SD/SDR HEAT240744
  1. S ABMPGTOT=ABMLCNT/22 ;# pages
  1. I $P(ABMPGTOT,".",2)>0 S ABMPGTOT=(ABMPGTOT\1)+1
  1. K ABMLCNT
  1. Q
  1. ;start new abm*2.6*21 HEAT205579
  1. T1015 ;EP
  1. ;start old abm*2.6*23 IHS/SD/SDR HEAT347035
  1. ;I (($P($G(^AUTNINS(ABMP("INS"),0)),U)="ARBOR HEALTH PLAN")&($D(ABMRV))) D
  1. ;.S ABMIS=$O(ABMRV(0))
  1. ;.S ABMJS=$O(ABMRV(ABMIS,""))
  1. ;.S ABMKS=$O(ABMRV(ABMIS,ABMJS,""))
  1. ;.S ABMI=0
  1. ;.F S ABMI=$O(ABMRV(ABMI)) Q:'ABMI D
  1. ;..S ABMJ=""
  1. ;..F S ABMJ=$O(ABMRV(ABMI,ABMJ)) Q:$G(ABMJ)="" D
  1. ;...S ABMK=""
  1. ;...F S ABMK=$O(ABMRV(ABMI,ABMJ,ABMK)) Q:'ABMK D
  1. ;....I $P($G(ABMRV(ABMI,ABMJ,ABMK)),U,2)'="T1015" Q
  1. ;....S ABMTMP("TMP")=$G(ABMRV(ABMIS,ABMJS,ABMKS))
  1. ;....S ABMRV(ABMIS,ABMJS,ABMKS)=$G(ABMRV(ABMI,ABMJ,ABMK))
  1. ;....S ABMRV(ABMI,ABMJ,ABMK)=$G(ABMTMP("TMP"))
  1. ;end old start new abm*2.6*23 IHS/SD/SDR HEAT347035
  1. ;I ($D(ABMRV))&(($P($G(^AUTNINS(ABMP("INS"),0)),U)="ARBOR HEALTH PLAN")!($$RCID^ABMUTLP(ABMP("INS"))["61044")) D ;abm*2.6*27 IHS/SD/SDR CR8897
  1. I ($D(ABMRV))&(($P($G(^AUTNINS(ABMP("INS"),0)),U)="ARBOR HEALTH PLAN")!($$RCID^ABMUTLP(ABMP("INS"))["61044")!($G(ABMP("ITYPE"))="D")) D ;abm*2.6*27 IHS/SD/SDR CR8897
  1. .S ABMF=0
  1. .S (ABMIS,ABMJS,ABMKS)=1
  1. .S ABMI=0
  1. .F S ABMI=$O(ABMRV(ABMI)) Q:'ABMI D
  1. ..S ABMJ=""
  1. ..F S ABMJ=$O(ABMRV(ABMI,ABMJ)) Q:$G(ABMJ)="" D
  1. ...S ABMK=""
  1. ...F S ABMK=$O(ABMRV(ABMI,ABMJ,ABMK)) Q:'ABMK D
  1. ....M ABMTMP(ABMIS,ABMJS,ABMKS)=ABMRV(ABMI,ABMJ,ABMK)
  1. ....S ABMIS=ABMIS+1,ABMJS=ABMJS+1,ABMKS=ABMKS+1
  1. ....I $P($G(ABMRV(ABMI,ABMJ,ABMK)),U,2)'="T1015" S ABMF=1 Q
  1. .I ABMF=0 Q ;no T1015 on claim
  1. .K ABMRV
  1. .M ABMRV=ABMTMP
  1. .S ABMI=0
  1. .F S ABMI=$O(ABMRV(ABMI)) Q:'ABMI D
  1. ..S ABMJ=""
  1. ..F S ABMJ=$O(ABMRV(ABMI,ABMJ)) Q:$G(ABMJ)="" D
  1. ...S ABMK=""
  1. ...F S ABMK=$O(ABMRV(ABMI,ABMJ,ABMK)) Q:$G(ABMK)="" D
  1. ....I $P($G(ABMRV(ABMI,ABMJ,ABMK)),U,2)'="T1015" Q
  1. ....S ABMTMP("TMP")=$G(ABMRV(ABMI,ABMJ,ABMK))
  1. ....S ABMRV(ABMI,ABMJ,ABMK)=$G(ABMRV(1,1,1))
  1. ....S ABMRV(1,1,1)=$G(ABMTMP("TMP"))
  1. ;end new abm*2.6*23 IHS/SD/SDR HEAT347035
  1. Q
  1. ;end new abm*2.6*21 HEAT205579
  1. ;start new abm*2.6*23 IHS/SD/SDR HEAT247169
  1. NDC ;EP
  1. K I,J,L
  1. S I=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=" "
  1. .F S J=$O(ABMRV(I,J)) Q:($G(J)="") D
  1. ..S L=0
  1. ..F S L=$O(ABMRV(I,J,L)) Q:'L D
  1. ...I $P($G(ABMRV(I,J,L)),U,19)'="" S $P(ABMRV(I,J,L),U,9)=$P(ABMRV(I,J,L),U,19)_" "_$P(ABMRV(I,J,L),U,9)
  1. Q
  1. ;end new abm*2.6*23 IHS/SD/SDR HEAT247169
  1. ;start new abm*2.6*27 IHS/SD/AML,SDR HEAT314802/CR8897
  1. CALYRTC ;EP
  1. ;S ABMDE=$P(ABMRV(I,J,L),U,2)_"^30^14"
  1. ;D WRT^ABMDF28W
  1. ;S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,10))_"^45^6"
  1. ;D WRT^ABMDF28W ;#45
  1. ;S ABMDE=$P(ABMRV(I,J,L),U,5)_"^52^7R" ;Tot units/item
  1. ;D WRT^ABMDF28W ;#46
  1. ;S ABMDE=$FN($P(ABMRV(I,J,L),U,6),"T",2)
  1. ;S ABMDE=$TR(ABMDE,".")_"^61^9R" ;Tot chg per item
  1. ;D WRT^ABMDF28W ;#47
  1. S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,10))_"^45^6"
  1. D WRT^ABMDF28W ;#45
  1. W !
  1. S ABMIPADT=$P($$MDT^ABMDUTL($P(ABMRV(I,J,L),U,10)),"-",2)_" "_$P($$MDT^ABMDUTL($P(ABMRV(I,J,L),U,10)),"-",1)
  1. S ABMIPDDT=$P($$MDT^ABMDUTL($P(ABMRV(I,J,L),U,27)),"-",2)_" "_$P($$MDT^ABMDUTL($P(ABMRV(I,J,L),U,27)),"-",1)_","_$P($$MDT^ABMDUTL($P(ABMRV(I,J,L),U,27)),"-",3)
  1. S ABMDE=ABMIPADT_"-"_ABMIPDDT_"^5^24"
  1. D WRT^ABMDF28W
  1. S ABMDE=$P(ABMRV(I,J,L),U,2)_"^30^14"
  1. D WRT^ABMDF28W
  1. S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,27))_"^45^6"
  1. D WRT^ABMDF28W ;#45
  1. S ABMDE=$P(ABMRV(I,J,L),U,5)_"^52^7R" ;Tot units/item
  1. D WRT^ABMDF28W ;#46
  1. S ABMDE=$FN($P(ABMRV(I,J,L),U,6),"T",2)
  1. S ABMDE=$TR(ABMDE,".")_"^61^9R" ;Tot chg per item
  1. D WRT^ABMDF28W ;#47
  1. S ABMCTR=ABMCTR+1 ;account for second line printing so lower part of form prints correctly
  1. Q
  1. 23CMPL ;EP
  1. D 23CHK Q:ABMCPTM ;don't do if multiple CPTs on claim
  1. K ABMRTMP
  1. ;
  1. N I,J,K
  1. ;make sure 23 codes are in chronological order
  1. S I=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..;I J'["23" Q ;looking for 23 specifically ;removed-it could be any code but should be only code left on claim; all others are deleted
  1. ..S K=0
  1. ..F S K=$O(ABMRV(I,J,K)) Q:'K D
  1. ...S ABMRTMP($P(ABMRV(I,J,K),U,10),I,J,K)=$G(ABMRV(I,J,K))
  1. ...K ABMRV(I,J,K)
  1. ;
  1. S ABMSDT=0
  1. S L=1
  1. F S ABMSDT=$O(ABMRTMP(ABMSDT)) Q:'ABMSDT D
  1. .S I=0
  1. .F S I=$O(ABMRTMP(ABMSDT,I)) Q:'I D
  1. ..S J=-1
  1. ..F S J=$O(ABMRTMP(ABMSDT,I,J)) Q:J="" D
  1. ...S K=0
  1. ...F S K=$O(ABMRTMP(ABMSDT,I,J,K)) Q:'K D
  1. ....S ABMRV(I,J,L)=$G(ABMRTMP(ABMSDT,I,J,K))
  1. ....S L=L+1
  1. ;
  1. ;now merge all same rev code/CPT entries into 1 with all dates on second line
  1. S ABMN=1
  1. S ABMI=1
  1. K ABMSUNIT,ABMSCHG
  1. K ABMSDT,ABMSDT2
  1. K ABMSLN
  1. S I=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..S K=0
  1. ..F S K=$O(ABMRV(I,J,K)) Q:'K D
  1. ...I ABMN=1 D
  1. ....S ABMSLN=K ;keep track of 1st line
  1. ....S ABMSDT=$P(ABMRV(I,J,K),U,10) ;save date from 1st line
  1. ....S ABMSMNTH=$P($$SDT^ABMDUTL(ABMSDT),"/")
  1. ....S ABMN=2
  1. ...I ABMN'=1 D
  1. ....I $P(ABMRV(I,J,K),U,27)>ABMSDT S $P(ABMRV(I,J,ABMSLN),U,27)=$P(ABMRV(I,J,K),U,27)
  1. ....I +$P(ABMRV(I,J,ABMSLN),U,27)=0!($P(ABMRV(I,J,K),U,10)>$P(ABMRV(I,J,ABMSLN),U,27)) S $P(ABMRV(I,J,ABMSLN),U,27)=$P(ABMRV(I,J,K),U,10) ;default to later start date if do SERVICE DATE TO
  1. ....S ABMSUNIT=+$G(ABMSUNIT)+$P(ABMRV(I,J,K),U,5) ;accumulate units
  1. ....S ABMSCHG=+$G(ABMSCHG)+$P(ABMRV(I,J,K),U,6) ;accumulate chgs
  1. ....S ABMSDT2=$P($$SDT^ABMDUTL($P(ABMRV(I,J,K),U,10)),"/",1,2)
  1. ....;I (+$G(ABMRV(I,J,ABMSLN,1))'=0)&(ABMSMNTH=$P(ABMSDT2,"/")) S ABMSDT2=$P(ABMSDT2,"/",2)
  1. ....;E S ABMSMNTH=$P(ABMSDT2,"/")
  1. ....I $G(ABMRV(I,J,ABMSLN,1))'="" S ABMSDT2=","_ABMSDT2
  1. ....I ($L($G(ABMRV(I,J,ABMSLN,ABMI)))+$L(ABMSDT2))>21 S ABMRV(I,J,ABMSLN,ABMI)=ABMRV(I,J,ABMSLN,ABMI)_",",ABMI=ABMI+1,ABMSDT2=$P(ABMSDT2,",",2)
  1. ....S ABMRV(I,J,ABMSLN,ABMI)=$G(ABMRV(I,J,ABMSLN,ABMI))_ABMSDT2
  1. ...I ABMSLN'=K K ABMRV(I,J,K)
  1. ..S $P(ABMRV(I,J,ABMSLN),U,5)=ABMSUNIT
  1. ..S $P(ABMRV(I,J,ABMSLN),U,6)=ABMSCHG
  1. Q
  1. 23CHK ;EP
  1. ;first check if there are multiple CPTs on claim; don't do the rest of this linetag if there is
  1. N I,J
  1. S ABMSV=""
  1. S I=0,ABMCPTM=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..I ABMSV'="",J'=ABMSV S ABMCPTM=1
  1. ..S ABMSV=J
  1. Q
  1. ;
  1. 23PRT ;EP
  1. D 23CHK Q:ABMCPTM=1
  1. S ABMIJ=0
  1. F S ABMIJ=$O(ABMRV(I,J,L,ABMIJ)) Q:'ABMIJ D
  1. .S ABMCTR=ABMCTR+1
  1. .S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,10))_"^45^6"
  1. .I ABMIJ=1 D WRT^ABMDF28W ;#45
  1. .W !
  1. .S ABMDE=$G(ABMRV(I,J,L,ABMIJ))_"^5^25"
  1. .D WRT^ABMDF28W ;#43
  1. .I ABMIJ=$O(ABMRV(I,J,L,99),-1) D
  1. ..S ABMDE=$P(ABMRV(I,J,L),U,2)_"^30^14"
  1. ..;
  1. ..S ABMMODL=$S($P(ABMRV(I,J,L),U,3)]"":$P(ABMRV(I,J,L),U,3),1:"")
  1. ..S ABMMODL=ABMMODL_$S($P(ABMRV(I,J,L),U,4)]"":$P(ABMRV(I,J,L),U,4),1:"")
  1. ..S ABMMODL=ABMMODL_$S($P(ABMRV(I,J,L),U,12)]"":$P(ABMRV(I,J,L),U,12),1:"")
  1. ..S ABMDE=$S($L($P(ABMRV(I,J,L),U,2))>3:$P(ABMRV(I,J,L),U,2)_" "_ABMMODL_"^30^14",$P(ABMRV(I,J,L),U,8)&(+$P(ABMRV(I,J,L),U,2)'=0):$J($P(ABMRV(I,J,L),U,8),1,2)_"^30^14R",+ABMMODL:$J(ABMMODL,1,2)_"^30^14",1:"")
  1. ..;
  1. ..D WRT^ABMDF28W ;#44
  1. ..S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,27))_"^45^6"
  1. ..D WRT^ABMDF28W ;#45
  1. ..S ABMDE=$P(ABMRV(I,J,L),U,5)_"^52^7R" ;Tot units/item
  1. ..D WRT^ABMDF28W ;#46
  1. ..S ABMDE=$FN($P(ABMRV(I,J,L),U,6),"T",2)
  1. ..S ABMDE=$TR(ABMDE,".")_"^61^9R" ;Tot chg per item
  1. ..D WRT^ABMDF28W ;#47
  1. Q
  1. ;end new abm*2.6*27 IHS/SD/AML,SDR HEAT314802/CR8897