| 1 | RAUTL0 ;HISC/CAH,FPT,GJC-Utility Routine ;11/5/99  13:19
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**2,13,10,71**;Mar 16, 1998;Build 10
 | 
|---|
| 3 |  ; 07/05/2006 BAY/KAM Remedy Call 124379 Patch RA*5*71
 | 
|---|
| 4 | UPSTAT ;QUEUE ONE REPORT TO UPDATE STATUS
 | 
|---|
| 5 |  ;07/05/2006 BAY/KAM/GJC If RAHLTCPB is defined, do not broadcast ORM messages. RAHLTCPB is referenced in UP2^RAUTL1
 | 
|---|
| 6 |  ;which is called from UP1^RAUTL1
 | 
|---|
| 7 |  N RAIO S RAIO=+$P($G(^RA(79,+RAMDIV,"RDEV")),"^") ; Resource Device?
 | 
|---|
| 8 |  S ZTRTN="STAT^RAUTL0",ZTIO=$S(RAIO>0:$$GET1^DIQ(3.5,RAIO_",",.01),1:"")
 | 
|---|
| 9 |  S ZTDTH=$H,ZTDESC="Rad/Nuc Med UPDATE STATUS OF ONE REPORT" S SDUZ=$G(RADUZ) S:'SDUZ SDUZ=DUZ F I="RAMDIV","RAMDV","RARPT","RAONLINE","RAAB","RAMLC","RAIMGTY","SDUZ" S ZTSAVE(I)=""
 | 
|---|
| 10 |  S:$G(RADUZ) ZTSAVE("RADUZ")="" ;rpt may be verified by voice
 | 
|---|
| 11 |  ; 07/05/2006 BAY/KAM Added next line
 | 
|---|
| 12 |  S:$G(RAHLTCPB) ZTSAVE("RAHLTCPB")="" ;rpt v'fied by VR; do not broadcast ORM messages.
 | 
|---|
| 13 |  D ^%ZTLOAD K SDUZ
 | 
|---|
| 14 |  I $D(ZTSK),'$D(RAQUEUED) W !,?5,"Status update queued!",! R X:2
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ;Set off a series of actions as a result of report update:    ;ch
 | 
|---|
| 18 |  ; patient loc updated in Rpt Distrib file #74.4
 | 
|---|
| 19 |  ; can also cause rec to be added to file 74.4 (depending on category
 | 
|---|
| 20 |  ;   of exam
 | 
|---|
| 21 |  ; update status of exam if possible and do accompanying actions (such
 | 
|---|
| 22 |  ;   as update of status log if specified in div params, notify OE/RR,
 | 
|---|
| 23 |  ;   change order status if necessary, can also cause alerts to be
 | 
|---|
| 24 |  ;   fired off)
 | 
|---|
| 25 | STAT ;TASKMAN ENTRY POINT TO UPDATE STATUS OF ONE REPORT
 | 
|---|
| 26 |  N RASAVE ; array to save off RADFN, RADTI & RACNI
 | 
|---|
| 27 |  S RAF1=1,Y=RARPT D RASET^RAUTL2,UP1^RAUTL1,STUFF^RARTST
 | 
|---|
| 28 |  S RASAVE("RADFN")=RADFN,RASAVE("RADTI")=RADTI,RASAVE("RACNI")=RACNI
 | 
|---|
| 29 |  S:$$ORVR^RAORDU()=2.5 ORVP=RADFN_";DPT(",ORBXDATA=RARPT
 | 
|---|
| 30 |  S RAEXFLD="ALL",D0=RARPT
 | 
|---|
| 31 |  D ^RARTFLDS,OENOTE^RAUTL00 ; OENOTE replaces STAT1
 | 
|---|
| 32 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 | UPSTATM ;QUEUE MULTIPLE REPORTS TO UPDATE STATUSES
 | 
|---|
| 36 |  N RAIO S RAIO=+$P($G(^RA(79,+RAMDIV,"RDEV")),"^") ; Resource Device?
 | 
|---|
| 37 |  S ZTRTN="STATM^RAUTL0",ZTIO=$S(RAIO>0:$$GET1^DIQ(3.5,RAIO_",",.01),1:"")
 | 
|---|
| 38 |  S ZTDTH=$H,ZTDESC="Rad/Nuc Med UPDATE STATUSES OF MULTIPLE REPORTS" S SDUZ=$G(RADUZ) S:'SDUZ SDUZ=DUZ F I="^TMP($J,""RA"",""DT"",","RAMDV","RAMDIV","RAONLINE","RAMLC","RAIMGTY","SDUZ" S ZTSAVE(I)=""
 | 
|---|
| 39 |  D ^%ZTLOAD K SDUZ I $D(ZTSK) W !,?5,"Status updates queued!",!
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 | STATM ;TASKMAN ENTRY POINT TO UPDATE STATUSES OF MULTIPLE REPORTS
 | 
|---|
| 43 |  S RAF1=1 F RARTDT=0:0 S RARTDT=$O(^TMP($J,"RA","DT",RARTDT)) Q:RARTDT'>0  F RA1=0:0 S RA1=$O(^TMP($J,"RA","DT",RARTDT,RA1)) Q:RA1'>0  S (RARPT,Y)=RA1 D RASET^RAUTL2,UP1^RAUTL1,STUFF^RARTST,STATM1
 | 
|---|
| 44 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 | STATM1 ; Update statuses of multiple reports
 | 
|---|
| 47 |  N RASAVE ; array to save off RADFN, RADTI & RACNI
 | 
|---|
| 48 |  S:^TMP($J,"RA","DT",RARTDT,RA1) RAAB=1
 | 
|---|
| 49 |  S RASAVE("RADFN")=RADFN,RASAVE("RADTI")=RADTI,RASAVE("RACNI")=RACNI
 | 
|---|
| 50 |  S:$$ORVR^RAORDU()=2.5 ORVP=RADFN_";DPT(",ORBXDATA=RARPT
 | 
|---|
| 51 |  S RAEXFLD="ALL",D0=RARPT D ^RARTFLDS
 | 
|---|
| 52 |  D OENOTE^RAUTL00 K RAAB,ORIFN,ORNOTE
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | EN ;Entry point to credit x-ray clinic stops
 | 
|---|
| 56 |  I $$PCE^RAWORK Q
 | 
|---|
| 57 |  S RASDC="" I '$D(RAMDIV)!'$D(RADTE)!'$D(RADFN)!'$D(RAPRIT)!'$D(RAMLC) G NOGO
 | 
|---|
| 58 |  S SDIV=RAMDIV,SDATE=$P(RADTE,"."),DFN=RADFN,SDC="",SDMSG="S"
 | 
|---|
| 59 |  G NOGO:'$D(^RAMIS(71,+RAPRIT,0)) S X=+$P(^(0),"^",9)
 | 
|---|
| 60 |  S X=$S(X="":"",1:$P($$NAMCODE^RACPTMSC(X,DT),"^"))
 | 
|---|
| 61 |  I X S X1=$S($D(^RA(79.1,+RAMLC,"PC")):^("PC"),1:"") G NOGO:'X1 S SDCPT(1)="900^"_X1_"^"_X
 | 
|---|
| 62 |  I $O(^RAMIS(71,RAPRIT,"STOP",0)) F I=0:0 S I=$O(^RAMIS(71,RAPRIT,"STOP",I)) Q:I'>0  I $D(^RAMIS(71,RAPRIT,"STOP",I,0)) S J=+^(0) D CON
 | 
|---|
| 63 |  S SDCTYPE=$S($D(SDCPT(1)):"B",1:"S") W:'$D(ZTQUEUED) !!?5,"Attempting to credit a clinic stop.",! D EN3^SDACS I SDERR=1 G NOGO
 | 
|---|
| 64 |  S $P(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0),"^",24)="Y" W:'$D(ZTQUEUED) !?5,"Clinic Stop credited." G EXIT
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | CON S K=$S($D(^DIC(40.7,+J,0)):$P(^(0),"^",2),1:"") I K S:SDC'[K SDC=K_"^"_SDC S RASDC=SDC
 | 
|---|
| 67 |  Q
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | NOGO W:'$D(ZTQUEUED) *7,!?5,"Unable to credit a clinic stop!",!
 | 
|---|
| 70 |  I $D(RASDC),($D(DUZ)#2),($D(RADFN)),($D(RADTI)),($D(RACNI)) D
 | 
|---|
| 71 |  . D STPCDE(RASDC,DUZ,RADFN,RADTI,RACNI) ; Stop Code Error bulletin
 | 
|---|
| 72 |  . Q
 | 
|---|
| 73 | EXIT K I,J,K,RAPR,RASDC,SDC,SDCPT,SDCTYPE,SDERR,SDATE,SDIV,X,X1 Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | STPCDE(RA0,RA1,RA2,RA3,RA4) ; Bulletin for Stop Code Credit error
 | 
|---|
| 76 |  ; RA0 -> stop code numbers seperated by "^"'s (if not null)
 | 
|---|
| 77 |  ; RA1 -> Rad/Nuc Med user (DUZ)     RA2 -> Patient   (RADFN)
 | 
|---|
| 78 |  ; RA3 -> Inverse Xam D/T  (RADTI)   RA4 -> Exam node (RACNI)
 | 
|---|
| 79 |  Q:'$D(^VA(200,RA1,0))#2  ; invalid user info
 | 
|---|
| 80 |  Q:'$D(^RADPT(RA2,"DT",RA3,"P",RA4,0))#2  ; exam info incomplete
 | 
|---|
| 81 |  N RACASE,RADFN,RACPT,RALENFLG,RAI,RAPAT,RAPROC,RAREGX,RASSN,RASTOP
 | 
|---|
| 82 |  N RAUSER,RAXAM,RAXDT,XMB S RALENFLG=0
 | 
|---|
| 83 |  S RAUSER=$P($G(^VA(200,RA1,0)),"^"),RADFN=RA2
 | 
|---|
| 84 |  S RASSN=$$SSN^RAUTL(),RAREGX=$G(^RADPT(RA2,"DT",RA3,0))
 | 
|---|
| 85 |  S RAXAM=$G(^RADPT(RA2,"DT",RA3,"P",RA4,0)),RACASE=$P(RAXAM,"^")
 | 
|---|
| 86 |  S RAXDT=$P(RAREGX,"^"),RAPAT=$P($G(^DPT(RA2,0)),"^")
 | 
|---|
| 87 |  S RAPROC(0)=$G(^RAMIS(71,+$P(RAXAM,"^",2),0))
 | 
|---|
| 88 |  ;S RACPT(0)=$G(^ICPT(+$P(RAPROC(0),"^",9),0)),RACPT=$P(RACPT(0),"^")
 | 
|---|
| 89 |  ;S RACPT(4)=+$P(RACPT(0),"^",4),RACPT=$S(RACPT]"":RACPT,1:"Unknown")
 | 
|---|
| 90 |  ;I RACPT(4),(RACPT]"") S RACPT=RACPT_" (invalid)"
 | 
|---|
| 91 |  S RACPT(0)=+$P(RAPROC(0),"^",9) ;ien to file 81
 | 
|---|
| 92 |  S RACPT=$P($$NAMCODE^RACPTMSC(RACPT(0),RAXDT),"^") ;.01 value file 81
 | 
|---|
| 93 |  S RACPT(4)=$$ACTCODE^RACPTMSC(RACPT(0),RAXDT) ;1=active,0=inactive
 | 
|---|
| 94 |  I RACPT']"" S RACPT="Unknown"
 | 
|---|
| 95 |  I 'RACPT(4),(RACPT'="Unknown") S RACPT=RACPT_" (invalid)"
 | 
|---|
| 96 |  S RAPROC=$E($P(RAPROC(0),"^"),1,45)
 | 
|---|
| 97 |  S RAPROC=$S(RAPROC]"":RAPROC,1:"Unknown")
 | 
|---|
| 98 |  I RA0']""!(RA0?1."^") D
 | 
|---|
| 99 |  . N RAPC S RAPC=+$P($G(^RA(79.1,+RAMLC,"PC")),"^")
 | 
|---|
| 100 |  . S:RAPC RASTOP="Missing STOP CODE data"
 | 
|---|
| 101 |  . S:'RAPC RASTOP="No Principal Clinic entered for '"_$P($G(^SC(+$P($G(^RA(79.1,+RAMLC,0)),"^"),0)),"^")_"'."
 | 
|---|
| 102 |  . Q
 | 
|---|
| 103 |  E  D
 | 
|---|
| 104 |  . S RASTOP="" F RAI=1:1:$L(RA0,"^") D  Q:RALENFLG
 | 
|---|
| 105 |  .. S RASTOP(2)=$P(RA0,"^",RAI) Q:RASTOP(2)']""
 | 
|---|
| 106 |  .. S RASTOP(1)=$P($G(^DIC(40.7,+$O(^DIC(40.7,"C",RASTOP(2),0)),0)),"^")
 | 
|---|
| 107 |  .. S RASTOP(3)=RASTOP(2)_" "_RASTOP(1)_",  "
 | 
|---|
| 108 |  .. I ($L(RASTOP)+$L(RASTOP(3)))>512 S RALENFLG=1 Q:RALENFLG
 | 
|---|
| 109 |  .. S RASTOP=RASTOP_RASTOP(3)
 | 
|---|
| 110 |  .. Q
 | 
|---|
| 111 |  . I $P(RASTOP,",  ",$L(RASTOP,",  "))']"" D
 | 
|---|
| 112 |  .. S RASTOP=$P(RASTOP,",  ",1,$L(RASTOP,",  ")-1)
 | 
|---|
| 113 |  .. Q
 | 
|---|
| 114 |  . Q
 | 
|---|
| 115 |  ; XMB(1) -> Full patient name          XMB(2) -> patient SSN
 | 
|---|
| 116 |  ; XMB(3) -> Examination Date           XMB(4) -> Case Number
 | 
|---|
| 117 |  ; XMB(5) -> Procedure                  XMB(6) -> CPT Code
 | 
|---|
| 118 |  ; XMB(7) -> Stop Code(s)               XMB(8) -> Rad/Nuc Med user
 | 
|---|
| 119 |  S XMB(1)=RAPAT,XMB(2)=RASSN,XMB(3)=$$FMTE^XLFDT(RAXDT),XMB(4)=RACASE
 | 
|---|
| 120 |  S XMB(5)=RAPROC,XMB(6)=RACPT,XMB(7)=RASTOP,XMB(8)=RAUSER
 | 
|---|
| 121 |  S XMB="RAD/NUC MED CREDIT STOP ERROR"
 | 
|---|
| 122 |  D ^XMB:$D(^XMB(3.6,"B",XMB))
 | 
|---|
| 123 |  K XMB0,XMC0,XMDT,XMM,XMMG
 | 
|---|
| 124 |  Q
 | 
|---|