| 1 | RARTST2 ;HISC/CAH,FPT,GJC,DAD AISC/MJK,RMO-Reports Distribution ;3/19/97  13:45 | 
|---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;**8,9**;Mar 16, 1998 | 
|---|
| 3 | SRT N RASRT S RASRT="" F RAS2=0:0 S RASRT=$O(^TMP($J,"RADIST",RABTY,RASRT)) Q:RASRT=""  F RAR=0:0 S RAR=$O(^TMP($J,"RADIST",RABTY,RASRT,RAR)) Q:'RAR  S RARDIFN=+^(RAR) D PRNT | 
|---|
| 4 | Q | 
|---|
| 5 | SET S RARPT=+Y K RABTY D RASET^RAUTL2 Q:'Y  S RAY3=$G(^RABTCH(74.4,RARDIFN,0)) Q:RAY3']"" | 
|---|
| 6 | I $D(^RABTCH(74.3,"B","REQUESTING PHYSICIAN",RAB))#2 D  G SET1 | 
|---|
| 7 | . ; Requesting Physician functionality | 
|---|
| 8 | . S:+$P(RAY3,"^",12) RABTY=$P($G(^VA(200,+$P(RAY3,"^",12),0)),"^") | 
|---|
| 9 | . S:'+$P(RAY3,"^",12) RABTY=$P($G(^VA(200,+$P(Y,"^",14),0)),"^") | 
|---|
| 10 | . S:RABTY']"" RABTY="Unknown" S RABTY="^"_RABTY | 
|---|
| 11 | . Q | 
|---|
| 12 | I RABT=6!(RABT=8) D  Q:'$D(RABTY) | 
|---|
| 13 | . S Y=+$P(RAY3,"^",RABT) Q:'Y | 
|---|
| 14 | . I RABT=6,$D(^DIC(42,Y,0)) S RABTY=$P(^(0),"^") | 
|---|
| 15 | . I RABT=8,$D(^SC(Y,0)) S RABTY=$P(^(0),"^") | 
|---|
| 16 | . Q | 
|---|
| 17 | E  D | 
|---|
| 18 | . N RA6,RA8 S RABTY="Unknown" | 
|---|
| 19 | . S RA6=+$P(RAY3,"^",6),RA8=+$P(RAY3,"^",8) | 
|---|
| 20 | . I RA6,'RA8 S RABTY=$S($D(^DIC(42,RA6,0)):$P(^(0),"^"),1:RABTY) | 
|---|
| 21 | . I 'RA6,RA8 S RABTY=$S($D(^SC(RA8,0)):$P(^(0),"^"),1:RABTY) | 
|---|
| 22 | . S:RABTY']"" RABTY="Unknown" | 
|---|
| 23 | . Q | 
|---|
| 24 | ; | 
|---|
| 25 | SET1 ; Set the data global | 
|---|
| 26 | N RAEXIT S RAEXIT=0 | 
|---|
| 27 | S RAY1=$G(^RADPT(RADFN,"DT",RADTI,0)) Q:'$D(RAIMAG(+$P(RAY1,U,2)))  I $D(RANGE),$P(RAY3,"^",+$P(RANGE,"^",3))'=+RANGE Q | 
|---|
| 28 | ;If RANGE is defined, user is prt'g from 'Individual Ward' or 'Single | 
|---|
| 29 | ; Clinic' option, and rpt should be bypassed if ward or clinic on the | 
|---|
| 30 | ; file 74.3 rpt record does not one of the selected requesting loc's | 
|---|
| 31 | ;If RANGE is NOT defined, user is prt'g from 'Print by Routine Queue' | 
|---|
| 32 | ; option and bypass logic depends on which queue they are printing | 
|---|
| 33 | ; from:  If Requesting Phys. Queue, use requesting location (i.e. ward | 
|---|
| 34 | ; or clinic on file 74.3) to determine if its division matches the | 
|---|
| 35 | ; division selected.  If File Room, Medical Records, or Other than | 
|---|
| 36 | ; Ward or Clinic queues are being printed, use exam division (i.e. | 
|---|
| 37 | ; division on exam record) to determine if exam's division matches | 
|---|
| 38 | ; the division selected. | 
|---|
| 39 | I '$D(RANGE),$D(^RABTCH(74.3,"B","REQUESTING PHYSICIAN",RAB)) D  Q:RAEXIT | 
|---|
| 40 | . I $P(RAY3,"^",6) S:'$D(RAF408($$GET1^DIQ(42,$P(RAY3,"^",6),.015,"I"))) RAEXIT=1 | 
|---|
| 41 | . I $P(RAY3,"^",8) S:'$D(RAF408($$GET1^DIQ(44,$P(RAY3,"^",8),3.5,"I"))) RAEXIT=1 | 
|---|
| 42 | . Q | 
|---|
| 43 | I '$D(RANGE),('$D(^RABTCH(74.3,"B","REQUESTING PHYSICIAN",RAB))) Q:'$D(RA4(+$P(RAY1,"^",3))) | 
|---|
| 44 | Q:'$D(^DPT(RADFN,0))  S RANME=^(0),RASSN=$$SSN^RAUTL,RASSN=$S(RASSN:$TR(RASSN,"-"),1:"999999999"),RANME=$P(RANME,"^") | 
|---|
| 45 | S RARTST2=1 D UPDLOC^RAUTL10 K RARTST2 Q:'$D(RAPRTOK) | 
|---|
| 46 | ;RARTST2I will only be defined if UPDLOC has deleted the file 74.4 | 
|---|
| 47 | ;entry RARDIFN.  RARTST2I will be the modified File Room entry | 
|---|
| 48 | S ^TMP($J,"RADIST",$S(RALOCSRT=1:RABTY,1:U),$S(RASRT="P":RANME,RASRT="S":"A"_RASSN,RASRT="T":"A"_($E(RASSN,8,9)_$E(RASSN,6,7))),RARPT)=$S($D(RARTST2I):RARTST2I,1:RARDIFN) K RARTST2I | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | PRNT Q:'$D(^RARPT(RAR,0))  Q:$P(^(0),"^",5)'="V"  S:$D(^RABTCH(74.3,RAB,"M")) RARTMES=^("M")_$S($D(RABEG):" (REPRINT)",1:"") | 
|---|
| 52 | S RASTFL="" S RARPT=RAR D ^RARTR Q:$G(RAY3)<0 | 
|---|
| 53 | S %DT="TX",X="NOW" D ^%DT | 
|---|
| 54 | I $D(^RABTCH(74.4,RARDIFN,0)),($P(^RABTCH(74.4,RARDIFN,0),"^",4)="") D | 
|---|
| 55 | . N D,D0,DA,DI,DIC,DIE,DQ,DR,X | 
|---|
| 56 | . S DA=RARDIFN,DIE="^RABTCH(74.4," | 
|---|
| 57 | . S DR="3////"_DUZ_";4////"_Y D ^DIE | 
|---|
| 58 | . Q | 
|---|
| 59 | S RARTCNT=RARTCNT+1 Q | 
|---|
| 60 | ; | 
|---|
| 61 | START ;RANGE is only defined if prt'g via 'Individual Ward' or 'Single Clinic' | 
|---|
| 62 | ;options.  The next ward or clinic to be printed is saved in piece | 
|---|
| 63 | ;1 and 2 of RANGE  (RANGE=ward or clinic ien^ward or clinic name^6 or 8) | 
|---|
| 64 | U IO | 
|---|
| 65 | I $D(RANGE) D | 
|---|
| 66 | . S TEXT="",RANGE=$TR(RANGE,"~","^") | 
|---|
| 67 | . F  S TEXT=$O(^TMP($J,"WARD/CLIN",TEXT)) Q:TEXT=""  D | 
|---|
| 68 | .. S TEXTD0=0 | 
|---|
| 69 | .. F  S TEXTD0=$O(^TMP($J,"WARD/CLIN",TEXT,TEXTD0)) Q:TEXTD0'>0  D | 
|---|
| 70 | ... S $P(RANGE,U,1,2)=TEXTD0_U_TEXT D START0 | 
|---|
| 71 | ... Q | 
|---|
| 72 | .. Q | 
|---|
| 73 | . Q | 
|---|
| 74 | E  D | 
|---|
| 75 | . D START0 | 
|---|
| 76 | . Q | 
|---|
| 77 | K %DT,D0,D1,DA,DIC,DIE,DIR,DIRUT,DIWF,DIWL,DIWR,DR,POP,RABT,RABTY,RACNI | 
|---|
| 78 | K RADATE,RAIMAG,RAPRT,RAPRTF,RAPRTOK,RAST,Z,RARTMES,RARPT,RARTCNT,RAB | 
|---|
| 79 | K RARDIFN,RADIV,RASRT,RABEG,RAEND,RAR,RASSN,RANME,RADFN,RADT,RADTI | 
|---|
| 80 | K RANGE,RARPT,RAS1,RAS2,RASTFL,RALOCSRT,RARTST1,RAY1,TEXT,TEXTD0 | 
|---|
| 81 | K ^TMP($J,"RADIST"),^TMP($J,"WARD/CLIN") | 
|---|
| 82 | D CLOSE^RAUTL | 
|---|
| 83 | Q | 
|---|
| 84 | ; | 
|---|
| 85 | START0 ; | 
|---|
| 86 | K ^TMP($J,"RADIST") Q:'$D(^RABTCH(74.3,RAB,0))  S Y=$P(^(0),"^",2),RABT=$S(Y="I":6,Y="O":8,1:0),RAPRTF=1 D BANNER | 
|---|
| 87 | I '$D(RABEG) F RARDIFN=0:0 S RARDIFN=$O(^RABTCH(74.4,"C",RAB,RARDIFN)) Q:'RARDIFN  I $D(^RABTCH(74.4,RARDIFN,0)),'$P(^(0),"^",4) S Y=^(0) D SET | 
|---|
| 88 | I $D(RABEG) F RADT=(RABEG-.0001):0 S RADT=$O(^RABTCH(74.4,"AD",RADT)) Q:'RADT!(RADT>RAEND)  F RARDIFN=0:0 S RARDIFN=$O(^RABTCH(74.4,"AD",RADT,RARDIFN)) Q:'RARDIFN  I $D(^RABTCH(74.4,RARDIFN,0)),$P(^(0),"^",11)=RAB S Y=^(0) D SET | 
|---|
| 89 | I '$D(^TMP($J,"RADIST")) D  G Q | 
|---|
| 90 | . W:$Y>(IOSL-4) @IOF | 
|---|
| 91 | . W !!,$G(RARTMES),!!,"No reports met the criteria selected." | 
|---|
| 92 | . I $D(RANGE) W !,$P("^^^^^Ward^^Clinic",U,$P(RANGE,U,3)),": ",$P(RANGE,U,2) | 
|---|
| 93 | . Q | 
|---|
| 94 | S RABTY="",RARTCNT=0 F RAS1=0:0 S RABTY=$O(^TMP($J,"RADIST",RABTY)) Q:RABTY=""  D NEWLOC,SRT | 
|---|
| 95 | W @IOF,"Total Number of Reports printed: ",RARTCNT,!! | 
|---|
| 96 | ;S DA=+RAB,DR="[RA DISTRIBUTION LOG]",DIE="^RABTCH(74.3,",RARTMES="" S:$D(RANGE) RARTMES=$P(RANGE,"^",2) | 
|---|
| 97 | ;D ^DIE K DE,DQ | 
|---|
| 98 | ; Added in patch 9 to stop endless loops... | 
|---|
| 99 | START1 L +^RABATCH(74.3,+RAB) | 
|---|
| 100 | S RARTMES="" S:$D(RANGE) RARTMES=$P(RANGE,U,2) | 
|---|
| 101 | S RAIENS="+1,"_(+RAB)_",",RAFDA(74.33,RAIENS,.01)="NOW" | 
|---|
| 102 | D UPDATE^DIE("E","RAFDA","RAIEN","RAERR") | 
|---|
| 103 | I '$G(RAIEN(1)) L -^RABTCH(74.3,+RAB) K RAIENS,RAIEN,RAFDA G START1 | 
|---|
| 104 | K RAFDA,RAIENS S RAIENS=RAIEN(1)_","_(+RAB)_"," K RAIEN | 
|---|
| 105 | S RAFDA(74.33,RAIENS,2)=$S($D(RABEG):"R",1:"P") | 
|---|
| 106 | S RAFDA(74.33,RAIENS,3)=DUZ | 
|---|
| 107 | S RAFDA(74.33,RAIENS,4)=$E(RARTMES,1,20) | 
|---|
| 108 | S RAFDA(74.33,RAIENS,5)=RARTCNT | 
|---|
| 109 | D FILE^DIE(,"RAFDA","RAERR") | 
|---|
| 110 | L -^RABTCH(74.3,+RAB) | 
|---|
| 111 | K RAFDA,RAIENS,RAERR | 
|---|
| 112 | Q D BANNER | 
|---|
| 113 | Q | 
|---|
| 114 | ; | 
|---|
| 115 | BANNER I $D(^RABTCH(74.3,RAB,"M")) S RARTMES=^("M")_$S($D(RABEG):" (REPRINT)",1:"") | 
|---|
| 116 | Q | 
|---|
| 117 | NEWLOC ; Print Location/Requesting Physician data | 
|---|
| 118 | I RABTY="^" Q | 
|---|
| 119 | W @IOF,!!!!!?10 | 
|---|
| 120 | W $S(RABTY'["^":"L O C A T I O N :   ",1:"REQUESTING PHYSICIAN:   ") | 
|---|
| 121 | W $S(RABTY["^":$P(RABTY,"^",2),1:RABTY) | 
|---|
| 122 | Q | 
|---|