WVMGRP1 ;ISP/RFR - MANAGER'S PATIENT EDITS;Nov 09, 2018@14:45
;;1.0;WOMEN'S HEALTH;**24**;Sep 30, 1998;Build 582
Q
DOCACT ;PROCESS DOCUMENT ACTIONS
;CALLED FROM PLSDATA^WVMGRP AND NOT INTENDED TO BE CALLED BY ANYTHING ELSE
N WVITEM,WVITEMS,WVDATA,WVERRORS,WVNODE,WVERROR,DIR,X,Y,DTOUT,DUOUT,DIROUT
N DIRUT,WVKEY,WVPNUM,WVTYPE,WVSTATUS
F D Q:$G(WVSTATUS)=0
.S WVSTATUS=$$ITEMS(.WVITEMS,.WVKEY,.WVPAT) I $G(WVITEMS)<1 S WVSTATUS=0 Q
.S WVTYPE=$P(WVSTATUS,U,2),$P(WVTYPE,U,2)=$S(WVTYPE="VISIT":"C",WVTYPE="DOCUMENT":"D",1:"")
.F D Q:$G(Y)<1
..I $G(WVITEMS)>1 D Q:+Y=-1
...W !," Applicable "_$$TITLE^XLFSTR($P(WVTYPE,U))_"s:",!
...F WVITEM=1:1:WVITEMS W $$LJ^XLFSTR(WVITEM,2)_" " F WVPNUM=1:1:$L(WVITEMS(WVKEY(WVITEM)),U) W $S(WVPNUM>1:" ",1:"")_$P(WVITEMS(WVKEY(WVITEM)),U,WVPNUM),!
...S DIR(0)="N"_U_"1:"_WVITEMS_":0"_U_"K:'$D(WVKEY(X)) X",DIR("A")=" Select "_$P(WVTYPE,U)
...S DIR("?")="Enter the number to the left of the "_$$LOW^XLFSTR($P(WVTYPE,U))_" you want to work with."
...D ^DIR
...I '$D(WVKEY(+Y)) S Y=-1 Q
...S WVITEM=WVKEY(+Y)
...W " "_$$STRIP^XLFSTR(WVITEMS(WVITEM),U),!
..I $G(WVITEMS)=1 D
...S WVITEM=$O(WVITEMS(0))
...W !," "_$P(WVTYPE,U)_": "
...F WVPNUM=1:1:$L(WVITEMS(WVITEM),U) W $P(WVITEMS(WVITEM),U,WVPNUM),!
..I $G(WVITEMS)<1 S Y=-2 Q
..N WVFIRST,WVRESULT,WVACTION S WVFIRST=1
..S WVNODE=0 F S WVNODE=$O(WVITEMS(WVITEM,WVNODE)) Q:'+WVNODE!($G(WVERROR)) D
...N WVCNT,WVRECID,WVRTACTS,WVFDA,WVCHAIN,WVCNUM,WVPSA,WVHELP,WVTXTA,WVTEXT
...I WVFIRST W !," L" S WVFIRST=0
...E W @IOF," Now l"
...W "et's work with the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status.",!
...S WVRECID=$O(WVITEMS(WVITEM,WVNODE,0))
...I WVRECID<1 S WVERROR=$$ERROR^WVMGRP("determining the review record ID",,"There is a problem with the D cross-reference on the^WV DATA NEEDING REVIEW file.") Q
...I $G(WVACTION)'="" D Q:$G(WVERROR)!($G(WVPSA))
....S WVTEXT=" You previously "_$S($P(WVACTION,U,2)=1:"moved",1:"marked as entered in error")
....S WVTEXT=WVTEXT_" the "_$S($P(WVACTION,U)=4:"pregnancy",1:"lactation")_" status data"
....I $P(WVACTION,U,2)=1 S WVTEXT=WVTEXT_" from "_WVPAT("NAME")_" to "_$P(WVACTION,U,3)
....S WVTEXT=WVTEXT_"."
....D WRAP^ORUTL(WVTEXT,"WVTXTA",,,3,.WVCNT)
....S WVCNT=0 F S WVCNT=$O(WVTXTA(WVCNT)) Q:'+WVCNT W !,WVTXTA(WVCNT)
....S WVERROR=$$SHODATA Q:WVERROR=-1
....I WVERROR=2 D Q
.....W !," There is no longer any "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status data associated with this review"
.....W !," record and therefore, it will be ignored." H 5
.....S WVERROR=$$CROOTREC(WVRECID)
....K WVERROR
....S DIR(0)="Y"_U,DIR("A")="Do you want to perform the same action on the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status"
....S WVTEXT=$E(WVTEXT,4,$L(WVTEXT))_" Review "_WVPAT("NAME")_"'s chart using CPRS to determine if the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status displayed "
....S WVTEXT=WVTEXT_"above is still valid for "_WVPAT("NAME")_". If the status is still valid, enter "
....S WVTEXT=WVTEXT_"'N' for no (you do not want to mark the status as entered in error). If the "
....S WVTEXT=WVTEXT_"status is no longer valid, enter 'Y' for yes (you do want to mark the status "
....S WVTEXT=WVTEXT_"as entered in error)."
....D WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
....M DIR("?")=WVHELP S DIR("?")=DIR("?",WVCNT) K DIR("?",WVCNT)
....D ^DIR
....I $D(DIRUT)!($D(DIROUT)) S WVERROR=1 Q
....S WVPSA=+Y,WVRECID=+$O(^WV(790.8,WVRECID,1,0))_","_WVRECID_","
....S WVRESULT=$S(WVPSA:$$PACT^WVMGRP2(WVNODE,$P(WVACTION,U,2),WVRECID,$P(WVACTION,U,4),$P(WVACTION,U,5),$P(WVACTION,U,6),$P(WVACTION,U,7),$P(WVACTION,U,3)),1:$$CROOTREC($P(WVRECID,",",2)))
....I WVRESULT=-1 S WVERROR=-1 Q
...S WVRTACTS=0 F S WVRTACTS=$O(^WV(790.8,WVRECID,1,"AC",1,WVRTACTS)) Q:'+WVRTACTS!($G(WVERROR)) D
....S WVCNT=1+$G(WVCNT),WVRTACTS("B",WVCNT)=WVRTACTS_","_WVRECID_",",WVRTACTS("B")=WVCNT
....D GETS^DIQ(790.801,WVRTACTS("B",WVCNT),".01;2",,"WVDATA","WVERRORS")
....I $D(WVERRORS) S WVERROR=$$ERROR^WVMGRP("retrieving root-level activities",.WVERRORS) Q
....S WVRTACTS(WVRTACTS_","_WVRECID_",")=WVDATA(790.801,WVRTACTS("B",WVCNT),2)_" on "_WVDATA(790.801,WVRTACTS("B",WVCNT),.01)
...I '$D(WVRTACTS) S WVERROR=$$ERROR^WVMGRP("retrieving root-level activities",,"No root-level activities were found.") Q
...F Q:'$D(WVRTACTS("B"))!($G(WVERROR)) D
....I WVRTACTS("B")>1 D Q:$G(WVERROR)
.....W !," The following relevant actions were taken:",!!
.....S WVCNT=0 F S WVCNT=$O(WVRTACTS("B",WVCNT)) Q:'+WVCNT W ?5,$$RJ^XLFSTR(WVCNT," ",3),?11,WVRTACTS(WVRTACTS("B",WVCNT)),!
.....S DIR(0)="N"_U_U_"K:'$D(WVRTACTS(""B"",X)) X",DIR("A")="Select an action to review"
.....S DIR("?")="Enter the number to the left of the action you want to work with."
.....D ^DIR
.....I $D(DIRUT)!($D(DIROUT)) S WVERROR=1 Q
.....K DIR
.....S WVRTACTS=WVRTACTS("B",Y)_U_Y
.....W ?40,WVRTACTS(WVRTACTS("B",Y))
....I WVRTACTS("B")<2 S Y=$O(WVRTACTS("B",0)),WVRTACTS=WVRTACTS("B",Y)_U_Y
....S WVRESULT=$$BRANCH($P(WVRTACTS,U),.WVACTION)
....I $G(WVACTION)'="" S WVACTION=WVNODE_U_WVACTION
....I WVRESULT=-1 S WVERROR=-1 Q
....I WVRESULT=0 D
.....F WVCNUM=1:1:$L(WVCHAIN,U) S WVFDA(790.801,$P(WVCHAIN,U,WVCNUM),.01)="@"
.....D FILE^DIE("","WVFDA","WVERRORS")
.....I $D(WVERRORS) S WVERROR=$$ERROR^WVMGRP("deleting root activity chain",.WVERRORS) Q
.....I $O(^WV(790.8,WVRECID,1,0))="" S WVRESULT=$$CROOTREC(WVRECID) S:WVRESULT<1 WVERROR=-1 Q:$G(WVERROR)=-1
.....K WVRTACTS($P(WVRTACTS,U)),WVRTACTS("B",$P(WVRTACTS,U,2)),WVCHAIN
.....I $O(WVRTACTS("B",""))="" K WVRTACTS("B")
.....E S WVRTACTS("B")=WVRTACTS("B")-1
.....W !
..K WVITEMS(WVITEM),WVKEY
..S WVITEMS=WVITEMS-1
..I WVITEMS>0 S Y=1
..Q:WVITEMS<2
..S WVITEM=0 F S WVITEM=$O(WVITEMS(WVITEM)) Q:WVITEM="" S WVKEY=1+$G(WVKEY),WVKEY(WVKEY)=WVITEM
Q
;
VISITS(WVVISITS,WVKEY,WVVISIT) ;RETRIEVE SPECIFIED VISIT
N WVDATA,WVERRORS,WVRETURN
S WVRETURN=1
D GETS^DIQ(9000010,WVVISIT_",",".01;.22;15001","","WVDATA","WVERRORS")
I $D(WVERRORS),'$D(WVERRORS("DIERR","E",601)) S WVRETURN=$$ERROR^WVMGRP("retrieving available visits",.WVERRORS) Q
S WVVISITS=1+WVVISITS
I $D(WVERRORS("DIERR","E",601)) D
.S WVVISITS(WVVISIT)="#"_WVVISIT_" no longer exists."_U_U_U
.K WVERRORS
I $D(WVDATA) D
.S WVVISITS(WVVISIT)=$$RJ^XLFSTR(WVDATA(9000010,WVVISIT_",",.01),23)
.S WVVISITS(WVVISIT)=WVVISITS(WVVISIT)_U_$$RJ^XLFSTR($E(WVDATA(9000010,WVVISIT_",",.22),1,13),13)
.S WVVISITS(WVVISIT)=WVVISITS(WVVISIT)_U_$$REPEAT^XLFSTR(" ",10)_$$RJ^XLFSTR($E(WVDATA(9000010,WVVISIT_",",15001),1,12),12)
S WVKEY(WVVISITS)=WVVISIT
Q WVRETURN
DOCS(WVDOCS,WVKEY,WVDOC) ;RETRIEVE SPECIFIED DOCUMENT
N WVDATA,WVERRORS,WVRETURN
S WVRETURN=1
D GETS^DIQ(8925,WVDOC_",",".01;1201;1202","","WVDATA","WVERRORS")
I $D(WVERRORS) S WVRETURN=$$ERROR^WVMGRP("retrieving available documents",.WVERRORS) Q
S WVDOCS=1+WVDOCS
S WVDOCS(WVDOC)=$$LJ^XLFSTR(WVDATA(8925,WVDOC_",",1201),23)_$E(WVDATA(8925,WVDOC_",",.01),1,60)
S WVDOCS(WVDOC)=WVDOCS(WVDOC)_U_" "_$E(WVDATA(8925,WVDOC_",",1202),1,78)
S WVKEY(WVDOCS)=WVDOC
Q WVRETURN
ITEMS(WVITEMS,WVKEY,WVPAT) ;RETRIEVE EITHER DOCUMENTS OR VISITS FOR A PATIENT
N WVRETURN,WVITEM,WVINDEX
S WVINDEX=$S($D(^WV(790.8,"E",WVPAT))>9:"E",1:"D"),WVRETURN=1_U,WVITEMS=0
S WVITEM=0 F S WVITEM=$O(^WV(790.8,WVINDEX,WVPAT,WVITEM)) Q:'+WVITEM!($G(WVRETURN)=-1) D
.I WVINDEX="D" S WVRETURN=$$VISITS(.WVITEMS,.WVKEY,WVITEM)
.I WVINDEX="E" S WVRETURN=$$DOCS(.WVITEMS,.WVKEY,WVITEM)
.M WVITEMS(WVITEM)=^WV(790.8,WVINDEX,WVPAT,WVITEM)
I WVITEMS>0 S $P(WVRETURN,U,2)=$S(WVINDEX="E":"DOCUMENT",1:"VISIT")
Q WVRETURN
BRANCH(WVIEN,WVACT) ;PROCESS A BRANCH OF ACTIVITIES (DO NOT USE OUTSIDE OF THIS ROUTINE)
N WVRESULT,WVPIECE,WVAIEN
S WVCHAIN=WVIEN_$S($G(WVCHAIN)'="":U_WVCHAIN,1:""),WVRESULT=$$ACTIVTY(WVIEN)
I $P(WVRESULT,U)>0 D
.;TAKE ACTION
.S WVACT=WVRESULT,WVRESULT=$$PACT^WVMGRP2(WVNODE,$P(WVACT,U),WVIEN,$P(WVACT,U,3),$P(WVACT,U,4))
I WVRESULT=0 D
.;GO TO NEXT ACTIVITY IN CHAIN
.F WVPIECE=1:1:($L(WVIEN,",")-1) S WVAIEN(WVPIECE)=$P(WVIEN,",",WVPIECE)
.S WVAIEN=0 F S WVAIEN=$O(^WV(790.8,WVAIEN(2),1,WVAIEN(1),2,WVAIEN)) Q:'+WVAIEN!($G(WVRESULT)>0) D
..S WVRESULT=$$BRANCH($P($G(^WV(790.8,WVAIEN(2),1,WVAIEN(1),2,WVAIEN,0)),U)_","_WVAIEN(2)_",",.WVACT)
Q WVRESULT
;
ACTIVTY(WVIEN) ;PROCESS AN ACTIVITY (DO NOT USE OUTSIDE OF THIS ROUTINE)
; INPUT: WVIEN: IEN OF THE CURRENT ACTIVITY [REQUIRED]
; OUTPUT: $$ACTIVTY: WHAT THE USER WANTS TO DO
; 1 TO REASSIGN, 2 TO MARK ENTERED IN ERROR, 0 TO TAKE NO ACTION, -1 TO QUIT
N WVDATA,WVMSG,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,WVPT,WVRET,WVHELP,WVCNT,WVTEXT,WVRESULT,WVFDA,WVERRORS
D GETS^DIQ(790.801,WVIEN,"*","IE","WVDATA","WVMSG")
I $D(WVMSG) Q $$ERROR^WVMGRP("retrieving activity #"_WVIEN,.WVMSG)
S WVRESULT=$$SHODATA
Q:WVRESULT=-1 -1
W !," Activity Detail:",!,"ACTIVITY DATE/TIME: ",WVDATA(790.801,WVIEN,.01,"E"),!,?2,"ACTION: ",WVDATA(790.801,WVIEN,3,"E"),!
W ?2,"DOCUMENT NAME (IEN): ",WVDATA(790.801,WVIEN,2,"E"),!
I WVDATA(790.801,WVIEN,3,"E")="REASSIGN" S WVPT=WVDATA(790.801,WVIEN,11,"E") W ?2,"NEW PATIENT: ",WVPT,?40,"NEW VISIT: ",WVDATA(790.801,WVIEN,12,"E"),!
E S WVPT=WVPAT("NAME")
I WVRESULT=2 D Q 0
.W !," There is no longer any status data associated with this review",!," record and therefore, it will be ignored." H 5
W !," Please review the chart for "_WVPT_".",!,"Press ENTER to continue: "
R X:DTIME W !
I WVDATA(790.801,WVIEN,3,"E")="REASSIGN" D
.S DIR("A",1)="Do you want to move the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status data",DIR("A")="from "_WVPAT("NAME")_" to "_WVDATA(790.801,WVIEN,11,"E")
.S WVRET=1_U_WVDATA(790.801,WVIEN,11,"E")_U_WVDATA(790.801,WVIEN,11,"I")_U_WVDATA(790.801,WVIEN,12,"I")_U_WVDATA(790.801,WVIEN,3,"E")_U_WVDATA(790.801,WVIEN,2,"E")_U_WVDATA(790.801,WVIEN,12,"E")
.S WVCNT=0
.S WVTEXT="Review both patients' charts using CPRS to determine which patient "
.S WVTEXT=WVTEXT_"("_WVPAT("NAME")_" or "_WVPT_") the status displayed above is valid for. "
.S WVTEXT=WVTEXT_"If the status is still valid for "_WVPAT("NAME")_", enter 'N' for no (you do "
.S WVTEXT=WVTEXT_"not want to move the status data to "_WVPT_"). If the status is valid for "
.S WVTEXT=WVTEXT_WVPT_", enter 'Y' for yes (you do want to move the status data to "_WVPT_")."
.D WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
.M DIR("?")=WVHELP S DIR("?")=DIR("?",WVCNT) K DIR("?",WVCNT)
I WVDATA(790.801,WVIEN,3,"E")'="REASSIGN" D
.S DIR("A",1)="Do you want to mark the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status data",DIR("A")="for "_WVPAT("NAME")_" as entered in error"
.S WVRET=2_U_U_U_U_WVDATA(790.801,WVIEN,3,"E")_U_WVDATA(790.801,WVIEN,2,"E")_U
.S WVCNT=0
.S WVTEXT="Review "_WVPT_"'s chart using CPRS to determine if the status displayed "
.S WVTEXT=WVTEXT_"above is still valid for "_WVPT_". If the status is still valid, enter "
.S WVTEXT=WVTEXT_"'N' for no (you do not want to mark the status as entered in error). If the "
.S WVTEXT=WVTEXT_"status is no longer valid, enter 'Y' for yes (you do want to mark the status "
.S WVTEXT=WVTEXT_"as entered in error)."
.D WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
.M DIR("?")=WVHELP S DIR("?")=DIR("?",WVCNT) K DIR("?",WVCNT)
S DIR(0)="Y"_U
D ^DIR
I $D(DIRUT)!($D(DIROUT)) Q -1
Q $S(+Y=1:WVRET,1:0)
;
SHODATA() ;DISPLAY STATUS DATA
N DIC,DA,DR,DIQ,WVERROR,WVMSG,WVENTRIS
I $G(WVTYPE)'="" D Q:$D(WVENTRIS)<10 2
.S DA=0 F S DA=$O(^WV(790,WVPAT,WVNODE,$P(WVTYPE,U,2),WVITEM,DA)) Q:'+DA S WVENTRIS(DA)=""
I $G(WVTYPE)="",$P(WVENTS(WVNODE,WVENTS("Y")),U)'="" S WVENTRIS($P(WVENTS(WVNODE,WVENTS("Y")),U))=""
I $D(WVENTRIS)<10 D Q WVERROR
.S WVMSG="There is an unknown problem with the selected status data."
.S WVERROR=$$ERROR^WVMGRP("displaying status data",,WVMSG)
S DIC="^WV(790,"_WVPAT_","_WVNODE_",",DA(1)=WVPAT
W !!," Status Data ("_WVPAT("NAME")_"):"
S DA=0 F S DA=$O(WVENTRIS(DA)) Q:'+DA D EN^DIQ
Q 1
;
CROOTREC(WVIEN) ;DELETE FILE #790.8 ENTRY
N WVFDA,WVERRORS,WVERROR
S WVFDA(790.8,WVIEN_",",.01)="@",WVERROR=1
D FILE^DIE("","WVFDA","WVERRORS")
I $D(WVERRORS) S WVERROR=$$ERROR^WVMGRP("deleting patient's review record",.WVERRORS)
Q WVERROR
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HWVMGRP1 12364 printed Oct 16, 2024@18:47:43 Page 2
WVMGRP1 ;ISP/RFR - MANAGER'S PATIENT EDITS;Nov 09, 2018@14:45
+1 ;;1.0;WOMEN'S HEALTH;**24**;Sep 30, 1998;Build 582
+2 QUIT
DOCACT ;PROCESS DOCUMENT ACTIONS
+1 ;CALLED FROM PLSDATA^WVMGRP AND NOT INTENDED TO BE CALLED BY ANYTHING ELSE
+2 NEW WVITEM,WVITEMS,WVDATA,WVERRORS,WVNODE,WVERROR,DIR,X,Y,DTOUT,DUOUT,DIROUT
+3 NEW DIRUT,WVKEY,WVPNUM,WVTYPE,WVSTATUS
+4 FOR
Begin DoDot:1
+5 SET WVSTATUS=$$ITEMS(.WVITEMS,.WVKEY,.WVPAT)
IF $GET(WVITEMS)<1
SET WVSTATUS=0
QUIT
+6 SET WVTYPE=$PIECE(WVSTATUS,U,2)
SET $PIECE(WVTYPE,U,2)=$SELECT(WVTYPE="VISIT":"C",WVTYPE="DOCUMENT":"D",1:"")
+7 FOR
Begin DoDot:2
+8 IF $GET(WVITEMS)>1
Begin DoDot:3
+9 WRITE !," Applicable "_$$TITLE^XLFSTR($PIECE(WVTYPE,U))_"s:",!
+10 FOR WVITEM=1:1:WVITEMS
WRITE $$LJ^XLFSTR(WVITEM,2)_" "
FOR WVPNUM=1:1:$LENGTH(WVITEMS(WVKEY(WVITEM)),U)
WRITE $SELECT(WVPNUM>1:" ",1:"")_$PIECE(WVITEMS(WVKEY(WVITEM)),U,WVPNUM),!
+11 SET DIR(0)="N"_U_"1:"_WVITEMS_":0"_U_"K:'$D(WVKEY(X)) X"
SET DIR("A")=" Select "_$PIECE(WVTYPE,U)
+12 SET DIR("?")="Enter the number to the left of the "_$$LOW^XLFSTR($PIECE(WVTYPE,U))_" you want to work with."
+13 DO ^DIR
+14 IF '$DATA(WVKEY(+Y))
SET Y=-1
QUIT
+15 SET WVITEM=WVKEY(+Y)
+16 WRITE " "_$$STRIP^XLFSTR(WVITEMS(WVITEM),U),!
End DoDot:3
if +Y=-1
QUIT
+17 IF $GET(WVITEMS)=1
Begin DoDot:3
+18 SET WVITEM=$ORDER(WVITEMS(0))
+19 WRITE !," "_$PIECE(WVTYPE,U)_": "
+20 FOR WVPNUM=1:1:$LENGTH(WVITEMS(WVITEM),U)
WRITE $PIECE(WVITEMS(WVITEM),U,WVPNUM),!
End DoDot:3
+21 IF $GET(WVITEMS)<1
SET Y=-2
QUIT
+22 NEW WVFIRST,WVRESULT,WVACTION
SET WVFIRST=1
+23 SET WVNODE=0
FOR
SET WVNODE=$ORDER(WVITEMS(WVITEM,WVNODE))
if '+WVNODE!($GET(WVERROR))
QUIT
Begin DoDot:3
+24 NEW WVCNT,WVRECID,WVRTACTS,WVFDA,WVCHAIN,WVCNUM,WVPSA,WVHELP,WVTXTA,WVTEXT
+25 IF WVFIRST
WRITE !," L"
SET WVFIRST=0
+26 IF '$TEST
WRITE @IOF," Now l"
+27 WRITE "et's work with the "_$SELECT(WVNODE=4:"pregnancy",1:"lactation")_" status.",!
+28 SET WVRECID=$ORDER(WVITEMS(WVITEM,WVNODE,0))
+29 IF WVRECID<1
SET WVERROR=$$ERROR^WVMGRP("determining the review record ID",,"There is a problem with the D cross-reference on the^WV DATA NEEDING REVIEW file.")
QUIT
+30 IF $GET(WVACTION)'=""
Begin DoDot:4
+31 SET WVTEXT=" You previously "_$SELECT($PIECE(WVACTION,U,2)=1:"moved",1:"marked as entered in error")
+32 SET WVTEXT=WVTEXT_" the "_$SELECT($PIECE(WVACTION,U)=4:"pregnancy",1:"lactation")_" status data"
+33 IF $PIECE(WVACTION,U,2)=1
SET WVTEXT=WVTEXT_" from "_WVPAT("NAME")_" to "_$PIECE(WVACTION,U,3)
+34 SET WVTEXT=WVTEXT_"."
+35 DO WRAP^ORUTL(WVTEXT,"WVTXTA",,,3,.WVCNT)
+36 SET WVCNT=0
FOR
SET WVCNT=$ORDER(WVTXTA(WVCNT))
if '+WVCNT
QUIT
WRITE !,WVTXTA(WVCNT)
+37 SET WVERROR=$$SHODATA
if WVERROR=-1
QUIT
+38 IF WVERROR=2
Begin DoDot:5
+39 WRITE !," There is no longer any "_$SELECT(WVNODE=4:"pregnancy",1:"lactation")_" status data associated with this review"
+40 WRITE !," record and therefore, it will be ignored."
HANG 5
+41 SET WVERROR=$$CROOTREC(WVRECID)
End DoDot:5
QUIT
+42 KILL WVERROR
+43 SET DIR(0)="Y"_U
SET DIR("A")="Do you want to perform the same action on the "_$SELECT(WVNODE=4:"pregnancy",1:"lactation")_" status"
+44 SET WVTEXT=$EXTRACT(WVTEXT,4,$LENGTH(WVTEXT))_" Review "_WVPAT("NAME")_"'s chart using CPRS to determine if the "_$SELECT(WVNODE=4:"pregnancy",1:"lactation")_" status displayed "
+45 SET WVTEXT=WVTEXT_"above is still valid for "_WVPAT("NAME")_". If the status is still valid, enter "
+46 SET WVTEXT=WVTEXT_"'N' for no (you do not want to mark the status as entered in error). If the "
+47 SET WVTEXT=WVTEXT_"status is no longer valid, enter 'Y' for yes (you do want to mark the status "
+48 SET WVTEXT=WVTEXT_"as entered in error)."
+49 DO WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
+50 MERGE DIR("?")=WVHELP
SET DIR("?")=DIR("?",WVCNT)
KILL DIR("?",WVCNT)
+51 DO ^DIR
+52 IF $DATA(DIRUT)!($DATA(DIROUT))
SET WVERROR=1
QUIT
+53 SET WVPSA=+Y
SET WVRECID=+$ORDER(^WV(790.8,WVRECID,1,0))_","_WVRECID_","
+54 SET WVRESULT=$SELECT(WVPSA:$$PACT^WVMGRP2(WVNODE,$PIECE(WVACTION,U,2),WVRECID,$PIECE(WVACTION,U,4),$PIECE(WVACTION,U,5),$PIECE(WVACTION,U,6),$PIECE(WVACTION,U,7),$PIECE(WVACTION,U,3)),1:$$CROOTREC($PIECE(WVRECID,
",",2)))
+55 IF WVRESULT=-1
SET WVERROR=-1
QUIT
End DoDot:4
if $GET(WVERROR)!($GET(WVPSA))
QUIT
+56 SET WVRTACTS=0
FOR
SET WVRTACTS=$ORDER(^WV(790.8,WVRECID,1,"AC",1,WVRTACTS))
if '+WVRTACTS!($GET(WVERROR))
QUIT
Begin DoDot:4
+57 SET WVCNT=1+$GET(WVCNT)
SET WVRTACTS("B",WVCNT)=WVRTACTS_","_WVRECID_","
SET WVRTACTS("B")=WVCNT
+58 DO GETS^DIQ(790.801,WVRTACTS("B",WVCNT),".01;2",,"WVDATA","WVERRORS")
+59 IF $DATA(WVERRORS)
SET WVERROR=$$ERROR^WVMGRP("retrieving root-level activities",.WVERRORS)
QUIT
+60 SET WVRTACTS(WVRTACTS_","_WVRECID_",")=WVDATA(790.801,WVRTACTS("B",WVCNT),2)_" on "_WVDATA(790.801,WVRTACTS("B",WVCNT),.01)
End DoDot:4
+61 IF '$DATA(WVRTACTS)
SET WVERROR=$$ERROR^WVMGRP("retrieving root-level activities",,"No root-level activities were found.")
QUIT
+62 FOR
if '$DATA(WVRTACTS("B"))!($GET(WVERROR))
QUIT
Begin DoDot:4
+63 IF WVRTACTS("B")>1
Begin DoDot:5
+64 WRITE !," The following relevant actions were taken:",!!
+65 SET WVCNT=0
FOR
SET WVCNT=$ORDER(WVRTACTS("B",WVCNT))
if '+WVCNT
QUIT
WRITE ?5,$$RJ^XLFSTR(WVCNT," ",3),?11,WVRTACTS(WVRTACTS("B",WVCNT)),!
+66 SET DIR(0)="N"_U_U_"K:'$D(WVRTACTS(""B"",X)) X"
SET DIR("A")="Select an action to review"
+67 SET DIR("?")="Enter the number to the left of the action you want to work with."
+68 DO ^DIR
+69 IF $DATA(DIRUT)!($DATA(DIROUT))
SET WVERROR=1
QUIT
+70 KILL DIR
+71 SET WVRTACTS=WVRTACTS("B",Y)_U_Y
+72 WRITE ?40,WVRTACTS(WVRTACTS("B",Y))
End DoDot:5
if $GET(WVERROR)
QUIT
+73 IF WVRTACTS("B")<2
SET Y=$ORDER(WVRTACTS("B",0))
SET WVRTACTS=WVRTACTS("B",Y)_U_Y
+74 SET WVRESULT=$$BRANCH($PIECE(WVRTACTS,U),.WVACTION)
+75 IF $GET(WVACTION)'=""
SET WVACTION=WVNODE_U_WVACTION
+76 IF WVRESULT=-1
SET WVERROR=-1
QUIT
+77 IF WVRESULT=0
Begin DoDot:5
+78 FOR WVCNUM=1:1:$LENGTH(WVCHAIN,U)
SET WVFDA(790.801,$PIECE(WVCHAIN,U,WVCNUM),.01)="@"
+79 DO FILE^DIE("","WVFDA","WVERRORS")
+80 IF $DATA(WVERRORS)
SET WVERROR=$$ERROR^WVMGRP("deleting root activity chain",.WVERRORS)
QUIT
+81 IF $ORDER(^WV(790.8,WVRECID,1,0))=""
SET WVRESULT=$$CROOTREC(WVRECID)
if WVRESULT<1
SET WVERROR=-1
if $GET(WVERROR)=-1
QUIT
+82 KILL WVRTACTS($PIECE(WVRTACTS,U)),WVRTACTS("B",$PIECE(WVRTACTS,U,2)),WVCHAIN
+83 IF $ORDER(WVRTACTS("B",""))=""
KILL WVRTACTS("B")
+84 IF '$TEST
SET WVRTACTS("B")=WVRTACTS("B")-1
+85 WRITE !
End DoDot:5
End DoDot:4
End DoDot:3
+86 KILL WVITEMS(WVITEM),WVKEY
+87 SET WVITEMS=WVITEMS-1
+88 IF WVITEMS>0
SET Y=1
+89 if WVITEMS<2
QUIT
+90 SET WVITEM=0
FOR
SET WVITEM=$ORDER(WVITEMS(WVITEM))
if WVITEM=""
QUIT
SET WVKEY=1+$GET(WVKEY)
SET WVKEY(WVKEY)=WVITEM
End DoDot:2
if $GET(Y)<1
QUIT
End DoDot:1
if $GET(WVSTATUS)=0
QUIT
+91 QUIT
+92 ;
VISITS(WVVISITS,WVKEY,WVVISIT) ;RETRIEVE SPECIFIED VISIT
+1 NEW WVDATA,WVERRORS,WVRETURN
+2 SET WVRETURN=1
+3 DO GETS^DIQ(9000010,WVVISIT_",",".01;.22;15001","","WVDATA","WVERRORS")
+4 IF $DATA(WVERRORS)
IF '$DATA(WVERRORS("DIERR","E",601))
SET WVRETURN=$$ERROR^WVMGRP("retrieving available visits",.WVERRORS)
QUIT
+5 SET WVVISITS=1+WVVISITS
+6 IF $DATA(WVERRORS("DIERR","E",601))
Begin DoDot:1
+7 SET WVVISITS(WVVISIT)="#"_WVVISIT_" no longer exists."_U_U_U
+8 KILL WVERRORS
End DoDot:1
+9 IF $DATA(WVDATA)
Begin DoDot:1
+10 SET WVVISITS(WVVISIT)=$$RJ^XLFSTR(WVDATA(9000010,WVVISIT_",",.01),23)
+11 SET WVVISITS(WVVISIT)=WVVISITS(WVVISIT)_U_$$RJ^XLFSTR($EXTRACT(WVDATA(9000010,WVVISIT_",",.22),1,13),13)
+12 SET WVVISITS(WVVISIT)=WVVISITS(WVVISIT)_U_$$REPEAT^XLFSTR(" ",10)_$$RJ^XLFSTR($EXTRACT(WVDATA(9000010,WVVISIT_",",15001),1,12),12)
End DoDot:1
+13 SET WVKEY(WVVISITS)=WVVISIT
+14 QUIT WVRETURN
DOCS(WVDOCS,WVKEY,WVDOC) ;RETRIEVE SPECIFIED DOCUMENT
+1 NEW WVDATA,WVERRORS,WVRETURN
+2 SET WVRETURN=1
+3 DO GETS^DIQ(8925,WVDOC_",",".01;1201;1202","","WVDATA","WVERRORS")
+4 IF $DATA(WVERRORS)
SET WVRETURN=$$ERROR^WVMGRP("retrieving available documents",.WVERRORS)
QUIT
+5 SET WVDOCS=1+WVDOCS
+6 SET WVDOCS(WVDOC)=$$LJ^XLFSTR(WVDATA(8925,WVDOC_",",1201),23)_$EXTRACT(WVDATA(8925,WVDOC_",",.01),1,60)
+7 SET WVDOCS(WVDOC)=WVDOCS(WVDOC)_U_" "_$EXTRACT(WVDATA(8925,WVDOC_",",1202),1,78)
+8 SET WVKEY(WVDOCS)=WVDOC
+9 QUIT WVRETURN
ITEMS(WVITEMS,WVKEY,WVPAT) ;RETRIEVE EITHER DOCUMENTS OR VISITS FOR A PATIENT
+1 NEW WVRETURN,WVITEM,WVINDEX
+2 SET WVINDEX=$SELECT($DATA(^WV(790.8,"E",WVPAT))>9:"E",1:"D")
SET WVRETURN=1_U
SET WVITEMS=0
+3 SET WVITEM=0
FOR
SET WVITEM=$ORDER(^WV(790.8,WVINDEX,WVPAT,WVITEM))
if '+WVITEM!($GET(WVRETURN)=-1)
QUIT
Begin DoDot:1
+4 IF WVINDEX="D"
SET WVRETURN=$$VISITS(.WVITEMS,.WVKEY,WVITEM)
+5 IF WVINDEX="E"
SET WVRETURN=$$DOCS(.WVITEMS,.WVKEY,WVITEM)
+6 MERGE WVITEMS(WVITEM)=^WV(790.8,WVINDEX,WVPAT,WVITEM)
End DoDot:1
+7 IF WVITEMS>0
SET $PIECE(WVRETURN,U,2)=$SELECT(WVINDEX="E":"DOCUMENT",1:"VISIT")
+8 QUIT WVRETURN
BRANCH(WVIEN,WVACT) ;PROCESS A BRANCH OF ACTIVITIES (DO NOT USE OUTSIDE OF THIS ROUTINE)
+1 NEW WVRESULT,WVPIECE,WVAIEN
+2 SET WVCHAIN=WVIEN_$SELECT($GET(WVCHAIN)'="":U_WVCHAIN,1:"")
SET WVRESULT=$$ACTIVTY(WVIEN)
+3 IF $PIECE(WVRESULT,U)>0
Begin DoDot:1
+4 ;TAKE ACTION
+5 SET WVACT=WVRESULT
SET WVRESULT=$$PACT^WVMGRP2(WVNODE,$PIECE(WVACT,U),WVIEN,$PIECE(WVACT,U,3),$PIECE(WVACT,U,4))
End DoDot:1
+6 IF WVRESULT=0
Begin DoDot:1
+7 ;GO TO NEXT ACTIVITY IN CHAIN
+8 FOR WVPIECE=1:1:($LENGTH(WVIEN,",")-1)
SET WVAIEN(WVPIECE)=$PIECE(WVIEN,",",WVPIECE)
+9 SET WVAIEN=0
FOR
SET WVAIEN=$ORDER(^WV(790.8,WVAIEN(2),1,WVAIEN(1),2,WVAIEN))
if '+WVAIEN!($GET(WVRESULT)>0)
QUIT
Begin DoDot:2
+10 SET WVRESULT=$$BRANCH($PIECE($GET(^WV(790.8,WVAIEN(2),1,WVAIEN(1),2,WVAIEN,0)),U)_","_WVAIEN(2)_",",.WVACT)
End DoDot:2
End DoDot:1
+11 QUIT WVRESULT
+12 ;
ACTIVTY(WVIEN) ;PROCESS AN ACTIVITY (DO NOT USE OUTSIDE OF THIS ROUTINE)
+1 ; INPUT: WVIEN: IEN OF THE CURRENT ACTIVITY [REQUIRED]
+2 ; OUTPUT: $$ACTIVTY: WHAT THE USER WANTS TO DO
+3 ; 1 TO REASSIGN, 2 TO MARK ENTERED IN ERROR, 0 TO TAKE NO ACTION, -1 TO QUIT
+4 NEW WVDATA,WVMSG,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,WVPT,WVRET,WVHELP,WVCNT,WVTEXT,WVRESULT,WVFDA,WVERRORS
+5 DO GETS^DIQ(790.801,WVIEN,"*","IE","WVDATA","WVMSG")
+6 IF $DATA(WVMSG)
QUIT $$ERROR^WVMGRP("retrieving activity #"_WVIEN,.WVMSG)
+7 SET WVRESULT=$$SHODATA
+8 if WVRESULT=-1
QUIT -1
+9 WRITE !," Activity Detail:",!,"ACTIVITY DATE/TIME: ",WVDATA(790.801,WVIEN,.01,"E"),!,?2,"ACTION: ",WVDATA(790.801,WVIEN,3,"E"),!
+10 WRITE ?2,"DOCUMENT NAME (IEN): ",WVDATA(790.801,WVIEN,2,"E"),!
+11 IF WVDATA(790.801,WVIEN,3,"E")="REASSIGN"
SET WVPT=WVDATA(790.801,WVIEN,11,"E")
WRITE ?2,"NEW PATIENT: ",WVPT,?40,"NEW VISIT: ",WVDATA(790.801,WVIEN,12,"E"),!
+12 IF '$TEST
SET WVPT=WVPAT("NAME")
+13 IF WVRESULT=2
Begin DoDot:1
+14 WRITE !," There is no longer any status data associated with this review",!," record and therefore, it will be ignored."
HANG 5
End DoDot:1
QUIT 0
+15 WRITE !," Please review the chart for "_WVPT_".",!,"Press ENTER to continue: "
+16 READ X:DTIME
WRITE !
+17 IF WVDATA(790.801,WVIEN,3,"E")="REASSIGN"
Begin DoDot:1
+18 SET DIR("A",1)="Do you want to move the "_$SELECT(WVNODE=4:"pregnancy",1:"lactation")_" status data"
SET DIR("A")="from "_WVPAT("NAME")_" to "_WVDATA(790.801,WVIEN,11,"E")
+19 SET WVRET=1_U_WVDATA(790.801,WVIEN,11,"E")_U_WVDATA(790.801,WVIEN,11,"I")_U_WVDATA(790.801,WVIEN,12,"I")_U_WVDATA(790.801,WVIEN,3,"E")_U_WVDATA(790.801,WVIEN,2,"E")_U_WVDATA(790.801,WVIEN,12,"E")
+20 SET WVCNT=0
+21 SET WVTEXT="Review both patients' charts using CPRS to determine which patient "
+22 SET WVTEXT=WVTEXT_"("_WVPAT("NAME")_" or "_WVPT_") the status displayed above is valid for. "
+23 SET WVTEXT=WVTEXT_"If the status is still valid for "_WVPAT("NAME")_", enter 'N' for no (you do "
+24 SET WVTEXT=WVTEXT_"not want to move the status data to "_WVPT_"). If the status is valid for "
+25 SET WVTEXT=WVTEXT_WVPT_", enter 'Y' for yes (you do want to move the status data to "_WVPT_")."
+26 DO WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
+27 MERGE DIR("?")=WVHELP
SET DIR("?")=DIR("?",WVCNT)
KILL DIR("?",WVCNT)
End DoDot:1
+28 IF WVDATA(790.801,WVIEN,3,"E")'="REASSIGN"
Begin DoDot:1
+29 SET DIR("A",1)="Do you want to mark the "_$SELECT(WVNODE=4:"pregnancy",1:"lactation")_" status data"
SET DIR("A")="for "_WVPAT("NAME")_" as entered in error"
+30 SET WVRET=2_U_U_U_U_WVDATA(790.801,WVIEN,3,"E")_U_WVDATA(790.801,WVIEN,2,"E")_U
+31 SET WVCNT=0
+32 SET WVTEXT="Review "_WVPT_"'s chart using CPRS to determine if the status displayed "
+33 SET WVTEXT=WVTEXT_"above is still valid for "_WVPT_". If the status is still valid, enter "
+34 SET WVTEXT=WVTEXT_"'N' for no (you do not want to mark the status as entered in error). If the "
+35 SET WVTEXT=WVTEXT_"status is no longer valid, enter 'Y' for yes (you do want to mark the status "
+36 SET WVTEXT=WVTEXT_"as entered in error)."
+37 DO WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
+38 MERGE DIR("?")=WVHELP
SET DIR("?")=DIR("?",WVCNT)
KILL DIR("?",WVCNT)
End DoDot:1
+39 SET DIR(0)="Y"_U
+40 DO ^DIR
+41 IF $DATA(DIRUT)!($DATA(DIROUT))
QUIT -1
+42 QUIT $SELECT(+Y=1:WVRET,1:0)
+43 ;
SHODATA() ;DISPLAY STATUS DATA
+1 NEW DIC,DA,DR,DIQ,WVERROR,WVMSG,WVENTRIS
+2 IF $GET(WVTYPE)'=""
Begin DoDot:1
+3 SET DA=0
FOR
SET DA=$ORDER(^WV(790,WVPAT,WVNODE,$PIECE(WVTYPE,U,2),WVITEM,DA))
if '+DA
QUIT
SET WVENTRIS(DA)=""
End DoDot:1
if $DATA(WVENTRIS)<10
QUIT 2
+4 IF $GET(WVTYPE)=""
IF $PIECE(WVENTS(WVNODE,WVENTS("Y")),U)'=""
SET WVENTRIS($PIECE(WVENTS(WVNODE,WVENTS("Y")),U))=""
+5 IF $DATA(WVENTRIS)<10
Begin DoDot:1
+6 SET WVMSG="There is an unknown problem with the selected status data."
+7 SET WVERROR=$$ERROR^WVMGRP("displaying status data",,WVMSG)
End DoDot:1
QUIT WVERROR
+8 SET DIC="^WV(790,"_WVPAT_","_WVNODE_","
SET DA(1)=WVPAT
+9 WRITE !!," Status Data ("_WVPAT("NAME")_"):"
+10 SET DA=0
FOR
SET DA=$ORDER(WVENTRIS(DA))
if '+DA
QUIT
DO EN^DIQ
+11 QUIT 1
+12 ;
CROOTREC(WVIEN) ;DELETE FILE #790.8 ENTRY
+1 NEW WVFDA,WVERRORS,WVERROR
+2 SET WVFDA(790.8,WVIEN_",",.01)="@"
SET WVERROR=1
+3 DO FILE^DIE("","WVFDA","WVERRORS")
+4 IF $DATA(WVERRORS)
SET WVERROR=$$ERROR^WVMGRP("deleting patient's review record",.WVERRORS)
+5 QUIT WVERROR
+6 ;