Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: WVMGRP1

WVMGRP1.m

Go to the documentation of this file.
  1. WVMGRP1 ;ISP/RFR - MANAGER'S PATIENT EDITS;Nov 09, 2018@14:45
  1. ;;1.0;WOMEN'S HEALTH;**24**;Sep 30, 1998;Build 582
  1. Q
  1. DOCACT ;PROCESS DOCUMENT ACTIONS
  1. ;CALLED FROM PLSDATA^WVMGRP AND NOT INTENDED TO BE CALLED BY ANYTHING ELSE
  1. N WVITEM,WVITEMS,WVDATA,WVERRORS,WVNODE,WVERROR,DIR,X,Y,DTOUT,DUOUT,DIROUT
  1. N DIRUT,WVKEY,WVPNUM,WVTYPE,WVSTATUS
  1. F D Q:$G(WVSTATUS)=0
  1. .S WVSTATUS=$$ITEMS(.WVITEMS,.WVKEY,.WVPAT) I $G(WVITEMS)<1 S WVSTATUS=0 Q
  1. .S WVTYPE=$P(WVSTATUS,U,2),$P(WVTYPE,U,2)=$S(WVTYPE="VISIT":"C",WVTYPE="DOCUMENT":"D",1:"")
  1. .F D Q:$G(Y)<1
  1. ..I $G(WVITEMS)>1 D Q:+Y=-1
  1. ...W !," Applicable "_$$TITLE^XLFSTR($P(WVTYPE,U))_"s:",!
  1. ...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),!
  1. ...S DIR(0)="N"_U_"1:"_WVITEMS_":0"_U_"K:'$D(WVKEY(X)) X",DIR("A")=" Select "_$P(WVTYPE,U)
  1. ...S DIR("?")="Enter the number to the left of the "_$$LOW^XLFSTR($P(WVTYPE,U))_" you want to work with."
  1. ...D ^DIR
  1. ...I '$D(WVKEY(+Y)) S Y=-1 Q
  1. ...S WVITEM=WVKEY(+Y)
  1. ...W " "_$$STRIP^XLFSTR(WVITEMS(WVITEM),U),!
  1. ..I $G(WVITEMS)=1 D
  1. ...S WVITEM=$O(WVITEMS(0))
  1. ...W !," "_$P(WVTYPE,U)_": "
  1. ...F WVPNUM=1:1:$L(WVITEMS(WVITEM),U) W $P(WVITEMS(WVITEM),U,WVPNUM),!
  1. ..I $G(WVITEMS)<1 S Y=-2 Q
  1. ..N WVFIRST,WVRESULT,WVACTION S WVFIRST=1
  1. ..S WVNODE=0 F S WVNODE=$O(WVITEMS(WVITEM,WVNODE)) Q:'+WVNODE!($G(WVERROR)) D
  1. ...N WVCNT,WVRECID,WVRTACTS,WVFDA,WVCHAIN,WVCNUM,WVPSA,WVHELP,WVTXTA,WVTEXT
  1. ...I WVFIRST W !," L" S WVFIRST=0
  1. ...E W @IOF," Now l"
  1. ...W "et's work with the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status.",!
  1. ...S WVRECID=$O(WVITEMS(WVITEM,WVNODE,0))
  1. ...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
  1. ...I $G(WVACTION)'="" D Q:$G(WVERROR)!($G(WVPSA))
  1. ....S WVTEXT=" You previously "_$S($P(WVACTION,U,2)=1:"moved",1:"marked as entered in error")
  1. ....S WVTEXT=WVTEXT_" the "_$S($P(WVACTION,U)=4:"pregnancy",1:"lactation")_" status data"
  1. ....I $P(WVACTION,U,2)=1 S WVTEXT=WVTEXT_" from "_WVPAT("NAME")_" to "_$P(WVACTION,U,3)
  1. ....S WVTEXT=WVTEXT_"."
  1. ....D WRAP^ORUTL(WVTEXT,"WVTXTA",,,3,.WVCNT)
  1. ....S WVCNT=0 F S WVCNT=$O(WVTXTA(WVCNT)) Q:'+WVCNT W !,WVTXTA(WVCNT)
  1. ....S WVERROR=$$SHODATA Q:WVERROR=-1
  1. ....I WVERROR=2 D Q
  1. .....W !," There is no longer any "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status data associated with this review"
  1. .....W !," record and therefore, it will be ignored." H 5
  1. .....S WVERROR=$$CROOTREC(WVRECID)
  1. ....K WVERROR
  1. ....S DIR(0)="Y"_U,DIR("A")="Do you want to perform the same action on the "_$S(WVNODE=4:"pregnancy",1:"lactation")_" status"
  1. ....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 "
  1. ....S WVTEXT=WVTEXT_"above is still valid for "_WVPAT("NAME")_". If the status is still valid, enter "
  1. ....S WVTEXT=WVTEXT_"'N' for no (you do not want to mark the status as entered in error). If the "
  1. ....S WVTEXT=WVTEXT_"status is no longer valid, enter 'Y' for yes (you do want to mark the status "
  1. ....S WVTEXT=WVTEXT_"as entered in error)."
  1. ....D WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
  1. ....M DIR("?")=WVHELP S DIR("?")=DIR("?",WVCNT) K DIR("?",WVCNT)
  1. ....D ^DIR
  1. ....I $D(DIRUT)!($D(DIROUT)) S WVERROR=1 Q
  1. ....S WVPSA=+Y,WVRECID=+$O(^WV(790.8,WVRECID,1,0))_","_WVRECID_","
  1. ....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)))
  1. ....I WVRESULT=-1 S WVERROR=-1 Q
  1. ...S WVRTACTS=0 F S WVRTACTS=$O(^WV(790.8,WVRECID,1,"AC",1,WVRTACTS)) Q:'+WVRTACTS!($G(WVERROR)) D
  1. ....S WVCNT=1+$G(WVCNT),WVRTACTS("B",WVCNT)=WVRTACTS_","_WVRECID_",",WVRTACTS("B")=WVCNT
  1. ....D GETS^DIQ(790.801,WVRTACTS("B",WVCNT),".01;2",,"WVDATA","WVERRORS")
  1. ....I $D(WVERRORS) S WVERROR=$$ERROR^WVMGRP("retrieving root-level activities",.WVERRORS) Q
  1. ....S WVRTACTS(WVRTACTS_","_WVRECID_",")=WVDATA(790.801,WVRTACTS("B",WVCNT),2)_" on "_WVDATA(790.801,WVRTACTS("B",WVCNT),.01)
  1. ...I '$D(WVRTACTS) S WVERROR=$$ERROR^WVMGRP("retrieving root-level activities",,"No root-level activities were found.") Q
  1. ...F Q:'$D(WVRTACTS("B"))!($G(WVERROR)) D
  1. ....I WVRTACTS("B")>1 D Q:$G(WVERROR)
  1. .....W !," The following relevant actions were taken:",!!
  1. .....S WVCNT=0 F S WVCNT=$O(WVRTACTS("B",WVCNT)) Q:'+WVCNT W ?5,$$RJ^XLFSTR(WVCNT," ",3),?11,WVRTACTS(WVRTACTS("B",WVCNT)),!
  1. .....S DIR(0)="N"_U_U_"K:'$D(WVRTACTS(""B"",X)) X",DIR("A")="Select an action to review"
  1. .....S DIR("?")="Enter the number to the left of the action you want to work with."
  1. .....D ^DIR
  1. .....I $D(DIRUT)!($D(DIROUT)) S WVERROR=1 Q
  1. .....K DIR
  1. .....S WVRTACTS=WVRTACTS("B",Y)_U_Y
  1. .....W ?40,WVRTACTS(WVRTACTS("B",Y))
  1. ....I WVRTACTS("B")<2 S Y=$O(WVRTACTS("B",0)),WVRTACTS=WVRTACTS("B",Y)_U_Y
  1. ....S WVRESULT=$$BRANCH($P(WVRTACTS,U),.WVACTION)
  1. ....I $G(WVACTION)'="" S WVACTION=WVNODE_U_WVACTION
  1. ....I WVRESULT=-1 S WVERROR=-1 Q
  1. ....I WVRESULT=0 D
  1. .....F WVCNUM=1:1:$L(WVCHAIN,U) S WVFDA(790.801,$P(WVCHAIN,U,WVCNUM),.01)="@"
  1. .....D FILE^DIE("","WVFDA","WVERRORS")
  1. .....I $D(WVERRORS) S WVERROR=$$ERROR^WVMGRP("deleting root activity chain",.WVERRORS) Q
  1. .....I $O(^WV(790.8,WVRECID,1,0))="" S WVRESULT=$$CROOTREC(WVRECID) S:WVRESULT<1 WVERROR=-1 Q:$G(WVERROR)=-1
  1. .....K WVRTACTS($P(WVRTACTS,U)),WVRTACTS("B",$P(WVRTACTS,U,2)),WVCHAIN
  1. .....I $O(WVRTACTS("B",""))="" K WVRTACTS("B")
  1. .....E S WVRTACTS("B")=WVRTACTS("B")-1
  1. .....W !
  1. ..K WVITEMS(WVITEM),WVKEY
  1. ..S WVITEMS=WVITEMS-1
  1. ..I WVITEMS>0 S Y=1
  1. ..Q:WVITEMS<2
  1. ..S WVITEM=0 F S WVITEM=$O(WVITEMS(WVITEM)) Q:WVITEM="" S WVKEY=1+$G(WVKEY),WVKEY(WVKEY)=WVITEM
  1. Q
  1. ;
  1. VISITS(WVVISITS,WVKEY,WVVISIT) ;RETRIEVE SPECIFIED VISIT
  1. N WVDATA,WVERRORS,WVRETURN
  1. S WVRETURN=1
  1. D GETS^DIQ(9000010,WVVISIT_",",".01;.22;15001","","WVDATA","WVERRORS")
  1. I $D(WVERRORS),'$D(WVERRORS("DIERR","E",601)) S WVRETURN=$$ERROR^WVMGRP("retrieving available visits",.WVERRORS) Q
  1. S WVVISITS=1+WVVISITS
  1. I $D(WVERRORS("DIERR","E",601)) D
  1. .S WVVISITS(WVVISIT)="#"_WVVISIT_" no longer exists."_U_U_U
  1. .K WVERRORS
  1. I $D(WVDATA) D
  1. .S WVVISITS(WVVISIT)=$$RJ^XLFSTR(WVDATA(9000010,WVVISIT_",",.01),23)
  1. .S WVVISITS(WVVISIT)=WVVISITS(WVVISIT)_U_$$RJ^XLFSTR($E(WVDATA(9000010,WVVISIT_",",.22),1,13),13)
  1. .S WVVISITS(WVVISIT)=WVVISITS(WVVISIT)_U_$$REPEAT^XLFSTR(" ",10)_$$RJ^XLFSTR($E(WVDATA(9000010,WVVISIT_",",15001),1,12),12)
  1. S WVKEY(WVVISITS)=WVVISIT
  1. Q WVRETURN
  1. DOCS(WVDOCS,WVKEY,WVDOC) ;RETRIEVE SPECIFIED DOCUMENT
  1. N WVDATA,WVERRORS,WVRETURN
  1. S WVRETURN=1
  1. D GETS^DIQ(8925,WVDOC_",",".01;1201;1202","","WVDATA","WVERRORS")
  1. I $D(WVERRORS) S WVRETURN=$$ERROR^WVMGRP("retrieving available documents",.WVERRORS) Q
  1. S WVDOCS=1+WVDOCS
  1. S WVDOCS(WVDOC)=$$LJ^XLFSTR(WVDATA(8925,WVDOC_",",1201),23)_$E(WVDATA(8925,WVDOC_",",.01),1,60)
  1. S WVDOCS(WVDOC)=WVDOCS(WVDOC)_U_" "_$E(WVDATA(8925,WVDOC_",",1202),1,78)
  1. S WVKEY(WVDOCS)=WVDOC
  1. Q WVRETURN
  1. ITEMS(WVITEMS,WVKEY,WVPAT) ;RETRIEVE EITHER DOCUMENTS OR VISITS FOR A PATIENT
  1. N WVRETURN,WVITEM,WVINDEX
  1. S WVINDEX=$S($D(^WV(790.8,"E",WVPAT))>9:"E",1:"D"),WVRETURN=1_U,WVITEMS=0
  1. S WVITEM=0 F S WVITEM=$O(^WV(790.8,WVINDEX,WVPAT,WVITEM)) Q:'+WVITEM!($G(WVRETURN)=-1) D
  1. .I WVINDEX="D" S WVRETURN=$$VISITS(.WVITEMS,.WVKEY,WVITEM)
  1. .I WVINDEX="E" S WVRETURN=$$DOCS(.WVITEMS,.WVKEY,WVITEM)
  1. .M WVITEMS(WVITEM)=^WV(790.8,WVINDEX,WVPAT,WVITEM)
  1. I WVITEMS>0 S $P(WVRETURN,U,2)=$S(WVINDEX="E":"DOCUMENT",1:"VISIT")
  1. Q WVRETURN
  1. BRANCH(WVIEN,WVACT) ;PROCESS A BRANCH OF ACTIVITIES (DO NOT USE OUTSIDE OF THIS ROUTINE)
  1. N WVRESULT,WVPIECE,WVAIEN
  1. S WVCHAIN=WVIEN_$S($G(WVCHAIN)'="":U_WVCHAIN,1:""),WVRESULT=$$ACTIVTY(WVIEN)
  1. I $P(WVRESULT,U)>0 D
  1. .;TAKE ACTION
  1. .S WVACT=WVRESULT,WVRESULT=$$PACT^WVMGRP2(WVNODE,$P(WVACT,U),WVIEN,$P(WVACT,U,3),$P(WVACT,U,4))
  1. I WVRESULT=0 D
  1. .;GO TO NEXT ACTIVITY IN CHAIN
  1. .F WVPIECE=1:1:($L(WVIEN,",")-1) S WVAIEN(WVPIECE)=$P(WVIEN,",",WVPIECE)
  1. .S WVAIEN=0 F S WVAIEN=$O(^WV(790.8,WVAIEN(2),1,WVAIEN(1),2,WVAIEN)) Q:'+WVAIEN!($G(WVRESULT)>0) D
  1. ..S WVRESULT=$$BRANCH($P($G(^WV(790.8,WVAIEN(2),1,WVAIEN(1),2,WVAIEN,0)),U)_","_WVAIEN(2)_",",.WVACT)
  1. Q WVRESULT
  1. ;
  1. ACTIVTY(WVIEN) ;PROCESS AN ACTIVITY (DO NOT USE OUTSIDE OF THIS ROUTINE)
  1. ; INPUT: WVIEN: IEN OF THE CURRENT ACTIVITY [REQUIRED]
  1. ; OUTPUT: $$ACTIVTY: WHAT THE USER WANTS TO DO
  1. ; 1 TO REASSIGN, 2 TO MARK ENTERED IN ERROR, 0 TO TAKE NO ACTION, -1 TO QUIT
  1. N WVDATA,WVMSG,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,WVPT,WVRET,WVHELP,WVCNT,WVTEXT,WVRESULT,WVFDA,WVERRORS
  1. D GETS^DIQ(790.801,WVIEN,"*","IE","WVDATA","WVMSG")
  1. I $D(WVMSG) Q $$ERROR^WVMGRP("retrieving activity #"_WVIEN,.WVMSG)
  1. S WVRESULT=$$SHODATA
  1. Q:WVRESULT=-1 -1
  1. W !," Activity Detail:",!,"ACTIVITY DATE/TIME: ",WVDATA(790.801,WVIEN,.01,"E"),!,?2,"ACTION: ",WVDATA(790.801,WVIEN,3,"E"),!
  1. W ?2,"DOCUMENT NAME (IEN): ",WVDATA(790.801,WVIEN,2,"E"),!
  1. 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"),!
  1. E S WVPT=WVPAT("NAME")
  1. I WVRESULT=2 D Q 0
  1. .W !," There is no longer any status data associated with this review",!," record and therefore, it will be ignored." H 5
  1. W !," Please review the chart for "_WVPT_".",!,"Press ENTER to continue: "
  1. R X:DTIME W !
  1. I WVDATA(790.801,WVIEN,3,"E")="REASSIGN" D
  1. .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")
  1. .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")
  1. .S WVCNT=0
  1. .S WVTEXT="Review both patients' charts using CPRS to determine which patient "
  1. .S WVTEXT=WVTEXT_"("_WVPAT("NAME")_" or "_WVPT_") the status displayed above is valid for. "
  1. .S WVTEXT=WVTEXT_"If the status is still valid for "_WVPAT("NAME")_", enter 'N' for no (you do "
  1. .S WVTEXT=WVTEXT_"not want to move the status data to "_WVPT_"). If the status is valid for "
  1. .S WVTEXT=WVTEXT_WVPT_", enter 'Y' for yes (you do want to move the status data to "_WVPT_")."
  1. .D WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
  1. .M DIR("?")=WVHELP S DIR("?")=DIR("?",WVCNT) K DIR("?",WVCNT)
  1. I WVDATA(790.801,WVIEN,3,"E")'="REASSIGN" D
  1. .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"
  1. .S WVRET=2_U_U_U_U_WVDATA(790.801,WVIEN,3,"E")_U_WVDATA(790.801,WVIEN,2,"E")_U
  1. .S WVCNT=0
  1. .S WVTEXT="Review "_WVPT_"'s chart using CPRS to determine if the status displayed "
  1. .S WVTEXT=WVTEXT_"above is still valid for "_WVPT_". If the status is still valid, enter "
  1. .S WVTEXT=WVTEXT_"'N' for no (you do not want to mark the status as entered in error). If the "
  1. .S WVTEXT=WVTEXT_"status is no longer valid, enter 'Y' for yes (you do want to mark the status "
  1. .S WVTEXT=WVTEXT_"as entered in error)."
  1. .D WRAP^ORUTL(WVTEXT,"WVHELP",0,,,.WVCNT)
  1. .M DIR("?")=WVHELP S DIR("?")=DIR("?",WVCNT) K DIR("?",WVCNT)
  1. S DIR(0)="Y"_U
  1. D ^DIR
  1. I $D(DIRUT)!($D(DIROUT)) Q -1
  1. Q $S(+Y=1:WVRET,1:0)
  1. ;
  1. SHODATA() ;DISPLAY STATUS DATA
  1. N DIC,DA,DR,DIQ,WVERROR,WVMSG,WVENTRIS
  1. I $G(WVTYPE)'="" D Q:$D(WVENTRIS)<10 2
  1. .S DA=0 F S DA=$O(^WV(790,WVPAT,WVNODE,$P(WVTYPE,U,2),WVITEM,DA)) Q:'+DA S WVENTRIS(DA)=""
  1. I $G(WVTYPE)="",$P(WVENTS(WVNODE,WVENTS("Y")),U)'="" S WVENTRIS($P(WVENTS(WVNODE,WVENTS("Y")),U))=""
  1. I $D(WVENTRIS)<10 D Q WVERROR
  1. .S WVMSG="There is an unknown problem with the selected status data."
  1. .S WVERROR=$$ERROR^WVMGRP("displaying status data",,WVMSG)
  1. S DIC="^WV(790,"_WVPAT_","_WVNODE_",",DA(1)=WVPAT
  1. W !!," Status Data ("_WVPAT("NAME")_"):"
  1. S DA=0 F S DA=$O(WVENTRIS(DA)) Q:'+DA D EN^DIQ
  1. Q 1
  1. ;
  1. CROOTREC(WVIEN) ;DELETE FILE #790.8 ENTRY
  1. N WVFDA,WVERRORS,WVERROR
  1. S WVFDA(790.8,WVIEN_",",.01)="@",WVERROR=1
  1. D FILE^DIE("","WVFDA","WVERRORS")
  1. I $D(WVERRORS) S WVERROR=$$ERROR^WVMGRP("deleting patient's review record",.WVERRORS)
  1. Q WVERROR
  1. ;