ABSP5B1B ; IHS/OIT/CASSevern/Pieran ran 1/19/2011 - Handling of outgoing NCPDP Billing "B1" Claims for 5.1 (PRICING,PRESCRIBER, and PROVIDER Segments)
;;1.0;PHARMACY POINT OF SALE;**42**;JUN 21, 2001;Build 38
PRICING ;EP CALLED FROM ABSP5B1 to set up PRICING SEGMENT
N FIELD
S RECORD=$G(RECORD)
F FIELD="111",409,412,433,438,478,479,480,481,482,483,484,426,430,423 D
. Q:$D(SUPRESF(FIELD))
. I (ACTION["CLAIM"),(FIELD'=111) D
. . D @(FIELD_"GET")
. . D @(FIELD_"FMT")
. . D @(FIELD_"SET")
. ELSE D APPEND(FIELD)
Q
;Segment identifier
111GET S ABSP("X")=11
Q
111FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
Q
111SET ;This isn't used for the 111 Field
Q
;Ingredient Cost Submitted
409GET I '$D(SPECIAL(409)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Ingredient Cost"))
ELSE X SPECIAL(409)
Q
409FMT S:ABSP("X")'="" ABSP("X")="D9"_$$DFF^ABSPECFM(ABSP("X"),8) ;Spec says Length is 6?
Q
409SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,9)=ABSP("X")
Q
;Dispensing Fee
412GET I '$D(SPECIAL(412)) D
. S ABSP("X")=$G(ABSP("Site","Dispensing Fee"))
. I $D(ABSP("RX",ABSP(9002313.0201),"Dispensing Fee")) S ABSP("X")=ABSP("RX",ABSP(9002313.0201),"Dispensing Fee")
ELSE X SPECIAL(412)
Q
412FMT S:ABSP("X")'="" ABSP("X")="DC"_$$DFF^ABSPECFM(ABSP("X"),8)
Q
412SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,12)=ABSP("X")
Q
;Patient Paid Amount
433GET I '$D(SPECIAL(433)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Patient Paid Amount"))
ELSE X SPECIAL(433)
Q
433FMT S:ABSP("X")'="" ABSP("X")="DX"_$$DFF^ABSPECFM($G(ABSP("X")),8)
Q
433SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),430),U,3)=ABSP("X")
Q
;Incentive Amount
438GET I '$D(SPECIAL(438)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Incentive Amount"))
ELSE X SPECIAL(438)
Q
438FMT S:ABSP("X")'="" ABSP("X")="E3"_$$DFF^ABSPECFM($G(ABSP("X")),8)
Q
438SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),430),U,8)=ABSP("X")
Q
;Other Amt Clmd Sub Cnt
478GET I '$D(SPECIAL(478)) S ABSP("X")=$G(ABSP("Pricing",ABSP(9002313.0201),"Oth Amt Clmd Sub Cnt"))
ELSE X SPECIAL(478)
Q
478FMT S:ABSP("X")'="" ABSP("X")="H7"_$$NFF^ABSPECFM(ABSP("X"),2)
Q
478SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),470),U,8)=ABSP("X")
Q
;Other Amount Clmd Sub Qual
479GET I '$D(SPECIAL(479)) S ABSP("X")=$G(ABSP("Pricing","Other Amt Claimed Sub Qual"))
ELSE X SPECIAL(479)
Q
479FMT S:ABSP("X")'="" ABSP("X")="H8"_$$ANFF^ABSPECFM(ABSP("X"),2)
Q
479SET ;No code exists yet.
Q
;Other amt claimed sub
480GET I '$D(SPECIAL(480)) S ABSP("X")=$G(ABSP("Pricing","Other Amt Claimed Sub"))
ELSE X SPECIAL(480)
Q
480FMT S:ABSP("X")'="" ABSP("X")="H9"_$$DFF^ABSPECFM(ABSP("X"),8)
Q
480SET ;No code exists yet.
Q
;Flat Sales Tax Amt
481GET I '$D(SPECIAL(481)) S ABSP("X")=$G(ABSP("Pricing",ABSP(9002313.0201),"Flat Sales Tx Amt Sub"))
ELSE X SPECIAL(481)
Q
481FMT S:ABSP("X")'="" ABSP("X")="HA"_$$DFF^ABSPECFM(ABSP("X"),8)
Q
481SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,1)=ABSP("X")
Q
;Percentage Sales Tax Amt
482GET I '$D(SPECIAL(482)) S ABSP("X")=$G(ABSP("Pricing",ABSP(9002313.0201),"Percnt Sale Tx Amt Sb"))
ELSE X SPECIAL(482)
Q
482FMT S:ABSP("X")'="" ABSP("X")="GE"_$$DFF^ABSPECFM(ABSP("X"),8)
Q
482SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,2)=ABSP("X")
Q
;Percentage Sales Tax Rate
483GET I '$D(SPECIAL(483)) S ABSP("X")=$G(ABSP("Pricing",ABSP(9002313.0201),"Prcnt Sls Tx Rt Sub"))
ELSE X SPECIAL(483)
Q
483FMT S:ABSP("X")'="" ABSP("X")="HE"_$$DFF^ABSPECFM(ABSP("X"),7)
Q
483SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,3)=ABSP("X")
Q
;Percentage Sales Tax Basis
484GET I '$D(SPECIAL(484)) S ABSP("X")=$G(ABSP("Pricing",ABSP(9002313.0201),"Prcnt Sls Tx Bs Sub"))
ELSE X SPECIAL(484)
Q
484FMT S:ABSP("X")'="" ABSP("X")="JE"_$$NFF^ABSPECFM(ABSP("X"),2)
Q
484SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,4)=ABSP("X")
Q
;Usual and Customary Charge
426GET I '$D(SPECIAL(426)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Usual & Customary"))
ELSE X SPECIAL(426)
Q
426FMT S:ABSP("X")'="" ABSP("X")="DQ"_$$DFF^ABSPECFM($G(ABSP("X")),8)
Q
426SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,26)=ABSP("X")
Q
;Gross Amnt Due
430GET I '$D(SPECIAL(430)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Gross Amount Due"))
ELSE X SPECIAL(430)
Q
430FMT S:ABSP("X")'="" ABSP("X")="DU"_$$DFF^ABSPECFM($G(ABSP("X")),8)
Q
430SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,30)=ABSP("X")
Q
;Basis of Cost Determination
423GET I '$D(SPECIAL(423)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Basis of Cost Determination"))
ELSE X SPECIAL(423)
Q
423FMT S:ABSP("X")'="" ABSP("X")="DN"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
Q
423SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,23)=ABSP("X")
Q
PROVIDER ;EP CALLED FROM ABSP5B1 to set up PROVIDER SEGMENT
Q:$D(SUPRESSG("Provider"))
N FIELD
S RECORD=$G(RECORD)
F FIELD="111A",465,444 D
. Q:$D(SUPRESF(FIELD))
. I (ACTION["CLAIM"),(FIELD'=111) D
. . D @(FIELD_"GET")
. . D @(FIELD_"FMT")
. . D @(FIELD_"SET")
. ELSE D APPEND(FIELD)
Q
;Segment identifier
111AGET S ABSP("X")="02"
Q
111AFMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
Q
111ASET ;This isn't used for the 111 Field
Q
;Provider ID Qualifier
465GET I '$D(SPECIAL(465)) S ABSP("X")=$G(ABSP("Pharmacy",ABSP(9002313.0201),"Provider ID Qual"))
ELSE X SPECIAL(465)
Q
465FMT S:ABSP("X")'="" ABSP("X")="EY"_$$ANFF^ABSPECFM(ABSP("X"),2)
Q
465SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,5)=ABSP("X")
Q
;Provider ID
444GET I '$D(SPECIAL(444)) S ABSP("X")=$G(ABSP("Pharmacy",ABSP(9002313.0201),"Provider ID"))
ELSE X SPECIAL(444)
Q
444FMT S:ABSP("X")'="" ABSP("X")="E9"_$$ANFF^ABSPECFM(ABSP("X"),15)
Q
444SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),440),U,4)=ABSP("X")
Q
PRESCRIBER ;EP CALLED FROM ABSP5B1 to set up PRICING SEGMENT
N FIELD
S RECORD=$G(RECORD)
F FIELD="111B",466,411,467,427,498,468,421,469,470 D
. Q:$D(SUPRESF(FIELD))
. I (ACTION["CLAIM"),(FIELD'=111) D
. . D @(FIELD_"GET")
. . D @(FIELD_"FMT")
. . D @(FIELD_"SET")
. ELSE D APPEND(FIELD)
Q
;Segment identifier
111BGET S ABSP("X")="03"
Q
111BFMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
Q
111BSET ;This isn't used for the 111 Field
Q
;Prescriber ID Qualifier
466GET I '$D(SPECIAL(466)) S ABSP("X")=$G(ABSP("Prescriber",ABSP(9002313.0201),"Prescriber ID Qual"))
ELSE X SPECIAL(466)
Q
466FMT S:ABSP("X")'="" ABSP("X")="EZ"_$$ANFF^ABSPECFM(ABSP("X"),2)
Q
466SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,6)=ABSP("X")
Q
;Prescriber ID
411GET I '$D(SPECIAL(411)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Prescriber ID"))
ELSE X SPECIAL(411)
Q
411FMT S:ABSP("X")'="" ABSP("X")="DB"_$$ANFF^ABSPECFM($G(ABSP("X")),15)
Q
411SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,11)=ABSP("X")
Q
;Prescriber Location Code
467GET I '$D(SPECIAL(467)) S ABSP("X")=$G(ABSP("Prescriber",ABSP(9002313.0201),"Location Code"))
ELSE X SPECIAL(467)
Q
467FMT S:ABSP("X")'="" ABSP("X")="1E"_$$ANFF^ABSPECFM(ABSP("X"),3)
Q
467SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,7)=ABSP("X")
Q
;Prescriber Last Name
427GET I '$D(SPECIAL(427)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Prescriber Last Name"))
ELSE X SPECIAL(427)
Q
427FMT S:ABSP("X")'="" ABSP("X")="DR"_$$ANFF^ABSPECFM(ABSP("X"),15)
Q
427SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),420),U,27)=ABSP("X")
Q
;Prescriber Phone Number
498GET I '$D(SPECIAL(498)) S ABSP("X")=$G(ABSP("Prescriber",ABSP(9002313.0201),"Phone"))
ELSE X SPECIAL(498)
Q
498FMT S:ABSP("X")'="" ABSP("X")="PM"_$$ANFF^ABSPECFM($G(ABSP("X")),10)
Q
498SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),498),U,12)=ABSP("X")
Q
;Primary Care Provider ID Qual
468GET I '$D(SPECIAL(468)) S ABSP("X")=$G(ABSP("Prescriber",ABSP(9002313.0201),"Prim Care ID Qual"))
ELSE X SPECIAL(468)
Q
468FMT S:ABSP("X")'="" ABSP("X")="2E"_$$ANFF^ABSPECFM(ABSP("X"),2)
Q
468SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,8)=ABSP("X")
Q
;Primary Care Provider ID
421GET I '$D(SPECIAL(421)) S ABSP("X")=$G(ABSP("RX",ABSP(9002313.0201),"Primary Prescriber"))
ELSE X SPECIAL(421)
Q
421FMT S:ABSP("X")'="" ABSP("X")="DL"_$$ANFF^ABSPECFM($G(ABSP("X")),15)
Q
421SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,21)=ABSP("X")
Q
;Primary Care Provider Location Code
469GET I '$D(SPECIAL(469)) S ABSP("X")=$G(ABSP("Prescriber",ABSP(9002313.0201),"Prim Care Loc CD"))
ELSE X SPECIAL(469)
Q
469FMT S:ABSP("X")'="" ABSP("X")="H5"_$$ANFF^ABSPECFM(ABSP("X"),3)
Q
469SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,9)=ABSP("X")
Q
;Primary Care Provider Last Name
470GET I '$D(SPECIAL(470)) S ABSP("X")=$G(ABSP("Prescriber",ABSP(9002313.0201),"Prim Care Lst Name"))
ELSE X SPECIAL(470)
Q
470FMT S:ABSP("X")'="" ABSP("X")="4E"_$$ANFF^ABSPECFM(ABSP("X"),15)
Q
470SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,10)=ABSP("X")
Q
APPEND(FIELD) ;Where outgoing record is built field by field
I FIELD["111" D
. D @(FIELD_"GET")
. D @(FIELD_"FMT")
. S RECORD=RECORD_$C(30,28)_"AM"_ABSP("X")
ELSE D
. I $G(ABSP(9002313.0201,IEN(9002313.01),FIELD,"I"))'="" S RECORD=RECORD_$C(28)_$G(ABSP(9002313.0201,IEN(9002313.01),FIELD,"I"))
. ELSE I $D(SPECIAL(FIELD)) D
. . X SPECIAL(FIELD)
. . D @(FIELD_"FMT")
. . S RECORD=RECORD_$C(28)_ABSP("X")
Q
ABSP5B1B ; IHS/OIT/CASSevern/Pieran ran 1/19/2011 - Handling of outgoing NCPDP Billing "B1" Claims for 5.1 (PRICING,PRESCRIBER, and PROVIDER Segments)
+1 ;;1.0;PHARMACY POINT OF SALE;**42**;JUN 21, 2001;Build 38
PRICING ;EP CALLED FROM ABSP5B1 to set up PRICING SEGMENT
+1 NEW FIELD
+2 SET RECORD=$GET(RECORD)
+3 FOR FIELD="111",409,412,433,438,478,479,480,481,482,483,484,426,430,423
Begin DoDot:1
+4 IF $DATA(SUPRESF(FIELD))
QUIT
+5 IF (ACTION["CLAIM")
IF (FIELD'=111)
Begin DoDot:2
+6 DO @(FIELD_"GET")
+7 DO @(FIELD_"FMT")
+8 DO @(FIELD_"SET")
End DoDot:2
+9 IF '$TEST
DO APPEND(FIELD)
End DoDot:1
+10 QUIT
+11 ;Segment identifier
111GET SET ABSP("X")=11
+1 QUIT
111FMT SET ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
111SET ;This isn't used for the 111 Field
+1 QUIT
+2 ;Ingredient Cost Submitted
409GET IF '$DATA(SPECIAL(409))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Ingredient Cost"))
+1 IF '$TEST
XECUTE SPECIAL(409)
+2 QUIT
409FMT ;Spec says Length is 6?
IF ABSP("X")'=""
SET ABSP("X")="D9"_$$DFF^ABSPECFM(ABSP("X"),8)
+1 QUIT
409SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,9)=ABSP("X")
+1 QUIT
+2 ;Dispensing Fee
412GET IF '$DATA(SPECIAL(412))
Begin DoDot:1
+1 SET ABSP("X")=$GET(ABSP("Site","Dispensing Fee"))
+2 IF $DATA(ABSP("RX",ABSP(9002313.0201),"Dispensing Fee"))
SET ABSP("X")=ABSP("RX",ABSP(9002313.0201),"Dispensing Fee")
End DoDot:1
+3 IF '$TEST
XECUTE SPECIAL(412)
+4 QUIT
412FMT IF ABSP("X")'=""
SET ABSP("X")="DC"_$$DFF^ABSPECFM(ABSP("X"),8)
+1 QUIT
412SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,12)=ABSP("X")
+1 QUIT
+2 ;Patient Paid Amount
433GET IF '$DATA(SPECIAL(433))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Patient Paid Amount"))
+1 IF '$TEST
XECUTE SPECIAL(433)
+2 QUIT
433FMT IF ABSP("X")'=""
SET ABSP("X")="DX"_$$DFF^ABSPECFM($GET(ABSP("X")),8)
+1 QUIT
433SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),430),U,3)=ABSP("X")
+1 QUIT
+2 ;Incentive Amount
438GET IF '$DATA(SPECIAL(438))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Incentive Amount"))
+1 IF '$TEST
XECUTE SPECIAL(438)
+2 QUIT
438FMT IF ABSP("X")'=""
SET ABSP("X")="E3"_$$DFF^ABSPECFM($GET(ABSP("X")),8)
+1 QUIT
438SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),430),U,8)=ABSP("X")
+1 QUIT
+2 ;Other Amt Clmd Sub Cnt
478GET IF '$DATA(SPECIAL(478))
SET ABSP("X")=$GET(ABSP("Pricing",ABSP(9002313.0201),"Oth Amt Clmd Sub Cnt"))
+1 IF '$TEST
XECUTE SPECIAL(478)
+2 QUIT
478FMT IF ABSP("X")'=""
SET ABSP("X")="H7"_$$NFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
478SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),470),U,8)=ABSP("X")
+1 QUIT
+2 ;Other Amount Clmd Sub Qual
479GET IF '$DATA(SPECIAL(479))
SET ABSP("X")=$GET(ABSP("Pricing","Other Amt Claimed Sub Qual"))
+1 IF '$TEST
XECUTE SPECIAL(479)
+2 QUIT
479FMT IF ABSP("X")'=""
SET ABSP("X")="H8"_$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
479SET ;No code exists yet.
+1 QUIT
+2 ;Other amt claimed sub
480GET IF '$DATA(SPECIAL(480))
SET ABSP("X")=$GET(ABSP("Pricing","Other Amt Claimed Sub"))
+1 IF '$TEST
XECUTE SPECIAL(480)
+2 QUIT
480FMT IF ABSP("X")'=""
SET ABSP("X")="H9"_$$DFF^ABSPECFM(ABSP("X"),8)
+1 QUIT
480SET ;No code exists yet.
+1 QUIT
+2 ;Flat Sales Tax Amt
481GET IF '$DATA(SPECIAL(481))
SET ABSP("X")=$GET(ABSP("Pricing",ABSP(9002313.0201),"Flat Sales Tx Amt Sub"))
+1 IF '$TEST
XECUTE SPECIAL(481)
+2 QUIT
481FMT IF ABSP("X")'=""
SET ABSP("X")="HA"_$$DFF^ABSPECFM(ABSP("X"),8)
+1 QUIT
481SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,1)=ABSP("X")
+1 QUIT
+2 ;Percentage Sales Tax Amt
482GET IF '$DATA(SPECIAL(482))
SET ABSP("X")=$GET(ABSP("Pricing",ABSP(9002313.0201),"Percnt Sale Tx Amt Sb"))
+1 IF '$TEST
XECUTE SPECIAL(482)
+2 QUIT
482FMT IF ABSP("X")'=""
SET ABSP("X")="GE"_$$DFF^ABSPECFM(ABSP("X"),8)
+1 QUIT
482SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,2)=ABSP("X")
+1 QUIT
+2 ;Percentage Sales Tax Rate
483GET IF '$DATA(SPECIAL(483))
SET ABSP("X")=$GET(ABSP("Pricing",ABSP(9002313.0201),"Prcnt Sls Tx Rt Sub"))
+1 IF '$TEST
XECUTE SPECIAL(483)
+2 QUIT
483FMT IF ABSP("X")'=""
SET ABSP("X")="HE"_$$DFF^ABSPECFM(ABSP("X"),7)
+1 QUIT
483SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,3)=ABSP("X")
+1 QUIT
+2 ;Percentage Sales Tax Basis
484GET IF '$DATA(SPECIAL(484))
SET ABSP("X")=$GET(ABSP("Pricing",ABSP(9002313.0201),"Prcnt Sls Tx Bs Sub"))
+1 IF '$TEST
XECUTE SPECIAL(484)
+2 QUIT
484FMT IF ABSP("X")'=""
SET ABSP("X")="JE"_$$NFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
484SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),480),U,4)=ABSP("X")
+1 QUIT
+2 ;Usual and Customary Charge
426GET IF '$DATA(SPECIAL(426))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Usual & Customary"))
+1 IF '$TEST
XECUTE SPECIAL(426)
+2 QUIT
426FMT IF ABSP("X")'=""
SET ABSP("X")="DQ"_$$DFF^ABSPECFM($GET(ABSP("X")),8)
+1 QUIT
426SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,26)=ABSP("X")
+1 QUIT
+2 ;Gross Amnt Due
430GET IF '$DATA(SPECIAL(430))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Gross Amount Due"))
+1 IF '$TEST
XECUTE SPECIAL(430)
+2 QUIT
430FMT IF ABSP("X")'=""
SET ABSP("X")="DU"_$$DFF^ABSPECFM($GET(ABSP("X")),8)
+1 QUIT
430SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,30)=ABSP("X")
+1 QUIT
+2 ;Basis of Cost Determination
423GET IF '$DATA(SPECIAL(423))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Basis of Cost Determination"))
+1 IF '$TEST
XECUTE SPECIAL(423)
+2 QUIT
423FMT IF ABSP("X")'=""
SET ABSP("X")="DN"_$$ANFF^ABSPECFM($GET(ABSP("X")),2)
+1 QUIT
423SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,23)=ABSP("X")
+1 QUIT
PROVIDER ;EP CALLED FROM ABSP5B1 to set up PROVIDER SEGMENT
+1 IF $DATA(SUPRESSG("Provider"))
QUIT
+2 NEW FIELD
+3 SET RECORD=$GET(RECORD)
+4 FOR FIELD="111A",465,444
Begin DoDot:1
+5 IF $DATA(SUPRESF(FIELD))
QUIT
+6 IF (ACTION["CLAIM")
IF (FIELD'=111)
Begin DoDot:2
+7 DO @(FIELD_"GET")
+8 DO @(FIELD_"FMT")
+9 DO @(FIELD_"SET")
End DoDot:2
+10 IF '$TEST
DO APPEND(FIELD)
End DoDot:1
+11 QUIT
+12 ;Segment identifier
111AGET SET ABSP("X")="02"
+1 QUIT
111AFMT SET ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
111ASET ;This isn't used for the 111 Field
+1 QUIT
+2 ;Provider ID Qualifier
465GET IF '$DATA(SPECIAL(465))
SET ABSP("X")=$GET(ABSP("Pharmacy",ABSP(9002313.0201),"Provider ID Qual"))
+1 IF '$TEST
XECUTE SPECIAL(465)
+2 QUIT
465FMT IF ABSP("X")'=""
SET ABSP("X")="EY"_$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
465SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,5)=ABSP("X")
+1 QUIT
+2 ;Provider ID
444GET IF '$DATA(SPECIAL(444))
SET ABSP("X")=$GET(ABSP("Pharmacy",ABSP(9002313.0201),"Provider ID"))
+1 IF '$TEST
XECUTE SPECIAL(444)
+2 QUIT
444FMT IF ABSP("X")'=""
SET ABSP("X")="E9"_$$ANFF^ABSPECFM(ABSP("X"),15)
+1 QUIT
444SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),440),U,4)=ABSP("X")
+1 QUIT
PRESCRIBER ;EP CALLED FROM ABSP5B1 to set up PRICING SEGMENT
+1 NEW FIELD
+2 SET RECORD=$GET(RECORD)
+3 FOR FIELD="111B",466,411,467,427,498,468,421,469,470
Begin DoDot:1
+4 IF $DATA(SUPRESF(FIELD))
QUIT
+5 IF (ACTION["CLAIM")
IF (FIELD'=111)
Begin DoDot:2
+6 DO @(FIELD_"GET")
+7 DO @(FIELD_"FMT")
+8 DO @(FIELD_"SET")
End DoDot:2
+9 IF '$TEST
DO APPEND(FIELD)
End DoDot:1
+10 QUIT
+11 ;Segment identifier
111BGET SET ABSP("X")="03"
+1 QUIT
111BFMT SET ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
111BSET ;This isn't used for the 111 Field
+1 QUIT
+2 ;Prescriber ID Qualifier
466GET IF '$DATA(SPECIAL(466))
SET ABSP("X")=$GET(ABSP("Prescriber",ABSP(9002313.0201),"Prescriber ID Qual"))
+1 IF '$TEST
XECUTE SPECIAL(466)
+2 QUIT
466FMT IF ABSP("X")'=""
SET ABSP("X")="EZ"_$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
466SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,6)=ABSP("X")
+1 QUIT
+2 ;Prescriber ID
411GET IF '$DATA(SPECIAL(411))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Prescriber ID"))
+1 IF '$TEST
XECUTE SPECIAL(411)
+2 QUIT
411FMT IF ABSP("X")'=""
SET ABSP("X")="DB"_$$ANFF^ABSPECFM($GET(ABSP("X")),15)
+1 QUIT
411SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,11)=ABSP("X")
+1 QUIT
+2 ;Prescriber Location Code
467GET IF '$DATA(SPECIAL(467))
SET ABSP("X")=$GET(ABSP("Prescriber",ABSP(9002313.0201),"Location Code"))
+1 IF '$TEST
XECUTE SPECIAL(467)
+2 QUIT
467FMT IF ABSP("X")'=""
SET ABSP("X")="1E"_$$ANFF^ABSPECFM(ABSP("X"),3)
+1 QUIT
467SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,7)=ABSP("X")
+1 QUIT
+2 ;Prescriber Last Name
427GET IF '$DATA(SPECIAL(427))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Prescriber Last Name"))
+1 IF '$TEST
XECUTE SPECIAL(427)
+2 QUIT
427FMT IF ABSP("X")'=""
SET ABSP("X")="DR"_$$ANFF^ABSPECFM(ABSP("X"),15)
+1 QUIT
427SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),420),U,27)=ABSP("X")
+1 QUIT
+2 ;Prescriber Phone Number
498GET IF '$DATA(SPECIAL(498))
SET ABSP("X")=$GET(ABSP("Prescriber",ABSP(9002313.0201),"Phone"))
+1 IF '$TEST
XECUTE SPECIAL(498)
+2 QUIT
498FMT IF ABSP("X")'=""
SET ABSP("X")="PM"_$$ANFF^ABSPECFM($GET(ABSP("X")),10)
+1 QUIT
498SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),498),U,12)=ABSP("X")
+1 QUIT
+2 ;Primary Care Provider ID Qual
468GET IF '$DATA(SPECIAL(468))
SET ABSP("X")=$GET(ABSP("Prescriber",ABSP(9002313.0201),"Prim Care ID Qual"))
+1 IF '$TEST
XECUTE SPECIAL(468)
+2 QUIT
468FMT IF ABSP("X")'=""
SET ABSP("X")="2E"_$$ANFF^ABSPECFM(ABSP("X"),2)
+1 QUIT
468SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,8)=ABSP("X")
+1 QUIT
+2 ;Primary Care Provider ID
421GET IF '$DATA(SPECIAL(421))
SET ABSP("X")=$GET(ABSP("RX",ABSP(9002313.0201),"Primary Prescriber"))
+1 IF '$TEST
XECUTE SPECIAL(421)
+2 QUIT
421FMT IF ABSP("X")'=""
SET ABSP("X")="DL"_$$ANFF^ABSPECFM($GET(ABSP("X")),15)
+1 QUIT
421SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),400),U,21)=ABSP("X")
+1 QUIT
+2 ;Primary Care Provider Location Code
469GET IF '$DATA(SPECIAL(469))
SET ABSP("X")=$GET(ABSP("Prescriber",ABSP(9002313.0201),"Prim Care Loc CD"))
+1 IF '$TEST
XECUTE SPECIAL(469)
+2 QUIT
469FMT IF ABSP("X")'=""
SET ABSP("X")="H5"_$$ANFF^ABSPECFM(ABSP("X"),3)
+1 QUIT
469SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,9)=ABSP("X")
+1 QUIT
+2 ;Primary Care Provider Last Name
470GET IF '$DATA(SPECIAL(470))
SET ABSP("X")=$GET(ABSP("Prescriber",ABSP(9002313.0201),"Prim Care Lst Name"))
+1 IF '$TEST
XECUTE SPECIAL(470)
+2 QUIT
470FMT IF ABSP("X")'=""
SET ABSP("X")="4E"_$$ANFF^ABSPECFM(ABSP("X"),15)
+1 QUIT
470SET SET $PIECE(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),460),U,10)=ABSP("X")
+1 QUIT
APPEND(FIELD) ;Where outgoing record is built field by field
+1 IF FIELD["111"
Begin DoDot:1
+2 DO @(FIELD_"GET")
+3 DO @(FIELD_"FMT")
+4 SET RECORD=RECORD_$CHAR(30,28)_"AM"_ABSP("X")
End DoDot:1
+5 IF '$TEST
Begin DoDot:1
+6 IF $GET(ABSP(9002313.0201,IEN(9002313.01),FIELD,"I"))'=""
SET RECORD=RECORD_$CHAR(28)_$GET(ABSP(9002313.0201,IEN(9002313.01),FIELD,"I"))
+7 IF '$TEST
IF $DATA(SPECIAL(FIELD))
Begin DoDot:2
+8 XECUTE SPECIAL(FIELD)
+9 DO @(FIELD_"FMT")
+10 SET RECORD=RECORD_$CHAR(28)_ABSP("X")
End DoDot:2
End DoDot:1
+11
*** ERROR ***