| 1 | BPSOSQG ;BHAM ISC/FCS/DRS/FLS - form transmission packets ;06/01/2004
 | 
|---|
| 2 |  ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; PACKET
 | 
|---|
| 7 |  ;   Calls BPSOSCA to get claims data (BPS array)
 | 
|---|
| 8 |  ;   Calls BPSECA1 to create packet
 | 
|---|
| 9 |  ;   Calls CHOP^BPSECMC2 to send packet to HL7 application
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | PACKET() ;EP - BPSOSQ2
 | 
|---|
| 12 |  ; packetize one prescription (and possibly more prescriptions
 | 
|---|
| 13 |  ; for the same patient, if they're ready now.)
 | 
|---|
| 14 |  ; Called from BPSOSQ2,
 | 
|---|
| 15 |  ;  which gave us RXILIST(IEN59) array of claims to packetize.
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  N CLAIMIEN,ERROR,FIRST59
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; Get first transaction from list
 | 
|---|
| 20 |  S FIRST59=$O(RXILIST(0))
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ; If it's a reversal, we already have an ^BPSC(, which was
 | 
|---|
| 23 |  ;   created by the call to BPSECA8, way back at the beginning.
 | 
|---|
| 24 |  ; So, unlike claims, we need only the NCPDP formatting for it
 | 
|---|
| 25 |  ;   by creating CLAIMIEN array and jumping to POINTM
 | 
|---|
| 26 |  I $G(^BPST(FIRST59,4)) D  G POINTM
 | 
|---|
| 27 |  . ; Mimic a few things that are set up in the code we're skipping
 | 
|---|
| 28 |  . S CLAIMIEN=$P(^BPST(FIRST59,4),U)
 | 
|---|
| 29 |  . S CLAIMIEN(CLAIMIEN)=""
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ; DMB - This code will only be executed if there is more than one
 | 
|---|
| 32 |  ;  transaction in RXILIST.  This will not happen for the VA but leave
 | 
|---|
| 33 |  ;  functionality in case we bundle claims later
 | 
|---|
| 34 |  I $O(RXILIST($O(RXILIST("")))) D
 | 
|---|
| 35 |  . D LOG2LIST^BPSOSL($T(+0)_"-Packetizing - we have more than one claim:")
 | 
|---|
| 36 |  . N I,X,Y S (X,Y)=""
 | 
|---|
| 37 |  . F I=1:1 S X=$O(RXILIST(X)) Q:'X  D
 | 
|---|
| 38 |  . . S $P(Y,", ",I-1#4+1)=X
 | 
|---|
| 39 |  . . I I#4=0 D LOG2LIST^BPSOSL(Y) S Y=""
 | 
|---|
| 40 |  . I Y]"" D LOG2LIST^BPSOSL(Y)
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ; BPSOSCA calls BPSOSCB,BPSOSCC,BPSOSCD to set up BPS(*) and
 | 
|---|
| 43 |  ;    then calls BPSOSCE to create claims in 9002313.02
 | 
|---|
| 44 |  ; BPSOSCA expects RXILIST(*) to be defined and will return
 | 
|---|
| 45 |  ;   ERROR - any error encountered
 | 
|---|
| 46 |  ;   CLAIMIEN - last claim created
 | 
|---|
| 47 |  ;   CLAIMIEN(CLAIMIEN) - the list of all claims created
 | 
|---|
| 48 |  S ERROR=$$EN^BPSOSCA(.CLAIMIEN)
 | 
|---|
| 49 |  I ERROR D LOG2LIST^BPSOSL($T(+0)_"-ERROR="_ERROR_" returned from BPSOSCA")
 | 
|---|
| 50 |  I $G(CLAIMIEN)<1 Q $S(ERROR:ERROR,1:"300^No Claim IEN returned by BPSOSCA")
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ; POINTM will create the claims packet and put them in XTMP
 | 
|---|
| 53 | POINTM ; Reversals are joining again here
 | 
|---|
| 54 |  N VAMSG,IEN59,ERROR
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ; CLAIMIEN(*) = a list of CLAIMIENs that were generated from
 | 
|---|
| 57 |  ;   all the prescriptions that might have been bundled together.
 | 
|---|
| 58 |  ;   So we must loop through that list.
 | 
|---|
| 59 |  ; Currently, VA does not bundle claims.  If it does so,
 | 
|---|
| 60 |  ;   we may want to change error handling.
 | 
|---|
| 61 |  S ERROR=0,CLAIMIEN=""
 | 
|---|
| 62 |  F  S CLAIMIEN=$O(CLAIMIEN(CLAIMIEN)) Q:CLAIMIEN=""  D
 | 
|---|
| 63 |  . S IEN59=$O(^BPST("AE",CLAIMIEN,""))
 | 
|---|
| 64 |  . I IEN59="" S IEN59=$O(^BPST("AER",CLAIMIEN,""))
 | 
|---|
| 65 |  . I IEN59="" S ERROR="500^Transaction IEN not determined for "_CLAIMIEN Q
 | 
|---|
| 66 |  . D SETSTAT^BPSOSU(IEN59,50)
 | 
|---|
| 67 |  . K VAMSG
 | 
|---|
| 68 |  . D LOG2CLM^BPSOSL(CLAIMIEN,$T(+0)_"-Packet being built for Claim ID "_$P(^BPSC(CLAIMIEN,0),U))
 | 
|---|
| 69 |  . D ASCII^BPSECA1(CLAIMIEN,.VAMSG)
 | 
|---|
| 70 |  . I '$G(VAMSG("HLS",0)) S ERROR="501^Claim packet not built for "_$P($G(^BPSC(CLAIMIEN,0)),U,1) Q
 | 
|---|
| 71 |  . D CHOP^BPSECMC2(.VAMSG,CLAIMIEN,IEN59)
 | 
|---|
| 72 |  Q ERROR
 | 
|---|