ABME5DMG ; IHS/ASDST/DMJ - 837 DMG Segment
;;2.6;IHS Third Party Billing System;**6**;NOV 12, 2009;Build 379
;Demographic Information
EP(X,Y) ;EP
;x=file
;y=ien
K ABMREC("DMG"),ABMR("DMG")
S ABME("RTYPE")="DMG"
S ABMFILE=X
S ABMFIEN=Y
S:X=3 ABMFILE=9000003.1
D LOOP
K ABME,ABM,ABMFILE
Q
LOOP ;LOOP HERE
F I=10:10:100 D
.D @I
.I $D(^ABMEXLM("AA",+$G(ABMP("INS")),+$G(ABMP("EXP")),ABME("RTYPE"),I)) D @(^(I))
.I $G(ABMREC("DMG"))'="" S ABMREC("DMG")=ABMREC("DMG")_"*"
.S ABMREC("DMG")=$G(ABMREC("DMG"))_ABMR("DMG",I)
Q
10 ;segment
S ABMR("DMG",10)="DMG"
Q
20 ;DMG01 - Date Time Period Format Qualifier
S ABMR("DMG",20)="D8"
Q
30 ;DMG02 - Date of Birth
N ABMTMPT,ABMTMPI,ABMTMPHI
S ABMDOB=0
S ABMTMPT=$P(ABMP("INS",ABMI),U,2) ;ins type
; if Medicaid or Kidscare, get Medicaid DOB
I ABMTMPT="K"!(ABMTMPT="D") D
.S ABMTMPI=$P(ABMP("INS",ABMI),U,6) ;ien to MCD Elig.
.Q:'+ABMTMPI
.S ABMDOB=$P($G(^AUPNMCD(ABMTMPI,21)),U,2)
; else if Medicare, get Medicare DOB
E I ABMTMPT="R" S ABMDOB=$P($G(^AUPNMCR(ABMP("PDFN"),21)),U,2)
; else must be private, get Policy Holder DOB
E D
.S ABMTMPI=$P(ABMP("INS",ABMI),U,8) ;IEN ins mult of prvt elig
.Q:'+ABMTMPI
.S ABMTMPHI=$P($G(^AUPNPRVT(ABMP("PDFN"),11,ABMTMPI,0)),U,8)
.Q:'+ABMTMPHI
.S:ABMCHILD ABMDOB=$P($G(^AUPN3PPH(ABMTMPHI,0)),U,19)
;if no DOB for subscriber, pull patient's DOB
I '+ABMDOB S ABMDOB=$P($G(^DPT(ABMP("PDFN"),0)),U,3)
I +ABMDOB S ABMR("DMG",30)=$$Y2KD2^ABMDUTL(ABMDOB)
Q
40 ;DMG03 - Gender Code
S ABMR("DMG",40)=""
I ABMFILE=2 D
.S ABMR("DMG",40)=$P(^DPT(ABMFIEN,0),"^",2)
I ABMFILE=9000003.1 D
.S ABMR("DMG",40)=$P(^AUPN3PPH(ABMFIEN,0),"^",8)
S:ABMR("DMG",40)="" ABMR("DMG",40)="U"
Q
50 ;DMG04 - Marital Status Code
S ABMR("DMG",50)=""
Q
60 ;DMG05 - Race or Ethnicity Code
S ABMR("DMG",60)=""
Q
70 ;DMG06 - Citizenship Status Code
S ABMR("DMG",70)=""
Q
80 ;DMG07 - Country Code
S ABMR("DMG",80)=""
Q
90 ;DMG08 - Basis of Verification Code
S ABMR("DMG",90)=""
Q
100 ;DMG09 - Quantity
S ABMR("DMG",100)=""
Q
110 ;DMG10 - Code List Qualifier Code
S ABMR("DMG",110)=""
Q
120 ;DMG11 - Industry Code
S ABMR("DMG",120)=""
Q
ABME5DMG ; IHS/ASDST/DMJ - 837 DMG Segment
+1 ;;2.6;IHS Third Party Billing System;**6**;NOV 12, 2009;Build 379
+2 ;Demographic Information
EP(X,Y) ;EP
+1 ;x=file
+2 ;y=ien
+3 KILL ABMREC("DMG"),ABMR("DMG")
+4 SET ABME("RTYPE")="DMG"
+5 SET ABMFILE=X
+6 SET ABMFIEN=Y
+7 IF X=3
SET ABMFILE=9000003.1
+8 DO LOOP
+9 KILL ABME,ABM,ABMFILE
+10 QUIT
LOOP ;LOOP HERE
+1 FOR I=10:10:100
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("DMG"))'=""
SET ABMREC("DMG")=ABMREC("DMG")_"*"
+5 SET ABMREC("DMG")=$GET(ABMREC("DMG"))_ABMR("DMG",I)
End DoDot:1
+6 QUIT
10 ;segment
+1 SET ABMR("DMG",10)="DMG"
+2 QUIT
20 ;DMG01 - Date Time Period Format Qualifier
+1 SET ABMR("DMG",20)="D8"
+2 QUIT
30 ;DMG02 - Date of Birth
+1 NEW ABMTMPT,ABMTMPI,ABMTMPHI
+2 SET ABMDOB=0
+3 ;ins type
SET ABMTMPT=$PIECE(ABMP("INS",ABMI),U,2)
+4 ; if Medicaid or Kidscare, get Medicaid DOB
+5 IF ABMTMPT="K"!(ABMTMPT="D")
Begin DoDot:1
+6 ;ien to MCD Elig.
SET ABMTMPI=$PIECE(ABMP("INS",ABMI),U,6)
+7 IF '+ABMTMPI
QUIT
+8 SET ABMDOB=$PIECE($GET(^AUPNMCD(ABMTMPI,21)),U,2)
End DoDot:1
+9 ; else if Medicare, get Medicare DOB
+10 IF '$TEST
IF ABMTMPT="R"
SET ABMDOB=$PIECE($GET(^AUPNMCR(ABMP("PDFN"),21)),U,2)
+11 ; else must be private, get Policy Holder DOB
+12 IF '$TEST
Begin DoDot:1
+13 ;IEN ins mult of prvt elig
SET ABMTMPI=$PIECE(ABMP("INS",ABMI),U,8)
+14 IF '+ABMTMPI
QUIT
+15 SET ABMTMPHI=$PIECE($GET(^AUPNPRVT(ABMP("PDFN"),11,ABMTMPI,0)),U,8)
+16 IF '+ABMTMPHI
QUIT
+17 IF ABMCHILD
SET ABMDOB=$PIECE($GET(^AUPN3PPH(ABMTMPHI,0)),U,19)
End DoDot:1
+18 ;if no DOB for subscriber, pull patient's DOB
+19 IF '+ABMDOB
SET ABMDOB=$PIECE($GET(^DPT(ABMP("PDFN"),0)),U,3)
+20 IF +ABMDOB
SET ABMR("DMG",30)=$$Y2KD2^ABMDUTL(ABMDOB)
+21 QUIT
40 ;DMG03 - Gender Code
+1 SET ABMR("DMG",40)=""
+2 IF ABMFILE=2
Begin DoDot:1
+3 SET ABMR("DMG",40)=$PIECE(^DPT(ABMFIEN,0),"^",2)
End DoDot:1
+4 IF ABMFILE=9000003.1
Begin DoDot:1
+5 SET ABMR("DMG",40)=$PIECE(^AUPN3PPH(ABMFIEN,0),"^",8)
End DoDot:1
+6 IF ABMR("DMG",40)=""
SET ABMR("DMG",40)="U"
+7 QUIT
50 ;DMG04 - Marital Status Code
+1 SET ABMR("DMG",50)=""
+2 QUIT
60 ;DMG05 - Race or Ethnicity Code
+1 SET ABMR("DMG",60)=""
+2 QUIT
70 ;DMG06 - Citizenship Status Code
+1 SET ABMR("DMG",70)=""
+2 QUIT
80 ;DMG07 - Country Code
+1 SET ABMR("DMG",80)=""
+2 QUIT
90 ;DMG08 - Basis of Verification Code
+1 SET ABMR("DMG",90)=""
+2 QUIT
100 ;DMG09 - Quantity
+1 SET ABMR("DMG",100)=""
+2 QUIT
110 ;DMG10 - Code List Qualifier Code
+1 SET ABMR("DMG",110)=""
+2 QUIT
120 ;DMG11 - Industry Code
+1 SET ABMR("DMG",120)=""
+2 QUIT