SCENIA2 ;ALB/SCK - INCOMPLETE ENCOUNTER ERROR DISPLAY PROTOCOLS, CONT. ; OCT 21, 1998
;;5.3;Scheduling;**66,132,158,560**;AUG 13, 1993;Build 8
;
EVT1(SDXMT,INF) ; Returns ifn for ^SC(clinic,"S",date,1,ifn)
N SINDX,SDDA
;
S SINDX=0 F S SINDX=$O(^SC(INF("CLINIC"),"S",INF("ENCOUNTER"),1,SINDX)) Q:'SINDX>0 D Q:$D(SDDA)
. I +^SC(INF("CLINIC"),"S",INF("ENCOUNTER"),1,SINDX,0)=INF("DFN") S SDDA=SINDX
Q $G(SDDA)
;
EI ; Entry point for the SCENI ENCOUNTER INFORMATION protocol
I '$D(SD53P158) N SD53P158 S SD53P158="LM" ; Called via LM.
I '$D(^XUSEC("SCENI ENCOUNTER EDIT",DUZ)) D Q
. W !,$C(7),"You do not have this security key, contact your supervisor."
;
N SDATA,SCEN,SDXMT,SCXER,SDOE,SCINF,SCSTAT,SDEVT,SDHDL,SDDA,SCELAP,SCSTPLC,OLDSC,SDQUIT,SDLOG
N SDFLAG,SDVST S SDFLAG=0,SDVST="" ;SD*560
;
K PARENT,VISIT
D HDLKILL^SDAMEVT
S SDXMT=$G(^TMP("SCENI XMT",$J,0)) Q:'SDXMT
S SCSTAT=$$OPENC^SCUTIE1(SDXMT,"SCINF")
I SCSTAT<0 D G EIQ
. W !!,$C(7),"Entry "_$P(^SD(409.73,SDXMT,0),U),?5,$G(SCINF("ERROR"))
. D PAUSE^VALM1
;
I SCSTAT>0 D G EIQ
. W !!,$C(7),"This is a deleted entry. Encounter information cannot be changed."
. D PAUSE^VALM1
;
S DFN=SCINF("DFN")
S SDOE=$P(^SD(409.73,SDXMT,0),U,2)
S SDHDL=$$HANDLE^SDAMEVT($P($G(^SCE(SDOE,0)),U,8)),SDDA=$$EVT1(SDXMT,.SCINF)
Q:SDHDL']""
;
S:'SDDA SDFLAG=1 ;SD*5.3*560 encounter not associated w/sched appt
S SDATA=SDDA_"^"_DFN_"^"_SCINF("ENCOUNTER")_"^"_SCINF("CLINIC")
S SDQUIT=0
;
L +^SCE(SDOE):0 I '$T D G EIQ
. W !?5,$CHAR(7),"Another user is editing this entry"
I SD53P158="LM" D FULL^VALM1
K DIRUT
W !
D BEFORE^SDAMEVT(.SDATA,DFN,SCINF("ENCOUNTER"),SCINF("CLINIC"),SDDA,SDHDL)
;
K OLDSC,SDEDT S OLDSC=+$P($G(^SCE(SDOE,0)),U,3),SDEDT=$P(^(0),U,1)
EI1 S DIR(0)="409.68,.03",DA=SDOE
D ^DIR K DIR G:$D(DIRUT)!(Y="") EIQ
;SD*560 do not allow if Inactive at time of encounter
I $P(^DIC(40.7,+Y,0),U,3)'="" I $P(^(0),U,3)'>SDEDT D G EI1
.W !!,"Sorry, that Stop Code was INACTIVE at the time of the selected encounter.",!
;SD*560 do not allow if Restriction Type is "S"
I $P(^DIC(40.7,+Y,0),U,6)="S" I $P(^(0),U,7)'>SDEDT D G EI1
.W !!,"Sorry, the Restriction Type for that Stop Code is 'S' (secondary only).",!,"You cannot select this stop code.",!
S $P(SCSTPLC,U)=+Y
D SET(+Y,.03,SDOE)
I SDFLAG I OLDSC'=+Y D SET1(+Y,SDOE,1) ;SD*560 set Visit & Trans flag
;
K OLDDV S OLDDV=+$P($G(^SCE(SDOE,0)),U,11) ;SD*560 get current Division
S DIR(0)="409.68,.11",DA=SDOE
D ^DIR K DIR G:$D(DIRUT)!(Y="") A1
S $P(SCSTPLC,U,2)=+Y
D SET(+Y,.11,SDOE)
I OLDDV'=+Y D SETDV(+Y,SDOE) ;SD*560 set Visit & Trans flag
K OLDDV
;
; ** Display current Appt. Type and Elig. Codes
N SD1,OLDAT S (SD1,OLDAT)=$P($G(^SCE(SDOE,0)),U,10) ;SD*560 add OLDAT
W !!!,$C(7),"Current Appointment Type for Encounter: "_$S($G(SD1):$P(^SD(409.1,SD1,0),U),1:"")
K SD1,OLDELG S (SD1,OLDELG)=$P($G(^SCE(SDOE,0)),U,13) ;sD*560 add OLDELG
W !,"Current Eligibility for Encounter: "_$S($G(SD1):$P(^DIC(8,SD1,0),U),1:""),!
;
S DIR(0)="YA",DIR("B")="NO",DIR("A")="Change Eligibility/Appointment type? " D ^DIR K DIR G:$D(DIRUT)!(Y=0) A1
;
;SD*560 if SC Indicator in Visit equals 1 (Service Connected) do not allow edit of Appt Type or Eligibility
I $P(^SCE(SDOE,0),U,10)'=10 S SDVST=$P(^SCE(SDOE,0),U,5) I $D(^AUPNVSIT(SDVST,800)) I +$G(^(800))=1 D G A1
.W !!,"The Visit associated with the selected encounter is SERVICE CONNECTED."
.W !,"You cannot edit the Appointment Type or Eligibility for this encounter.",!
;
W !,"The following are system defaults only.",!
;
S SCELAP=$$ELAP^SDPCE(DFN,SCINF("CLINIC"))
;
N SDPRIM
S SDPRIM=$$ONEELIG
;if only a primary ask if they want to change to it and change
I SDPRIM,+SDPRIM'=SD1 DO
.N DIR
.S DIR(0)="YA",DIR("B")="YES"
.S DIR("A",1)="There is only a primary eligibility for this patient: "_$P(SDPRIM,U,2)
.S DIR("A")="Do you wish to change the encounter to this? "
.S DIR("?")="No other Eligibilities are selectable."
.S DIR("?",1)="YES will result in the current primary Eligibility being used for the encounter."
.S DIR("?",2)="NO will result in the encounter's Eligibility being left the same."
.D ^DIR
.I Y=1 S $P(SCELAP,U,1)=+SDPRIM,$P(SCELAP,U,2)=$P(SDPRIM,U,2)
.E S $P(SCELAP,U,1)=SD1,$P(SCELAP,U,2)=$P($G(^DIC(8,+SD1,0)),U,1)
.Q
;
D SET(+SCELAP,.13,SDOE)
;SD*560 if Elig edited on non-appt encounter, update Visit & Trans flag
I SDFLAG I OLDELG'=+SCELAP D SET1(+SCELAP,SDOE,2)
D SET(+$P(SCELAP,U,3),.1,SDOE)
;
A1 D RESYNC(SCSTPLC,$G(SCELAP),SDOE,OLDSC,DFN)
D LOGDATA^SDAPIAP(SDOE,.SDLOG)
D AFTER^SDAMEVT(.SDATA,DFN,SCINF("ENCOUNTER"),SCINF("CLINIC"),SDDA,SDHDL)
;
D EVT^SDAMEVT(.SDATA,5,0,SDHDL)
I '$D(SDOK) D I $G(RTN)<0 G EIQ
. S RTN=$$VALIDATE^SCMSVUT2(SDXMT)
. I RTN<0 D ERMSG^SCENIA1(5) Q
. S RTN=$$SETRFLG^SCENIA1(SDXMT)
. I RTN<0 D ERMSG^SCENIA1(3) Q
;SD*560 if appt type edited, check if it was allowed and changed
I $D(SCELAP) I OLDAT'=+$P(SCELAP,U,3) S POP=0 D
.I OLDAT=10 I +$P(SCELAP,U,3)=11 D Q:POP
..I +$P(^SCE(SDOE,0),U,10)'=11 I $D(^AUPNVSIT($P(^SCE(SDOE,0),U,5),800)) I +$G(^(800),"")=0 D A1WRT,A2WRT S POP=1 Q
.I OLDAT=10 I +$P(SCELAP,U,3)'=11 D Q:POP
..I +$P(^SCE(SDOE,0),U,10)=11 I $D(^AUPNVSIT($P(^SCE(SDOE,0),U,5),800)) I +$G(^(800),"")=1 D A1WRT1,A2WRT S POP=1 Q
.Q:OLDAT'=$P(^SCE(SDOE,0),U,10)
.I OLDAT'=11 I $P(SCELAP,U,3)=11 D A1WRT Q
K POP
;SD*560 if Appt Type edit accepted on non-appt encounter set encounter to retrans
I SDFLAG I $D(SCELAP) I OLDAT'=+$P(SCELAP,U,3) D
.S XMIT="",XMIT=$$FINDXMIT^SCDXFU01(SDOE) ;get IEN for file 409.73
.D:XMIT STREEVNT^SCDXFU01(XMIT,2) ;set trans event to edit
.D:XMIT XMITFLAG^SCDXFU01(XMIT) ;set flag for trans to Yes
.K XMIT,OLDAT
I $D(SDOK) S SDOK=1
W !,"Updating Completed." ;SD*560 moved from RESYNC
L -^SCE(SDOE):0
EIQ K OLDSC,OLDAT,OLDELG,SDFLAG K:$D(POP) POP
Q
;
A1WRT ;SD*560 write warning message, if applicable
W !!,"The Visit entry associated with the selected encounter is NOT SERVICE CONNECTED."
W !,"You cannot change the Appointment Type to SERVICE CONNECTED.",!
Q
;
A1WRT1 ;SD*560 write warning message if Service Connected
W !!,"The Visit entry associated with the selected encounter is SERVICE CONNECTED."
W !,"You cannot change the Appointment Type to non-SERVICE CONNECTED."
Q
;
A2WRT ;SD*560 display current Appointment Type per update.
W !,"Appointment Type has been updated to ",$P(^SD(409.1,$P(^SCE(SDOE,0),U,10),0),U,1),".",!
Q
;
SET(SDVAL,SDFLD,DA) ; Set updated entry into file #409.68.
;
S ^TMP("SCENI EDIN",$J,409.68,DA_",",SDFLD)=SDVAL
D FILE^DIE("K","^TMP(""SCENI EDIN"",$J)")
I $D(^TMP("DIERR",$J,1)) W !!,"???"
K ^TMP("SCENI EDIN",$J),^TMP("DIERR",$J)
Q
;
SET1(SDVAL,SDOE,SEDT) ;SD*560 set Visit & Trans Flag for non-appt encounter
;SEDT=1 primary stop code edit
;SEDT=2 eligibility edit
N SDVST,VDT,SDCVST
S SDVST=$P(^SCE(SDOE,0),U,5) Q:'SDVST
S VDT=$$NOW^XLFDT
S DA=SDVST,DIE="^AUPNVSIT("
I SEDT=1 S DR=".08////^S X=SDVAL;.13////^S X=VDT" D ^DIE
I SEDT=2 S DR=".21////^S X=SDVAL;.13////^S X=VDT" D ^DIE
;check for credit Visit and update, if applicable
I $O(^AUPNVSIT("AD",SDVST,"")) S SDCVST=$O(^AUPNVSIT("AD",SDVST,"")) D
.Q:SEDT=1 ;do not update if primary stop code edit
.K DA,DR
.S DA=SDCVST
.S DR=".21////^S X=SDVAL;.13////^S X=VDT" D ^DIE
S XMIT="",XMIT=$$FINDXMIT^SCDXFU01(SDOE) ;get IEN for file 409.73
D:XMIT STREEVNT^SCDXFU01(XMIT,2) ;set trans event to edit
D:XMIT XMITFLAG^SCDXFU01(XMIT) ;set flag for trans required to Yes
K XMIT,DA,DR,X,DIE
Q
;
SETDV(SDVAL,SDOE) ;SD*560 set Visit & Trans Flag when Division edited
N SDVST,VDT,SDNDV,SDCVST
S SDVST=$P(^SCE(SDOE,0),U,5) Q:'SDVST
S SDNDV=+$P($G(^DG(40.8,SDVAL,0)),U,7) ;get pointer to Institution file
S VDT=$$NOW^XLFDT
S DA=SDVST,DIE="^AUPNVSIT("
S DR=".06////^S X=SDNDV;.13////^S X=VDT" D ^DIE
;check for credit Visit and update, if applicable
I $O(^AUPNVSIT("AD",SDVST,"")) S SDCVST=$O(^AUPNVSIT("AD",SDVST,"")) D
.K DA,DR
.S DA=SDCVST
.S DR=".06////^S X=SDNDV;.13////^S X=VDT" D ^DIE
S XMIT="",XMIT=$$FINDXMIT^SCDXFU01(SDOE) ;get IEN for file 409.73
D:XMIT STREEVNT^SCDXFU01(XMIT,2) ;set trans event to edit
D:XMIT XMITFLAG^SCDXFU01(XMIT) ;set flag for trans required to Yes
K DA,DR,DIE,SD408,XMIT
Q
;
UPDENC ; Update Outpatient Encounter Option entry point
N SDOE,SDXMT,DFN,SDOK
N SD53P158 S SD53P158="OPT" ;Entered via menu option.
;
S SDOK=0
K ^TMP("SCENI XMT",$J)
S DIR(0)="PA^409.68:EMQ",DIR("S")="I $D(^SD(409.73,""AENC"",Y))"
S DIR("A")="Select Encounter to update: "
S DIR("?")="Enter partial name, last four, or date of encounter."
S DIR("??")="^S %DT=""PX"" D HELP^%DTC"
D ^DIR K DIR G UPDQ:$D(DIRUT)
;
S SDOE=+Y
S SDXMT=$O(^SD(409.73,"AENC",SDOE,0))
S ^TMP("SCENI XMT",$J,0)=SDXMT
D EI
UPDQ ;
K DFN
Q
;
RESYNC(STPL,SCELP,SDOE,SCOLD,SDFN) ;
N SDOEC,SDCDT
;
; ** Update any child encounters and for each child encounter, search for
; any entries in the Scheduling Visits File, #409.5. If there is a
; match, update then entry in #409.5
;
;everthing else
S SDOEC=""
F S SDOEC=$O(^SCE("APAR",SDOE,SDOEC)) Q:'SDOEC D
. I +$P($G(^SCE(SDOE,0)),U,13)>0 D SET(+$P($G(^SCE(SDOE,0)),U,13),.13,SDOEC)
. I +$P($G(^SCE(SDOE,0)),U,10)>0 D SET(+$P($G(^SCE(SDOE,0)),U,10),.1,SDOEC)
. I +$P($G(^SCE(SDOE,0)),U,11)>0 D SET(+$P($G(^SCE(SDOE,0)),U,11),.11,SDOEC)
. I "2"[+$P($G(^SCE(SDOEC,0)),U,8),($P($G(^SCE(SDOEC,0)),U,3)=SCOLD) D SET(+$P($G(^SCE(SDOE,0)),U,3),.03,SDOEC)
;
; ** Update the entry in the Clinic Appointment multiple for the encounter
S SDOEDT=$P($G(^SCE(SDOE,0)),U),SDCLN=$P($G(^(0)),U,4)
S SDN1=0 F S SDN1=$O(^SC(SDCLN,"S",SDOEDT,1,SDN1)) Q:'SDN1 D
. I $P($G(^SC(SDCLN,"S",SDOEDT,1,SDN1,0)),U)=SDFN D
.. S DIE="^SC(SDCLN,""S"",SDOEDT,1,",DA(2)=SDCLN,DA(1)=SDOEDT,DA=SDN1
.. S DR="30////"_$P(SCELP,U)
.. L +^SC(SDCLN,"S",SDOEDT,1,SDN1):$S($G(DILOCKTM)>0:DILOCKTM,1:5) ;SD*560 added required timeout
.. D ^DIE K DIE,DR,DA
.. L -^SC(SDCLN,"S",SDOEDT,1,SDN1)
;
; ** Update the entry in the Patient Appointment multiple for the encounter.
I $D(^DPT(SDFN,"S",SDOEDT,0)),($P(^(0),U,20)=SDOE) D
. S DIE="^DPT(SDFN,""S"",",DA(1)=SDFN,DA=SDOEDT
. S DR="9.5////"_$P(SCELP,U,3)
. L +^DPT(SDFN,"S",SDOEDT):$S($G(DILOCKTM)>0:DILOCKTM,1:5) ;SD*560 added required timeout
. D ^DIE K DIE,DR,DA
. L -^DPT(SDFN,"S",SDOEDT)
;
Q
;
ONEELIG() ;
;tests for and returns the primary if that is the only eligibility
;
N VAEL
D ELIG^VADPT
Q $S($O(VAEL(1,0)):0,1:VAEL(1))
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSCENIA2 10718 printed Oct 16, 2024@18:40:24 Page 2
SCENIA2 ;ALB/SCK - INCOMPLETE ENCOUNTER ERROR DISPLAY PROTOCOLS, CONT. ; OCT 21, 1998
+1 ;;5.3;Scheduling;**66,132,158,560**;AUG 13, 1993;Build 8
+2 ;
EVT1(SDXMT,INF) ; Returns ifn for ^SC(clinic,"S",date,1,ifn)
+1 NEW SINDX,SDDA
+2 ;
+3 SET SINDX=0
FOR
SET SINDX=$ORDER(^SC(INF("CLINIC"),"S",INF("ENCOUNTER"),1,SINDX))
if 'SINDX>0
QUIT
Begin DoDot:1
+4 IF +^SC(INF("CLINIC"),"S",INF("ENCOUNTER"),1,SINDX,0)=INF("DFN")
SET SDDA=SINDX
End DoDot:1
if $DATA(SDDA)
QUIT
+5 QUIT $GET(SDDA)
+6 ;
EI ; Entry point for the SCENI ENCOUNTER INFORMATION protocol
+1 ; Called via LM.
IF '$DATA(SD53P158)
NEW SD53P158
SET SD53P158="LM"
+2 IF '$DATA(^XUSEC("SCENI ENCOUNTER EDIT",DUZ))
Begin DoDot:1
+3 WRITE !,$CHAR(7),"You do not have this security key, contact your supervisor."
End DoDot:1
QUIT
+4 ;
+5 NEW SDATA,SCEN,SDXMT,SCXER,SDOE,SCINF,SCSTAT,SDEVT,SDHDL,SDDA,SCELAP,SCSTPLC,OLDSC,SDQUIT,SDLOG
+6 ;SD*560
NEW SDFLAG,SDVST
SET SDFLAG=0
SET SDVST=""
+7 ;
+8 KILL PARENT,VISIT
+9 DO HDLKILL^SDAMEVT
+10 SET SDXMT=$GET(^TMP("SCENI XMT",$JOB,0))
if 'SDXMT
QUIT
+11 SET SCSTAT=$$OPENC^SCUTIE1(SDXMT,"SCINF")
+12 IF SCSTAT<0
Begin DoDot:1
+13 WRITE !!,$CHAR(7),"Entry "_$PIECE(^SD(409.73,SDXMT,0),U),?5,$GET(SCINF("ERROR"))
+14 DO PAUSE^VALM1
End DoDot:1
GOTO EIQ
+15 ;
+16 IF SCSTAT>0
Begin DoDot:1
+17 WRITE !!,$CHAR(7),"This is a deleted entry. Encounter information cannot be changed."
+18 DO PAUSE^VALM1
End DoDot:1
GOTO EIQ
+19 ;
+20 SET DFN=SCINF("DFN")
+21 SET SDOE=$PIECE(^SD(409.73,SDXMT,0),U,2)
+22 SET SDHDL=$$HANDLE^SDAMEVT($PIECE($GET(^SCE(SDOE,0)),U,8))
SET SDDA=$$EVT1(SDXMT,.SCINF)
+23 if SDHDL']""
QUIT
+24 ;
+25 ;SD*5.3*560 encounter not associated w/sched appt
if 'SDDA
SET SDFLAG=1
+26 SET SDATA=SDDA_"^"_DFN_"^"_SCINF("ENCOUNTER")_"^"_SCINF("CLINIC")
+27 SET SDQUIT=0
+28 ;
+29 LOCK +^SCE(SDOE):0
IF '$TEST
Begin DoDot:1
+30 WRITE !?5,$CHAR(7),"Another user is editing this entry"
End DoDot:1
GOTO EIQ
+31 IF SD53P158="LM"
DO FULL^VALM1
+32 KILL DIRUT
+33 WRITE !
+34 DO BEFORE^SDAMEVT(.SDATA,DFN,SCINF("ENCOUNTER"),SCINF("CLINIC"),SDDA,SDHDL)
+35 ;
+36 KILL OLDSC,SDEDT
SET OLDSC=+$PIECE($GET(^SCE(SDOE,0)),U,3)
SET SDEDT=$PIECE(^(0),U,1)
EI1 SET DIR(0)="409.68,.03"
SET DA=SDOE
+1 DO ^DIR
KILL DIR
if $DATA(DIRUT)!(Y="")
GOTO EIQ
+2 ;SD*560 do not allow if Inactive at time of encounter
+3 IF $PIECE(^DIC(40.7,+Y,0),U,3)'=""
IF $PIECE(^(0),U,3)'>SDEDT
Begin DoDot:1
+4 WRITE !!,"Sorry, that Stop Code was INACTIVE at the time of the selected encounter.",!
End DoDot:1
GOTO EI1
+5 ;SD*560 do not allow if Restriction Type is "S"
+6 IF $PIECE(^DIC(40.7,+Y,0),U,6)="S"
IF $PIECE(^(0),U,7)'>SDEDT
Begin DoDot:1
+7 WRITE !!,"Sorry, the Restriction Type for that Stop Code is 'S' (secondary only).",!,"You cannot select this stop code.",!
End DoDot:1
GOTO EI1
+8 SET $PIECE(SCSTPLC,U)=+Y
+9 DO SET(+Y,.03,SDOE)
+10 ;SD*560 set Visit & Trans flag
IF SDFLAG
IF OLDSC'=+Y
DO SET1(+Y,SDOE,1)
+11 ;
+12 ;SD*560 get current Division
KILL OLDDV
SET OLDDV=+$PIECE($GET(^SCE(SDOE,0)),U,11)
+13 SET DIR(0)="409.68,.11"
SET DA=SDOE
+14 DO ^DIR
KILL DIR
if $DATA(DIRUT)!(Y="")
GOTO A1
+15 SET $PIECE(SCSTPLC,U,2)=+Y
+16 DO SET(+Y,.11,SDOE)
+17 ;SD*560 set Visit & Trans flag
IF OLDDV'=+Y
DO SETDV(+Y,SDOE)
+18 KILL OLDDV
+19 ;
+20 ; ** Display current Appt. Type and Elig. Codes
+21 ;SD*560 add OLDAT
NEW SD1,OLDAT
SET (SD1,OLDAT)=$PIECE($GET(^SCE(SDOE,0)),U,10)
+22 WRITE !!!,$CHAR(7),"Current Appointment Type for Encounter: "_$SELECT($GET(SD1):$PIECE(^SD(409.1,SD1,0),U),1:"")
+23 ;sD*560 add OLDELG
KILL SD1,OLDELG
SET (SD1,OLDELG)=$PIECE($GET(^SCE(SDOE,0)),U,13)
+24 WRITE !,"Current Eligibility for Encounter: "_$SELECT($GET(SD1):$PIECE(^DIC(8,SD1,0),U),1:""),!
+25 ;
+26 SET DIR(0)="YA"
SET DIR("B")="NO"
SET DIR("A")="Change Eligibility/Appointment type? "
DO ^DIR
KILL DIR
if $DATA(DIRUT)!(Y=0)
GOTO A1
+27 ;
+28 ;SD*560 if SC Indicator in Visit equals 1 (Service Connected) do not allow edit of Appt Type or Eligibility
+29 IF $PIECE(^SCE(SDOE,0),U,10)'=10
SET SDVST=$PIECE(^SCE(SDOE,0),U,5)
IF $DATA(^AUPNVSIT(SDVST,800))
IF +$GET(^(800))=1
Begin DoDot:1
+30 WRITE !!,"The Visit associated with the selected encounter is SERVICE CONNECTED."
+31 WRITE !,"You cannot edit the Appointment Type or Eligibility for this encounter.",!
End DoDot:1
GOTO A1
+32 ;
+33 WRITE !,"The following are system defaults only.",!
+34 ;
+35 SET SCELAP=$$ELAP^SDPCE(DFN,SCINF("CLINIC"))
+36 ;
+37 NEW SDPRIM
+38 SET SDPRIM=$$ONEELIG
+39 ;if only a primary ask if they want to change to it and change
+40 IF SDPRIM
IF +SDPRIM'=SD1
Begin DoDot:1
+41 NEW DIR
+42 SET DIR(0)="YA"
SET DIR("B")="YES"
+43 SET DIR("A",1)="There is only a primary eligibility for this patient: "_$PIECE(SDPRIM,U,2)
+44 SET DIR("A")="Do you wish to change the encounter to this? "
+45 SET DIR("?")="No other Eligibilities are selectable."
+46 SET DIR("?",1)="YES will result in the current primary Eligibility being used for the encounter."
+47 SET DIR("?",2)="NO will result in the encounter's Eligibility being left the same."
+48 DO ^DIR
+49 IF Y=1
SET $PIECE(SCELAP,U,1)=+SDPRIM
SET $PIECE(SCELAP,U,2)=$PIECE(SDPRIM,U,2)
+50 IF '$TEST
SET $PIECE(SCELAP,U,1)=SD1
SET $PIECE(SCELAP,U,2)=$PIECE($GET(^DIC(8,+SD1,0)),U,1)
+51 QUIT
End DoDot:1
+52 ;
+53 DO SET(+SCELAP,.13,SDOE)
+54 ;SD*560 if Elig edited on non-appt encounter, update Visit & Trans flag
+55 IF SDFLAG
IF OLDELG'=+SCELAP
DO SET1(+SCELAP,SDOE,2)
+56 DO SET(+$PIECE(SCELAP,U,3),.1,SDOE)
+57 ;
A1 DO RESYNC(SCSTPLC,$GET(SCELAP),SDOE,OLDSC,DFN)
+1 DO LOGDATA^SDAPIAP(SDOE,.SDLOG)
+2 DO AFTER^SDAMEVT(.SDATA,DFN,SCINF("ENCOUNTER"),SCINF("CLINIC"),SDDA,SDHDL)
+3 ;
+4 DO EVT^SDAMEVT(.SDATA,5,0,SDHDL)
+5 IF '$DATA(SDOK)
Begin DoDot:1
+6 SET RTN=$$VALIDATE^SCMSVUT2(SDXMT)
+7 IF RTN<0
DO ERMSG^SCENIA1(5)
QUIT
+8 SET RTN=$$SETRFLG^SCENIA1(SDXMT)
+9 IF RTN<0
DO ERMSG^SCENIA1(3)
QUIT
End DoDot:1
IF $GET(RTN)<0
GOTO EIQ
+10 ;SD*560 if appt type edited, check if it was allowed and changed
+11 IF $DATA(SCELAP)
IF OLDAT'=+$PIECE(SCELAP,U,3)
SET POP=0
Begin DoDot:1
+12 IF OLDAT=10
IF +$PIECE(SCELAP,U,3)=11
Begin DoDot:2
+13 IF +$PIECE(^SCE(SDOE,0),U,10)'=11
IF $DATA(^AUPNVSIT($PIECE(^SCE(SDOE,0),U,5),800))
IF +$GET(^(800),"")=0
DO A1WRT
DO A2WRT
SET POP=1
QUIT
End DoDot:2
if POP
QUIT
+14 IF OLDAT=10
IF +$PIECE(SCELAP,U,3)'=11
Begin DoDot:2
+15 IF +$PIECE(^SCE(SDOE,0),U,10)=11
IF $DATA(^AUPNVSIT($PIECE(^SCE(SDOE,0),U,5),800))
IF +$GET(^(800),"")=1
DO A1WRT1
DO A2WRT
SET POP=1
QUIT
End DoDot:2
if POP
QUIT
+16 if OLDAT'=$PIECE(^SCE(SDOE,0),U,10)
QUIT
+17 IF OLDAT'=11
IF $PIECE(SCELAP,U,3)=11
DO A1WRT
QUIT
End DoDot:1
+18 KILL POP
+19 ;SD*560 if Appt Type edit accepted on non-appt encounter set encounter to retrans
+20 IF SDFLAG
IF $DATA(SCELAP)
IF OLDAT'=+$PIECE(SCELAP,U,3)
Begin DoDot:1
+21 ;get IEN for file 409.73
SET XMIT=""
SET XMIT=$$FINDXMIT^SCDXFU01(SDOE)
+22 ;set trans event to edit
if XMIT
DO STREEVNT^SCDXFU01(XMIT,2)
+23 ;set flag for trans to Yes
if XMIT
DO XMITFLAG^SCDXFU01(XMIT)
+24 KILL XMIT,OLDAT
End DoDot:1
+25 IF $DATA(SDOK)
SET SDOK=1
+26 ;SD*560 moved from RESYNC
WRITE !,"Updating Completed."
+27 LOCK -^SCE(SDOE):0
EIQ KILL OLDSC,OLDAT,OLDELG,SDFLAG
if $DATA(POP)
KILL POP
+1 QUIT
+2 ;
A1WRT ;SD*560 write warning message, if applicable
+1 WRITE !!,"The Visit entry associated with the selected encounter is NOT SERVICE CONNECTED."
+2 WRITE !,"You cannot change the Appointment Type to SERVICE CONNECTED.",!
+3 QUIT
+4 ;
A1WRT1 ;SD*560 write warning message if Service Connected
+1 WRITE !!,"The Visit entry associated with the selected encounter is SERVICE CONNECTED."
+2 WRITE !,"You cannot change the Appointment Type to non-SERVICE CONNECTED."
+3 QUIT
+4 ;
A2WRT ;SD*560 display current Appointment Type per update.
+1 WRITE !,"Appointment Type has been updated to ",$PIECE(^SD(409.1,$PIECE(^SCE(SDOE,0),U,10),0),U,1),".",!
+2 QUIT
+3 ;
SET(SDVAL,SDFLD,DA) ; Set updated entry into file #409.68.
+1 ;
+2 SET ^TMP("SCENI EDIN",$JOB,409.68,DA_",",SDFLD)=SDVAL
+3 DO FILE^DIE("K","^TMP(""SCENI EDIN"",$J)")
+4 IF $DATA(^TMP("DIERR",$JOB,1))
WRITE !!,"???"
+5 KILL ^TMP("SCENI EDIN",$JOB),^TMP("DIERR",$JOB)
+6 QUIT
+7 ;
SET1(SDVAL,SDOE,SEDT) ;SD*560 set Visit & Trans Flag for non-appt encounter
+1 ;SEDT=1 primary stop code edit
+2 ;SEDT=2 eligibility edit
+3 NEW SDVST,VDT,SDCVST
+4 SET SDVST=$PIECE(^SCE(SDOE,0),U,5)
if 'SDVST
QUIT
+5 SET VDT=$$NOW^XLFDT
+6 SET DA=SDVST
SET DIE="^AUPNVSIT("
+7 IF SEDT=1
SET DR=".08////^S X=SDVAL;.13////^S X=VDT"
DO ^DIE
+8 IF SEDT=2
SET DR=".21////^S X=SDVAL;.13////^S X=VDT"
DO ^DIE
+9 ;check for credit Visit and update, if applicable
+10 IF $ORDER(^AUPNVSIT("AD",SDVST,""))
SET SDCVST=$ORDER(^AUPNVSIT("AD",SDVST,""))
Begin DoDot:1
+11 ;do not update if primary stop code edit
if SEDT=1
QUIT
+12 KILL DA,DR
+13 SET DA=SDCVST
+14 SET DR=".21////^S X=SDVAL;.13////^S X=VDT"
DO ^DIE
End DoDot:1
+15 ;get IEN for file 409.73
SET XMIT=""
SET XMIT=$$FINDXMIT^SCDXFU01(SDOE)
+16 ;set trans event to edit
if XMIT
DO STREEVNT^SCDXFU01(XMIT,2)
+17 ;set flag for trans required to Yes
if XMIT
DO XMITFLAG^SCDXFU01(XMIT)
+18 KILL XMIT,DA,DR,X,DIE
+19 QUIT
+20 ;
SETDV(SDVAL,SDOE) ;SD*560 set Visit & Trans Flag when Division edited
+1 NEW SDVST,VDT,SDNDV,SDCVST
+2 SET SDVST=$PIECE(^SCE(SDOE,0),U,5)
if 'SDVST
QUIT
+3 ;get pointer to Institution file
SET SDNDV=+$PIECE($GET(^DG(40.8,SDVAL,0)),U,7)
+4 SET VDT=$$NOW^XLFDT
+5 SET DA=SDVST
SET DIE="^AUPNVSIT("
+6 SET DR=".06////^S X=SDNDV;.13////^S X=VDT"
DO ^DIE
+7 ;check for credit Visit and update, if applicable
+8 IF $ORDER(^AUPNVSIT("AD",SDVST,""))
SET SDCVST=$ORDER(^AUPNVSIT("AD",SDVST,""))
Begin DoDot:1
+9 KILL DA,DR
+10 SET DA=SDCVST
+11 SET DR=".06////^S X=SDNDV;.13////^S X=VDT"
DO ^DIE
End DoDot:1
+12 ;get IEN for file 409.73
SET XMIT=""
SET XMIT=$$FINDXMIT^SCDXFU01(SDOE)
+13 ;set trans event to edit
if XMIT
DO STREEVNT^SCDXFU01(XMIT,2)
+14 ;set flag for trans required to Yes
if XMIT
DO XMITFLAG^SCDXFU01(XMIT)
+15 KILL DA,DR,DIE,SD408,XMIT
+16 QUIT
+17 ;
UPDENC ; Update Outpatient Encounter Option entry point
+1 NEW SDOE,SDXMT,DFN,SDOK
+2 ;Entered via menu option.
NEW SD53P158
SET SD53P158="OPT"
+3 ;
+4 SET SDOK=0
+5 KILL ^TMP("SCENI XMT",$JOB)
+6 SET DIR(0)="PA^409.68:EMQ"
SET DIR("S")="I $D(^SD(409.73,""AENC"",Y))"
+7 SET DIR("A")="Select Encounter to update: "
+8 SET DIR("?")="Enter partial name, last four, or date of encounter."
+9 SET DIR("??")="^S %DT=""PX"" D HELP^%DTC"
+10 DO ^DIR
KILL DIR
if $DATA(DIRUT)
GOTO UPDQ
+11 ;
+12 SET SDOE=+Y
+13 SET SDXMT=$ORDER(^SD(409.73,"AENC",SDOE,0))
+14 SET ^TMP("SCENI XMT",$JOB,0)=SDXMT
+15 DO EI
UPDQ ;
+1 KILL DFN
+2 QUIT
+3 ;
RESYNC(STPL,SCELP,SDOE,SCOLD,SDFN) ;
+1 NEW SDOEC,SDCDT
+2 ;
+3 ; ** Update any child encounters and for each child encounter, search for
+4 ; any entries in the Scheduling Visits File, #409.5. If there is a
+5 ; match, update then entry in #409.5
+6 ;
+7 ;everthing else
+8 SET SDOEC=""
+9 FOR
SET SDOEC=$ORDER(^SCE("APAR",SDOE,SDOEC))
if 'SDOEC
QUIT
Begin DoDot:1
+10 IF +$PIECE($GET(^SCE(SDOE,0)),U,13)>0
DO SET(+$PIECE($GET(^SCE(SDOE,0)),U,13),.13,SDOEC)
+11 IF +$PIECE($GET(^SCE(SDOE,0)),U,10)>0
DO SET(+$PIECE($GET(^SCE(SDOE,0)),U,10),.1,SDOEC)
+12 IF +$PIECE($GET(^SCE(SDOE,0)),U,11)>0
DO SET(+$PIECE($GET(^SCE(SDOE,0)),U,11),.11,SDOEC)
+13 IF "2"[+$PIECE($GET(^SCE(SDOEC,0)),U,8)
IF ($PIECE($GET(^SCE(SDOEC,0)),U,3)=SCOLD)
DO SET(+$PIECE($GET(^SCE(SDOE,0)),U,3),.03,SDOEC)
End DoDot:1
+14 ;
+15 ; ** Update the entry in the Clinic Appointment multiple for the encounter
+16 SET SDOEDT=$PIECE($GET(^SCE(SDOE,0)),U)
SET SDCLN=$PIECE($GET(^(0)),U,4)
+17 SET SDN1=0
FOR
SET SDN1=$ORDER(^SC(SDCLN,"S",SDOEDT,1,SDN1))
if 'SDN1
QUIT
Begin DoDot:1
+18 IF $PIECE($GET(^SC(SDCLN,"S",SDOEDT,1,SDN1,0)),U)=SDFN
Begin DoDot:2
+19 SET DIE="^SC(SDCLN,""S"",SDOEDT,1,"
SET DA(2)=SDCLN
SET DA(1)=SDOEDT
SET DA=SDN1
+20 SET DR="30////"_$PIECE(SCELP,U)
+21 ;SD*560 added required timeout
LOCK +^SC(SDCLN,"S",SDOEDT,1,SDN1):$SELECT($GET(DILOCKTM)>0:DILOCKTM,1:5)
+22 DO ^DIE
KILL DIE,DR,DA
+23 LOCK -^SC(SDCLN,"S",SDOEDT,1,SDN1)
End DoDot:2
End DoDot:1
+24 ;
+25 ; ** Update the entry in the Patient Appointment multiple for the encounter.
+26 IF $DATA(^DPT(SDFN,"S",SDOEDT,0))
IF ($PIECE(^(0),U,20)=SDOE)
Begin DoDot:1
+27 SET DIE="^DPT(SDFN,""S"","
SET DA(1)=SDFN
SET DA=SDOEDT
+28 SET DR="9.5////"_$PIECE(SCELP,U,3)
+29 ;SD*560 added required timeout
LOCK +^DPT(SDFN,"S",SDOEDT):$SELECT($GET(DILOCKTM)>0:DILOCKTM,1:5)
+30 DO ^DIE
KILL DIE,DR,DA
+31 LOCK -^DPT(SDFN,"S",SDOEDT)
End DoDot:1
+32 ;
+33 QUIT
+34 ;
ONEELIG() ;
+1 ;tests for and returns the primary if that is the only eligibility
+2 ;
+3 NEW VAEL
+4 DO ELIG^VADPT
+5 QUIT $SELECT($ORDER(VAEL(1,0)):0,1:VAEL(1))
+6 ;