1 | RADD1 ;HISC/FPT-Radiology Utility Routine ;6/2/98 16:17
|
---|
2 | ;;5.0;Radiology/Nuclear Medicine;**1,5,10**;Mar 16, 1998
|
---|
3 | SECXREF ; sets/kills 'ARES' & 'ASTF' x-refs for secondary resident/staff rads
|
---|
4 | ; called from ^DD(74,5
|
---|
5 | ;
|
---|
6 | Q:'$D(^RARPT(DA,0)) S RADFNZ=^(0)
|
---|
7 | S RADTIZ=9999999.9999-$P(RADFNZ,"^",3),RACNIZ=$O(^RADPT(+$P(RADFNZ,"^",2),"DT",RADTIZ,"P","B",+$P(RADFNZ,"^",4),0)),RADFNZ=+$P(RADFNZ,"^",2)
|
---|
8 | I 'RACNIZ D KILL Q
|
---|
9 | I '$D(^RADPT(RADFNZ,"DT",RADTIZ,"P",RACNIZ,0)) D KILL Q
|
---|
10 | I '$D(^RADPT(RADFNZ,"DT",RADTIZ,"P",RACNIZ,RASECOND,0)) D KILL Q
|
---|
11 | S RASECIEN=0
|
---|
12 | F S RASECIEN=$O(^RADPT(RADFNZ,"DT",RADTIZ,"P",RACNIZ,RASECOND,RASECIEN)) Q:RASECIEN<1 S RARAD=+$P($G(^(RASECIEN,0)),"^",1) I RARAD>0 D
|
---|
13 | .S:$D(RASET) ^RARPT(RAXREF,RARAD,DA)="" K:$D(RAKILL) ^RARPT(RAXREF,RARAD,DA)
|
---|
14 | D XSEC^RAUTL20
|
---|
15 | KILL K RACNIZ,RADFNZ,RADTIZ,RASECOND,RASECIEN
|
---|
16 | Q
|
---|
17 | SCDTC ; status change date/time check
|
---|
18 | ; called from ^DD(70.05,.01
|
---|
19 | ; if X is a date/time prior to the exam date/time, then set Y=0.
|
---|
20 | ; if X is a over a minute in the future, then set Y=0.
|
---|
21 | ; if X is missing the time portion, then set Y=0.
|
---|
22 | I '($D(X)#2) Q
|
---|
23 | I '$F(X,".") D EN^DDIOL("** Time is Required **","","!!?20") S Y=0 Q
|
---|
24 | N RASTATUS,RAORDNUM,RAPLUS1
|
---|
25 | ; eg. da(3)=1128, da(2)=7028970.8743,da(1)=1,da=1
|
---|
26 | S RASTATUS=$P($G(^RADPT(+$G(DA(3)),"DT",+$G(DA(2)),"P",+$G(DA(1)),0)),U,3)
|
---|
27 | S RAORDNUM=$P($G(^RA(72,+RASTATUS,0)),U,3)
|
---|
28 | I X<(9999999.9999-$G(DA(2))),RAORDNUM>1 S Y=0 Q
|
---|
29 | S RADTHOLD=X
|
---|
30 | D NOW^%DTC
|
---|
31 | ; 2/25/98 allow entry to be at most 1 minute after current time
|
---|
32 | S RAPLUS1=%,RAPLUS1=$$FMADD^XLFDT(RAPLUS1,0,0,1,0)
|
---|
33 | I RADTHOLD>RAPLUS1 S Y=0
|
---|
34 | S X=RADTHOLD
|
---|
35 | K RADTHOLD
|
---|
36 | Q
|
---|
37 | PDC() ; do not enter secondary into primary diagnostic code field
|
---|
38 | ; called from ^DD(70.03,13,0)
|
---|
39 | ; do not select inactive diagnostic code 12/23/96
|
---|
40 | I $P(^RA(78.3,+Y,0),U,5)="Y" Q 0
|
---|
41 | I $D(^RADPT(DA(2),"DT",DA(1),"P",DA,"DX","B",+Y)) Q 0
|
---|
42 | Q 1
|
---|
43 | SDC() ; do not enter primary into secondary diagnostic code field
|
---|
44 | ; called from ^DD(70.14,.01,0)
|
---|
45 | ; do not select inactive diagnostic code 12/23/96
|
---|
46 | I $P(^RA(78.3,+Y,0),U,5)="Y" Q 0
|
---|
47 | I '$D(X)!('$D(DA(3))) G SDC2
|
---|
48 | I '$D(^RADPT(DA(3),"DT",DA(2),"P",DA(1),0)) G SDC2
|
---|
49 | I $P(^RADPT(DA(3),"DT",DA(2),"P",DA(1),0),"^",13)=+Y Q 0
|
---|
50 | Q 1
|
---|
51 | SDC2 ;
|
---|
52 | I '$D(X)!('$D(DA(2))) G SDC3
|
---|
53 | I '$D(^RADPT(DA(2),"DT",DA(1),"P",DA,0)) Q 0
|
---|
54 | I $P(^RADPT(DA(2),"DT",DA(1),"P",DA,0),"^",13)=+Y Q 0
|
---|
55 | Q 1
|
---|
56 | SDC3 ;
|
---|
57 | I '$D(RADFN) Q 0
|
---|
58 | S DA(2)=RADFN
|
---|
59 | I '$D(^RADPT(DA(2),"DT",DA(1),"P",DA,0)) Q 0
|
---|
60 | I $P(^RADPT(DA(2),"DT",DA(1),"P",DA,0),"^",13)=+Y Q 0
|
---|
61 | Q 1
|
---|
62 | NODEL ; no deletion of primary dx code, primary resident or staff if there
|
---|
63 | ; is a secondary
|
---|
64 | S RASECCHK=0,RASECCHK=$O(^RADPT(DA(2),"DT",DA(1),"P",DA,RAMULT,RASECCHK))
|
---|
65 | I RASECCHK W " Required"
|
---|
66 | K RAMULT,RASECCHK
|
---|
67 | Q
|
---|
68 | PRCCPT() ; Displays the procedure type and CPT code if applicable.
|
---|
69 | ; This code is called from ^DD(71,0,"ID","WRITE") and rtn RAPROD
|
---|
70 | N RA,RATXT S RA(0)=$G(^(0)),RA("I")=+$G(^("I")),RATXT=""
|
---|
71 | S RA=$S('RA("I"):0,DT'>RA("I"):0,1:1)
|
---|
72 | S RA(6)=$P(RA(0),U,6),RA(9)=$P(RA(0),U,9)
|
---|
73 | S RA(12)=$P(RA(0),U,12) I 'RA(12) S RA(10)="UNKN "
|
---|
74 | I '$D(RA(10)) S RA(10)=$P(^RA(79.2,+RA(12),0),U,3)_" "
|
---|
75 | I $L(RA(10))<5 F S RA(10)=RA(10)_" " Q:$L(RA(10))>4
|
---|
76 | S RATXT="("_RA(10)_$S(RA:"Inactive",RA(6)="B":"Broad ",RA(6)="D":"Detailed",RA(6)="P":"Parent ",RA(6)="S":"Series ",1:"Unknown ")_")"
|
---|
77 | S:RA(9)]"" RATXT=RATXT_" CPT:"_$P($$NAMCODE^RACPTMSC(RA(9),DT),"^")
|
---|
78 | Q RATXT
|
---|
79 | INDTCHK(RADA) ; Cannot inactivate a procedure if it is a common procedure
|
---|
80 | ; with a valid sequence number. Code resides in ^DD(71,100,0)!
|
---|
81 | ; 'RADA' is the ien of the procedure in file 71. if this procedure is
|
---|
82 | ; a common procedure i.e, $D(^RAMIS(71.3,"B",RADA)) inform the user that
|
---|
83 | ; the sequence number must be deleted. This relies on the "AA" xref in
|
---|
84 | ; the Common Proc. file for the Sequence # fld (#3) 0 node, 4th pce.
|
---|
85 | N RA,RAIEN S RAIEN=+$O(^RAMIS(71.3,"B",RADA,0))
|
---|
86 | S RA(0)=$G(^RAMIS(71.3,RAIEN,0)) Q:RA(0)']""
|
---|
87 | S RA(4)=+$P(RA(0),"^",4) ; obtain the sequence number
|
---|
88 | I $D(^RAMIS(71.3,"AA",$$EN3^RAUTL17(RADA),RA(4),RAIEN)) D ; sequence #?
|
---|
89 | . N RATXT S RATXT(1)=" "
|
---|
90 | . S RATXT(2)=" Cannot inactivate - this procedure is currently in the"
|
---|
91 | . S RATXT(3)=" Rad/Nuc Med Common Procedure file with a sequence"
|
---|
92 | . S RATXT(4)=" number. Please remove the sequence number thru the"
|
---|
93 | . S RATXT(5)=" 'Common Procedure Enter/Edit' option before assigning"
|
---|
94 | . S RATXT(6)=" an inactivation date to this procedure."
|
---|
95 | . S RATXT(7)=" "
|
---|
96 | . D EN^DDIOL(.RATXT) K X ; display message, can't input ANY date!
|
---|
97 | . Q
|
---|
98 | Q
|
---|
99 | CPTCHK(RADA) ; Check if the CPT code is inactive nationally.
|
---|
100 | ; 'RADA' assume the value of +Y passed from the input xform, ^DD(71,9,0)
|
---|
101 | ; quit if CPT code is active
|
---|
102 | ;
|
---|
103 | Q:$$ACTCODE^RACPTMSC(RADA,DT)
|
---|
104 | N RATXT S RATXT(1)=" "
|
---|
105 | S RATXT(2)=" Warning - Nationally inactive CPT code."
|
---|
106 | S RATXT(3)=" " D EN^DDIOL(.RATXT)
|
---|
107 | K X
|
---|
108 | Q
|
---|
109 | DCHK(RADG,RADT,Y) ; Check if drug if DRUG is active AND a Radiopharmaceu-
|
---|
110 | ; tical.
|
---|
111 | ; 'RASTAT=1' if active AND RADG condition met
|
---|
112 | ; 'RASTAT=0' if inactive OR RADG condition not met
|
---|
113 | ; VERSION 5.0 called from ^DD(70.21,.01,12.1)
|
---|
114 | ; 'Y' is the IEN for the Drug file
|
---|
115 | ; 'RADT' is the cutoff date for drugs in the drug file
|
---|
116 | ; 'RADG':$S(RADG="R":Radiopharm,"P":non-Radioharm,1:non-Radiopharm)
|
---|
117 | Q $$DCHK^RADD4()
|
---|
118 | ;
|
---|
119 | VALADM(RAD0,Y,RADT,RAUTH) ;edit validation
|
---|
120 | ;Used to validate/screen radiopharm dosage administrator,
|
---|
121 | ; radiopharm prescribing phys, person who measured radiopharm dose,
|
---|
122 | ;----------------------------------------------------------------------
|
---|
123 | ; RAD0 : IEN of entry in question for NUC MED EXAM DATA (70.2) file
|
---|
124 | ; Y : Pointer to the New Person file
|
---|
125 | ; RADT : Xam Date; if not passed, calculate exam date from file 70.2
|
---|
126 | ; RAUTH : 1 - only staff/resid, must be auth'zd to write med orders
|
---|
127 | ; : 0 - staff/resid & tech's
|
---|
128 | ;----------------------------------------------------------------------
|
---|
129 | ; Output: '1' authorized to write med orders, else '0'
|
---|
130 | ;----------------------------------------------------------------------
|
---|
131 | Q $$VALADM^RADD4()
|
---|
132 | ;
|
---|
133 | VOL(RAX) ; Validate the format of the value input for volume.
|
---|
134 | ; RAX must be a number followed by a space then text -or-
|
---|
135 | ; a number followed by text
|
---|
136 | ; Input Variable : 'RAX'- user's input
|
---|
137 | ; Output Variable: null if 'RAX' erroneous, formatted version of 'RAX'
|
---|
138 | Q $$VOL^RADD4()
|
---|