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

BPSOSSG.m

Go to the documentation of this file.
  1. BPSOSSG ;BHAM ISC/SD/lwj/FLS - Special gets for formats ;06/01/2004
  1. ;;1.0;E CLAIMS MGMT ENGINE;**1,5,10,11,20,24,28**;JUN 2004;Build 22
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. FLD420 ; Submission Clarification Code
  1. ; place fields 354 and 420 into BPS CLAIMS
  1. ; called by SET CODE in BPS NCPDPD FIELD DEFS for field 420
  1. ;
  1. Q:'$G(BPS(9002313.0201)) ; must have entry IEN
  1. ;
  1. N BPSCNTR,CNT,FDA,MSG,FLDIEN,SCC,I
  1. K BPS(9002313.0354) ; results from UPDATE^DIE
  1. S FLDIEN=$O(^BPSF(9002313.91,"B",420,"")) ;Get IEN for field 420 from NCPDP BPS FIELD DEFS
  1. ; Are there overrides?
  1. I $G(FLDIEN),$D(BPS("OVERRIDE","RX",BPS(9002313.0201),FLDIEN)) D
  1. . K BPS("RX",BPS(9002313.0201),"Submission Clarif Code")
  1. . S SCC=BPS("OVERRIDE","RX",BPS(9002313.0201),FLDIEN)
  1. . F I=1:1:3 S BPS("RX",BPS(9002313.0201),"Submission Clarif Code",I)=$P(SCC,"~",I)
  1. Q:'$O(BPS("RX",BPS(9002313.0201),"Submission Clarif Code",0)) ; no values found
  1. S (CNT,BPSCNTR)=0
  1. F S CNT=$O(BPS("RX",BPS(9002313.0201),"Submission Clarif Code",CNT)) Q:'CNT D
  1. .I BPS("RX",BPS(9002313.0201),"Submission Clarif Code",CNT)="" Q
  1. .S BPSCNTR=BPSCNTR+1 ; ien for (#354.01) SUBMISSION CLARIFICATION MLTPL
  1. .S FDA(9002313.02354,"+"_BPSCNTR_","_BPS(9002313.0201)_","_BPS(9002313.02)_",",.01)=BPSCNTR
  1. .; 420-DK Submission Clarification Code
  1. .S FDA(9002313.02354,"+"_BPSCNTR_","_BPS(9002313.0201)_","_BPS(9002313.02)_",",420)="DK"_$$NFF^BPSECFM(BPS("RX",BPS(9002313.0201),"Submission Clarif Code",CNT),2)
  1. ;
  1. I BPSCNTR D UPDATE^DIE("","FDA","BPS(9002313.0354)","MSG")
  1. I $D(MSG) D Q ; if error, log it and quit
  1. .D LOG2CLM^BPSOSL(BPS(9002313.02),$T(+0)_"-Failed to update NCPDP field 420")
  1. .D LOGARAY2^BPSOSL(BPS(9002313.02),"MSG")
  1. ;
  1. ; 354-NX Submission Clarification Code Count
  1. I BPSCNTR S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),350),U,4)="NX"_$$NFF^BPSECFM(BPSCNTR,1)
  1. ;
  1. Q
  1. ;
  1. FLD439 ;Reason for service code
  1. ;Called by SET logic in BPS NCPDP Field DEFS for field 439
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,2)=BPS("X")
  1. Q
  1. ;
  1. FLD440 ;Professional Service Code
  1. ;Called by set logic in BPS NCPDP Field DEFS for field 440
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,3)=BPS("X")
  1. Q
  1. ;
  1. FLD441 ;Result of Service Code
  1. ;Called by SET logic in BPS NCPDP Field DEFS for field 441
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,4)=BPS("X")
  1. Q
  1. ;
  1. FLD473 ;DUR/PPS code counter - called from SET logic in BPS NCPDP Field Defs
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,1)=BPS("X")
  1. S ^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,"B",BPS("X"),DUR)=""
  1. S ^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,0)="^9002313.1001A^"_DUR_"^"_DUR
  1. Q
  1. ;
  1. FLD474 ;DUR/PPS level of effort - called from set logic in BPS NCPDP Field
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,5)=BPS("X")
  1. Q
  1. ;
  1. FLD475 ;DUR Co-agent ID Qualifier - called from set logic in BPS NCPDP Field
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,6)=""
  1. Q
  1. ;
  1. FLD476 ;DUR Co-agent ID - called from set logic in BPS NCPDP Field
  1. ;DUR is newed/set in BPSOSHF
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),473.01,DUR,0),U,7)=""
  1. Q
  1. ;
  1. FLD480 ; Other Amount Claimed Submitted field
  1. ; Called by set logic in BPS NCPDP Field DEFS for field 480
  1. ; Sets fields 478, 479, and 480 into BPS Claims
  1. ; 478-H7 Other Amount Claimed Count
  1. ; 479-H8 Other Amount Claimed Submitted Qualifier
  1. ; 480-H9 Other Amount Claimed Submitted
  1. ;
  1. Q:'$G(BPS(9002313.02)) ; must have BPS Claims IEN
  1. Q:'$G(BPS(9002313.0201)) ; must have Transaction subfile IEN
  1. Q:'$O(BPS("RX",BPS(9002313.0201),"Other Amt Value",0)) ; nothing to do
  1. ;
  1. N BPSCNTR,CNT,FDA,MSG
  1. K BPS(9002313.0601) ; results from UPDATE^DIE
  1. S (CNT,BPSCNTR)=0
  1. F S CNT=$O(BPS("RX",BPS(9002313.0201),"Other Amt Value",CNT)) Q:'CNT D
  1. . I +BPS("RX",BPS(9002313.0201),"Other Amt Value",CNT)=0 Q
  1. . S BPSCNTR=BPSCNTR+1 ; ien for "PRICING REPEATING FIELDS SUB-FIELD^^480^3"
  1. . S FDA(9002313.0601,"+"_BPSCNTR_","_BPS(9002313.0201)_","_BPS(9002313.02)_",",.01)=BPSCNTR
  1. . S FDA(9002313.0601,"+"_BPSCNTR_","_BPS(9002313.0201)_","_BPS(9002313.02)_",",479)="H8"_$$ANFF^BPSECFM($G(BPS("RX",BPS(9002313.0201),"Other Amt Qual",CNT)),2)
  1. . S FDA(9002313.0601,"+"_BPSCNTR_","_BPS(9002313.0201)_","_BPS(9002313.02)_",",480)="H9"_$$DFF^BPSECFM($G(BPS("RX",BPS(9002313.0201),"Other Amt Value",CNT)),8)
  1. ;
  1. I BPSCNTR D UPDATE^DIE("","FDA","BPS(9002313.0601)","MSG")
  1. I $D(MSG) D Q
  1. . D LOG2CLM^BPSOSL(BPS(9002313.02),$T(+0)_"-Failed to update NCPDP field 480 and/or 479")
  1. . D LOGARAY2^BPSOSL(BPS(9002313.02),"MSG")
  1. ; 478-H7 Other Amount Claimed Submitted Count
  1. I BPSCNTR S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),470),U,8)="H7"_$$NFF^BPSECFM(BPSCNTR,1)
  1. ;
  1. Q
  1. ;
  1. FLDD02 ; Total Prescribed Quantity Remaining field (D02-KW)
  1. ; called by SET CODE in BPS NCPDP Field DEFS for field 2202 (D02-KW)
  1. ;
  1. I '$G(BPS(9002313.02)) S BPS(9002313.02)=$G(BPS02)
  1. Q:'$G(BPS(9002313.02)) ; must have BPS Claims IEN
  1. Q:'$G(BPS(9002313.0201)) ; must have Transaction subfile IEN
  1. ;
  1. N I,PREVFILLS,REFILLS,RTS,RXIEN,TOTALDISP,TOTALQTY,QTY
  1. ;
  1. S REFILLS=$G(BPS("RX",BPS(9002313.0201),"# Refills"))
  1. S QTY=$G(BPS("RX",BPS(9002313.0201),"Quantity"))
  1. S TOTALQTY=QTY*(REFILLS+1) ; Total quantity for the prescription
  1. S PREVFILLS=$G(BPS("RX",BPS(9002313.0201),"Refill #"))
  1. ;
  1. ; Determine if any previous fills were returned to stock.
  1. S RXIEN=$G(BPS("RX",BPS(9002313.0201),"RX IEN"))
  1. S RTS=0
  1. I RXIEN S I=0 D
  1. . F S I=$O(^PSRX(RXIEN,"RTS",I)) Q:'I S RTS=RTS+1
  1. ;
  1. ; Subtract and return to stock fills (RTS) from the number of previous fills (PREVFILLS).
  1. S TOTALDISP=(PREVFILLS-RTS)*QTY ; Total dispensed for all previous fills
  1. ; D02-KW Total Prescribed Quantity Remaining
  1. S BPS("X")=TOTALQTY-TOTALDISP
  1. S $P(^BPSC(BPS(9002313.02),400,BPS(9002313.0201),"D00"),U,2)="KW"_$$NFF^BPSECFM(BPS("X"),10)
  1. Q
  1. ;
  1. EMPL ;Get employer info
  1. ; This by GET logic in BPS NCPDP Field Defs for field 315 (Employer Name)
  1. ; DMB 11/13/2006 - It makes some sense to only set these fields if
  1. ; they exist on the payer sheet. However, it assumes that the
  1. ; employer name field will always be before the other fields and
  1. ; that the other fields will not exist without the Employer Name
  1. ; field. For now, leave this be as these fields are on the
  1. ; Worker's Comp segment, which we do not do. We may want to evaluate
  1. ; if we were to ever add the Worker's Comp segment
  1. Q:'$G(BPS("Patient","IEN"))
  1. D GETS^DIQ(2,BPS("Patient","IEN"),".3111;.3112;.3113;.3115;.3116;.3117;.3118;.3119","","EMPL")
  1. S BPS("Employer","Name")=EMPL(2,BPS("Patient","IEN")_",",.3111)
  1. S:EMPL(2,BPS("Patient","IEN")_",",.3111)=""&(EMPL(2,BPS("Patient","IEN")_",",.3112)'="") BPS("Employer","Name")=EMPL(2,BPS("Patient","IEN")_",",.3112)
  1. S BPS("Employer","Address")=EMPL(2,BPS("Patient","IEN")_",",.3113)
  1. S BPS("Employer","City")=EMPL(2,BPS("Patient","IEN")_",",.3116)
  1. S BPS("Employer","State")=EMPL(2,BPS("Patient","IEN")_",",.3117)
  1. I BPS("Employer","State")'="" D
  1. . S STATEIEN="",STATEIEN=$O(^DIC(5,"B",BPS("Employer","State"),STATEIEN)),BPS("Employer","State")=$P($G(^DIC(5,STATEIEN,0)),"^",2)
  1. S BPS("Employer","Zip Code")=EMPL(2,BPS("Patient","IEN")_",",.3118)
  1. S BPS("Employer","Phone")=EMPL(2,BPS("Patient","IEN")_",",.3119)
  1. K EMPL,STATEIEN
  1. Q
  1. ;