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