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

BAREDP03.m

Go to the documentation of this file.
  1. BAREDP03 ; IHS/SD/LSL - EDI CLAIM & POSTING ELEMENTS ;
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**1,20**;OCT 26,2005
  1. ;
  1. ; IHS/SD/LSL - 09/16/03 - V1.7 Patch 4 - HIPAA
  1. ;
  1. ; ********************************************************************
  1. ;
  1. EN(TRDA,IMPDA) ; EP
  1. ; Process segments into claims with postable data
  1. D SETVAR
  1. W !,"Processing Record Values into Postable Claims",!
  1. S COUNT=1
  1. K ^TMP($J,"REC"),IMGDA,CLMDA
  1. ;clear 'processing image' & 'claims'
  1. K ^BAREDI("I",DUZ(2),IMPDA,30)
  1. K ^BAREDI("I",DUZ(2),IMPDA,40)
  1. S ^BAREDI("I",DUZ(2),IMPDA,40,0)="^^^"_DT_"^"
  1. S (CLMDA,LINE)=0
  1. ; pull records to scan for variable pulling and processing
  1. D ENPM^XBDIQ1(90056.0202,"IMPDA,0",".01;.03;.04;1.01","^TMP($J,""REC"",")
  1. S REC="^TMP($J,""REC"")"
  1. ; loop and check if record has posting variables
  1. ; if so, processes the segment, elements, variables' pocessing
  1. ; build claims demographics & adjustments
  1. S RECDA=""
  1. F S RECDA=$O(@REC@(RECDA)) Q:RECDA'>0 D
  1. . S SEGDA=$P(@REC@(RECDA,.04),",",2) ;pull segment da from path
  1. . ; check index for variables to pull
  1. . I '$D(^BAREDI("1T",TRDA,10,SEGDA,10,"C")) Q
  1. . D PULLVARS
  1. ;
  1. W " ",COUNT,!
  1. ; set claims' status to B 'Built'
  1. K DIE,DIC,DR,DA
  1. S DIE=$$DIC^XBDIQ1(90056.0205)
  1. S DA(1)=IMPDA
  1. S DR=".02////B"
  1. S CLMDA=0
  1. S CLPAMT=0 K CLP ;bar*1.8*20 REQ5
  1. F S CLMDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA)) Q:CLMDA'>0 D
  1. .S DA=CLMDA
  1. .D ^DIE
  1. .;start new code bar*1.8*20 REQ5
  1. .S IENS=CLMDA_","_IMPDA_","
  1. .S CLPAMT=$$GET1^DIQ(90056.0205,IENS,".04")
  1. .S CLMCK=$$GET1^DIQ(90056.0205,IENS,201)
  1. .S CLP(CLMCK)=+$G(CLP(CLMCK))+CLPAMT
  1. S CKDA=0,FLG=0
  1. W $$EN^BARVDF("IOF")
  1. W !,"Checking balance of each check within ERA...",!
  1. F S CKDA=$O(^BAREDI("I",DUZ(2),IMPDA,5,CKDA)) Q:'CKDA D
  1. .S IENS=CKDA_","_IMPDA_","
  1. .S CK=$$GET1^DIQ(90056.02011,IENS,".01")
  1. .S CKAMT=$$GET1^DIQ(90056.02011,IENS,".03")
  1. .S PLBAMT=$$GET1^DIQ(90056.02011,IENS,".09")
  1. .W:FLG=0 !?40,"(CLP04)",?55,"(PLB)",?70,"(BPR02)"
  1. .I (+$G(CLP(CK))-PLBAMT)'=CKAMT W !,"Check "_CK_" does NOT balance "
  1. .I (+$G(CLP(CK))-PLBAMT)=CKAMT W !,"Check "_CK_" balances "
  1. .W ?35,$J($FN(+$G(CLP(CK)),",",2),12)_" - "_$S(+$$GET1^DIQ(90056.02011,IENS,".09")=0:" NO PLB ",1:$J($FN(+PLBAMT,",",2),10))_" <> "_$J($FN(+CKAMT,",",2),12),!
  1. .S FLG=1
  1. ;end new code REQ5
  1. ;
  1. Q
  1. ; *********************************************************************
  1. ;
  1. PULLVARS ;EP
  1. ; pull and process posting variables from segments
  1. M XREC=@REC@(RECDA)
  1. ;XREC(1.01)=raw segment XREC(.04) is path
  1. ;
  1. S D0S=XREC(.04)_",0" ; path,0
  1. ; pull elements and build Sequence array SEQ(piece)=varname
  1. K ELM,SEQ
  1. D ENPM^XBDIQ1(90056.0102,D0S,".03;.08","ELM(")
  1. S ELMDA=0
  1. F S ELMDA=$O(ELM(ELMDA)) Q:ELMDA'>0 D
  1. . Q:ELM(ELMDA,.08)=""
  1. . S SEQ(ELM(ELMDA,.03)+1)=ELM(ELMDA,.08)
  1. ;
  1. ;BAR*1.8*1 SRS PATCH 1 ADDENDUM
  1. ;NEED TO CLEAR OUT VARIABLES SO NONE
  1. ;LINGER FROM SEGMENT REPEATS
  1. S PIECE=""
  1. F S PIECE=$O(SEQ(PIECE)) Q:PIECE="" D
  1. .S VARNM=SEQ(PIECE)
  1. .K @VARNM
  1. ;END BAR*1.8*1 SRS PATCH 1 ADDENDUM
  1. ; store lines into 'PROCESSING IMAGE'
  1. ; store claim information
  1. K RECORD ; RECORD IMAGE
  1. ;initialize image
  1. ;initialize Claims
  1. D ENP^XBDIQ1(90056.0202,"IMPDA,RECDA",10,"RECORD(")
  1. S PIECE=0
  1. F S PIECE=$O(SEQ(PIECE)) Q:PIECE'>0 D
  1. . S VARNM=SEQ(PIECE)
  1. . S @VARNM=$G(^BAREDI("I",DUZ(2),IMPDA,20,RECDA,10,PIECE-1,0))
  1. . S VARVAL=RECORD(10,PIECE-1)
  1. . D IMAGE
  1. . ; the next line executes the table routine if the
  1. . ; variable has a routine to perform entered into the tables
  1. . ; otherwise function point processing
  1. . I $D(VAR(VARNM)) D @VAR(VARNM)
  1. Q
  1. ; *********************************************************************
  1. ;
  1. IMAGE ; EP
  1. ; increment and store list of processing variables into image
  1. Q:'$L(VARVAL)
  1. S X=VARNM_" "_@VARNM
  1. S IMGDA=$G(IMGDA)+1
  1. S ^BAREDI("I",DUZ(2),IMPDA,40,IMGDA,0)=X
  1. Q
  1. ; *********************************************************************
  1. ;
  1. SETVAR ; EP
  1. ; pull names of variables for triggering processing points
  1. ; as VAR("NEWBILL")="NEWBILL^BAREDPA3"
  1. K VAR,VARM
  1. D ENPM^XBDIQ1(90056.0111,"TRDA,0",".01;.02","VARM(")
  1. S VARDA=""
  1. F S VARDA=$O(VARM(VARDA)) Q:VARDA'>0 D
  1. . S NM=VARM(VARDA,.01)
  1. . S ROU=VARM(VARDA,.02)
  1. . S ROU=$TR(ROU,"|","^")
  1. . S VAR(NM)=ROU
  1. K VARM
  1. Q