- ABME8SV1 ; IHS/ASDST/DMJ - 837 SV1 Segment
- ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
- ;Transaction Set Header
- ;
- ; IHS/SD/SDR - V2.5 P5 - Fix to put only 4 cooresponding Dxs on claim
- ;
- ; IHS/SD/SDR - v2.5 p5 - Modified to put POS and TOS by line item
- ;
- ; IHS/SD/SDR - v2.5 p6 - IM14042 - Correction so POS would look up correctly
- ;
- ; IHS/SD/SDR - v2.5 p6 - 7/13/04 - Fixed so FL override works correctly
- ;
- ; IHS/SD/SDR - v2.5 p6 - IM14079 - 7/19/04 - Removed code for SV106
- ;
- ; IHS/SD/SDR - v2.5 p8 - IM13693/IM17856
- ; Remove leading zeros
- ;
- ; IHS/SD/SDR - v2.5 p9 - IM17729
- ; Anesthesia minutes
- ;
- ; IHS/SD/SDR - v2.5 p10 - IM20395
- ; Split out lines bundled by rev code
- ;
- ; IHS/SD/SDR - v2.5 p11 - IM21946
- ; Made change for CLIA number
- ;
- EP ;EP
- K ABMREC("SV1"),ABMR("SV1")
- S ABME("RTYPE")="SV1"
- D LOOP
- K ABME
- Q
- LOOP ;LOOP HERE
- F I=10:10:220 D
- .D @I
- .I $D(^ABMEXLM("AA",+$G(ABMP("INS")),+$G(ABMP("EXP")),ABME("RTYPE"),I)) D @(^(I))
- .I $G(ABMREC("SV1"))'="" S ABMREC("SV1")=ABMREC("SV1")_"*"
- .S ABMREC("SV1")=$G(ABMREC("SV1"))_ABMR("SV1",I)
- Q
- 10 ;segment
- S ABMR("SV1",10)="SV1"
- Q
- 20 ;SV101 - Composite Medical Procedure Identifier
- ;SV102-1 Product Service ID Qualifier
- ;SV102-2 Product Service ID (Procedure Code)
- I $P(ABMRV(ABMI,ABMJ,ABMK),U,2)'="" D
- .S ABMR("SV1",20)="HC"
- .S $P(ABMR("SV1",20),":",2)=$P(ABMRV(ABMI,ABMJ,ABMK),U,2)
- I $P(ABMRV(ABMI,ABMJ,ABMK),U,2)="" D
- .S ABMR("SV1",20)=""
- .Q:$P(ABMRV(ABMI,ABMJ,ABMK),U,15)=""
- .S ABM("NDC")=$P(ABMRV(ABMI,ABMJ,ABMK),U,15)
- .I ABM("NDC")?4N1"-"4N1"-"2N S ABMR("SV1",20)="N1"
- .I ABM("NDC")?5N1"-"3N1"-"2N S ABMR("SV1",20)="N2"
- .I ABM("NDC")?5N1"-"4N1"-"1N S ABMR("SV1",20)="N3"
- .I ABM("NDC")?5N1"-"4N1"-"2N S ABMR("SV1",20)="N4"
- .S $P(ABMR("SV1",20),":",2)=ABM("NDC")
- N I
- F I=3,4,12,22 D
- .Q:$P(ABMRV(ABMI,ABMJ,ABMK),U,I)=""
- .S ABMR("SV1",20)=ABMR("SV1",20)_":"_$P(ABMRV(ABMI,ABMJ,ABMK),U,I)
- .I $P(ABMRV(ABMI,ABMJ,ABMK),U,I)=90 S ABMOUTLB=1
- Q
- 30 ;SV102 - Monetary Amount (Charges)
- S ABMR("SV1",30)=$P(ABMRV(ABMI,ABMJ,ABMK),U,6)
- S ABMR("SV1",30)=$$TRIM^ABMUTLP($J(ABMR("SV1",30),0,2),"L","0")
- Q
- 40 ;SV103 - Unit or Basis for Measurement Code
- I ABMI=39 S ABMR("SV1",40)="MJ"
- E S ABMR("SV1",40)="UN"
- Q
- 50 ;SV104 - Quantity
- S ABMR("SV1",50)=$S(ABMR("SV1",40)="UN":$P(ABMRV(ABMI,ABMJ,ABMK),U,5),1:$P(ABMRV(ABMI,ABMJ,ABMK),U,16))
- Q
- 60 ;SV105 - Facility Code Value (place of service)
- S ABMR("SV1",60)=""
- I $P($G(ABMRV(ABMI,ABMJ,ABMK)),U,25)'="" D
- .S ABMR("SV1",60)=$P($G(ABMRV(ABMI,ABMJ,ABMK)),U,25)
- .I ABMR("SV1",60)'="" S ABMR("SV1",60)=$P($G(^ABMDCODE(ABMR("SV1",60),0)),"^")
- E S ABMR("SV1",60)=$$POS^ABMERUTL(ABMI)
- S ABMVALUE=$$OVER^ABMUTL8(37,3) ;Fl override
- I ABMVALUE'="" S ABMR("SV1",60)=ABMVALUE
- Q
- 70 ;SV106 - service type code
- S ABMR("SV1",70)=""
- Q
- 80 ;SV107 - Composite DX code pointer
- S ABMR("SV1",80)=$P(ABMRV(ABMI,ABMJ,ABMK),U,11)
- S ABMR("SV1",80)=$TR(ABMR("SV1",80),",",":")
- S ABMR("SV1",80)=$P(ABMR("SV1",80),":",1,4)
- Q
- 90 ;SV108 - Monetary Amount
- S ABMR("SV1",90)=""
- Q
- 100 ;SV109 - emergency indicator
- S ABMR("SV1",100)=$P(ABMB8,"^",5)
- Q
- 110 ;SV110 - Multiple Procedure Code
- S ABMR("SV1",110)=""
- Q
- 120 ;SV111 - epsdt
- S ABMR("SV1",120)=""
- Q
- 130 ;SV112 - Family Planning Indicator
- S ABMR("SV1",130)=""
- Q
- 140 ;SV113 - Review Code
- S ABMR("SV1",140)=""
- Q
- 150 ;SV114 - National or Local Assigned Review Value
- S ABMR("SV1",150)=""
- Q
- 160 ;SV115 - copay status code
- S ABMR("SV1",160)=""
- 170 ;SV116 - health care professional shortage area code
- S ABMR("SV1",170)=""
- 180 ;SV117 - reference identification
- S ABMR("SV1",180)=""
- Q
- 190 ;SV118 - postal code
- S ABMR("SV1",190)=""
- Q
- 200 ;SV119 - monetary amount
- S ABMR("SV1",200)=""
- Q
- 210 ;SV120 - level of care code
- S ABMR("SV1",210)=""
- Q
- 220 ;SV121 - provider agreement code
- S ABMR("SV1",220)=""
- Q
- ABME8SV1 ; IHS/ASDST/DMJ - 837 SV1 Segment
- +1 ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
- +2 ;Transaction Set Header
- +3 ;
- +4 ; IHS/SD/SDR - V2.5 P5 - Fix to put only 4 cooresponding Dxs on claim
- +5 ;
- +6 ; IHS/SD/SDR - v2.5 p5 - Modified to put POS and TOS by line item
- +7 ;
- +8 ; IHS/SD/SDR - v2.5 p6 - IM14042 - Correction so POS would look up correctly
- +9 ;
- +10 ; IHS/SD/SDR - v2.5 p6 - 7/13/04 - Fixed so FL override works correctly
- +11 ;
- +12 ; IHS/SD/SDR - v2.5 p6 - IM14079 - 7/19/04 - Removed code for SV106
- +13 ;
- +14 ; IHS/SD/SDR - v2.5 p8 - IM13693/IM17856
- +15 ; Remove leading zeros
- +16 ;
- +17 ; IHS/SD/SDR - v2.5 p9 - IM17729
- +18 ; Anesthesia minutes
- +19 ;
- +20 ; IHS/SD/SDR - v2.5 p10 - IM20395
- +21 ; Split out lines bundled by rev code
- +22 ;
- +23 ; IHS/SD/SDR - v2.5 p11 - IM21946
- +24 ; Made change for CLIA number
- +25 ;
- EP ;EP
- +1 KILL ABMREC("SV1"),ABMR("SV1")
- +2 SET ABME("RTYPE")="SV1"
- +3 DO LOOP
- +4 KILL ABME
- +5 QUIT
- LOOP ;LOOP HERE
- +1 FOR I=10:10:220
- Begin DoDot:1
- +2 DO @I
- +3 IF $DATA(^ABMEXLM("AA",+$GET(ABMP("INS")),+$GET(ABMP("EXP")),ABME("RTYPE"),I))
- DO @(^(I))
- +4 IF $GET(ABMREC("SV1"))'=""
- SET ABMREC("SV1")=ABMREC("SV1")_"*"
- +5 SET ABMREC("SV1")=$GET(ABMREC("SV1"))_ABMR("SV1",I)
- End DoDot:1
- +6 QUIT
- 10 ;segment
- +1 SET ABMR("SV1",10)="SV1"
- +2 QUIT
- 20 ;SV101 - Composite Medical Procedure Identifier
- +1 ;SV102-1 Product Service ID Qualifier
- +2 ;SV102-2 Product Service ID (Procedure Code)
- +3 IF $PIECE(ABMRV(ABMI,ABMJ,ABMK),U,2)'=""
- Begin DoDot:1
- +4 SET ABMR("SV1",20)="HC"
- +5 SET $PIECE(ABMR("SV1",20),":",2)=$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,2)
- End DoDot:1
- +6 IF $PIECE(ABMRV(ABMI,ABMJ,ABMK),U,2)=""
- Begin DoDot:1
- +7 SET ABMR("SV1",20)=""
- +8 IF $PIECE(ABMRV(ABMI,ABMJ,ABMK),U,15)=""
- QUIT
- +9 SET ABM("NDC")=$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,15)
- +10 IF ABM("NDC")?4N1"-"4N1"-"2N
- SET ABMR("SV1",20)="N1"
- +11 IF ABM("NDC")?5N1"-"3N1"-"2N
- SET ABMR("SV1",20)="N2"
- +12 IF ABM("NDC")?5N1"-"4N1"-"1N
- SET ABMR("SV1",20)="N3"
- +13 IF ABM("NDC")?5N1"-"4N1"-"2N
- SET ABMR("SV1",20)="N4"
- +14 SET $PIECE(ABMR("SV1",20),":",2)=ABM("NDC")
- End DoDot:1
- +15 NEW I
- +16 FOR I=3,4,12,22
- Begin DoDot:1
- +17 IF $PIECE(ABMRV(ABMI,ABMJ,ABMK),U,I)=""
- QUIT
- +18 SET ABMR("SV1",20)=ABMR("SV1",20)_":"_$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,I)
- +19 IF $PIECE(ABMRV(ABMI,ABMJ,ABMK),U,I)=90
- SET ABMOUTLB=1
- End DoDot:1
- +20 QUIT
- 30 ;SV102 - Monetary Amount (Charges)
- +1 SET ABMR("SV1",30)=$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,6)
- +2 SET ABMR("SV1",30)=$$TRIM^ABMUTLP($JUSTIFY(ABMR("SV1",30),0,2),"L","0")
- +3 QUIT
- 40 ;SV103 - Unit or Basis for Measurement Code
- +1 IF ABMI=39
- SET ABMR("SV1",40)="MJ"
- +2 IF '$TEST
- SET ABMR("SV1",40)="UN"
- +3 QUIT
- 50 ;SV104 - Quantity
- +1 SET ABMR("SV1",50)=$SELECT(ABMR("SV1",40)="UN":$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,5),1:$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,16))
- +2 QUIT
- 60 ;SV105 - Facility Code Value (place of service)
- +1 SET ABMR("SV1",60)=""
- +2 IF $PIECE($GET(ABMRV(ABMI,ABMJ,ABMK)),U,25)'=""
- Begin DoDot:1
- +3 SET ABMR("SV1",60)=$PIECE($GET(ABMRV(ABMI,ABMJ,ABMK)),U,25)
- +4 IF ABMR("SV1",60)'=""
- SET ABMR("SV1",60)=$PIECE($GET(^ABMDCODE(ABMR("SV1",60),0)),"^")
- End DoDot:1
- +5 IF '$TEST
- SET ABMR("SV1",60)=$$POS^ABMERUTL(ABMI)
- +6 ;Fl override
- SET ABMVALUE=$$OVER^ABMUTL8(37,3)
- +7 IF ABMVALUE'=""
- SET ABMR("SV1",60)=ABMVALUE
- +8 QUIT
- 70 ;SV106 - service type code
- +1 SET ABMR("SV1",70)=""
- +2 QUIT
- 80 ;SV107 - Composite DX code pointer
- +1 SET ABMR("SV1",80)=$PIECE(ABMRV(ABMI,ABMJ,ABMK),U,11)
- +2 SET ABMR("SV1",80)=$TRANSLATE(ABMR("SV1",80),",",":")
- +3 SET ABMR("SV1",80)=$PIECE(ABMR("SV1",80),":",1,4)
- +4 QUIT
- 90 ;SV108 - Monetary Amount
- +1 SET ABMR("SV1",90)=""
- +2 QUIT
- 100 ;SV109 - emergency indicator
- +1 SET ABMR("SV1",100)=$PIECE(ABMB8,"^",5)
- +2 QUIT
- 110 ;SV110 - Multiple Procedure Code
- +1 SET ABMR("SV1",110)=""
- +2 QUIT
- 120 ;SV111 - epsdt
- +1 SET ABMR("SV1",120)=""
- +2 QUIT
- 130 ;SV112 - Family Planning Indicator
- +1 SET ABMR("SV1",130)=""
- +2 QUIT
- 140 ;SV113 - Review Code
- +1 SET ABMR("SV1",140)=""
- +2 QUIT
- 150 ;SV114 - National or Local Assigned Review Value
- +1 SET ABMR("SV1",150)=""
- +2 QUIT
- 160 ;SV115 - copay status code
- +1 SET ABMR("SV1",160)=""
- 170 ;SV116 - health care professional shortage area code
- +1 SET ABMR("SV1",170)=""
- 180 ;SV117 - reference identification
- +1 SET ABMR("SV1",180)=""
- +2 QUIT
- 190 ;SV118 - postal code
- +1 SET ABMR("SV1",190)=""
- +2 QUIT
- 200 ;SV119 - monetary amount
- +1 SET ABMR("SV1",200)=""
- +2 QUIT
- 210 ;SV120 - level of care code
- +1 SET ABMR("SV1",210)=""
- +2 QUIT
- 220 ;SV121 - provider agreement code
- +1 SET ABMR("SV1",220)=""
- +2 QUIT