1 | RAUTL17 ;HISC/DAD-RAD/NUC MED COMMON PROCEDURE FILE (#71.3) UTILITIES ;6/14/96 11:34
|
---|
2 | ;;5.0;Radiology/Nuclear Medicine;;Mar 16, 1998
|
---|
3 | EN1 ; *** Get an imaging type
|
---|
4 | ; Input: None
|
---|
5 | ; Output: The variable 'Y' will be one of the following
|
---|
6 | ; -1 = No imaging type selected (up-arrow, time-out, etc.)
|
---|
7 | ; 0 = No active imaging types found
|
---|
8 | ; IEN = IMAGING TYPE file (#79.2) IEN
|
---|
9 | N DIC,RAI,RAIMGTYI,X
|
---|
10 | ; *** Get active imaging types (must have at least one imaging
|
---|
11 | ; location and at least one procedure to be active)
|
---|
12 | S (RAI,RAIMGTYI)=0
|
---|
13 | F S RAIMGTYI=$O(^RA(79.2,RAIMGTYI)) Q:RAIMGTYI'>0 D
|
---|
14 | . I $O(^RAMIS(71,"AIMG",RAIMGTYI,0)),$O(^RA(79.1,"BIMG",RAIMGTYI,0)) D
|
---|
15 | .. S RAIMGTYI(RAIMGTYI)=1
|
---|
16 | .. Q
|
---|
17 | . Q
|
---|
18 | S RAIMGTYI=+$O(RAIMGTYI(0))
|
---|
19 | ; *** No active imaging types
|
---|
20 | I RAIMGTYI'>0 D S Y=0 G EN1EXIT
|
---|
21 | . W !!?5,"No 'active' imaging types were found. For an imaging"
|
---|
22 | . W !?5,"type to be active it must be assigned to at least one"
|
---|
23 | . W !?5,"imaging location and at least one procedure."
|
---|
24 | . Q
|
---|
25 | ; *** Only one active imaging type
|
---|
26 | I $O(RAIMGTYI(RAIMGTYI))'>0 S Y=RAIMGTYI G EN1EXIT
|
---|
27 | ; *** display the imaging types available for selection
|
---|
28 | W !,"Select one of the following imaging types:"
|
---|
29 | F S RAI=$O(RAIMGTYI(RAI)) Q:RAI'>0 W !?3,$$GET1^DIQ(79.2,RAI_",",.01)
|
---|
30 | ; *** Prompt for active imaging type
|
---|
31 | K DIC S DIC="^RA(79.2,",DIC(0)="AEMQ",DIC("A")="Select IMAGING TYPE: "
|
---|
32 | S DIC("S")="I $G(RAIMGTYI(+Y))"
|
---|
33 | W ! D ^DIC S Y=+Y
|
---|
34 | EN1EXIT Q
|
---|
35 | ;
|
---|
36 | EN2(RAIMGTYI,RAPROCD0) ; *** Common procedure file error check
|
---|
37 | ; Input: IMAGING TYPE file (#79.2) IEN (RAIMGTYI)
|
---|
38 | ; PROCEDURE file (#71) IEN (RAPROCD0) (Optional)
|
---|
39 | ; Output: Number_of_Common_Proccedures ^ $S(Duplicate_Sequence#:1,1:0)
|
---|
40 | ;
|
---|
41 | N RA,RACNT,RAD0,RADUP,RASEQ
|
---|
42 | S (RASEQ,RACNT,RADUP)=0
|
---|
43 | F S RASEQ=$O(^RAMIS(71.3,"AA",RAIMGTYI,RASEQ)) Q:RASEQ'>0 D
|
---|
44 | . S RAD0=0
|
---|
45 | . F S RAD0=$O(^RAMIS(71.3,"AA",RAIMGTYI,RASEQ,RAD0)) Q:RAD0'>0 D
|
---|
46 | .. S RACNT=RACNT+1 I $G(RASEQ(RASEQ)) S RADUP=1
|
---|
47 | .. S RASEQ(RASEQ)=$S($G(RASEQ(RASEQ)):RASEQ(RASEQ)_U,1:"")_RAD0
|
---|
48 | .. Q
|
---|
49 | . Q
|
---|
50 | I $G(RAPROCD0),RADUP'>0 D
|
---|
51 | . S RAD0=0 K RASEQ
|
---|
52 | . F S RAD0=$O(^RAMIS(71.3,"B",RAPROCD0,RAD0)) Q:RAD0'>0 D
|
---|
53 | .. S RA=$G(^RAMIS(71.3,RAD0,0)),RASEQ=$P(RA,U,4)
|
---|
54 | .. I RASEQ S RASEQ(RASEQ)=""
|
---|
55 | .. Q
|
---|
56 | . S RASEQ=0
|
---|
57 | . F S RASEQ=$O(RASEQ(RASEQ)) Q:RASEQ'>0!RADUP D
|
---|
58 | .. I $O(^RAMIS(71.3,"AA",RAIMGTYI,RASEQ,0)) S RADUP=1
|
---|
59 | .. Q
|
---|
60 | . Q
|
---|
61 | Q RACNT_U_RADUP
|
---|
62 | ;
|
---|
63 | EN3(D0) ; *** imaging type of a procedure
|
---|
64 | ; Input: RAD/NUC MED PROCEDURE file (#71) IEN
|
---|
65 | ; Output: IMAGING TYPE file (#79.2) IEN
|
---|
66 | Q +$P($G(^RAMIS(71,+D0,0)),U,12)
|
---|
67 | ;
|
---|
68 | EN5(RAD0,RAIMGTYI,RASEQ,SK) ; *** Update ^RAMIS(71.3,"AA", xref
|
---|
69 | ; Input: RAD0 = RAD/NUC MED COMMON PROCEDURE file (#71.3) IEN
|
---|
70 | ; RAPRC = PROCEDURE file (#71) IEN
|
---|
71 | ; RASEQ = Sequence number
|
---|
72 | ; SK = Set/Kill flag: $S(SK="S":Set_xref,SK="K":Kill_xref)
|
---|
73 | I (RASEQ'>0)!(RAIMGTYI'>0) Q
|
---|
74 | I SK="S" S ^RAMIS(71.3,"AA",RAIMGTYI,RASEQ,RAD0)=""
|
---|
75 | I SK="K" K ^RAMIS(71.3,"AA",RAIMGTYI,RASEQ,RAD0)
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | EN6(RAIMGTYI,RAPROCD0) ; *** Common procedure file error messages
|
---|
79 | ;Invoked when .01 field of file 71.3 is edited, allowing the user
|
---|
80 | ;to change the procedure that the .01 field points to
|
---|
81 | ; Input: IMAGING TYPE file (#79.2) IEN (RAIMGTYI)
|
---|
82 | ; PROCEDURE file (#71) IEN (RAPROCD0)
|
---|
83 | N RA,RACNT,RADUP
|
---|
84 | S RA=$$EN2(RAIMGTYI,RAPROCD0),RACNT=$P(RA,U),RADUP=$P(RA,U,2)
|
---|
85 | I RACNT>40!RADUP D K X
|
---|
86 | . N RATXT
|
---|
87 | . S RATXT(1)=""
|
---|
88 | . S RATXT(2)="Changing/ADDING this procedure would cause the following"
|
---|
89 | . S RATXT(3)="problem(s) in the Rad/Nuc Med Common Procedure file:"
|
---|
90 | . S RATXT(4)=""
|
---|
91 | . I RACNT>40 S RATXT(10)=" More than 40 common procedures with the same imaging type."
|
---|
92 | . I RADUP S RATXT(20)=" Two or more procedures with the same sequence number."
|
---|
93 | . S RATXT(30)=""
|
---|
94 | . S RATXT(31)="In order to change this procedure you must first"
|
---|
95 | . S RATXT(32)="inactivate it in the Rad/Nuc Med Common Procedure file."
|
---|
96 | . S RATXT(33)=""
|
---|
97 | . D EN^DDIOL(.RATXT)
|
---|
98 | . Q
|
---|
99 | Q
|
---|
100 | DESC(RAD0,RAY) ; Detemine if a procedure qualifies as a descendent for this
|
---|
101 | ; parent procedure. Descendent must be either a detailed or series
|
---|
102 | ; type procedure, must be of same imaging type of the parent, and must
|
---|
103 | ; not be inactive. Called from ^DD(71.05,.01,0)
|
---|
104 | ; 'RAD0' ien of parent procedure in file 71
|
---|
105 | ; 'RAY' ien of pointed to procedure in file 71
|
---|
106 | ; Returns: 'RA' i.e, 0:invalid procedure, 1:valid procedure
|
---|
107 | ; RAPARNT: zero node of parent procedure
|
---|
108 | ; RAPARNT(12): i-type of parent procedure
|
---|
109 | ; RADESC : zero node of descendent procedure
|
---|
110 | ; RADESC("I"): inactivation date (if any) of descendent
|
---|
111 | ; RADESC(6) : procedure type of descendent
|
---|
112 | ; RADESC(12) : i-type of descendent procedure
|
---|
113 | Q:RAD0'>0!(RAY'>0) 0
|
---|
114 | Q:'$D(^RAMIS(71,RAD0,0))!('$D(^RAMIS(71,RAY,0))) 0
|
---|
115 | N RA,RAI,RADESC,RAPARNT S RA=0
|
---|
116 | S RAPARNT=$G(^RAMIS(71,RAD0,0)),RAPARNT(12)=+$P(RAPARNT,U,12)
|
---|
117 | S RADESC=$G(^RAMIS(71,RAY,0)),RADESC(6)=$P(RADESC,U,6)
|
---|
118 | S RADESC(12)=$P(RADESC,U,12)
|
---|
119 | S RADESC("I")=+$G(^RAMIS(71,RAY,"I"))
|
---|
120 | S RAI=$S(RADESC("I")=0:1,RADESC("I")>DT:1,1:0)
|
---|
121 | I RADESC(12)=RAPARNT(12),("^D^S^"[(U_RADESC(6)_U)),(RAI) S RA=1
|
---|
122 | Q RA
|
---|