| 1 | ORLP3AC1 ; SLC/PKS - ADD and DELETE a patient to clinic Team List Autolinks.  [12/28/99 2:48pm]
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**47**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; Called by: ORLP3AUC.
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | ADD ; Add patient to applicable team lists.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; Variables used -
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;    NEW'd and assigned by calling tag (ORLP3AUC):
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ;       ORTL   = OE/RR TEAM LIST file number (set to "100.21").
 | 
|---|
| 13 |  ;       ORCL   = Clinic.
 | 
|---|
| 14 |  ;       ORPT   = Patient number.
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ;    NEW'd herein:
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ;       ORTEAM = Team List.
 | 
|---|
| 19 |  ;       ORAL   = Team List Autolink.
 | 
|---|
| 20 |  ;       ORVAL  = Team List Autolink node data value.
 | 
|---|
| 21 |  ;       ORTYPE = Type of Autolink.
 | 
|---|
| 22 |  ;       X      = Required variable for call to FILE^DICN.
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  N ORTEAM,ORAL,ORVAL,ORTYPE,X
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ; Order through OE/RR TEAM LIST file looking for clinic autolinks:
 | 
|---|
| 27 |  S ORTEAM=0 ; Initialize.
 | 
|---|
| 28 |  F  S ORTEAM=$O(^OR(ORTL,ORTEAM)) Q:'+ORTEAM  D      ; Each team.
 | 
|---|
| 29 |  .I $P(^OR(ORTL,ORTEAM,0),"^",2)["A",'$O(^OR(ORTL,ORTEAM,2,0)) Q  ; If not an Autolink Team List or no Autolink records, skip.
 | 
|---|
| 30 |  .S ORAL=0 ; Initialize.
 | 
|---|
| 31 |  .F  S ORAL=$O(^OR(ORTL,ORTEAM,2,ORAL)) Q:'+ORAL  D  ; Each Autolink.
 | 
|---|
| 32 |  ..I $D(^OR(ORTL,ORTEAM,2,ORAL,0)) S ORVAL=^OR(ORTL,ORTEAM,2,ORAL,0) ; Get data value from this clinic's record.
 | 
|---|
| 33 |  ..S ORTYPE=$P(ORVAL,";",2) ; Get Autolink type.
 | 
|---|
| 34 |  ..I ORTYPE="SC(" D         ; Is the Autolink type a clinic?
 | 
|---|
| 35 |  ...I $P(ORVAL,";")=ORCL D  ; Is it the clinic involved?
 | 
|---|
| 36 |  ....I $D(^OR(ORTL,ORTEAM,10,"B",ORPT_";DPT(")) Q  ; Patient already there?
 | 
|---|
| 37 |  ....;
 | 
|---|
| 38 |  ....; Lock the records at the Team level:
 | 
|---|
| 39 |  ....L +^OR(ORTL,+ORTEAM):5
 | 
|---|
| 40 |  ....I '$T W !,"  WARNING: File locked - "_$P($G(^OR(ORTL,+ORTEAM,0)),"^")_" Team List not updated." Q  ; Skip this Team if there's a locking problem.
 | 
|---|
| 41 |  ....;
 | 
|---|
| 42 |  ....; Set variables and call tag^routine that invokes DICN call:
 | 
|---|
| 43 |  ....S:'$D(^OR(ORTL,+ORTEAM,10,0)) ^(0)="^100.2101AV^^"
 | 
|---|
| 44 |  ....K DIC,DA,DO,DD,X
 | 
|---|
| 45 |  ....S X=ORPT_";DPT("
 | 
|---|
| 46 |  ....S DIC(0)="L"
 | 
|---|
| 47 |  ....S DA(1)=+ORTEAM
 | 
|---|
| 48 |  ....S DIC="^OR("_ORTL_","_DA(1)_",10,"
 | 
|---|
| 49 |  ....D FILE^DICN
 | 
|---|
| 50 |  ....L -^OR(ORTL,+ORTEAM) ; Release the lock on this Team.
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | DELETE ; Delete patient from team lists if appropriate.  (Patient
 | 
|---|
| 55 |  ;    not removed if another autolink would list him/her.)
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ; Variables used -
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  ;    NEW'd and assigned by calling tag (ORLP3AUC):
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  ;       ORTL   = OE/RR TEAM LIST file number (set to "100.21").
 | 
|---|
| 62 |  ;       ORCL   = Clinic.
 | 
|---|
| 63 |  ;       ORPT   = Patient number.
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ;    NEW'd herein (or in BLDDEL tag called herein):
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  ;       ORTEAM = Team List.
 | 
|---|
| 68 |  ;       ORAL   = Team List Autolink.
 | 
|---|
| 69 |  ;       ORVAL  = Team List Autolink node data value.
 | 
|---|
| 70 |  ;       ORTYPE = Type of Autolink.
 | 
|---|
| 71 |  ;       ORLINK = Autolink holder variable.
 | 
|---|
| 72 |  ;       LNAME  = Team List textual name.
 | 
|---|
| 73 |  ;       VP     = Array for call to PTS^ORLP2.
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  N ORTEAM,ORAL,ORVAL,ORTYPE,ORLINK,LNAME,VP
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  ; Order through OE/RR TEAM LIST file looking for autolinks:
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  S ORTEAM=0 ; Initialize.
 | 
|---|
| 80 |  F  S ORTEAM=$O(^OR(ORTL,ORTEAM)) Q:'+ORTEAM  D      ; Each team.
 | 
|---|
| 81 |  .I $P(^OR(ORTL,ORTEAM,0),"^",2)["A",'$O(^OR(ORTL,ORTEAM,2,0)) Q  ; If not an Autolink Team List or no Autolink records, skip.
 | 
|---|
| 82 |  .S ORAL=0 ; Initialize.
 | 
|---|
| 83 |  .F  S ORAL=$O(^OR(ORTL,ORTEAM,2,ORAL)) Q:'+ORAL  D  ; Each Autolink.
 | 
|---|
| 84 |  ..I $D(^OR(ORTL,ORTEAM,2,ORAL,0)) S ORVAL=^OR(ORTL,ORTEAM,2,ORAL,0) ; Get data value from this clinic's record.
 | 
|---|
| 85 |  ..S ORTYPE=$P(ORVAL,";",2) ; Get Autolink type.
 | 
|---|
| 86 |  ..I ORTYPE="SC(" D         ; Is the Autolink type a clinic?
 | 
|---|
| 87 |  ...I $P(ORVAL,";")=ORCL D  ; Is it the clinic involved?
 | 
|---|
| 88 |  ....I '$D(^OR(ORTL,ORTEAM,10,"B",ORPT_";DPT(")) Q  ; Patient Autolinked there now?  If not, forget it.
 | 
|---|
| 89 |  ....D BLDDEL ; Call tag to build list/compare/delete entry if needed.
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | BLDDEL ; Build ^TMP, delete patient from clinic Autolinks as appropriate.
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  ; Build ^TMP global of all patients that would be on list 
 | 
|---|
| 96 |  ;    because of remaining Autolinks for this Team -
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  K VP,^TMP("ORLP",$J) ; "Just-in-case" clean up.
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; Set variables for call to DIC:
 | 
|---|
| 101 |  S DIC(0)="NZ"
 | 
|---|
| 102 |  S DA(1)=+ORTEAM
 | 
|---|
| 103 |  S DIC="^OR("_ORTL_","_DA(1)_",2,"
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 |  ; Order through Autolinks of this Team for remaining Autolinks:
 | 
|---|
| 106 |  S ORLINK=0 ; Initialize.
 | 
|---|
| 107 |  F  S ORLINK=$O(^OR(ORTL,+ORTEAM,2,ORLINK)) Q:'ORLINK  D
 | 
|---|
| 108 |  .I $G(^OR(ORTL,+ORTEAM,2,ORLINK,0))=ORCL_";SC(" Q  ; Skip clinic that triggered delete action - patient already there by default.
 | 
|---|
| 109 |  .S X="`"_ORLINK
 | 
|---|
| 110 |  .D ^DIC
 | 
|---|
| 111 |  .S VP=Y(0)
 | 
|---|
| 112 |  .S VP(1)="^"_$P($PIECE(VP,";",2),"^")
 | 
|---|
| 113 |  .S VP(2)=+VP
 | 
|---|
| 114 |  .S LNAME=Y(0,0)
 | 
|---|
| 115 |  .D PTS^ORLP2(.VP,"LINK") ; Call tag^routine to add patients to ^TMP.
 | 
|---|
| 116 |  K X,Y,DIC ; Clean up pre-DIC.
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  ; If patient is on list because of other autolinks, leave
 | 
|---|
| 119 |  ;    him/her there - otherwise delete the patient entry:
 | 
|---|
| 120 |  I '$D(^TMP("ORLP",$J,"LINK",ORPT)) D  ; Patient not on list?
 | 
|---|
| 121 |  .;
 | 
|---|
| 122 |  .; Lock the records at the Team level:
 | 
|---|
| 123 |  .L +^OR(ORTL,+ORTEAM):5
 | 
|---|
| 124 |  .I '$T W !,"  WARNING: File locked - "_LNAME_" Team List not updated." Q  ; Skip this Team if there's a locking problem.
 | 
|---|
| 125 |  .;
 | 
|---|
| 126 |  .S DA=$O(^OR(ORTL,+ORTEAM,10,"B",ORPT_";DPT(",0))
 | 
|---|
| 127 |  .I DA D
 | 
|---|
| 128 |  ..S DA(1)=+ORTEAM
 | 
|---|
| 129 |  ..S DIK="^OR("_ORTL_","_DA(1)_",10,"
 | 
|---|
| 130 |  ..D ^DIK
 | 
|---|
| 131 |  ..K DIK               ; Clean up DIK.
 | 
|---|
| 132 |  .;
 | 
|---|
| 133 |  .L -^OR(ORTL,+ORTEAM) ; Release the lock on this Team.
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  K VP,^TMP("ORLP",$J)  ; Clean up before quitting.
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 |  ;
 | 
|---|