| 1 | BPSOSCE ;BHAM ISC/FCS/DRS/DLF - New entry in 9002313.02 ;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 |  ;----------------------------------------------------------------------
 | 
|---|
| 5 |  ;Creates an Electronic Claim Submission record
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;Parameters:  START     - START Medication Number
 | 
|---|
| 8 |  ;             END       - END Medication Number
 | 
|---|
| 9 |  ;             TOTAL     - TOTAL Medications in Claim
 | 
|---|
| 10 |  ;                       - The BPS(*) array pointed to by START, END
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ; Note that the BPS array is shared by all of the BPSOSC* routines
 | 
|---|
| 13 |  ;----------------------------------------------------------------------
 | 
|---|
| 14 |  ; NEWCLAIM^BPSOSCE called from BPSOSCA from BPSOSQG from BPSOSQ2
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ; This routine is responsible for creating a new entry in the
 | 
|---|
| 17 |  ; claims file, and for calling the routines that then populate
 | 
|---|
| 18 |  ; that new entry.
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | NEWCLAIM(START,END,TOTAL) ;EP
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ;Manage local variables
 | 
|---|
| 25 |  N CLAIMID,DIC,DLAYGO,X,Y,COUNT,INDEX,DIK,DA,NODE0,ROU,ERROR,SEG
 | 
|---|
| 26 |  S ROU=$T(+0),START=+$G(START),END=+$G(END),TOTAL=+$G(TOTAL)
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ;Create new record in Claim Submission File (9002313.02)
 | 
|---|
| 29 | L L +^TMP($J,"BPSOSCE"):300 I '$T G L:$$IMPOSS^BPSOSUE("L","RTI","Single-threaded routine",,,$T(+0))
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 |  ; Generate Claim ID
 | 
|---|
| 32 |  S CLAIMID=$$CLAIMID^BPSECX1($G(BPS("RX",START,"IEN59")))
 | 
|---|
| 33 |  I CLAIMID="" D  Q ERROR
 | 
|---|
| 34 |  . S ERROR="320^VA Claim ID not created"
 | 
|---|
| 35 |  . D LOG(ROU_"-Failed to create Claim ID")
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ; Create claim record
 | 
|---|
| 38 |  S DLAYGO=9002313.02,DIC="^BPSC(",DIC(0)="LXZ",X=CLAIMID
 | 
|---|
| 39 |  D ^DIC S Y=+Y
 | 
|---|
| 40 |  L -^TMP($J,"BPSOSCE")
 | 
|---|
| 41 |  I Y<1 D  Q ERROR
 | 
|---|
| 42 |  . S ERROR="321^Failed to create claim record"
 | 
|---|
| 43 |  . D LOG(ROU_"-Failed to create an entry in file 9002313.02")
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; Update BPS and Log it
 | 
|---|
| 46 |  S BPS(9002313.02)=Y
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  ; Needed for Turn-Around Stats - Do NOT delete/alter!!
 | 
|---|
| 49 |  D LOG(ROU_"-Created claim ID "_CLAIMID_" (IEN "_BPS(9002313.02)_")")
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ; Update the zero node of the claim
 | 
|---|
| 52 |  S NODE0=$G(^BPSC(BPS(9002313.02),0))
 | 
|---|
| 53 |  S $P(NODE0,U,2)=$G(BPS("NCPDP","IEN")) ; Electronic Payor (Payer Sheet)
 | 
|---|
| 54 |  S $P(NODE0,U,4)=2 ; Transmit Flag - 2 is 'Yes (Point of Sale)'
 | 
|---|
| 55 |  S $P(NODE0,U,6)=$$NOWFM^BPSOSU1() ; Created On
 | 
|---|
| 56 |  S ^BPSC(BPS(9002313.02),0)=NODE0
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ; Update Patient Name
 | 
|---|
| 59 |  S $P(^BPSC(BPS(9002313.02),1),U,1)=$G(BPS("Patient","Name"))
 | 
|---|
| 60 |  S $P(^BPSC(BPS(9002313.02),1),U,4)=$G(BPS("Insurer","IEN"))
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; Only Billing Request call this routine so the transaction code
 | 
|---|
| 63 |  ;   is always "B1"
 | 
|---|
| 64 |  S BPS("Transaction Code")="B1"
 | 
|---|
| 65 |  S BPS("Transaction Count")=TOTAL
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  ; Process the 'non-multiple' segments (Header, Patient, Cardholder)
 | 
|---|
| 68 |  F SEG=100:10:120 D XLOOP^BPSOSCF(BPS("NCPDP","IEN"),SEG)
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ; Create the definition node for the multiple
 | 
|---|
| 71 |  S ^BPSC(BPS(9002313.02),400,0)="^9002313.0201PA^^"
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  S COUNT=0
 | 
|---|
| 74 |  F INDEX=START:1:END D
 | 
|---|
| 75 |  . ;
 | 
|---|
| 76 |  . ;Create node zero of the medication multiple
 | 
|---|
| 77 |  . S COUNT=COUNT+1
 | 
|---|
| 78 |  . S NODE0=""
 | 
|---|
| 79 |  . S $P(NODE0,U,1)=INDEX
 | 
|---|
| 80 |  . S $P(NODE0,U,3)=INDEX
 | 
|---|
| 81 |  . S $P(NODE0,U,4)=$G(BPS("RX",INDEX,"Drug Name"))
 | 
|---|
| 82 |  . S $P(NODE0,U,5)=$G(BPS("RX",INDEX,"RX IEN"))
 | 
|---|
| 83 |  . S ^BPSC(BPS(9002313.02),400,INDEX,0)=NODE0
 | 
|---|
| 84 |  . ;
 | 
|---|
| 85 |  . ;
 | 
|---|
| 86 |  . I ^BPS(9002313.99,1,"CERTIFIER")=DUZ S INDEX=1 ;LJE
 | 
|---|
| 87 |  . S $P(^BPSC(BPS(9002313.02),400,INDEX,400),U,1)=BPS("RX",INDEX,"Date Filled")
 | 
|---|
| 88 |  . S BPS(9002313.0201)=INDEX ;07/28/96.
 | 
|---|
| 89 |  . ;
 | 
|---|
| 90 |  . ; Process multiples in the medication multiple
 | 
|---|
| 91 |  . F SEG=130:10:230 D XLOOP^BPSOSCF(BPS("NCPDP","IEN"),SEG,INDEX)
 | 
|---|
| 92 |  . ;
 | 
|---|
| 93 |  . ; Update the indices
 | 
|---|
| 94 |  . S ^BPSC(BPS(9002313.02),400,"B",INDEX,INDEX)=""
 | 
|---|
| 95 |  . S ^BPSC(BPS(9002313.02),400,"AC",INDEX,INDEX)=""
 | 
|---|
| 96 |  . S NODE0=$G(^BPSC(BPS(9002313.02),400,0))
 | 
|---|
| 97 |  . ;
 | 
|---|
| 98 |  . ; Update the definition node of the multiple
 | 
|---|
| 99 |  . S $P(NODE0,U,4)=COUNT
 | 
|---|
| 100 |  . S $P(NODE0,U,3)=$O(^BPSC(BPS(9002313.02),400,"A"),-1)
 | 
|---|
| 101 |  . S ^BPSC(BPS(9002313.02),400,0)=NODE0
 | 
|---|
| 102 |  . ;
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  ; Cross-Reference Claim Submission Record
 | 
|---|
| 105 |  S DIK="^BPSC("
 | 
|---|
| 106 |  S DA=BPS(9002313.02)
 | 
|---|
| 107 |  D IX1^DIK
 | 
|---|
| 108 |  Q ""
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ; LOG - Write the message to all of transactions that are
 | 
|---|
| 111 |  ; being bundled into this 9002313.02 claim
 | 
|---|
| 112 | LOG(MSG) ;
 | 
|---|
| 113 |  N IEN59,I
 | 
|---|
| 114 |  F I=START:1:END D
 | 
|---|
| 115 |  . S IEN59=$G(BPS("RX",I,"IEN59"))
 | 
|---|
| 116 |  . I IEN59 D LOG^BPSOSL(IEN59,MSG)
 | 
|---|
| 117 |  Q
 | 
|---|