[613] | 1 | ORLP2 ; SLC/Staff - Remove Autolinks from Team List ; [1/2/01 11:43am]
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**47,98**;Dec 17, 1997
|
---|
| 3 | ;from option ORLP REMOVE AUTOLINKS - remove autolinks from team lists
|
---|
| 4 | 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
|
---|
| 5 | D CLEAR^ORLP
|
---|
| 6 | W @IOF
|
---|
| 7 | 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"
|
---|
| 8 | 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."
|
---|
| 9 | 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.",!!
|
---|
| 10 | D ASKLIST I $D(DTOUT)!($G(ORSTOP)) D END Q
|
---|
| 11 | D ASKLINK(LIST) I $D(DTOUT)!($G(ORSTOP)) D END Q
|
---|
| 12 | D END
|
---|
| 13 | Q
|
---|
| 14 | ;
|
---|
| 15 | ASKLIST ;ask for team list
|
---|
| 16 | N DIC,DA,DIE
|
---|
| 17 | S DIC="^OR(100.21,",DIC(0)="AEFMQ",DIC("S")="I $P(^(0),U,2)[""A""",DIC("A")="Enter team list name: "
|
---|
| 18 | D GETDEF^ORLPL ;get list default, if one exists
|
---|
| 19 | D ^DIC I Y'>0 S ORSTOP=1 Q
|
---|
| 20 | S LIST=Y,^TMP("ORLP",$J,"TLIST")=+Y
|
---|
| 21 | I '$O(^OR(100.21,+LIST,2,0)) W !,"No Autolinks established for this team",! S ORSTOP=1 Q
|
---|
| 22 | I $O(^OR(100.21,+Y,10,0)) D
|
---|
| 23 | . F D Q:%
|
---|
| 24 | .. 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
|
---|
| 25 | .. I '% W !,"Answer 'YES' to delete existing 'Autolinks' and the associated patients,",!,"'NO' to return to the menus.",!
|
---|
| 26 | .. S ORSTOP=%'=1
|
---|
| 27 | Q
|
---|
| 28 | ;
|
---|
| 29 | ASKLINK(LIST) ;ask for autolinks
|
---|
| 30 | I +$G(LIST)'>0 Q
|
---|
| 31 | 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: "
|
---|
| 32 | D ^ORUS S %X="Y(",%Y="ALINK(" D %XY^%RCR I '$O(ALINK(0)) Q
|
---|
| 33 | K ^TMP("ORLP",$J,"LINK"),^TMP("ORLP",$J,"UNLINK")
|
---|
| 34 | ;
|
---|
| 35 | ; Build ^TMP global of all patients that would be on list because
|
---|
| 36 | ; of the deleted autolinks and delete autolinks
|
---|
| 37 | S LNK=0 F S LNK=$O(ALINK(LNK)) Q:'LNK D
|
---|
| 38 | . I $P(^OR(100.21,+LIST,0),U,2)["A",'$O(^OR(100.21,+LIST,2,0)) Q
|
---|
| 39 | . 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")
|
---|
| 40 | . 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!"
|
---|
| 41 | ;
|
---|
| 42 | ; Build ^TMP global of all patients that would be on list because
|
---|
| 43 | ; of remaining autolinks.
|
---|
| 44 | S DA(1)=+LIST,DIC="^OR(100.21,"_DA(1)_",2,",DIC(0)="NZ"
|
---|
| 45 | 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")
|
---|
| 46 | K DIC
|
---|
| 47 | ; if the patient is on list because of remaining autolink leave them
|
---|
| 48 | ; there otherwise delete them
|
---|
| 49 | S CNT=0,K="" F S K=$O(^TMP("ORLP",$J,"UNLINK",K)) Q:K="" D
|
---|
| 50 | . 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
|
---|
| 51 | W !," "_CNT_" patient(s) removed from list.",!
|
---|
| 52 | Q
|
---|
| 53 | ;
|
---|
| 54 | PTS(VP,ACT) ;
|
---|
| 55 | ; set or kill entries out of temp global
|
---|
| 56 | ; set for patients found to be on a deleted link
|
---|
| 57 | ; kill for patients to be on another autolink.
|
---|
| 58 | ; ("Clinic" addition to $SELECT function added by PKS-6/99:)
|
---|
| 59 | 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.]"
|
---|
| 60 | I VP(1)="^DIC(42," D LOOPTS("CN",LNAME,ACT) Q
|
---|
| 61 | I VP(1)="^DG(405.4," D LOOPTS("RM",LNAME,ACT) Q
|
---|
| 62 | I VP(1)="^VA(200," D Q
|
---|
| 63 | . I $P(VP,U,2)="B" D LOOPTS("APR",+VP,ACT),LOOPTS("AAP",+VP,ACT) Q
|
---|
| 64 | . I $P(VP,U,2)="P" D LOOPTS("APR",+VP,ACT) Q
|
---|
| 65 | . I $P(VP,U,2)="A" D LOOPTS("AAP",+VP,ACT) Q
|
---|
| 66 | I VP(1)="^DIC(45.7," D LOOPTS("ATR",+VP,ACT) Q
|
---|
| 67 | ; Next line added by PKS on 6/99:
|
---|
| 68 | I VP(1)="^SC(" D LOOPCL("SC",+VP,ACT) Q
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | LOOPTS(REF,DEX,ACT) ;
|
---|
| 72 | S ORLPT=0 F S ORLPT=$O(^DPT(REF,DEX,ORLPT)) Q:'ORLPT S X=ORLPT_";DPT(" S ^TMP("ORLP",$J,ACT,X)=""
|
---|
| 73 | Q
|
---|
| 74 | ;
|
---|
| 75 | LOOPCL(REF,CLINIC,ACT) ; slc/PKS - 6/99
|
---|
| 76 | ;
|
---|
| 77 | ; Add CLINIC linked patients to ^TMP list of all Autolink patients,
|
---|
| 78 | ; so they can be evaluated for deletion if not duplicated
|
---|
| 79 | ; by another Autolink.
|
---|
| 80 | ;
|
---|
| 81 | ; Variables used:
|
---|
| 82 | ;
|
---|
| 83 | ; REF = Passed as "SC" for code clarity but not used herein.
|
---|
| 84 | ; CLINIC = Clinic to search.
|
---|
| 85 | ; ACT = Action to take ("LINK" or "UNLINK").
|
---|
| 86 | ; ORLIST = Array, returned by call to PTCL^SCAPMC.
|
---|
| 87 | ; ORERR = Array for errors, returned by call to PTCL^SCAPMC.
|
---|
| 88 | ; RESULT = Holds result of PTCL^SCAPMC call (1=OK, 0=error).
|
---|
| 89 | ; RCD = Holder for each record in ^TMP of PTCL^SCAPMC.
|
---|
| 90 | ; PATIENT = Patient IEN.
|
---|
| 91 | ; X = Temp value holder variable.
|
---|
| 92 | ;
|
---|
| 93 | N ORLIST,ORERR,RESULT,RCD,PATIENT,X
|
---|
| 94 | ;
|
---|
| 95 | ; Process the Autolink entries:
|
---|
| 96 | K ^TMP("SC TMP LIST") ; Clean up potential leftover data.
|
---|
| 97 | S RESULT=$$PTCL^SCAPMC(CLINIC,,.ORLIST,.ORERR)
|
---|
| 98 | I RESULT=0 W !,"Processing ERROR - patients NOT deleted for this autolink." Q ; Abort if there's a problem.
|
---|
| 99 | ; Clinic patients should now be in ^TMP("SC TMP LIST",$J file.
|
---|
| 100 | ;
|
---|
| 101 | ; Write patients to the new, second ^TMP file for further processing.
|
---|
| 102 | S RCD=0 ; Initialize.
|
---|
| 103 | F S RCD=$O(^TMP("SC TMP LIST",$J,RCD)) Q:'RCD D ; Read each record from first ^TMP file.
|
---|
| 104 | .S PATIENT=$P(^TMP("SC TMP LIST",$J,RCD),"^") ; Patient IEN.
|
---|
| 105 | .S X=PATIENT_";DPT(" ; Add to patient string.
|
---|
| 106 | .S ^TMP("ORLP",$J,ACT,X)="" ; Write to second ^TMP file.
|
---|
| 107 | .Q ; Loop for each record in ^TMP file written to new ^TMP file.
|
---|
| 108 | ;
|
---|
| 109 | K ^TMP("SC TMP LIST",$J) ; Clean up first ^TMP file entries.
|
---|
| 110 | ;
|
---|
| 111 | Q
|
---|
| 112 | ;
|
---|
| 113 | REN ; SLC/PKS - 7/99
|
---|
| 114 | ;
|
---|
| 115 | ; Allow users to rename a Team List.
|
---|
| 116 | ; Shows as a selection on menu of ORLP TEAM MENU option,
|
---|
| 117 | ; Called by option ORLP TEAM RENAME shown on that menu.
|
---|
| 118 | ;
|
---|
| 119 | ; Variables used:
|
---|
| 120 | ;
|
---|
| 121 | ; DIC = Fileman call.
|
---|
| 122 | ; Y = DIC output variable containing existing Team List name.
|
---|
| 123 | ; DIE = Fileman call.
|
---|
| 124 | ; DR = DIE input variable.
|
---|
| 125 | ; ORTEAM = Selected team.
|
---|
| 126 | ; ORNEW = New name to use in renaming of Team List.
|
---|
| 127 | ;
|
---|
| 128 | N DIC,DIR,DIE,DR,ORTEAM,ORNEW
|
---|
| 129 | ;
|
---|
| 130 | ; Allow selection of a Team List to rename:
|
---|
| 131 | S DIC="^OR(100.21,"
|
---|
| 132 | S DIC(0)="AEFQ"
|
---|
| 133 | S DIC("A")="Enter team list name: "
|
---|
| 134 | D ^DIC ; Call Fileman function for lookup of Team List name.
|
---|
| 135 | I ($D(DTOUT))!($D(DUOUT)) Q ; Punt if there's a problem.
|
---|
| 136 | I '(Y>0) Q ; Punt if no entry selected.
|
---|
| 137 | S ORTEAM=$P(Y,"^") ; Assign IEN of list selected by user.
|
---|
| 138 | K DIC
|
---|
| 139 | ;
|
---|
| 140 | ; Call Fileman's DIR to get formatted user input:
|
---|
| 141 | ;
|
---|
| 142 | S DIR(0)="FA^3:30^KILL:(X?.N)!'(X'?1P.E) X"
|
---|
| 143 | S DIR("A")="Enter new team list name: "
|
---|
| 144 | S DIR("?")="Name must be from 3-30 characters and not begin with punctuation or consist wholly of numbers"
|
---|
| 145 | S DIR("??")=DIR("?")
|
---|
| 146 | D ^DIR
|
---|
| 147 | I ($D(DTOUT))!($D(DUOUT)) Q ; Punt if there's a problem.
|
---|
| 148 | I Y=-1 K DIR Q ; Punt if no input is made.
|
---|
| 149 | S ORNEW=X
|
---|
| 150 | K DIR
|
---|
| 151 | ;
|
---|
| 152 | L +^OR(100.21,ORTEAM):3 ; Lock the file at the Team List level.
|
---|
| 153 | I ('$TEST) W !,"Another user is editing this entry." QUIT ; Punt if there's a file locking conflict.
|
---|
| 154 | ;
|
---|
| 155 | ; Call Fileman function to implement renaming:
|
---|
| 156 | S DIE="^OR(100.21,"
|
---|
| 157 | S DA=ORTEAM
|
---|
| 158 | S DR=".01///^S X=ORNEW"
|
---|
| 159 | D ^DIE ; Writes to first field of .01 record.
|
---|
| 160 | S DR=".1///^SET X=ORNEW"
|
---|
| 161 | D ^DIE ; Writes to third field of .01 record.
|
---|
| 162 | ;
|
---|
| 163 | L -^OR(100.12,ORTEAM) ; Unlock file.
|
---|
| 164 | K DIE
|
---|
| 165 | Q
|
---|
| 166 | ;
|
---|
| 167 | END ;
|
---|
| 168 | I '$G(LIST) Q
|
---|
| 169 | L -^OR(100.21,+LIST)
|
---|
| 170 | Q
|
---|
| 171 | ;
|
---|