- ORLP2 ; SLC/Staff - Remove Autolinks from Team List ; [1/2/01 11:43am]
- ;;3.0;ORDER ENTRY/RESULTS REPORTING;**47,98**;Dec 17, 1997
- ;from option ORLP REMOVE AUTOLINKS - remove autolinks from team lists
- N %X,%Y,ACT,ALINK,CNT,DA,DIC,DIE,DIK,DIR,DLAYGO,DR,DTOUT,DUOUT,FILE,K,LINK,LIST,LNAME,LNK,LST,ORLPT,ORSTOP,ORUS,REF,TEAM,USER,VP,Y
- D CLEAR^ORLP
- W @IOF
- W !,"A team list is a list containing patients related to several providers.",!,"These providers are the list's users. You may select one of these lists"
- W !,"and remove one or more autolinks. Removal of autolinks will stop the",!,"automatic addition or deletion of patients with ADT movements associated",!,"with the deleted autolink."
- W !!,"Patients that were placed on the list using the deleted autolink will be",!,"removed from the list if they were not placed on the list by another Autolink.",!!
- D ASKLIST I $D(DTOUT)!($G(ORSTOP)) D END Q
- D ASKLINK(LIST) I $D(DTOUT)!($G(ORSTOP)) D END Q
- D END
- Q
- ;
- ASKLIST ;ask for team list
- N DIC,DA,DIE
- S DIC="^OR(100.21,",DIC(0)="AEFMQ",DIC("S")="I $P(^(0),U,2)[""A""",DIC("A")="Enter team list name: "
- D GETDEF^ORLPL ;get list default, if one exists
- D ^DIC I Y'>0 S ORSTOP=1 Q
- S LIST=Y,^TMP("ORLP",$J,"TLIST")=+Y
- I '$O(^OR(100.21,+LIST,2,0)) W !,"No Autolinks established for this team",! S ORSTOP=1 Q
- I $O(^OR(100.21,+Y,10,0)) D
- . F D Q:%
- .. S ORSTOP=0 W !,"List ",$P(Y,"^",2)," already contains patients and/or users.",!,"Do you want to remove some of them" S %=1 D YN^DICN I %=1 L +^OR(100.21,+LIST) Q
- .. I '% W !,"Answer 'YES' to delete existing 'Autolinks' and the associated patients,",!,"'NO' to return to the menus.",!
- .. S ORSTOP=%'=1
- Q
- ;
- ASKLINK(LIST) ;ask for autolinks
- I +$G(LIST)'>0 Q
- S ORUS="^OR(100.21,+LIST,2,",ORUS(0)="40MN",ORUS("T")="W @IOF,?31,""TEAM AUTOLINK LIST"",!",ORUS("A")="Enter Autolink(s) to REMOVE from list: "
- D ^ORUS S %X="Y(",%Y="ALINK(" D %XY^%RCR I '$O(ALINK(0)) Q
- K ^TMP("ORLP",$J,"LINK"),^TMP("ORLP",$J,"UNLINK")
- ;
- ; Build ^TMP global of all patients that would be on list because
- ; of the deleted autolinks and delete autolinks
- S LNK=0 F S LNK=$O(ALINK(LNK)) Q:'LNK D
- . I $P(^OR(100.21,+LIST,0),U,2)["A",'$O(^OR(100.21,+LIST,2,0)) Q
- . S VP=$G(^OR(100.21,+LIST,2,+ALINK(LNK),0)),VP(1)="^"_$P($P(VP,";",2),U),VP(2)=+VP,LNAME=$P(ALINK(LNK),U,3) D PTS(.VP,"UNLINK")
- . S DA=+ALINK(LNK),DA(1)=+LIST,DIE="^OR(100.21,"_DA(1)_",2,",DR=".01///@" D ^DIE W !," Autolink "_$P(ALINK(LNK),U,3)_" deleted!"
- ;
- ; Build ^TMP global of all patients that would be on list because
- ; of remaining autolinks.
- S DA(1)=+LIST,DIC="^OR(100.21,"_DA(1)_",2,",DIC(0)="NZ"
- S LST=0 F S LST=$O(^OR(100.21,+LIST,2,LST)) Q:'LST S X="`"_LST D ^DIC S VP=Y(0),VP(1)="^"_$P($P(VP,";",2),U),VP(2)=+VP,LNAME=Y(0,0) D PTS(.VP,"LINK")
- K DIC
- ; if the patient is on list because of remaining autolink leave them
- ; there otherwise delete them
- S CNT=0,K="" F S K=$O(^TMP("ORLP",$J,"UNLINK",K)) Q:K="" D
- . I '$D(^TMP("ORLP",$J,"LINK",K)) S DA=$O(^OR(100.21,+LIST,10,"B",K,0)) I DA S DA(1)=+LIST,DIK="^OR(100.21,"_DA(1)_",10," D ^DIK K DIK S CNT=CNT+1
- W !," "_CNT_" patient(s) removed from list.",!
- Q
- ;
- PTS(VP,ACT) ;
- ; set or kill entries out of temp global
- ; set for patients found to be on a deleted link
- ; kill for patients to be on another autolink.
- ; ("Clinic" addition to $SELECT function added by PKS-6/99:)
- I ACT="UNLINK" W !,"[ADT movements linked to "_$S(VP["DIC(42":"Ward Location ",VP["DG(405":"Room Bed ",VP["VA(200":"Provider ",VP["SC(":"Clinic ",1:"Treating Speciality ")_LNAME_" will now be discontinued.]"
- I VP(1)="^DIC(42," D LOOPTS("CN",LNAME,ACT) Q
- I VP(1)="^DG(405.4," D LOOPTS("RM",LNAME,ACT) Q
- I VP(1)="^VA(200," D Q
- . I $P(VP,U,2)="B" D LOOPTS("APR",+VP,ACT),LOOPTS("AAP",+VP,ACT) Q
- . I $P(VP,U,2)="P" D LOOPTS("APR",+VP,ACT) Q
- . I $P(VP,U,2)="A" D LOOPTS("AAP",+VP,ACT) Q
- I VP(1)="^DIC(45.7," D LOOPTS("ATR",+VP,ACT) Q
- ; Next line added by PKS on 6/99:
- I VP(1)="^SC(" D LOOPCL("SC",+VP,ACT) Q
- Q
- ;
- LOOPTS(REF,DEX,ACT) ;
- S ORLPT=0 F S ORLPT=$O(^DPT(REF,DEX,ORLPT)) Q:'ORLPT S X=ORLPT_";DPT(" S ^TMP("ORLP",$J,ACT,X)=""
- Q
- ;
- LOOPCL(REF,CLINIC,ACT) ; slc/PKS - 6/99
- ;
- ; Add CLINIC linked patients to ^TMP list of all Autolink patients,
- ; so they can be evaluated for deletion if not duplicated
- ; by another Autolink.
- ;
- ; Variables used:
- ;
- ; REF = Passed as "SC" for code clarity but not used herein.
- ; CLINIC = Clinic to search.
- ; ACT = Action to take ("LINK" or "UNLINK").
- ; ORLIST = Array, returned by call to PTCL^SCAPMC.
- ; ORERR = Array for errors, returned by call to PTCL^SCAPMC.
- ; RESULT = Holds result of PTCL^SCAPMC call (1=OK, 0=error).
- ; RCD = Holder for each record in ^TMP of PTCL^SCAPMC.
- ; PATIENT = Patient IEN.
- ; X = Temp value holder variable.
- ;
- N ORLIST,ORERR,RESULT,RCD,PATIENT,X
- ;
- ; Process the Autolink entries:
- K ^TMP("SC TMP LIST") ; Clean up potential leftover data.
- S RESULT=$$PTCL^SCAPMC(CLINIC,,.ORLIST,.ORERR)
- I RESULT=0 W !,"Processing ERROR - patients NOT deleted for this autolink." Q ; Abort if there's a problem.
- ; Clinic patients should now be in ^TMP("SC TMP LIST",$J file.
- ;
- ; Write patients to the new, second ^TMP file for further processing.
- S RCD=0 ; Initialize.
- F S RCD=$O(^TMP("SC TMP LIST",$J,RCD)) Q:'RCD D ; Read each record from first ^TMP file.
- .S PATIENT=$P(^TMP("SC TMP LIST",$J,RCD),"^") ; Patient IEN.
- .S X=PATIENT_";DPT(" ; Add to patient string.
- .S ^TMP("ORLP",$J,ACT,X)="" ; Write to second ^TMP file.
- .Q ; Loop for each record in ^TMP file written to new ^TMP file.
- ;
- K ^TMP("SC TMP LIST",$J) ; Clean up first ^TMP file entries.
- ;
- Q
- ;
- REN ; SLC/PKS - 7/99
- ;
- ; Allow users to rename a Team List.
- ; Shows as a selection on menu of ORLP TEAM MENU option,
- ; Called by option ORLP TEAM RENAME shown on that menu.
- ;
- ; Variables used:
- ;
- ; DIC = Fileman call.
- ; Y = DIC output variable containing existing Team List name.
- ; DIE = Fileman call.
- ; DR = DIE input variable.
- ; ORTEAM = Selected team.
- ; ORNEW = New name to use in renaming of Team List.
- ;
- N DIC,DIR,DIE,DR,ORTEAM,ORNEW
- ;
- ; Allow selection of a Team List to rename:
- S DIC="^OR(100.21,"
- S DIC(0)="AEFQ"
- S DIC("A")="Enter team list name: "
- D ^DIC ; Call Fileman function for lookup of Team List name.
- I ($D(DTOUT))!($D(DUOUT)) Q ; Punt if there's a problem.
- I '(Y>0) Q ; Punt if no entry selected.
- S ORTEAM=$P(Y,"^") ; Assign IEN of list selected by user.
- K DIC
- ;
- ; Call Fileman's DIR to get formatted user input:
- ;
- S DIR(0)="FA^3:30^KILL:(X?.N)!'(X'?1P.E) X"
- S DIR("A")="Enter new team list name: "
- S DIR("?")="Name must be from 3-30 characters and not begin with punctuation or consist wholly of numbers"
- S DIR("??")=DIR("?")
- D ^DIR
- I ($D(DTOUT))!($D(DUOUT)) Q ; Punt if there's a problem.
- I Y=-1 K DIR Q ; Punt if no input is made.
- S ORNEW=X
- K DIR
- ;
- L +^OR(100.21,ORTEAM):3 ; Lock the file at the Team List level.
- I ('$TEST) W !,"Another user is editing this entry." QUIT ; Punt if there's a file locking conflict.
- ;
- ; Call Fileman function to implement renaming:
- S DIE="^OR(100.21,"
- S DA=ORTEAM
- S DR=".01///^S X=ORNEW"
- D ^DIE ; Writes to first field of .01 record.
- S DR=".1///^SET X=ORNEW"
- D ^DIE ; Writes to third field of .01 record.
- ;
- L -^OR(100.12,ORTEAM) ; Unlock file.
- K DIE
- Q
- ;
- END ;
- I '$G(LIST) Q
- L -^OR(100.21,+LIST)
- Q
- ;
- ORLP2 ; SLC/Staff - Remove Autolinks from Team List ; [1/2/01 11:43am]
- +1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**47,98**;Dec 17, 1997
- +2 ;from option ORLP REMOVE AUTOLINKS - remove autolinks from team lists
- +3 NEW %X,%Y,ACT,ALINK,CNT,DA,DIC,DIE,DIK,DIR,DLAYGO,DR,DTOUT,DUOUT,FILE,K,LINK,LIST,LNAME,LNK,LST,ORLPT,ORSTOP,ORUS,REF,TEAM,USER,VP,Y
- +4 DO CLEAR^ORLP
- +5 WRITE @IOF
- +6 WRITE !,"A team list is a list containing patients related to several providers.",!,"These providers are the list's users. You may select one of these lists"
- +7 WRITE !,"and remove one or more autolinks. Removal of autolinks will stop the",!,"automatic addition or deletion of patients with ADT movements associated",!,"with the deleted autolink."
- +8 WRITE !!,"Patients that were placed on the list using the deleted autolink will be",!,"removed from the list if they were not placed on the list by another Autolink.",!!
- +9 DO ASKLIST
- IF $DATA(DTOUT)!($GET(ORSTOP))
- DO END
- QUIT
- +10 DO ASKLINK(LIST)
- IF $DATA(DTOUT)!($GET(ORSTOP))
- DO END
- QUIT
- +11 DO END
- +12 QUIT
- +13 ;
- ASKLIST ;ask for team list
- +1 NEW DIC,DA,DIE
- +2 SET DIC="^OR(100.21,"
- SET DIC(0)="AEFMQ"
- SET DIC("S")="I $P(^(0),U,2)[""A"""
- SET DIC("A")="Enter team list name: "
- +3 ;get list default, if one exists
- DO GETDEF^ORLPL
- +4 DO ^DIC
- IF Y'>0
- SET ORSTOP=1
- QUIT
- +5 SET LIST=Y
- SET ^TMP("ORLP",$JOB,"TLIST")=+Y
- +6 IF '$ORDER(^OR(100.21,+LIST,2,0))
- WRITE !,"No Autolinks established for this team",!
- SET ORSTOP=1
- QUIT
- +7 IF $ORDER(^OR(100.21,+Y,10,0))
- Begin DoDot:1
- +8 FOR
- Begin DoDot:2
- +9 SET ORSTOP=0
- WRITE !,"List ",$PIECE(Y,"^",2)," already contains patients and/or users.",!,"Do you want to remove some of them"
- SET %=1
- DO YN^DICN
- IF %=1
- LOCK +^OR(100.21,+LIST)
- QUIT
- +10 IF '%
- WRITE !,"Answer 'YES' to delete existing 'Autolinks' and the associated patients,",!,"'NO' to return to the menus.",!
- +11 SET ORSTOP=%'=1
- End DoDot:2
- IF %
- QUIT
- End DoDot:1
- +12 QUIT
- +13 ;
- ASKLINK(LIST) ;ask for autolinks
- +1 IF +$GET(LIST)'>0
- QUIT
- +2 SET ORUS="^OR(100.21,+LIST,2,"
- SET ORUS(0)="40MN"
- SET ORUS("T")="W @IOF,?31,""TEAM AUTOLINK LIST"",!"
- SET ORUS("A")="Enter Autolink(s) to REMOVE from list: "
- +3 DO ^ORUS
- SET %X="Y("
- SET %Y="ALINK("
- DO %XY^%RCR
- IF '$ORDER(ALINK(0))
- QUIT
- +4 KILL ^TMP("ORLP",$JOB,"LINK"),^TMP("ORLP",$JOB,"UNLINK")
- +5 ;
- +6 ; Build ^TMP global of all patients that would be on list because
- +7 ; of the deleted autolinks and delete autolinks
- +8 SET LNK=0
- FOR
- SET LNK=$ORDER(ALINK(LNK))
- IF 'LNK
- QUIT
- Begin DoDot:1
- +9 IF $PIECE(^OR(100.21,+LIST,0),U,2)["A"
- IF '$ORDER(^OR(100.21,+LIST,2,0))
- QUIT
- +10 SET VP=$GET(^OR(100.21,+LIST,2,+ALINK(LNK),0))
- SET VP(1)="^"_$PIECE($PIECE(VP,";",2),U)
- SET VP(2)=+VP
- SET LNAME=$PIECE(ALINK(LNK),U,3)
- DO PTS(.VP,"UNLINK")
- +11 SET DA=+ALINK(LNK)
- SET DA(1)=+LIST
- SET DIE="^OR(100.21,"_DA(1)_",2,"
- SET DR=".01///@"
- DO ^DIE
- WRITE !," Autolink "_$PIECE(ALINK(LNK),U,3)_" deleted!"
- End DoDot:1
- +12 ;
- +13 ; Build ^TMP global of all patients that would be on list because
- +14 ; of remaining autolinks.
- +15 SET DA(1)=+LIST
- SET DIC="^OR(100.21,"_DA(1)_",2,"
- SET DIC(0)="NZ"
- +16 SET LST=0
- FOR
- SET LST=$ORDER(^OR(100.21,+LIST,2,LST))
- IF 'LST
- QUIT
- SET X="`"_LST
- DO ^DIC
- SET VP=Y(0)
- SET VP(1)="^"_$PIECE($PIECE(VP,";",2),U)
- SET VP(2)=+VP
- SET LNAME=Y(0,0)
- DO PTS(.VP,"LINK")
- +17 KILL DIC
- +18 ; if the patient is on list because of remaining autolink leave them
- +19 ; there otherwise delete them
- +20 SET CNT=0
- SET K=""
- FOR
- SET K=$ORDER(^TMP("ORLP",$JOB,"UNLINK",K))
- IF K=""
- QUIT
- Begin DoDot:1
- +21 IF '$DATA(^TMP("ORLP",$JOB,"LINK",K))
- SET DA=$ORDER(^OR(100.21,+LIST,10,"B",K,0))
- IF DA
- SET DA(1)=+LIST
- SET DIK="^OR(100.21,"_DA(1)_",10,"
- DO ^DIK
- KILL DIK
- SET CNT=CNT+1
- End DoDot:1
- +22 WRITE !," "_CNT_" patient(s) removed from list.",!
- +23 QUIT
- +24 ;
- PTS(VP,ACT) ;
- +1 ; set or kill entries out of temp global
- +2 ; set for patients found to be on a deleted link
- +3 ; kill for patients to be on another autolink.
- +4 ; ("Clinic" addition to $SELECT function added by PKS-6/99:)
- +5 IF ACT="UNLINK"
- WRITE !,"[ADT movements linked to "_$SELECT(VP["DIC(42":"Ward Location ",VP["DG(405":"Room Bed ",VP["VA(200":"Provider ",VP["SC(":"Clinic ",1:"Treating Speciality ")_LNAME_" will now be discontinued.]"
- +6 IF VP(1)="^DIC(42,"
- DO LOOPTS("CN",LNAME,ACT)
- QUIT
- +7 IF VP(1)="^DG(405.4,"
- DO LOOPTS("RM",LNAME,ACT)
- QUIT
- +8 IF VP(1)="^VA(200,"
- Begin DoDot:1
- +9 IF $PIECE(VP,U,2)="B"
- DO LOOPTS("APR",+VP,ACT)
- DO LOOPTS("AAP",+VP,ACT)
- QUIT
- +10 IF $PIECE(VP,U,2)="P"
- DO LOOPTS("APR",+VP,ACT)
- QUIT
- +11 IF $PIECE(VP,U,2)="A"
- DO LOOPTS("AAP",+VP,ACT)
- QUIT
- End DoDot:1
- QUIT
- +12 IF VP(1)="^DIC(45.7,"
- DO LOOPTS("ATR",+VP,ACT)
- QUIT
- +13 ; Next line added by PKS on 6/99:
- +14 IF VP(1)="^SC("
- DO LOOPCL("SC",+VP,ACT)
- QUIT
- +15 QUIT
- +16 ;
- LOOPTS(REF,DEX,ACT) ;
- +1 SET ORLPT=0
- FOR
- SET ORLPT=$ORDER(^DPT(REF,DEX,ORLPT))
- IF 'ORLPT
- QUIT
- SET X=ORLPT_";DPT("
- SET ^TMP("ORLP",$JOB,ACT,X)=""
- +2 QUIT
- +3 ;
- LOOPCL(REF,CLINIC,ACT) ; slc/PKS - 6/99
- +1 ;
- +2 ; Add CLINIC linked patients to ^TMP list of all Autolink patients,
- +3 ; so they can be evaluated for deletion if not duplicated
- +4 ; by another Autolink.
- +5 ;
- +6 ; Variables used:
- +7 ;
- +8 ; REF = Passed as "SC" for code clarity but not used herein.
- +9 ; CLINIC = Clinic to search.
- +10 ; ACT = Action to take ("LINK" or "UNLINK").
- +11 ; ORLIST = Array, returned by call to PTCL^SCAPMC.
- +12 ; ORERR = Array for errors, returned by call to PTCL^SCAPMC.
- +13 ; RESULT = Holds result of PTCL^SCAPMC call (1=OK, 0=error).
- +14 ; RCD = Holder for each record in ^TMP of PTCL^SCAPMC.
- +15 ; PATIENT = Patient IEN.
- +16 ; X = Temp value holder variable.
- +17 ;
- +18 NEW ORLIST,ORERR,RESULT,RCD,PATIENT,X
- +19 ;
- +20 ; Process the Autolink entries:
- +21 ; Clean up potential leftover data.
- KILL ^TMP("SC TMP LIST")
- +22 SET RESULT=$$PTCL^SCAPMC(CLINIC,,.ORLIST,.ORERR)
- +23 ; Abort if there's a problem.
- IF RESULT=0
- WRITE !,"Processing ERROR - patients NOT deleted for this autolink."
- QUIT
- +24 ; Clinic patients should now be in ^TMP("SC TMP LIST",$J file.
- +25 ;
- +26 ; Write patients to the new, second ^TMP file for further processing.
- +27 ; Initialize.
- SET RCD=0
- +28 ; Read each record from first ^TMP file.
- FOR
- SET RCD=$ORDER(^TMP("SC TMP LIST",$JOB,RCD))
- IF 'RCD
- QUIT
- Begin DoDot:1
- +29 ; Patient IEN.
- SET PATIENT=$PIECE(^TMP("SC TMP LIST",$JOB,RCD),"^")
- +30 ; Add to patient string.
- SET X=PATIENT_";DPT("
- +31 ; Write to second ^TMP file.
- SET ^TMP("ORLP",$JOB,ACT,X)=""
- +32 ; Loop for each record in ^TMP file written to new ^TMP file.
- QUIT
- End DoDot:1
- +33 ;
- +34 ; Clean up first ^TMP file entries.
- KILL ^TMP("SC TMP LIST",$JOB)
- +35 ;
- +36 QUIT
- +37 ;
- REN ; SLC/PKS - 7/99
- +1 ;
- +2 ; Allow users to rename a Team List.
- +3 ; Shows as a selection on menu of ORLP TEAM MENU option,
- +4 ; Called by option ORLP TEAM RENAME shown on that menu.
- +5 ;
- +6 ; Variables used:
- +7 ;
- +8 ; DIC = Fileman call.
- +9 ; Y = DIC output variable containing existing Team List name.
- +10 ; DIE = Fileman call.
- +11 ; DR = DIE input variable.
- +12 ; ORTEAM = Selected team.
- +13 ; ORNEW = New name to use in renaming of Team List.
- +14 ;
- +15 NEW DIC,DIR,DIE,DR,ORTEAM,ORNEW
- +16 ;
- +17 ; Allow selection of a Team List to rename:
- +18 SET DIC="^OR(100.21,"
- +19 SET DIC(0)="AEFQ"
- +20 SET DIC("A")="Enter team list name: "
- +21 ; Call Fileman function for lookup of Team List name.
- DO ^DIC
- +22 ; Punt if there's a problem.
- IF ($DATA(DTOUT))!($DATA(DUOUT))
- QUIT
- +23 ; Punt if no entry selected.
- IF '(Y>0)
- QUIT
- +24 ; Assign IEN of list selected by user.
- SET ORTEAM=$PIECE(Y,"^")
- +25 KILL DIC
- +26 ;
- +27 ; Call Fileman's DIR to get formatted user input:
- +28 ;
- +29 SET DIR(0)="FA^3:30^KILL:(X?.N)!'(X'?1P.E) X"
- +30 SET DIR("A")="Enter new team list name: "
- +31 SET DIR("?")="Name must be from 3-30 characters and not begin with punctuation or consist wholly of numbers"
- +32 SET DIR("??")=DIR("?")
- +33 DO ^DIR
- +34 ; Punt if there's a problem.
- IF ($DATA(DTOUT))!($DATA(DUOUT))
- QUIT
- +35 ; Punt if no input is made.
- IF Y=-1
- KILL DIR
- QUIT
- +36 SET ORNEW=X
- +37 KILL DIR
- +38 ;
- +39 ; Lock the file at the Team List level.
- LOCK +^OR(100.21,ORTEAM):3
- +40 ; Punt if there's a file locking conflict.
- IF ('$TEST)
- WRITE !,"Another user is editing this entry."
- QUIT
- +41 ;
- +42 ; Call Fileman function to implement renaming:
- +43 SET DIE="^OR(100.21,"
- +44 SET DA=ORTEAM
- +45 SET DR=".01///^S X=ORNEW"
- +46 ; Writes to first field of .01 record.
- DO ^DIE
- +47 SET DR=".1///^SET X=ORNEW"
- +48 ; Writes to third field of .01 record.
- DO ^DIE
- +49 ;
- +50 ; Unlock file.
- LOCK -^OR(100.12,ORTEAM)
- +51 KILL DIE
- +52 QUIT
- +53 ;
- END ;
- +1 IF '$GET(LIST)
- QUIT
- +2 LOCK -^OR(100.21,+LIST)
- +3 QUIT
- +4 ;