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

ABMEMCRC.m

Go to the documentation of this file.
  1. ABMEMCRC ; IHS/SD/SDR - 3PB recreate batch of ICD9 bills
  1. ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
  1. ;
  1. ; IHS/SD/SDR - v2.5 p12 - New routine
  1. ; Recreate batches for specified insurer that meet selection criteria
  1. ;
  1. EP ;
  1. W !!,"This option will create a batch of claims that meet the following criteria:"
  1. W !?5,"* Bill type is 11* where * is any number"
  1. W !?5,"* The bill contains ICD Procedure codes"
  1. W !?5,"* Bill status is NOT cancelled"
  1. W !?5,"* 837I export mode only"
  1. W !
  1. W !,"You will be asked the following to complete the selection criteria:"
  1. W !?5,"* Insurer (multiple entries not allowed)"
  1. W !?5,"* Date range (either by approval, batch, or visit date)"
  1. W !?5,"* Resubmission note that will be put on ALL claims"
  1. W !
  1. S DIR(0)="E",DIR("A")="Enter RETURN to Continue" D ^DIR K DIR
  1. ;
  1. INSURER D EN^ABMVDF("IOF")
  1. S DIC="^AUTNINS("
  1. S DIC(0)="AEMQ"
  1. D ^DIC
  1. Q:+Y<0
  1. I +Y>0 S ABMINS=+Y
  1. ;
  1. WHATDT ;
  1. K DIR
  1. S DIR("A")="Apply range to"
  1. S DIR(0)="SO^A:APPROVAL DATE;B:BATCH DATE;V:VISIT DATE"
  1. D ^DIR
  1. G:$D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) INSURER
  1. S ABMFILE=Y
  1. ;
  1. FROMDT ;
  1. K DIR
  1. S DIR("A")="Enter FROM date"
  1. S DIR(0)="D"
  1. D ^DIR
  1. Q:'Y
  1. Q:$D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT)
  1. S ABMFROM=+Y
  1. TODT ;
  1. K DIR
  1. S DIR("A")="Enter TO date"
  1. S DIR(0)="D"
  1. D ^DIR
  1. Q:'Y
  1. G:$D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) FROMDT
  1. S ABMTO=+Y
  1. I ABMTO<ABMFROM W !!,"TO DATE CAN'T BE AFTER FROM DATE",! G FROMDT
  1. ;
  1. RESUBN ;
  1. K DIR
  1. S DIR("A")="Resubmission note"
  1. S DIR(0)="F^3:80"
  1. D ^DIR
  1. G:$D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) FROMDT
  1. S ABMRESUB=Y
  1. ;
  1. MSG ;
  1. W !!,"Bills meeting the following criteria will be recreated in a new batch:"
  1. W !?5,"* Bill type is 11* where * is any number"
  1. W !?5,"* The bill contains ICD Procedure codes"
  1. W !?5,"* Bill status is NOT cancelled"
  1. W !?5,"* 837I export mode only"
  1. W !
  1. W !?5,"* Active insurer is ",$P($G(^AUTNINS(ABMINS,0)),U)
  1. W !?5,"* ",$S(ABMFILE="B":"Batches created",ABMFILE="V":"Visit dates",1:"Bills approved")
  1. W " between "_$$SDT^ABMDUTL(ABMFROM)_" and "_$$SDT^ABMDUTL(ABMTO)
  1. W !?5,"* With the resubmission note: ",ABMRESUB
  1. W !
  1. S DIR(0)="Y",DIR("A")="Do you wish to continue" D ^DIR K DIR
  1. Q:Y'=1
  1. I ABMFILE="A" D ALOOP
  1. I ABMFILE="B" D BLOOP
  1. I ABMFILE="V" D VLOOP
  1. D OUTPUT
  1. S DIR(0)="E",DIR("A")="Enter RETURN to Continue" D ^DIR K DIR
  1. D XIT
  1. Q
  1. ;
  1. ALOOP ;
  1. K ABMB
  1. S ABMDT=ABMFROM-.5
  1. S ABMTO=ABMTO+1
  1. F S ABMDT=$O(^ABMDBILL(DUZ(2),"AP",ABMDT)) Q:+ABMDT=0!(ABMDT>ABMTO) D
  1. .S ABMBDFN=0
  1. .F S ABMBDFN=$O(^ABMDBILL(DUZ(2),"AP",ABMDT,ABMBDFN)) Q:+ABMBDFN=0 D
  1. ..D BILLCK
  1. Q
  1. BLOOP ;
  1. K ABMB
  1. S ABMDT=ABMFROM-.5
  1. S ABMTO=ABMTO+1
  1. F S ABMDT=$O(^ABMDTXST(DUZ(2),"B",ABMDT)) Q:+ABMDT=0!(ABMDT>ABMTO) D
  1. .S ABMTIEN=0
  1. .F S ABMTIEN=$O(^ABMDTXST(DUZ(2),"B",ABMDT,ABMTIEN)) Q:+ABMTIEN=0 D
  1. ..Q:$P($G(^ABMDTXST(DUZ(2),ABMTIEN,1)),U,4)="" ;EMC FILENAME
  1. ..S ABMBDFN=0
  1. ..F S ABMBDFN=$O(^ABMDTXST(DUZ(2),ABMTIEN,2,ABMBDFN)) Q:+ABMBDFN=0 D
  1. ...D BILLCK
  1. Q
  1. VLOOP ;
  1. K ABMB
  1. S ABMDT=ABMFROM-.5
  1. S ABMTO=ABMTO+1
  1. F S ABMDT=$O(^ABMDBILL(DUZ(2),"AD",ABMDT)) Q:+ABMDT=0!(ABMDT>ABMTO) D
  1. .S ABMBDFN=0
  1. .F S ABMBDFN=$O(^ABMDBILL(DUZ(2),"AD",ABMDT,ABMBDFN)) Q:+ABMBDFN=0 D
  1. ..D BILLCK
  1. Q
  1. BILLCK ;
  1. Q:($E($P($G(^ABMDBILL(DUZ(2),ABMBDFN,0)),U,2),1,2)'=11) ;bill type
  1. Q:$P($G(^ABMDBILL(DUZ(2),ABMBDFN,0)),U,4)="X" ;bill status-cancelled
  1. Q:$P($G(^ABMDBILL(DUZ(2),ABMBDFN,0)),U,8)'=ABMINS ;insurer selected
  1. Q:'$D(^ABMDBILL(DUZ(2),ABMBDFN,19,0)) ;ICD procedures
  1. S ABMEXPM=$P($G(^ABMDBILL(DUZ(2),ABMBDFN,0)),U,6) ;export mode
  1. Q:$G(ABMEXPM)'=21 ;837I only
  1. S ABMB(ABMEXPM,ABMBDFN)=""
  1. Q
  1. OUTPUT ;
  1. S ABMINS("IEN")=ABMINS ;Active Insurer IEN
  1. S ABMITYP=$P(^AUTNINS(ABMINS("IEN"),2),U) ;Insurer type
  1. S ABMEXP=21 ;export type
  1. D NEWB ; Create a new batch in 3P TX STATUS
  1. I $G(Y)<0 D MSG^ABMERUTL("Could not enter batch in 3P TX STATUS file.") Q
  1. ; Add bill to detail in 3P TX STATUS for this batch
  1. S ^ABMDTXST(DUZ(2),DA(1),2,0)="^9002274.61P^^"
  1. S ABMAPOK=1
  1. S ABMDA=0
  1. F S ABMDA=$O(ABMB(21,ABMDA)) Q:+ABMDA=0 D
  1. .S X=ABMDA
  1. .S DIC="^ABMDTXST(DUZ(2),DA(1),2,"
  1. .S DIC(0)="LXNE"
  1. .S DINUM=X
  1. .K DD,DO D FILE^DICN
  1. .Q:+Y<0
  1. .S DA=+Y
  1. .S DIE="^ABMDTXST(DUZ(2),DA(1),2,"
  1. .S ABMAPRV=$O(^ABMDBILL(DUZ(2),ABMDA,41,"C","A",0))
  1. .S:ABMAPRV ABMAPRV=$P(^ABMDBILL(DUZ(2),ABMDA,41,ABMAPRV,0),U)
  1. .I ABMAPRV D
  1. ..S DR=".02///`"_ABMAPRV
  1. ..D ^DIE
  1. ..K ABMAPRV
  1. .S ABMSBR=$$SBR^ABMUTLP(ABMDA)
  1. .S DR=".03///"_ABMSBR
  1. .D ^DIE
  1. .K ABMSBR
  1. K ABMAPOK
  1. ; Write record (Create EMC unix file)
  1. D ^ABMEF21
  1. I $G(POP) D
  1. .S DIE="^ABMDTXST(DUZ(2),"
  1. .S DA=ABMP("XMIT")
  1. .S DR=".14///NOPEN"
  1. .D ^DIE
  1. Q
  1. NEWB ;
  1. ; Create a new batch (Make entry in 3P TX STATUS)
  1. D NOW^%DTC
  1. S X=%
  1. S DIC="^ABMDTXST(DUZ(2),"
  1. S DIC(0)="LX"
  1. S DLAYGO=9002274.6
  1. K DD,DO D FILE^DICN
  1. K DLAYGO
  1. Q:Y<0
  1. S ABMP("XMIT")=+Y
  1. S DIE=DIC
  1. S DA=+Y
  1. S DR=".02///21;.04///`"_ABMINS("IEN")_";.03///"_ABMITYP_";.05////"_DUZ
  1. D ^DIE
  1. S DR=".16///"_$$NSN^ABMERUTL D ^DIE
  1. S DA(1)=DA
  1. W !,"ENTRY CREATED IN 3P TX STATUS FILE."
  1. Q
  1. CLAIM ;one claim
  1. K ABMP
  1. S ABMP("INS")=ABMINS
  1. S ABMP("ITYPE")=$P($G(^AUTNINS(ABMINS,2)),U)
  1. S ABMP("BDFN")=ABMBDFN
  1. Q:'$D(^ABMDBILL(DUZ(2),ABMP("BDFN"),0))
  1. D SET^ABMUTLP(ABMP("BDFN"))
  1. I '$G(ABMOSBR) D
  1. .U 0 W !,"Submission # ",ABMSUBN
  1. .U 0 W !,"Writing bills to file.",!
  1. .D ^ABME8L1
  1. .D ^ABME8L2
  1. S ABMNPDFN=$P(ABMB0,U,5)
  1. I ABMOSBR'=ABMASBR D
  1. .D SBR
  1. I ABMNPDFN'=ABMOPDFN D
  1. .D PTCHG^ABME8L3
  1. S ABMP("PNUM")=$$PNUM^ABMUTLP(ABMBILL)
  1. D ^ABME8L5
  1. D ^ABME8L6
  1. D ^ABME8L7
  1. D ^ABME8L8
  1. D ^ABME8L10
  1. W "."
  1. Q
  1. SBR ;new subscriber
  1. S ABMSFILE=$P(ABMASBR,"-",1)
  1. S ABMSIEN=$P(ABMASBR,"-",2)
  1. S ABMCHILD=0
  1. N I
  1. S I=0
  1. F S I=$O(^ABMDTXST(DUZ(2),ABMPXMIT,2,"ASBR",ABMASBR,I)) Q:'I D
  1. .Q:+^ABMDTXST(DUZ(2),ABMPXMIT,2,"ASBR",ABMASBR,I)=18
  1. .S ABMCHILD=1
  1. S ABMP("PNUM")=$$PNUM^ABMUTLP(ABMBILL)
  1. D ^ABME8L3
  1. S ABMOSBR=ABMASBR
  1. S ABMOPDFN=ABMP("PDFN")
  1. Q
  1. XIT ;
  1. D ^%ZISC
  1. W !!,"Finished.",!!
  1. K ABMEXPM,ABMBDFN,ABMB,ABMTIEN,ABMFROM,ABMTO,ABMDT
  1. K ABMFILE,ABMRESUB,ABMINS
  1. Q