SROES ;BIR/ADM - SURGERY E-SIG UTILITY ;06/07/06
;;3.0; Surgery ;**100,153**;24 Jun 93;Build 11
;
;** NOTICE: This routine is part of an implementation of a nationally
;** controlled procedure. Local modifications to this routine
;** are prohibited.
;
; Reference to EXTRACT^TIULQ supported by DBIA #2693
;
SRA N SRRISK S SRRISK=1
ENTER Q:'$G(SRTN)
N SRSOUT D CHECK I $G(SRSOUT) K SRSOUT S XQUIT=""
Q
CHECK ; pre-edit capture of nurse and anesthesia reports for addenda
N I,SRA,SRAUDIT,SRCCASE,SRESAR,SRESNR,SRN,SROP,SRSIGN,SRTIU,SRX,SRY,X S (SRAUDIT,SRSOUT)=0
S (SRA(SRTN),SRAUDIT(SRTN),SRN(SRTN))=0,SRTIU=$G(^SRF(SRTN,"TIU")),SRESNR=$P(SRTIU,"^",2),SRESAR=$P(SRTIU,"^",4),SROP=SRTN D DOCS
S SRCCASE=$P($G(^SRF(SRTN,"CON")),"^") I SRCCASE S (SRA(SRCCASE),SRAUDIT(SRCCASE),SRN(SRCCASE))=0,SRTIU=$G(^SRF(SRCCASE,"TIU")),SRESNR=$P(SRTIU,"^",2),SRESAR=$P(SRTIU,"^",4),SROP=SRCCASE D DOCS
S X=0 F S X=$O(SRAUDIT(X)) Q:'X I SRAUDIT(X) S SRAUDIT=1 Q
Q:'SRAUDIT
D:'$G(SRRISK) WARN I SRSOUT Q
D KTMP
N SRLCK S SRLCK=$$LOCK^SROUTL(SRTN) I 'SRLCK S XQUIT="",SRSOUT=1 Q
S SROP=0 F S SROP=$O(SRAUDIT(SROP)) Q:'SROP D PRE
Q
KTMP ; kill TMP globals
F I="SRADDEND","SRAR","SRNR","SRASAVE","SRNSAVE" K ^TMP(I,$J)
F I=1,2 F J="SRAD","SRADM","SRARAD","SRARMULT","SRNRAD","SRNRMULT" K ^TMP(J_I,$J)
Q
DOCS ; determine if signed
I SRESNR S SRX=SRESNR,SRSIGN=0 D SIGNED I SRSIGN S SRN(SROP)=1
I SRESAR S SRX=SRESAR,SRSIGN=0 D SIGNED I SRSIGN S SRA(SROP)=1
Q
SIGNED I SRX N SRERR D EXTRACT^TIULQ(SRX,"SRY",.SRERR,".05") I SRY(SRX,.05,"I")=7 S SRSIGN=1,SRAUDIT(SROP)=1
K SRY
Q
PRE ; save pr-edit copy of case data
N SRTN S SRTN=SROP
D:SRN(SRTN)=1 IN^SROESNR D:SRA(SRTN)=1 IN^SROESAR
Q
WARN ; warning message that addendum may be required
D HDR W !!!,?30,">>> WARNING <<<"
W !!," Electronically signed reports are associated with this case. Editing",!," of data that appear on electronically signed reports will require the",!," creation of addenda to the signed reports.",!!!
K DIR S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!$D(DUOUT) S SRSOUT=1
Q
HDR S DFN=$P(^SRF(SRTN,0),"^") D DEM^VADPT S Y=$E($P(^SRF(SRTN,0),"^",9),1,7) X ^DD("DD") S SRSDATE=Y
W @IOF,!," "_VADM(1)_" ("_VA("PID")_") Case #"_SRTN_" - "_SRSDATE
Q
EXIT ; post-edit check to see if addenda to nurse/anes. reports are required
Q:'$D(SRTN) D WAIT^DICD
D:$D(^TMP("SRNRAD1",$J,SRTN)) EX^SROESNR
D:$D(^TMP("SRARAD1",$J,SRTN)) EX^SROESAR
I $D(^TMP("SRNRAD1",$J,SRTN))!$D(^TMP("SRARAD1",$J,SRTN))!$D(^TMP("SRNRAD2",$J,SRTN))!$D(^TMP("SRARAD2",$J,SRTN)) D ^SROESAD1
N SRCCASE,SRTN1 S SRCCASE=$P($G(^SRF(SRTN,"CON")),"^") I SRCCASE S SRTN1=SRTN S SRTN=SRCCASE D
.D:$D(^TMP("SRNRAD1",$J,SRTN)) EX^SROESNR
.D:$D(^TMP("SRARAD1",$J,SRTN)) EX^SROESAR
.I $D(^TMP("SRNRAD1",$J,SRTN))!$D(^TMP("SRARAD1",$J,SRTN)) D ^SROESAD1
.S SRTN=SRTN1
DOC N SRADOC,SRDOC,SRNDOC S (SRADOC,SRDOC,SRNDOC)=0
I $O(^TMP("SRNR",$J,SRTN,0)) S SRNDOC=SRNDOC+1,SRDOC=SRDOC+1,SRNDOC(SRTN)="Nurse Intraoperative Report - Case #"_SRTN
I SRCCASE,$O(^TMP("SRNR",$J,SRCCASE,0)) S SRNDOC=SRNDOC+1,SRDOC=SRDOC+1,SRNDOC(SRCCASE)="Nurse Intraoperative Report - Concurrent Case #"_SRCCASE
I $O(^TMP("SRAR",$J,SRTN,0)) S SRADOC=SRADOC+1,SRDOC=SRDOC+1,SRADOC(SRTN)="Anesthesia Report - Case #"_SRTN
I SRCCASE,$O(^TMP("SRAR",$J,SRCCASE,0)) S SRADOC=SRADOC+1,SRDOC=SRDOC+1,SRADOC(SRCCASE)="Anesthesia Report - Concurrent Case #"_SRCCASE
I 'SRDOC Q
D HDR W !!,"An addendum to each of the following electronically signed document(s) is",!,"required:",!
S X=0 F S X=$O(SRNDOC(X)) Q:'X W !,?10,SRNDOC(X)
S X=0 F S X=$O(SRADOC(X)) Q:'X W !,?10,SRADOC(X)
W !!,"If you choose not to create an addendum, the original data will be restored",!,"to the modified fields appearing on the signed reports.",!!
N SRESNOT S SRESNOT=0 K DIR S DIR(0)="Y",DIR("A")="Create addendum",DIR("B")="YES" D ^DIR K DIR I $D(DTOUT)!$D(DUOUT)!'Y S SRESNOT=1 D ALLREV Q
D ^SROESAD I SRESNOT D REVRS,PRESS
I SRCCASE S SRTN1=SRTN,SRTN=SRCCASE,SRESNOT=0 D ^SROESAD D:SRESNOT REVRS,PRESS S SRTN=SRTN1
UNLOCK D UNLOCK^SROUTL(SRTN),KTMP
Q
PRESS W ! K DIR S DIR(0)="FOA",DIR("A")="Press RETURN to continue... " D ^DIR K DIR
Q
ALLREV ; restore modified fields for both concurrent cases
W !!,"No addendum created. Original data will be restored.",!!
D REVRS S SRCCASE=$P($G(^SRF(SRTN,"CON")),"^") I SRCCASE S SRTN1=SRTN,SRTN=SRCCASE D REVRS S SRTN=SRTN1
D UNLOCK,PRESS
Q
REVRS ; restore modified fields on signed reports
D REVRS^SROESNR0,REVRS^SROESAR0
S SROERR=SRTN D ^SROERR0
Q
SROES ;BIR/ADM - SURGERY E-SIG UTILITY ;06/07/06
+1 ;;3.0; Surgery ;**100,153**;24 Jun 93;Build 11
+2 ;
+3 ;** NOTICE: This routine is part of an implementation of a nationally
+4 ;** controlled procedure. Local modifications to this routine
+5 ;** are prohibited.
+6 ;
+7 ; Reference to EXTRACT^TIULQ supported by DBIA #2693
+8 ;
SRA NEW SRRISK
SET SRRISK=1
ENTER IF '$GET(SRTN)
QUIT
+1 NEW SRSOUT
DO CHECK
IF $GET(SRSOUT)
KILL SRSOUT
SET XQUIT=""
+2 QUIT
CHECK ; pre-edit capture of nurse and anesthesia reports for addenda
+1 NEW I,SRA,SRAUDIT,SRCCASE,SRESAR,SRESNR,SRN,SROP,SRSIGN,SRTIU,SRX,SRY,X
SET (SRAUDIT,SRSOUT)=0
+2 SET (SRA(SRTN),SRAUDIT(SRTN),SRN(SRTN))=0
SET SRTIU=$GET(^SRF(SRTN,"TIU"))
SET SRESNR=$PIECE(SRTIU,"^",2)
SET SRESAR=$PIECE(SRTIU,"^",4)
SET SROP=SRTN
DO DOCS
+3 SET SRCCASE=$PIECE($GET(^SRF(SRTN,"CON")),"^")
IF SRCCASE
SET (SRA(SRCCASE),SRAUDIT(SRCCASE),SRN(SRCCASE))=0
SET SRTIU=$GET(^SRF(SRCCASE,"TIU"))
SET SRESNR=$PIECE(SRTIU,"^",2)
SET SRESAR=$PIECE(SRTIU,"^",4)
SET SROP=SRCCASE
DO DOCS
+4 SET X=0
FOR
SET X=$ORDER(SRAUDIT(X))
IF 'X
QUIT
IF SRAUDIT(X)
SET SRAUDIT=1
QUIT
+5 IF 'SRAUDIT
QUIT
+6 IF '$GET(SRRISK)
DO WARN
IF SRSOUT
QUIT
+7 DO KTMP
+8 NEW SRLCK
SET SRLCK=$$LOCK^SROUTL(SRTN)
IF 'SRLCK
SET XQUIT=""
SET SRSOUT=1
QUIT
+9 SET SROP=0
FOR
SET SROP=$ORDER(SRAUDIT(SROP))
IF 'SROP
QUIT
DO PRE
+10 QUIT
KTMP ; kill TMP globals
+1 FOR I="SRADDEND","SRAR","SRNR","SRASAVE","SRNSAVE"
KILL ^TMP(I,$JOB)
+2 FOR I=1,2
FOR J="SRAD","SRADM","SRARAD","SRARMULT","SRNRAD","SRNRMULT"
KILL ^TMP(J_I,$JOB)
+3 QUIT
DOCS ; determine if signed
+1 IF SRESNR
SET SRX=SRESNR
SET SRSIGN=0
DO SIGNED
IF SRSIGN
SET SRN(SROP)=1
+2 IF SRESAR
SET SRX=SRESAR
SET SRSIGN=0
DO SIGNED
IF SRSIGN
SET SRA(SROP)=1
+3 QUIT
SIGNED IF SRX
NEW SRERR
DO EXTRACT^TIULQ(SRX,"SRY",.SRERR,".05")
IF SRY(SRX,.05,"I")=7
SET SRSIGN=1
SET SRAUDIT(SROP)=1
+1 KILL SRY
+2 QUIT
PRE ; save pr-edit copy of case data
+1 NEW SRTN
SET SRTN=SROP
+2 IF SRN(SRTN)=1
DO IN^SROESNR
IF SRA(SRTN)=1
DO IN^SROESAR
+3 QUIT
WARN ; warning message that addendum may be required
+1 DO HDR
WRITE !!!,?30,">>> WARNING <<<"
+2 WRITE !!," Electronically signed reports are associated with this case. Editing",!," of data that appear on electronically signed reports will require the",!," creation of addenda to the signed reports.",!!!
+3 KILL DIR
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF $DATA(DTOUT)!$DATA(DUOUT)
SET SRSOUT=1
+4 QUIT
HDR SET DFN=$PIECE(^SRF(SRTN,0),"^")
DO DEM^VADPT
SET Y=$EXTRACT($PIECE(^SRF(SRTN,0),"^",9),1,7)
XECUTE ^DD("DD")
SET SRSDATE=Y
+1 WRITE @IOF,!," "_VADM(1)_" ("_VA("PID")_") Case #"_SRTN_" - "_SRSDATE
+2 QUIT
EXIT ; post-edit check to see if addenda to nurse/anes. reports are required
+1 IF '$DATA(SRTN)
QUIT
DO WAIT^DICD
+2 IF $DATA(^TMP("SRNRAD1",$JOB,SRTN))
DO EX^SROESNR
+3 IF $DATA(^TMP("SRARAD1",$JOB,SRTN))
DO EX^SROESAR
+4 IF $DATA(^TMP("SRNRAD1",$JOB,SRTN))!$DATA(^TMP("SRARAD1",$JOB,SRTN))!$DATA(^TMP("SRNRAD2",$JOB,SRTN))!$DATA(^TMP("SRARAD2",$JOB,SRTN))
DO ^SROESAD1
+5 NEW SRCCASE,SRTN1
SET SRCCASE=$PIECE($GET(^SRF(SRTN,"CON")),"^")
IF SRCCASE
SET SRTN1=SRTN
SET SRTN=SRCCASE
Begin DoDot:1
+6 IF $DATA(^TMP("SRNRAD1",$JOB,SRTN))
DO EX^SROESNR
+7 IF $DATA(^TMP("SRARAD1",$JOB,SRTN))
DO EX^SROESAR
+8 IF $DATA(^TMP("SRNRAD1",$JOB,SRTN))!$DATA(^TMP("SRARAD1",$JOB,SRTN))
DO ^SROESAD1
+9 SET SRTN=SRTN1
End DoDot:1
DOC NEW SRADOC,SRDOC,SRNDOC
SET (SRADOC,SRDOC,SRNDOC)=0
+1 IF $ORDER(^TMP("SRNR",$JOB,SRTN,0))
SET SRNDOC=SRNDOC+1
SET SRDOC=SRDOC+1
SET SRNDOC(SRTN)="Nurse Intraoperative Report - Case #"_SRTN
+2 IF SRCCASE
IF $ORDER(^TMP("SRNR",$JOB,SRCCASE,0))
SET SRNDOC=SRNDOC+1
SET SRDOC=SRDOC+1
SET SRNDOC(SRCCASE)="Nurse Intraoperative Report - Concurrent Case #"_SRCCASE
+3 IF $ORDER(^TMP("SRAR",$JOB,SRTN,0))
SET SRADOC=SRADOC+1
SET SRDOC=SRDOC+1
SET SRADOC(SRTN)="Anesthesia Report - Case #"_SRTN
+4 IF SRCCASE
IF $ORDER(^TMP("SRAR",$JOB,SRCCASE,0))
SET SRADOC=SRADOC+1
SET SRDOC=SRDOC+1
SET SRADOC(SRCCASE)="Anesthesia Report - Concurrent Case #"_SRCCASE
+5 IF 'SRDOC
QUIT
+6 DO HDR
WRITE !!,"An addendum to each of the following electronically signed document(s) is",!,"required:",!
+7 SET X=0
FOR
SET X=$ORDER(SRNDOC(X))
IF 'X
QUIT
WRITE !,?10,SRNDOC(X)
+8 SET X=0
FOR
SET X=$ORDER(SRADOC(X))
IF 'X
QUIT
WRITE !,?10,SRADOC(X)
+9 WRITE !!,"If you choose not to create an addendum, the original data will be restored",!,"to the modified fields appearing on the signed reports.",!!
+10 NEW SRESNOT
SET SRESNOT=0
KILL DIR
SET DIR(0)="Y"
SET DIR("A")="Create addendum"
SET DIR("B")="YES"
DO ^DIR
KILL DIR
IF $DATA(DTOUT)!$DATA(DUOUT)!'Y
SET SRESNOT=1
DO ALLREV
QUIT
+11 DO ^SROESAD
IF SRESNOT
DO REVRS
DO PRESS
+12 IF SRCCASE
SET SRTN1=SRTN
SET SRTN=SRCCASE
SET SRESNOT=0
DO ^SROESAD
IF SRESNOT
DO REVRS
DO PRESS
SET SRTN=SRTN1
UNLOCK DO UNLOCK^SROUTL(SRTN)
DO KTMP
+1 QUIT
PRESS WRITE !
KILL DIR
SET DIR(0)="FOA"
SET DIR("A")="Press RETURN to continue... "
DO ^DIR
KILL DIR
+1 QUIT
ALLREV ; restore modified fields for both concurrent cases
+1 WRITE !!,"No addendum created. Original data will be restored.",!!
+2 DO REVRS
SET SRCCASE=$PIECE($GET(^SRF(SRTN,"CON")),"^")
IF SRCCASE
SET SRTN1=SRTN
SET SRTN=SRCCASE
DO REVRS
SET SRTN=SRTN1
+3 DO UNLOCK
DO PRESS
+4 QUIT
REVRS ; restore modified fields on signed reports
+1 DO REVRS^SROESNR0
DO REVRS^SROESAR0
+2 SET SROERR=SRTN
DO ^SROERR0
+3 QUIT