| 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 | 
|---|