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

ABMRSPI1.m

Go to the documentation of this file.
  1. ABMRSPI1 ; IHS/SD/SDR - Claims Identified as Potential Split Billing Report;
  1. ;;2.6;IHS 3P BILLING SYSTEM;**22**;NOV 12, 2009;Build 418
  1. ;IHS/SD/SDR 2.6*22 HEAT335246 - New routine
  1. ;
  1. Q
  1. VISIT ;EP
  1. S ABMSDT=ABMY("DT",1)-.5
  1. S ABMEDT=ABMY("DT",2)+.999999
  1. F S ABMSDT=$O(^ABMDCLM(DUZ(2),"AD",ABMSDT)) Q:'ABMSDT!(ABMSDT>ABMEDT) D
  1. .S ABMP("CDFN")=0
  1. .F S ABMP("CDFN")=$O(^ABMDCLM(DUZ(2),"AD",ABMSDT,ABMP("CDFN"))) Q:'ABMP("CDFN") D
  1. ..D DATA
  1. Q
  1. APPROVAL ;EP
  1. S ABMSDT=ABMY("DT",1)-.5
  1. S ABMEDT=ABMY("DT",2)+.999999
  1. F S ABMSDT=$O(^ABMDBILL(DUZ(2),"AP",ABMSDT)) Q:'ABMSDT!(ABMSDT>ABMEDT) D
  1. .S ABMP("BDFN")=0
  1. .F S ABMP("BDFN")=$O(^ABMDBILL(DUZ(2),"AP",ABMSDT,ABMP("BDFN"))) Q:'ABMP("BDFN") D
  1. ..I +$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),0)),U)=0 Q ;no bill number, bad x-ref entry
  1. ..S ABMP("CDFN")=+$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),0)),U)
  1. ..D DATA
  1. Q
  1. DATA ;EP
  1. S ABMAINS=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,8) ;active insurer
  1. I ABMAINS="" Q ;no active insurer
  1. I '$D(ABMY("INS",ABMAINS)) Q ;not selected insurer
  1. I ABMY("DT")="V" S ABMCS=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,4) ;claim status
  1. I ABMY("DT")="A" S ABMCS=$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),0)),U,4) ;bill status
  1. I ABMY("STA")'[ABMCS Q ;not selected claim status
  1. I $G(ABMY("SPLIT"))="A","^S^A^"[("^"_$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,22)_"^") Q ;if auto is selected we only want the original claims to show up; this is for option STIN
  1. S ABMVSTCK=0 ;check for H or I service category
  1. D DATA2
  1. Q:ABMVSTCK=1 ;H or I service category
  1. S ABMVFILE=""
  1. F S ABMVFILE=$O(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE)) Q:$G(ABMVFILE)="" D Q:ABMVMULT=1
  1. .I +$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE))>1 S ABMVMULT=1 Q
  1. .I +$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE))=1 S ABMVMULT=ABMVMULT+.5
  1. I ABMVMULT=1 D ;multiple entries were found in requested files
  1. .S ABMP("VLOC")=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3) ;visit loc
  1. .S ABMP("VTYP")=$P($G(^ABMDVTYP($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,7),0)),U) ;visit type name
  1. .I +$G(^TMP("ABM-SPIN-DATA",$J,ABMP("VLOC"),ABMP("VTYP"),ABMP("CDFN")))=1 Q ;already counted this claim
  1. .S ^TMP("ABM-SPIN-DATA",$J,ABMP("VLOC"),ABMP("VTYP"),ABMP("CDFN"))=1
  1. .I $G(ABMY("RTYP"))=2 D ;statistical
  1. ..;visit loc short name
  1. ..S ABMP("VLOC")=$S($P($G(^AUTTLOC($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3),0)),U,2)'="":$P($G(^AUTTLOC($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3),0)),U,2),1:$P($G(^DIC(4,$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3),0)),U))
  1. ..S ^TMP("ABM-SPIN",$J,ABMP("VLOC"),ABMP("VTYP"))=+$G(^TMP("ABM-SPIN",$J,ABMP("VLOC"),ABMP("VTYP")))+1
  1. .I $G(ABMY("RTYP"))=1 D ;brief
  1. ..;claim status^split status^patient^HRN^active insurer^claim number^visit date^clinic
  1. ..;claim status
  1. ..I ABMY("DT")="V" S ABMPREC=$S(ABMCS="F":"FAB",ABMCS="E":"EDT",ABMCS="O":"ROL",ABMCS="C":"COM",ABMCS="P":"PEN",ABMCS="U":"UNB",ABMCS="X":"CLO",1:"")
  1. ..I ABMY("DT")="A" S ABMPREC=$S(ABMCS="A":"APP",ABMCS="B":"BLD",ABMCS="C":"COM",ABMCS="X":"CAN",1:"")
  1. ..S ABMSSTAT=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,22) ;split status
  1. ..S ABMPREC=ABMPREC_U_ABMSSTAT
  1. ..S ABMPREC=ABMPREC_U_$P($G(^DPT($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U),0)),U) ;patient name
  1. ..S ABMPREC=ABMPREC_U_$P($G(^AUPNPAT($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U),41,ABMP("VLOC"),0)),U,2)_U_$P($G(^AUTNINS(ABMAINS,0)),U)_U_ABMP("CDFN")_U_ABMSDT ;HRN, active insurer, claim#, visit date
  1. ..S ABMPREC=ABMPREC_U_+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8D"))_U_+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8E"))_U_+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8F"))_U_+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8H")) ;page counts
  1. ..;visit loc short name
  1. ..S ABMP("VLOC")=$S($P($G(^AUTTLOC($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3),0)),U,2)'="":$P($G(^AUTTLOC($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3),0)),U,2),1:$P($G(^DIC(4,$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,3),0)),U))
  1. ..S ^TMP("ABM-SPIN",$J,ABMP("VLOC"),ABMP("VTYP"),ABMSDT,ABMP("CDFN"))=ABMPREC
  1. ..I ABMSSTAT'="S" S ^TMP("ABM-SPIN-CNT",$J)=+$G(^TMP("ABM-SPIN-CNT",$J))+1
  1. Q
  1. DATA2 ;EP
  1. ;now loop thru visits on claim and see if there are multiple charges on the selected pages
  1. S ABMP("VDFN")=0
  1. S ABMVMULT=0
  1. F S ABMP("VDFN")=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),11,ABMP("VDFN"))) Q:'ABMP("VDFN") D
  1. .S ^TMP("ABM-SPIN",$J,"VSTS",ABMP("VDFN"))=$P($G(^AUPNVSIT(ABMP("VDFN"),0)),U,7) ;list of visits with service category
  1. .I "^H^I^"[("^"_$P($G(^AUPNVSIT(ABMP("VDFN"),0)),U,7)_"^") S ABMVSTCK=1 ;check if service category is H or I
  1. .I ((ABMY("PGS")["8D")!(ABMY("PGS")["8Z")) D CHECK("^AUPNVMED","8D") ;meds - 8D
  1. .I ((ABMY("PGS")["8E")!(ABMY("PGS")["8Z")) D CHECK("^AUPNVLAB","8E"),CHECK("^AUPNVMIC","8E"),CHECK("^AUPNVPTH","8E"),CHECK("^AUPNVBB","8E"),CHECK("^AUPNVCYT","8E") ;lab - 8E
  1. .I ((ABMY("PGS")["8F")!(ABMY("PGS")["8Z")) D CHECK("^AUPNVRAD","8F") ;rad - 8F
  1. .D CHECK2 ;checks V CPT entries and if that page was selected by user as one to report on, since V CPT could have anything
  1. Q
  1. ;
  1. CHECK(VFILE,ABMVFILE) ;EP - VFILE is the V file global name
  1. ;This subrtn goes thru the visits in the V file and check for multiple entries in that file
  1. N L,T,L11,L12,COLDATE,ORDPROV,CPTSTR,CPT,MODIFIER,FILEN
  1. S L=0
  1. F S L=$O(@VFILE@("AD",ABMP("VDFN"),L)) Q:'L D
  1. .;T first piece is test, S is site
  1. .S T=$G(@VFILE@(+L,0)) Q:'T
  1. .I VFILE["VLAB"&($P($G(^AUPNVLAB(+L,14)),U,2)="") Q ;skip entries that don't have CPT - BILLABLE ITEM populated
  1. .S ^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE)=+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE))+1
  1. .S ABMP("VDETAIL",ABMVFILE,VFILE,+L)=""
  1. .I VFILE["VLAB"&($L($P($G(^AUPNVLAB(+L,14)),U,2),";")>1) D ;there is more than 1 CPT on a lab
  1. ..F S=2:1:$L($P($G(^AUPNVLAB(+L,14)),U,2),";") S ^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE)=+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),ABMVFILE))+1,ABMP("VDETAIL",ABMVFILE,VFILE,+L)=""
  1. Q
  1. CHECK2 ;EP
  1. S ABMVIEN=0
  1. F S ABMVIEN=$O(^AUPNVCPT("AD",ABMP("VDFN"),ABMVIEN)) Q:'ABMVIEN D
  1. .S ABMCPT=$P($G(^ICPT($P($G(^AUPNVCPT(ABMVIEN,0)),U),0)),U) ;CPT
  1. .S ABMVFILE="8H" ;default
  1. .I (((ABMCPT<100)!(ABMCPT?.5N1.6A.5N)!($L(ABMCPT)=6))&((ABMY("PGS")["8H")!(ABMY("PGS")["8Z"))) S ^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8H")=+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8H"))+1,ABMVFILE="8H"
  1. .I (((ABMCPT>79999)&(ABMCPT<90000))&((ABMY("PGS")["8E")!(ABMY("PGS")["8Z"))) S ^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8E")=+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8E"))+1,ABMVFILE="8E"
  1. .I (((ABMCPT>69999)&(ABMCPT<80000))&((ABMY("PGS")["8F")!(ABMY("PGS")["8Z"))) S ^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8F")=+$G(^TMP("ABM-SPIN",$J,"VLST",ABMP("CDFN"),"8F"))+1,ABMVFILE="8F"
  1. .I (ABMCPT>89999) S ABMVFILE="8A"
  1. .S ABMP("VDETAIL",ABMVFILE,"^AUPNVCPT",ABMVIEN)=""
  1. Q