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

BHLX277.m

Go to the documentation of this file.
  1. BHLX277 ; cmi/flag/maw - BHL Parse X12 277 into readable format ; [ 10/10/2002 9:30 AM ]
  1. ;;3.01;BHL IHS Interfaces with GIS;**8**;OCT 15, 2002
  1. ;
  1. ;
  1. ;
  1. ;this routine will parse the incoming message into readable format
  1. ;
  1. MAIN ;EP - this is the main routine driver
  1. K ^BHLX277($J)
  1. I $G(FS)="" S FS="*"
  1. I $G(CS)="" S CS=":"
  1. D PRS
  1. D FL
  1. D UPD
  1. D EOJ
  1. Q
  1. ;
  1. PRS ;-- parse the message
  1. S (SCNT,CNT,LCNT)=0
  1. S BHLXUIF=$G(UIF)
  1. Q:BHLXUIF=""
  1. S BHLXDA=0 F S BHLXDA=$O(^INTHU(BHLXUIF,3,BHLXDA)) Q:'BHLXDA D
  1. . S DATA=$G(^INTHU(BHLXUIF,3,BHLXDA,0))
  1. . S SEG=$P(DATA,FS)
  1. . Q:SEG["|"
  1. . I SEG="ST" S CNT=CNT+1,SCNT=0
  1. . I SEG="HL" S LCNT=LCNT+1
  1. . S SCNT=SCNT+1
  1. . S SEGDATA=$P($P($G(DATA),FS,2,9999),"|")
  1. . S ^BHLX277($J,CNT,$S(LCNT=0:1,1:LCNT),SCNT,SEG)=$G(SEGDATA)
  1. K SCNT,CNT,LCNT,SEG,SEGDATA,DATA
  1. Q
  1. ;
  1. FL ;-- loop through bhlx277 and get data
  1. S XCNT=0
  1. S BHLXSDA=0 F S BHLXSDA=$O(^BHLX277($J,BHLXSDA)) Q:'BHLXSDA D
  1. . S XCNT=XCNT+1
  1. . S BHLXLDA=0 F S BHLXLDA=$O(^BHLX277($J,BHLXSDA,BHLXLDA)) Q:'BHLXLDA D
  1. .. S BHLXCDA=0 F S BHLXCDA=$O(^BHLX277($J,BHLXSDA,BHLXLDA,BHLXCDA)) Q:'BHLXCDA D
  1. ... S BHLXSEG=$O(^BHLX277($J,BHLXSDA,BHLXLDA,BHLXCDA,""))
  1. ... Q:$G(BHLXSEG)=""
  1. ... S BHLXDAT=$P($G(^BHLX277($J,BHLXSDA,BHLXLDA,BHLXCDA,BHLXSEG)),"~")
  1. ... I BHLXSEG="TRN" D TRN(BHLXDAT,BHLXSDA,BHLXLDA,BHLXCDA)
  1. ... I BHLXSEG="NM1" D NM1(BHLXDAT,BHLXSDA,BHLXLDA,BHLXCDA)
  1. ... I BHLXSEG="PER" D PER(BHLXDAT,BHLXSDA,BHLXLDA,BHLXCDA)
  1. ... I BHLXSEG="BHT" D BHT(BHLXDAT,BHLXSDA,BHLXLDA,BHLXCDA)
  1. ... I BHLXSEG="STC" D STC(BHLXDAT,BHLXSDA,BHLXLDA,BHLXCDA)
  1. Q
  1. ;
  1. BHT(DAT,SDA,LDA,CDA) ;-- trn
  1. S ^BHLX277V($J,SDA,"RESP DT")=$P(DAT,FS,4)
  1. Q
  1. ;
  1. TRN(DAT,SDA,LDA,CDA) ;-- trn
  1. S ^BHLX277V($J,SDA,LDA,"TRACE #")=$P(DAT,FS,2)
  1. Q
  1. ;
  1. NM1(DAT,SDA,LDA,CDA) ;-- n1
  1. Q:$P(DAT,FS)'="PR"
  1. S ^BHLX277V($J,SDA,"PAYOR ID")=$P(DAT,FS,9)
  1. Q
  1. ;
  1. PER(DAT,SDA,LDA,CDA) ;--clp
  1. S ^BHLX277V($J,SDA,"PAYOR CN")=$P(DAT,FS,2)
  1. S ^BHLX277V($J,SDA,"PAYOR CT")=$P(DAT,FS,3)
  1. S ^BHLX277V($J,SDA,"PAYOR CI")=$P(DAT,FS,4)
  1. S ^BHLX277V($J,SDA,"PAYOR CTE")=$P(DAT,FS,5)
  1. S ^BHLX277V($J,SDA,"PAYOR EXT")=$P(DAT,FS,6)
  1. S ^BHLX277V($J,SDA,"PAYOR CTE2")=$P(DAT,FS,7)
  1. S ^BHLX277V($J,SDA,"PAYOR EXT2")=$P(DAT,FS,8)
  1. Q
  1. ;
  1. STC(DAT,SDA,LDA,CDA) ;-- cas
  1. S ^BHLX277V($J,SDA,LDA,"CLSTC1")=$P($P(DAT,FS),CS)
  1. S ^BHLX277V($J,SDA,LDA,"CLST1")=$P($P(DAT,FS),CS,2)
  1. S ^BHLX277V($J,SDA,LDA,"EID1")=$P($P(DAT,FS),CS,3)
  1. S ^BHLX277V($J,SDA,LDA,"RES EFDT")=$P(DAT,FS,2)
  1. S ^BHLX277V($J,SDA,LDA,"PD AMT")=$P(DAT,FS,5)
  1. S ^BHLX277V($J,SDA,LDA,"DT PD")=$P(DAT,FS,6)
  1. S ^BHLX277V($J,SDA,LDA,"PAY METH")=$P(DAT,FS,7)
  1. S ^BHLX277V($J,SDA,LDA,"CHK DT")=$P(DAT,FS,8)
  1. S ^BHLX277V($J,SDA,LDA,"CHK #")=$P(DAT,FS,9)
  1. I $P(DAT,FS,10)]"" D
  1. . S ^BHLX277V($J,SDA,LDA,"CLSTC2")=$P($P(DAT,FS,10),CS)
  1. . S ^BHLX277V($J,SDA,LDA,"CLST2")=$P($P(DAT,FS,10),CS,2)
  1. . S ^BHLX277V($J,SDA,LDA,"EID2")=$P($P(DAT,FS,10),CS,3)
  1. I $P(DAT,FS,11)]"" D
  1. . S ^BHLX277V($J,SDA,LDA,"CLSTC3")=$P($P(DAT,FS,11),CS)
  1. . S ^BHLX277V($J,SDA,LDA,"CLST3")=$P($P(DAT,FS,11),CS,2)
  1. . S ^BHLX277V($J,SDA,LDA,"EID3")=$P($P(DAT,FS,11),CS,3)
  1. Q
  1. ;
  1. UPD ;-- update the holding file
  1. S BHLXUSDA=0 F S BHLXUSDA=$O(^BHLX277V($J,BHLXUSDA)) Q:'BHLXUSDA D
  1. . D L1(BHLXUSDA)
  1. . S BHLXULDA=0 F S BHLXULDA=$O(^BHLX277V($J,BHLXUSDA,BHLXULDA)) Q:BHLXULDA="" D
  1. .. D L2(BHLXUSDA,BHLXULDA)
  1. . D FH(BHLXUSDA,BHLXULDA,.BHLXUPD)
  1. K UPD
  1. Q
  1. ;
  1. L1(USDA) ;-- setup lev 1 vars for filing
  1. S BHLXUPD("PAYOR ID")=$G(^BHLX277V($J,USDA,"PAYOR ID"))
  1. S BHLXUPD("PAYOR CN")=$G(^BHLX277V($J,USDA,"PAYOR CN"))
  1. S BHLXUPD("PAYOR CT")=$G(^BHLX277V($J,USDA,"PAYOR CT"))
  1. S BHLXUPD("PAYOR CI")=$G(^BHLX277V($J,USDA,"PAYOR CI"))
  1. I $G(BHLXUPD("PAYOR CT"))="ED" D
  1. . S BHLXUPD("PAYOR 302")=$G(BHLXUPD("PAYOR CI"))
  1. I $G(BHLXUPD("PAYOR CT"))="EM" D
  1. . S BHLXUPD("PAYOR 303")=$G(BHLXUPD("PAYOR CI"))
  1. I $G(BHLXUPD("PAYOR CT"))="TE" D
  1. . S BHLXUPD("PAYOR 304")=$G(BHLXUPD("PAYOR CI"))
  1. S BHLXUPD("PAYOR CTE")=$G(^BHLX277V($J,USDA,"PAYOR CTE"))
  1. S BHLXUPD("PAYOR EXT")=$G(^BHLX277V($J,USDA,"PAYOR EXT"))
  1. I $G(BHLXUPD("PAYOR CTE"))="EX" D
  1. . S BHLXUPD("PAYOR 305")=$G(BHLXUPD("PAYOR EXT"))
  1. S BHLXUPD("PAYOR CTE2")=$G(^BHLX277V($J,USDA,"PAYOR CTE2"))
  1. S BHLXUPD("PAYOR EXT2")=$G(^BHLX277V($J,USDA,"PAYOR EXT2"))
  1. I $G(BHLXUPD("PAYOR CTE2"))="EX" D
  1. . S BHLXUPD("PAYOR 306")=$G(BHLXUPD("PAYOR EXT2"))
  1. I $G(BHLXUPD("PAYOR CTE2"))="FX" D
  1. . S BHLXUPD("PAYOR 307")=$G(BHLXUPD("PAYOR EXT2"))
  1. Q
  1. ;
  1. L2(USDA,ULDA) ;-- setup level 2 vars for filing
  1. Q:ULDA'?.N
  1. S BHLXUPD("CLSTC1")=$G(^BHLX277V($J,USDA,ULDA,"CLSTC1"))
  1. S BHLXUPD("CLST1")=$G(^BHLX277V($J,USDA,ULDA,"CLST1"))
  1. S BHLXUPD("EID1")=$G(^BHLX277V($J,USDA,ULDA,"EID1"))
  1. S BHLXUPD("CLSTC2")=$G(^BHLX277V($J,USDA,ULDA,"CLSTC2"))
  1. S BHLXUPD("CLST2")=$G(^BHLX277V($J,USDA,ULDA,"CLST2"))
  1. S BHLXUPD("EID2")=$G(^BHLX277V($J,USDA,ULDA,"EID2"))
  1. S BHLXUPD("CLSTC3")=$G(^BHLX277V($J,USDA,ULDA,"CLSTC3"))
  1. S BHLXUPD("CLST3")=$G(^BHLX277V($J,USDA,ULDA,"CLST3"))
  1. S BHLXUPD("EID3")=$G(^BHLX277V($J,USDA,ULDA,"EID3"))
  1. S BHLXUPD("RES EFDT")=$G(^BHLX277V($J,USDA,ULDA,"RES EFDT"))
  1. S BHLXUPD("PD AMT")=$G(^BHLX277V($J,USDA,ULDA,"PD AMT"))
  1. S BHLXUPD("DT PD")=$G(^BHLX277V($J,USDA,ULDA,"DT PD"))
  1. S BHLXUPD("PAY METH")=$G(^BHLX277V($J,USDA,ULDA,"PAY METH"))
  1. S BHLXUPD("CHK DT")=$G(^BHLX277V($J,USDA,ULDA,"CHK DT"))
  1. S BHLXUPD("TRACE #")=$G(^BHLX277V($J,USDA,ULDA,"TRACE #"))
  1. S BHLXUPD("CHK #")=$G(^BHLX277V($J,USDA,ULDA,"CHK #"))
  1. Q
  1. ;
  1. FH(USDA,ULDA,UPD) ;-- file into holding
  1. ;look for entry in 90051.01
  1. Q:'$G(UPD("TRACE #"))
  1. S BHLXIEN=$O(^BARECLST("B",UPD("TRACE #"),0))
  1. Q:'BHLXIEN
  1. Q:'USDA
  1. Q:'ULDA
  1. K DD,DO
  1. S DIE="^BARECLST(",DA=BHLXIEN
  1. S DR="101///"_$G(UPD("RESP DT"))_";102///"_$G(UPD("PAYOR ID"))
  1. S DR=DR_";103///"_$G(UPD("RES EFDT"))
  1. S DR=DR_";104////"_$G(UPD("PD AMT"))
  1. S DR=DR_";105////"_$G(UPD("DT PD"))
  1. S DR=DR_";106///"_$G(UPD("PAY METH"))
  1. S DR=DR_";107////"_$G(UPD("CHK DT"))
  1. S DR=DR_";108///"_$G(UPD("CHK #"))
  1. S DR=DR_";201///"_$G(UPD("CLSTC1"))
  1. S DR=DR_";202///"_$G(UPD("CLST1"))
  1. S DR=DR_";203///"_$G(UPD("EID1"))
  1. S DR=DR_";204///"_$G(UPD("CLSTC2"))
  1. S DR=DR_";205///"_$G(UPD("CLST2"))
  1. S DR=DR_";206///"_$G(UPD("EID2"))
  1. S DR=DR_";207///"_$G(UPD("CLSTC3"))
  1. S DR=DR_";208///"_$G(UPD("CLST3"))
  1. S DR=DR_";209///"_$G(UPD("EID3"))
  1. S DR=DR_";301///"_$G(UPD("PAYOR CN"))
  1. S DR=DR_";302///"_$G(UPD("PAYOR 302"))
  1. S DR=DR_";303///"_$G(UPD("PAYOR 303"))
  1. S DR=DR_";304///"_$G(UPD("PAYOR 304"))
  1. S DR=DR_";305///"_$G(UPD("PAYOR 305"))
  1. S DR=DR_";306///"_$G(UPD("PAYOR 306"))
  1. S DR=DR_";307///"_$G(UPD("PAYOR 307"))
  1. N UPD
  1. D FILE^DICN
  1. S BHLXHIEN=+Y
  1. K DIC,DR,DA
  1. Q
  1. ;
  1. EOJ ;-- kill vars
  1. K ^BHLX277($J)
  1. K ^BHLX277V($J)
  1. D EN^XBVK("BHLX")
  1. Q
  1. ;