IBDF18E0 ;ALB/CJM - ENCOUNTER FORM - PCE DEVICE INTERFACE utilities ;04-OCT-94
;;3.0;AUTOMATED INFO COLLECTION SYS;**11,25,38,36,23**;APR 24, 1997
;
SETPXCA ;set values from TEMP() into the PXCA()
;
N NODE,NUMBER,IBQUIT,Y,Y1,X
S PROVIDER=+$P(PXCA("ENCOUNTER"),"^",4)
I PROVIDER,"^P^S^"'[("^"_$P(PXCA("ENCOUNTER"),"^",15)_"^") S $P(PXCA("ENCOUNTER"),"^",15)="S" D LOGERR^IBDF18E2(3579603,.FORMID,"",PROVIDER)
;
S NODE="" F S NODE=$O(TEMP(NODE)) Q:NODE="" S NUMBER=0,FID="" F S FID=$O(TEMP(NODE,FID)) Q:FID="" S ITEM="" F S ITEM=$O(TEMP(NODE,FID,ITEM)) Q:ITEM="" D
.S IBQUIT=0
.I NODE="PROCEDURE" S X=TEMP(NODE,FID,ITEM) D
..I $P(X,"^",2)="" S $P(X,"^",2)=1
..S Y=0 F S Y=$O(PXCA(NODE,PROVIDER,Y)) Q:'Y!(IBQUIT) D
...S Y1=$G(PXCA(NODE,PROVIDER,Y))
...I $P(X,"^")=$P(Y1,"^"),$P(X,"^",3,7)=$P(Y1,"^",3,7) S $P(PXCA(NODE,PROVIDER,Y),"^",2)=$P(PXCA(NODE,PROVIDER,Y),"^",2)+$P(X,"^",2),IBQUIT=1
..Q:IBQUIT
..S TEMP(NODE,FID,ITEM)=X
.I IBQUIT K TEMP(NODE,FID,ITEM) Q
.S NUMBER=NUMBER+1
.S PXCA(NODE,PROVIDER,NUMBER)=TEMP(NODE,FID,ITEM)
.I $D(TEMP(NODE,FID,ITEM,"MODIFIER")) D MODPXCA
.K TEMP(NODE,FID,ITEM)
;
; -- default c/o date time to now if not passed
I '$P($G(^IBD(357.09,1,1)),"^",2) D ;cont only if s/p not answerred
.I $D(PXCA("ENCOUNTER")) I $P(PXCA("ENCOUNTER"),"^",14)="" D ;quit if we are already passing c/o date/time
..N SDOE S SDOE=$$FNDSDOE^IBDFDE($S(+$G(FORMID("DFN")):+$G(FORMID("DFN")),+$G(IBDF("DFN")):+$G(IBDF("DFN")),1:$G(DFN)),$S(+$G(FORMID("APPT")):+$G(FORMID("APPT")),+$G(IBDF("APPT")):+$G(IBDF("APPT")),1:$G(APPT)))
..Q:$$COMDT^SDCOU(+SDOE) ;c/o already performed, don't overwrite
..N IBDDFN,IBDAPPT,IBDCLN,IBDCOST
..S IBDDFN=$S(+$G(FORMID("DFN")):+$G(FORMID("DFN")),+$G(IBDF("DFN")):+$G(IBDF("DFN")),1:$G(DFN))
..S IBDAPPT=$S(+$G(FORMID("APPT")):+$G(FORMID("APPT")),+$G(IBDF("APPT")):+$G(IBDF("APPT")),1:$G(APPT))
..S IBDCLN=$S(+$G(FORMID("CLINIC")):+$G(FORMID("CLINIC")),+$G(IBDF("CLINIC")):+$G(IBDF("CLINIC")),1:$G(CLN))
..S IBDCOST=$$STATUS^SDAM1(IBDDFN,IBDAPPT,IBDCLN,$G(^DPT(IBDDFN,0))) Q:$P(IBDCOST,";",5)
..S $P(PXCA("ENCOUNTER"),"^",14)=$E($$HTFM^XLFDT($H),1,12)
;
D OTHRBUB
Q
;
;
OTHRBUB ; -- check procedure and diagnosis node for other bubble, but no data
N NODE,CODE
S I=0 F S I=$O(PXCA("PROCEDURE",I)) Q:I="" S J=0 F S J=$O(PXCA("PROCEDURE",I,J)) Q:J="" D
.I +$G(PXCA("PROCEDURE",I,J))<1 D ;no code, may be treatment
..I $P($G(PXCA("PROCEDURE",I,J)),"^",6)["OTHER#" D ;no code, narr=other
...D LOGERR^IBDF18E2(3579612,.FORMID)
...K PXCA("PROCEDURE",I,J)
.I +$G(PXCA("PROCEDURE",I,J)),$P($G(PXCA("PROCEDURE",I,J)),"^",6)["OTHER#" D
..;; --change to api cpt ; dhh
..S CODE=$$CPT^ICPTCOD(CODE)
..S $P(PXCA("PROCEDURE",I,J),"^",6)=$S(+CODE'=-1:$E($P((CODE),"^",3),1,80),1:"")
;
S I=0 F S I=$O(PXCA("DIAGNOSIS/PROBLEM",I)) Q:I="" S J=0 F S J=$O(PXCA("DIAGNOSIS/PROBLEM",I,J)) Q:J="" D
.I $P($G(PXCA("DIAGNOSIS/PROBLEM",I,J)),"^",13)="" D
..S $P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13)=$E($G(^ICD9(+PXCA("DIAGNOSIS/PROBLEM",I,J),1)),1,79)
.I $P($G(PXCA("DIAGNOSIS/PROBLEM",I,J)),"^",13)["OTHER#" D
..S $P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13)=$E($G(^ICD9(+PXCA("DIAGNOSIS/PROBLEM",I,J),1)),1,79)
Q
;
PRO ; -- make sure diagnosis code is added to DIAGNOSIS/PROBLEM node
S I=0 F S I=$O(PXCA("DIAGNOSIS/PROBLEM",I)) Q:I="" S J=0 F S J=$O(PXCA("DIAGNOSIS/PROBLEM",I,J)) Q:J="" D
.I $TR($P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",5,8),"^","")']"",($P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",2)="") S $P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",2)="S" D
..D LOGERR^IBDF18E2(3579505,.FORMID,"",+PXCA("DIAGNOSIS/PROBLEM",I,J),"","","",$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13))
.Q:+$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^")
.I +$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",3) D
..S IBX=$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",3) D
...I $D(^LEX)>1 S X="LEXU" X ^%ZOSF("TEST") I $T S IBX=$$ICDONE^LEXU(IBX) S:$L(IBX)<1 IBX=799.9 Q ; clinical lexicon next version to be in ^LEX
...S X="GMPTU" X ^%ZOSF("TEST") I $T S IBX=$$ICDONE^GMPTU(IBX) S:$L(IBX)<1 IBX=799.9 Q
...S IBX=799.9
...Q
..S IBXI=+$O(^ICD9("BA",IBX_" ",0)) I +IBXI<1 S IBXI=+$O(^ICD9("BA",799.9_" ",0))
..I +IBXI<1 D LOGERR^IBDF18E2(3579506,.FORMID,"",$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",3),"","","",$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13)) Q
..S $P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^")=IBXI
..Q
.;
.; -- set diagnosis code from problem list into piece 1 of array
.I +$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",4) S $P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^")=$$PROBDIA^IBDFBK3(+$P(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",4))
Q
;
CODES ; -- if addt'l codes to pass and qual is prim or sec, send 2nd code
N VALUE,IBI,OQLFR
S OQLFR=QLFR
Q:$G(QLFR)']""
Q:"PRIMARYSECONDARYADD TO PROBLEM LIST"'[$P($G(^IBD(357.98,QLFR,0)),"^")
F IBI=3,4 S VALUE=$P($G(^IBD(357.95,FORMTYPE,1,BUB,2)),"^",IBI) Q:'$G(VALUE) D
.N QLFR,TEXT,X,Y
.D
..S X=VALUE
..I $G(^ICD9($G(X),0))="" K X S Y="" Q
..E S Y=$P(^ICD9(X,0),"^",3)
.S TEXT=Y
.S QLFR=$O(^IBD(357.98,"B",$S($E(OQLFR)="S":"SECONDARY",1:"ADD TO PROBLEM LIST"),0))
.S ITEM=ITEM_"."_IBI
.D SETTEMP^IBDF18E1
.S ITEM=$P(ITEM,".")
Q
;
TRACKING(FORMID) ;get form tracking info,sets FORMID array, which should be passed by reference, return 0 if not found
;
S NODE=$G(^IBD(357.96,FORMID,0))
Q:NODE="" 0
S FORMID("APPT")=$P(NODE,"^",3),FORMID("CLINIC")=$P(NODE,"^",10),FORMID("DFN")=$P(NODE,"^",2),FORMID("SOURCE")=$P(NODE,"^",7)
Q 1
;
SC ; -- if SC answered yes then all other classifications = null
I $P(PXCA("ENCOUNTER"),"^",6) S $P(PXCA("ENCOUNTER"),"^",7,9)="^^"
;
; - If 'no classifications' was bubbled in then all other
; classifications = null
I $P($G(PXCA("IBD NOCLASSIFICATION")),"^",3) S $P(PXCA("ENCOUNTER"),"^",6,10)="^^^^"
Q
;
INPT(DFN,APPT) ; -- determine inpatient status
N INPT
S INPT=$P($G(^DPT(+$G(DFN),"S",+$G(APPT),0)),"^",2)="I"
Q:'INPT
;
; -- kill erroneous warnings for inpatients
I $G(PXCA("WARNING","ENCOUNTER",0,0,6))["SC flag is missing" K PXCA("WARNING","ENCOUNTER",0,0,6)
I $G(PXCA("WARNING","ENCOUNTER",0,0,7))["AO flag is missing" K PXCA("WARNING","ENCOUNTER",0,0,7)
I $G(PXCA("WARNING","ENCOUNTER",0,0,8))["IR flag is missing" K PXCA("WARNING","ENCOUNTER",0,0,8)
I $G(PXCA("WARNING","ENCOUNTER",0,0,9))["EC flag is missing" K PXCA("WARNING","ENCOUNTER",0,0,9)
Q
MODPXCA ; -- copy CPT Modifier information from TEMP to PXCA
;
N MOD,MODX,MODNODE,CODE
S CODE=$P($G(TEMP(NODE,FID,ITEM)),"^")
S MOD=0 F S MOD=$O(TEMP(NODE,FID,ITEM,"MODIFIER",MOD)) Q:MOD']"" D
. S MODX=TEMP(NODE,FID,ITEM,"MODIFIER",MOD)
. S MODNODE=$$MODP^ICPTMOD(CODE,MODX)
. S:+MODNODE>0 PXCA(NODE,PROVIDER,NUMBER,MODX)=$$MOD^ICPTMOD(+MODNODE,"I")
Q
VSTPXCA ; -- copy CPT Modifier information from TEMP to PXCA for Visit
;
N I,J,MOD,MODX
S I=0 F S I=$O(TEMP("ENCOUNTER",I)) Q:I']"" D
. S J=0 F S J=$O(TEMP("ENCOUNTER",I,J)) Q:'J D
.. S MOD=0 F S MOD=$O(TEMP("ENCOUNTER",I,J,"MODIFIER",MOD)) Q:MOD']"" D
... S MODX=TEMP("ENCOUNTER",I,J,"MODIFIER",MOD)
... S PXCA("ENCOUNTER","MODIFIER",MODX)=""
K TEMP("ENCOUNTER")
Q
IBDF18E0 ;ALB/CJM - ENCOUNTER FORM - PCE DEVICE INTERFACE utilities ;04-OCT-94
+1 ;;3.0;AUTOMATED INFO COLLECTION SYS;**11,25,38,36,23**;APR 24, 1997
+2 ;
SETPXCA ;set values from TEMP() into the PXCA()
+1 ;
+2 NEW NODE,NUMBER,IBQUIT,Y,Y1,X
+3 SET PROVIDER=+$PIECE(PXCA("ENCOUNTER"),"^",4)
+4 IF PROVIDER
IF "^P^S^"'[("^"_$PIECE(PXCA("ENCOUNTER"),"^",15)_"^")
SET $PIECE(PXCA("ENCOUNTER"),"^",15)="S"
DO LOGERR^IBDF18E2(3579603,.FORMID,"",PROVIDER)
+5 ;
+6 SET NODE=""
FOR
SET NODE=$ORDER(TEMP(NODE))
IF NODE=""
QUIT
SET NUMBER=0
SET FID=""
FOR
SET FID=$ORDER(TEMP(NODE,FID))
IF FID=""
QUIT
SET ITEM=""
FOR
SET ITEM=$ORDER(TEMP(NODE,FID,ITEM))
IF ITEM=""
QUIT
Begin DoDot:1
+7 SET IBQUIT=0
+8 IF NODE="PROCEDURE"
SET X=TEMP(NODE,FID,ITEM)
Begin DoDot:2
+9 IF $PIECE(X,"^",2)=""
SET $PIECE(X,"^",2)=1
+10 SET Y=0
FOR
SET Y=$ORDER(PXCA(NODE,PROVIDER,Y))
IF 'Y!(IBQUIT)
QUIT
Begin DoDot:3
+11 SET Y1=$GET(PXCA(NODE,PROVIDER,Y))
+12 IF $PIECE(X,"^")=$PIECE(Y1,"^")
IF $PIECE(X,"^",3,7)=$PIECE(Y1,"^",3,7)
SET $PIECE(PXCA(NODE,PROVIDER,Y),"^",2)=$PIECE(PXCA(NODE,PROVIDER,Y),"^",2)+$PIECE(X,"^",2)
SET IBQUIT=1
End DoDot:3
+13 IF IBQUIT
QUIT
+14 SET TEMP(NODE,FID,ITEM)=X
End DoDot:2
+15 IF IBQUIT
KILL TEMP(NODE,FID,ITEM)
QUIT
+16 SET NUMBER=NUMBER+1
+17 SET PXCA(NODE,PROVIDER,NUMBER)=TEMP(NODE,FID,ITEM)
+18 IF $DATA(TEMP(NODE,FID,ITEM,"MODIFIER"))
DO MODPXCA
+19 KILL TEMP(NODE,FID,ITEM)
End DoDot:1
+20 ;
+21 ; -- default c/o date time to now if not passed
+22 ;cont only if s/p not answerred
IF '$PIECE($GET(^IBD(357.09,1,1)),"^",2)
Begin DoDot:1
+23 ;quit if we are already passing c/o date/time
IF $DATA(PXCA("ENCOUNTER"))
IF $PIECE(PXCA("ENCOUNTER"),"^",14)=""
Begin DoDot:2
+24 NEW SDOE
SET SDOE=$$FNDSDOE^IBDFDE($SELECT(+$GET(FORMID("DFN")):+$GET(FORMID("DFN")),+$GET(IBDF("DFN")):+$GET(IBDF("DFN")),1:$GET(DFN)),$SELECT(+$GET(FORMID("APPT")):+$GET(FORMID("APPT")),+$GET(IBDF("APPT")):+$GET(IBDF("APPT")),1:$GE
T(APPT)))
+25 ;c/o already performed, don't overwrite
IF $$COMDT^SDCOU(+SDOE)
QUIT
+26 NEW IBDDFN,IBDAPPT,IBDCLN,IBDCOST
+27 SET IBDDFN=$SELECT(+$GET(FORMID("DFN")):+$GET(FORMID("DFN")),+$GET(IBDF("DFN")):+$GET(IBDF("DFN")),1:$GET(DFN))
+28 SET IBDAPPT=$SELECT(+$GET(FORMID("APPT")):+$GET(FORMID("APPT")),+$GET(IBDF("APPT")):+$GET(IBDF("APPT")),1:$GET(APPT))
+29 SET IBDCLN=$SELECT(+$GET(FORMID("CLINIC")):+$GET(FORMID("CLINIC")),+$GET(IBDF("CLINIC")):+$GET(IBDF("CLINIC")),1:$GET(CLN))
+30 SET IBDCOST=$$STATUS^SDAM1(IBDDFN,IBDAPPT,IBDCLN,$GET(^DPT(IBDDFN,0)))
IF $PIECE(IBDCOST,";",5)
QUIT
+31 SET $PIECE(PXCA("ENCOUNTER"),"^",14)=$EXTRACT($$HTFM^XLFDT($HOROLOG),1,12)
End DoDot:2
End DoDot:1
+32 ;
+33 DO OTHRBUB
+34 QUIT
+35 ;
+36 ;
OTHRBUB ; -- check procedure and diagnosis node for other bubble, but no data
+1 NEW NODE,CODE
+2 SET I=0
FOR
SET I=$ORDER(PXCA("PROCEDURE",I))
IF I=""
QUIT
SET J=0
FOR
SET J=$ORDER(PXCA("PROCEDURE",I,J))
IF J=""
QUIT
Begin DoDot:1
+3 ;no code, may be treatment
IF +$GET(PXCA("PROCEDURE",I,J))<1
Begin DoDot:2
+4 ;no code, narr=other
IF $PIECE($GET(PXCA("PROCEDURE",I,J)),"^",6)["OTHER#"
Begin DoDot:3
+5 DO LOGERR^IBDF18E2(3579612,.FORMID)
+6 KILL PXCA("PROCEDURE",I,J)
End DoDot:3
End DoDot:2
+7 IF +$GET(PXCA("PROCEDURE",I,J))
IF $PIECE($GET(PXCA("PROCEDURE",I,J)),"^",6)["OTHER#"
Begin DoDot:2
+8 ;; --change to api cpt ; dhh
+9 SET CODE=$$CPT^ICPTCOD(CODE)
+10 SET $PIECE(PXCA("PROCEDURE",I,J),"^",6)=$SELECT(+CODE'=-1:$EXTRACT($PIECE((CODE),"^",3),1,80),1:"")
End DoDot:2
End DoDot:1
+11 ;
+12 SET I=0
FOR
SET I=$ORDER(PXCA("DIAGNOSIS/PROBLEM",I))
IF I=""
QUIT
SET J=0
FOR
SET J=$ORDER(PXCA("DIAGNOSIS/PROBLEM",I,J))
IF J=""
QUIT
Begin DoDot:1
+13 IF $PIECE($GET(PXCA("DIAGNOSIS/PROBLEM",I,J)),"^",13)=""
Begin DoDot:2
+14 SET $PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13)=$EXTRACT($GET(^ICD9(+PXCA("DIAGNOSIS/PROBLEM",I,J),1)),1,79)
End DoDot:2
+15 IF $PIECE($GET(PXCA("DIAGNOSIS/PROBLEM",I,J)),"^",13)["OTHER#"
Begin DoDot:2
+16 SET $PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13)=$EXTRACT($GET(^ICD9(+PXCA("DIAGNOSIS/PROBLEM",I,J),1)),1,79)
End DoDot:2
End DoDot:1
+17 QUIT
+18 ;
PRO ; -- make sure diagnosis code is added to DIAGNOSIS/PROBLEM node
+1 SET I=0
FOR
SET I=$ORDER(PXCA("DIAGNOSIS/PROBLEM",I))
IF I=""
QUIT
SET J=0
FOR
SET J=$ORDER(PXCA("DIAGNOSIS/PROBLEM",I,J))
IF J=""
QUIT
Begin DoDot:1
+2 IF $TRANSLATE($PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",5,8),"^","")']""
IF ($PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",2)="")
SET $PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",2)="S"
Begin DoDot:2
+3 DO LOGERR^IBDF18E2(3579505,.FORMID,"",+PXCA("DIAGNOSIS/PROBLEM",I,J),"","","",$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13))
End DoDot:2
+4 IF +$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^")
QUIT
+5 IF +$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",3)
Begin DoDot:2
+6 SET IBX=$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",3)
Begin DoDot:3
+7 ; clinical lexicon next version to be in ^LEX
IF $DATA(^LEX)>1
SET X="LEXU"
XECUTE ^%ZOSF("TEST")
IF $TEST
SET IBX=$$ICDONE^LEXU(IBX)
IF $LENGTH(IBX)<1
SET IBX=799.9
QUIT
+8 SET X="GMPTU"
XECUTE ^%ZOSF("TEST")
IF $TEST
SET IBX=$$ICDONE^GMPTU(IBX)
IF $LENGTH(IBX)<1
SET IBX=799.9
QUIT
+9 SET IBX=799.9
+10 QUIT
End DoDot:3
+11 SET IBXI=+$ORDER(^ICD9("BA",IBX_" ",0))
IF +IBXI<1
SET IBXI=+$ORDER(^ICD9("BA",799.9_" ",0))
+12 IF +IBXI<1
DO LOGERR^IBDF18E2(3579506,.FORMID,"",$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",3),"","","",$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",13))
QUIT
+13 SET $PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^")=IBXI
+14 QUIT
End DoDot:2
+15 ;
+16 ; -- set diagnosis code from problem list into piece 1 of array
+17 IF +$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",4)
SET $PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^")=$$PROBDIA^IBDFBK3(+$PIECE(PXCA("DIAGNOSIS/PROBLEM",I,J),"^",4))
End DoDot:1
+18 QUIT
+19 ;
CODES ; -- if addt'l codes to pass and qual is prim or sec, send 2nd code
+1 NEW VALUE,IBI,OQLFR
+2 SET OQLFR=QLFR
+3 IF $GET(QLFR)']""
QUIT
+4 IF "PRIMARYSECONDARYADD TO PROBLEM LIST"'[$PIECE($GET(^IBD(357.98,QLFR,0)),"^")
QUIT
+5 FOR IBI=3,4
SET VALUE=$PIECE($GET(^IBD(357.95,FORMTYPE,1,BUB,2)),"^",IBI)
IF '$GET(VALUE)
QUIT
Begin DoDot:1
+6 NEW QLFR,TEXT,X,Y
+7 Begin DoDot:2
+8 SET X=VALUE
+9 IF $GET(^ICD9($GET(X),0))=""
KILL X
SET Y=""
QUIT
+10 IF '$TEST
SET Y=$PIECE(^ICD9(X,0),"^",3)
End DoDot:2
+11 SET TEXT=Y
+12 SET QLFR=$ORDER(^IBD(357.98,"B",$SELECT($EXTRACT(OQLFR)="S":"SECONDARY",1:"ADD TO PROBLEM LIST"),0))
+13 SET ITEM=ITEM_"."_IBI
+14 DO SETTEMP^IBDF18E1
+15 SET ITEM=$PIECE(ITEM,".")
End DoDot:1
+16 QUIT
+17 ;
TRACKING(FORMID) ;get form tracking info,sets FORMID array, which should be passed by reference, return 0 if not found
+1 ;
+2 SET NODE=$GET(^IBD(357.96,FORMID,0))
+3 IF NODE=""
QUIT 0
+4 SET FORMID("APPT")=$PIECE(NODE,"^",3)
SET FORMID("CLINIC")=$PIECE(NODE,"^",10)
SET FORMID("DFN")=$PIECE(NODE,"^",2)
SET FORMID("SOURCE")=$PIECE(NODE,"^",7)
+5 QUIT 1
+6 ;
SC ; -- if SC answered yes then all other classifications = null
+1 IF $PIECE(PXCA("ENCOUNTER"),"^",6)
SET $PIECE(PXCA("ENCOUNTER"),"^",7,9)="^^"
+2 ;
+3 ; - If 'no classifications' was bubbled in then all other
+4 ; classifications = null
+5 IF $PIECE($GET(PXCA("IBD NOCLASSIFICATION")),"^",3)
SET $PIECE(PXCA("ENCOUNTER"),"^",6,10)="^^^^"
+6 QUIT
+7 ;
INPT(DFN,APPT) ; -- determine inpatient status
+1 NEW INPT
+2 SET INPT=$PIECE($GET(^DPT(+$GET(DFN),"S",+$GET(APPT),0)),"^",2)="I"
+3 IF 'INPT
QUIT
+4 ;
+5 ; -- kill erroneous warnings for inpatients
+6 IF $GET(PXCA("WARNING","ENCOUNTER",0,0,6))["SC flag is missing"
KILL PXCA("WARNING","ENCOUNTER",0,0,6)
+7 IF $GET(PXCA("WARNING","ENCOUNTER",0,0,7))["AO flag is missing"
KILL PXCA("WARNING","ENCOUNTER",0,0,7)
+8 IF $GET(PXCA("WARNING","ENCOUNTER",0,0,8))["IR flag is missing"
KILL PXCA("WARNING","ENCOUNTER",0,0,8)
+9 IF $GET(PXCA("WARNING","ENCOUNTER",0,0,9))["EC flag is missing"
KILL PXCA("WARNING","ENCOUNTER",0,0,9)
+10 QUIT
MODPXCA ; -- copy CPT Modifier information from TEMP to PXCA
+1 ;
+2 NEW MOD,MODX,MODNODE,CODE
+3 SET CODE=$PIECE($GET(TEMP(NODE,FID,ITEM)),"^")
+4 SET MOD=0
FOR
SET MOD=$ORDER(TEMP(NODE,FID,ITEM,"MODIFIER",MOD))
IF MOD']""
QUIT
Begin DoDot:1
+5 SET MODX=TEMP(NODE,FID,ITEM,"MODIFIER",MOD)
+6 SET MODNODE=$$MODP^ICPTMOD(CODE,MODX)
+7 IF +MODNODE>0
SET PXCA(NODE,PROVIDER,NUMBER,MODX)=$$MOD^ICPTMOD(+MODNODE,"I")
End DoDot:1
+8 QUIT
VSTPXCA ; -- copy CPT Modifier information from TEMP to PXCA for Visit
+1 ;
+2 NEW I,J,MOD,MODX
+3 SET I=0
FOR
SET I=$ORDER(TEMP("ENCOUNTER",I))
IF I']""
QUIT
Begin DoDot:1
+4 SET J=0
FOR
SET J=$ORDER(TEMP("ENCOUNTER",I,J))
IF 'J
QUIT
Begin DoDot:2
+5 SET MOD=0
FOR
SET MOD=$ORDER(TEMP("ENCOUNTER",I,J,"MODIFIER",MOD))
IF MOD']""
QUIT
Begin DoDot:3
+6 SET MODX=TEMP("ENCOUNTER",I,J,"MODIFIER",MOD)
+7 SET PXCA("ENCOUNTER","MODIFIER",MODX)=""
End DoDot:3
End DoDot:2
End DoDot:1
+8 KILL TEMP("ENCOUNTER")
+9 QUIT