ABMUCAPI ; IHS/SD/SDR - 3PB/UFMS CAN crosswalk API
;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
;
; New routine - v2.5 p12 SDD item 4.2
; Budget activity and Cost Center will be used along with the
; ASUFAC to find the CAN in the IE for UFMS. The CAN tables
; will be maintained in the IE.
;
EP(W,X,Y,Z) ;PEP - Returns BUDGET ACTIVITY^COST CENTER or -1 for ea. if
; it can't find effective entry
;w=insurer type
;x=clinic ptr
;y=date/time approved (FM format)
;z=ASUFAC for location
S ABMIT=W
S ABMC=$P($G(^DIC(40.7,X,0)),U,2) ;clinic code
S ABMDT=Y
S ABMASUF=Z
;
S U="^"
S ABMRTURN=""
;
;acct pt/federal loc
;S ABMACTPT=""
;S ABMFLOC=""
;S ABMTIEN=$O(^ABMUAPFL("C",ABMASUF,0))
;I +ABMTIEN'=0 D
;.S ABMEFDT=$P($G(^ABMUAPFL(ABMTIEN,0)),U,5)
;.S ABMENDT=$P($G(^ABMUAPFL(ABMTIEN,0)),U,6)
;.I (ABMEFDT=ABMDT!(ABMEFDT<ABMDT)),((ABMENDT="")!(ABMENDT>ABMDT)) D
;..S ABMACTPT=$P($G(^ABMUAPFL(ABMTIEN,0)),U,3)
;..S ABMFLOC=$P($G(^ABMUAPFL(ABMTIEN,0)),U,4)
;S ABMACTPT=$$FMT^ABMERUTL(ABMACTPT,"3NR")
;S ABMFLOC=$$FMT^ABMERUTL(ABMFLOC,"4NR")
;S ABMRTURN=ABMACTPT_ABMFLOC
;
;budget activity
S ABMTIEN=0
S ABMAFLG=0
S ABMAREA=$E(ABMASUF,1,2)
S ABMAREA=$O(^AUTTAREA("C",ABMAREA,0))
F S ABMTIEN=$O(^ABMUITBA("C",ABMAREA,ABMIT,ABMTIEN)) Q:+ABMTIEN=0 D Q:ABMAFLG=1
.S ABMREC=$G(^ABMUITBA(ABMTIEN,0))
.S ABMEFDT=$P(ABMREC,U,3)
.S ABMENDDT=$P(ABMREC,U,4)
.I (ABMEFDT=ABMDT!(ABMEFDT<ABMDT)),((ABMENDDT="")!(ABMENDDT>ABMDT)) D
..S ABMAFLG=1
S ABMRTURN=ABMRTURN_$$FMT^ABMERUTL($S(+ABMTIEN'=0:$P($G(^ABMUITBA(ABMTIEN,0)),U,2),1:""),"10R")
;
;cost center
S ABMAFLG=0
S ABMTIEN=0
S:$G(ABMC)="" ABMC="XX" ;default
F S ABMTIEN=$O(^ABMUCTCC("B",ABMC,ABMTIEN)) Q:+ABMTIEN=0 D Q:ABMAFLG=1
.S ABMREC=$G(^ABMUCTCC(ABMTIEN,0))
.S ABMEFDT=$P(ABMREC,U,4)
.S ABMENDDT=$P(ABMREC,U,5)
.I (ABMEFDT=ABMDT!(ABMEFDT<ABMDT)),((ABMENDDT="")!(ABMENDDT>ABMDT)) D
..S ABMAFLG=1
S ABMRTURN=ABMRTURN_$$FMT^ABMERUTL($S(+ABMTIEN'=0:$P($G(^ABMUCTCC(ABMTIEN,0)),U,3),1:""),"3R")
;
Q ABMRTURN
;
COSTCENT(X,Y) ;PEP - return cost center and cost center desc. only
;x=clinic ptr
;y=date/time approved (FM format)
S ABMC=$P($G(^DIC(40.7,X,0)),U,2) ;clinic code
S ABMDT=Y
;
S ABMAFLG=0
S ABMTIEN=0
S:$G(ABMC)="" ABMC="XX" ;default
F S ABMTIEN=$O(^ABMUCTCC("B",ABMC,ABMTIEN)) Q:+ABMTIEN=0 D Q:ABMAFLG=1
.S ABMREC=$G(^ABMUCTCC(ABMTIEN,0))
.S ABMEFDT=$P(ABMREC,U,4)
.S ABMENDDT=$P(ABMREC,U,5)
.I (ABMEFDT=ABMDT!(ABMEFDT<ABMDT)),((ABMENDDT="")!(ABMENDDT>ABMDT)) D
..S ABMAFLG=1
S:+ABMTIEN'=0 ABMRTURN=$P($G(^ABMUCTCC(ABMTIEN,0)),U,3)_"^"_$P($G(^ABMUCTCC(ABMTIEN,0)),U,6)
Q ABMRTURN
ABMUCAPI ; IHS/SD/SDR - 3PB/UFMS CAN crosswalk API
+1 ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
+2 ;
+3 ; New routine - v2.5 p12 SDD item 4.2
+4 ; Budget activity and Cost Center will be used along with the
+5 ; ASUFAC to find the CAN in the IE for UFMS. The CAN tables
+6 ; will be maintained in the IE.
+7 ;
EP(W,X,Y,Z) ;PEP - Returns BUDGET ACTIVITY^COST CENTER or -1 for ea. if
+1 ; it can't find effective entry
+2 ;w=insurer type
+3 ;x=clinic ptr
+4 ;y=date/time approved (FM format)
+5 ;z=ASUFAC for location
+6 SET ABMIT=W
+7 ;clinic code
SET ABMC=$PIECE($GET(^DIC(40.7,X,0)),U,2)
+8 SET ABMDT=Y
+9 SET ABMASUF=Z
+10 ;
+11 SET U="^"
+12 SET ABMRTURN=""
+13 ;
+14 ;acct pt/federal loc
+15 ;S ABMACTPT=""
+16 ;S ABMFLOC=""
+17 ;S ABMTIEN=$O(^ABMUAPFL("C",ABMASUF,0))
+18 ;I +ABMTIEN'=0 D
+19 ;.S ABMEFDT=$P($G(^ABMUAPFL(ABMTIEN,0)),U,5)
+20 ;.S ABMENDT=$P($G(^ABMUAPFL(ABMTIEN,0)),U,6)
+21 ;.I (ABMEFDT=ABMDT!(ABMEFDT<ABMDT)),((ABMENDT="")!(ABMENDT>ABMDT)) D
+22 ;..S ABMACTPT=$P($G(^ABMUAPFL(ABMTIEN,0)),U,3)
+23 ;..S ABMFLOC=$P($G(^ABMUAPFL(ABMTIEN,0)),U,4)
+24 ;S ABMACTPT=$$FMT^ABMERUTL(ABMACTPT,"3NR")
+25 ;S ABMFLOC=$$FMT^ABMERUTL(ABMFLOC,"4NR")
+26 ;S ABMRTURN=ABMACTPT_ABMFLOC
+27 ;
+28 ;budget activity
+29 SET ABMTIEN=0
+30 SET ABMAFLG=0
+31 SET ABMAREA=$EXTRACT(ABMASUF,1,2)
+32 SET ABMAREA=$ORDER(^AUTTAREA("C",ABMAREA,0))
+33 FOR
SET ABMTIEN=$ORDER(^ABMUITBA("C",ABMAREA,ABMIT,ABMTIEN))
IF +ABMTIEN=0
QUIT
Begin DoDot:1
+34 SET ABMREC=$GET(^ABMUITBA(ABMTIEN,0))
+35 SET ABMEFDT=$PIECE(ABMREC,U,3)
+36 SET ABMENDDT=$PIECE(ABMREC,U,4)
+37 IF (ABMEFDT=ABMDT!(ABMEFDT<ABMDT))
IF ((ABMENDDT="")!(ABMENDDT>ABMDT))
Begin DoDot:2
+38 SET ABMAFLG=1
End DoDot:2
End DoDot:1
IF ABMAFLG=1
QUIT
+39 SET ABMRTURN=ABMRTURN_$$FMT^ABMERUTL($SELECT(+ABMTIEN'=0:$PIECE($GET(^ABMUITBA(ABMTIEN,0)),U,2),1:""),"10R")
+40 ;
+41 ;cost center
+42 SET ABMAFLG=0
+43 SET ABMTIEN=0
+44 ;default
IF $GET(ABMC)=""
SET ABMC="XX"
+45 FOR
SET ABMTIEN=$ORDER(^ABMUCTCC("B",ABMC,ABMTIEN))
IF +ABMTIEN=0
QUIT
Begin DoDot:1
+46 SET ABMREC=$GET(^ABMUCTCC(ABMTIEN,0))
+47 SET ABMEFDT=$PIECE(ABMREC,U,4)
+48 SET ABMENDDT=$PIECE(ABMREC,U,5)
+49 IF (ABMEFDT=ABMDT!(ABMEFDT<ABMDT))
IF ((ABMENDDT="")!(ABMENDDT>ABMDT))
Begin DoDot:2
+50 SET ABMAFLG=1
End DoDot:2
End DoDot:1
IF ABMAFLG=1
QUIT
+51 SET ABMRTURN=ABMRTURN_$$FMT^ABMERUTL($SELECT(+ABMTIEN'=0:$PIECE($GET(^ABMUCTCC(ABMTIEN,0)),U,3),1:""),"3R")
+52 ;
+53 QUIT ABMRTURN
+54 ;
COSTCENT(X,Y) ;PEP - return cost center and cost center desc. only
+1 ;x=clinic ptr
+2 ;y=date/time approved (FM format)
+3 ;clinic code
SET ABMC=$PIECE($GET(^DIC(40.7,X,0)),U,2)
+4 SET ABMDT=Y
+5 ;
+6 SET ABMAFLG=0
+7 SET ABMTIEN=0
+8 ;default
IF $GET(ABMC)=""
SET ABMC="XX"
+9 FOR
SET ABMTIEN=$ORDER(^ABMUCTCC("B",ABMC,ABMTIEN))
IF +ABMTIEN=0
QUIT
Begin DoDot:1
+10 SET ABMREC=$GET(^ABMUCTCC(ABMTIEN,0))
+11 SET ABMEFDT=$PIECE(ABMREC,U,4)
+12 SET ABMENDDT=$PIECE(ABMREC,U,5)
+13 IF (ABMEFDT=ABMDT!(ABMEFDT<ABMDT))
IF ((ABMENDDT="")!(ABMENDDT>ABMDT))
Begin DoDot:2
+14 SET ABMAFLG=1
End DoDot:2
End DoDot:1
IF ABMAFLG=1
QUIT
+15 IF +ABMTIEN'=0
SET ABMRTURN=$PIECE($GET(^ABMUCTCC(ABMTIEN,0)),U,3)_"^"_$PIECE($GET(^ABMUCTCC(ABMTIEN,0)),U,6)
+16 QUIT ABMRTURN