| 1 | RADD3 ;HISC/SWM-Radiology Data Dictionary Utility Routine ;9/11/97  16:23
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**18**;Mar 16, 1998
 | 
|---|
| 3 | PAIR ;
 | 
|---|
| 4 |  ; if editing SOURCE for new (laygo) LOT entry in file 71.9
 | 
|---|
| 5 |  ; then re-set DR string to stuff matching radiopharm
 | 
|---|
| 6 |  ; and don't allow spacebar return for radioph
 | 
|---|
| 7 |  I $D(RAOPT("EDITPT"))!($D(RAOPT("EDITCN")))!($D(RAOPT("STATRACK"))) D
 | 
|---|
| 8 |  . I $G(DR)[";5",$G(DIE)="^RAMIS(71.9,",+$G(RAPSDRUG),$P($G(^PSDRUG(+$G(RAPSDRUG),0)),U)]"" S DR=$P(DR,";5")_";5///"_$P($G(^PSDRUG(+$G(RAPSDRUG),0)),U)_$P(DR,";5",2,99) K ^DISV(DUZ,"^RAMIS(71.9,")
 | 
|---|
| 9 |  . Q
 | 
|---|
| 10 |  ; check pairing of number/id with source
 | 
|---|
| 11 |  ; called by input transform of file 71.9'S field 2 (source)
 | 
|---|
| 12 |  N RA1,RA2,RA3 S (RA1,RA2,RA3)=""
 | 
|---|
| 13 |  Q:$G(DA)=""  Q:$G(D)=""
 | 
|---|
| 14 |  F  S RA1=$O(^RAMIS(71.9,"B",$P(D,U),RA1)) Q:'RA1  I DA'=RA1 S:$P(^RAMIS(71.9,RA1,0),U,2)=+Y RA2=1 ;found a match so set ra2=1
 | 
|---|
| 15 |  W:RA2 !!,"** There's already a NUMBER/ID=",$P(D,U),"  and SOURCE=",$P(Y,U,2)," **",!
 | 
|---|
| 16 |  K:RA2 X
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | SCRLOT() ;screen lot # from file 70.2
 | 
|---|
| 19 |  ;lot's exp. dt must be within d/t dose admin, if no admin, use exam dt
 | 
|---|
| 20 |  ;  if lot's exp. dt is null, allow as choice (don't check)
 | 
|---|
| 21 |  ;lot's radiopharm must match exam's radiopharm
 | 
|---|
| 22 |  ;  if lot's radiopharm is null, don't allow as choice
 | 
|---|
| 23 |  ;Y            pointer to lot file
 | 
|---|
| 24 |  ;RA0A         date/time dose administered
 | 
|---|
| 25 |  ;RA0E         date/time exam
 | 
|---|
| 26 |  ;RALOTEXP     lot's expiration date
 | 
|---|
| 27 |  ;RA0RAD       exam's radiopharmaceutical
 | 
|---|
| 28 |  ;RALOTRAD     lot's radiopharmaceutical
 | 
|---|
| 29 |  ;RARETUR      return value of screen, 0=failed, 1=passed
 | 
|---|
| 30 |  I '$D(Y)#2!('$D(DA))!('$D(DA(1))) Q 0
 | 
|---|
| 31 |  N RA0A,RA0E,RALOTEXP,RA0RAD,RALOTRAD,RARETURN
 | 
|---|
| 32 |  S RARETURN=0
 | 
|---|
| 33 |  S RA0E=$P(^RADPTN(DA(1),0),U,2),RA0A=$P(^("NUC",DA,0),U,8),RA0RAD=$P(^(0),U),RALOTEXP=$P(^RAMIS(71.9,+Y,0),U,3),RALOTRAD=$P(^(0),U,5)
 | 
|---|
| 34 |  I $S(RALOTEXP="":1,RA0A:RALOTEXP>RA0A,1:RALOTEXP>RA0E),(RA0RAD=RALOTRAD) S RARETURN=1
 | 
|---|
| 35 |  Q RARETURN
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | GETID(Y) ; Pass back a string of data which will be used as an
 | 
|---|
| 38 |  ; identifier when lookups are done on the Imaging Locations (79.1) file
 | 
|---|
| 39 |  ; Input : Y -> ien of entry in 79.1
 | 
|---|
| 40 |  ; Output: string of data relevent to the entry in file 79.1
 | 
|---|
| 41 |  ;         Location I-type_"-"_Station # of Rad/Nuc Med Division 
 | 
|---|
| 42 |  N RA791 S RA791(0)=$G(^RA(79.1,Y,0))
 | 
|---|
| 43 |  S RA791("DIV")=$G(^RA(79.1,Y,"DIV"))
 | 
|---|
| 44 |  Q "("_$$GET1^DIQ(79.2,+$P(RA791(0),"^",6),.01)_"-"_$$GET1^DIQ(4,+$P(RA791("DIV"),"^"),99)_")"
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | DELDESC(RAIEN) ; This sub-routine will determine if descendents can be
 | 
|---|
| 47 |  ; deleted from parent procedures.  If only one descendent exists, and
 | 
|---|
| 48 |  ; the parent is on the common procedure list do not allow the deletion
 | 
|---|
| 49 |  ; of the descendent.
 | 
|---|
| 50 |  ; Input : RAIEN (the DA array for the Rad/Nuc Med Procedure file.)
 | 
|---|
| 51 |  ; Output: 0 if ok to delete, 1 if not ok to delete
 | 
|---|
| 52 |  ; Called from: ^DD(71.05,.01,"DEL",1,0) node
 | 
|---|
| 53 |  N I,RA713,RATTL S (I,RA713,RATTL)=0
 | 
|---|
| 54 |  S:$D(^RAMIS(71.3,"B",RAIEN(1))) RA713=+$O(^RAMIS(71.3,"B",RAIEN(1),0))
 | 
|---|
| 55 |  S:RA713>0 RA713(0)=$G(^RAMIS(71.3,RA713,0))
 | 
|---|
| 56 |  F  S I=$O(^RAMIS(71,RAIEN(1),4,I)) Q:I'>0  S RATTL=RATTL+1
 | 
|---|
| 57 |  I RA713,($P(RA713(0),"^",5)=""),(RATTL=1) D  Q 1
 | 
|---|
| 58 |  . ; don't allow deletion of the last descendent on procedures that are
 | 
|---|
| 59 |  . ; currently active in the common procedure file.
 | 
|---|
| 60 |  . N RATXT S RATXT(1)=" "
 | 
|---|
| 61 |  . S RATXT(2)="You cannot delete the last or only descendent from a"
 | 
|---|
| 62 |  . S RATXT(3)="parent procedure when the parent procedure is an active"
 | 
|---|
| 63 |  . S RATXT(4)="common procedure.",RATXT(5)=$C(7) D EN^DDIOL(.RATXT)
 | 
|---|
| 64 |  . Q
 | 
|---|
| 65 |  Q 0 ; common procedure with more than one descendent, ok to delete
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | REACMMN(RADA) ; Check to see if a commom procedure can be re-activated.
 | 
|---|
| 68 |  ; This sub-routine checks if this common is a parent w/o descendents.
 | 
|---|
| 69 |  ; If true, this common procedure cannot be re-activated.
 | 
|---|
| 70 |  ; Input : RADA - ien of the entry in 71.3
 | 
|---|
| 71 |  ; Output: 0 if ok to delete, 1 if not ok to delete
 | 
|---|
| 72 |  ; Called from ^DD(71.3,4,"DEL",1,0)
 | 
|---|
| 73 |  N RA713 S RA713=$G(^RAMIS(71.3,RADA,0))
 | 
|---|
| 74 |  I $P($G(^RAMIS(71,+RA713,0)),"^",6)="P",('$O(^RAMIS(71,+RA713,4,0))) D  Q 1
 | 
|---|
| 75 |  . N RATXT S RATXT(1)=" "
 | 
|---|
| 76 |  . S RATXT(2)="You cannot re-activate a common parent procedure without descendents."
 | 
|---|
| 77 |  . S RATXT(3)=$C(7) D EN^DDIOL(.RATXT)
 | 
|---|
| 78 |  . Q
 | 
|---|
| 79 |  Q 0 ; ok to delete
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | X7005(RADFN,RADTI,RACNI,RAMDV,RAQED,RASTI,RAWHO) ;update the EXAM
 | 
|---|
| 82 |  ; STATUS TIMES (70.05) multiple.  Called from RASTED (will be
 | 
|---|
| 83 |  ; called from RAUTL1 in the future)
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ; input variables:
 | 
|---|
| 86 |  ; ----------------
 | 
|---|
| 87 |  ; RADFN=patient dfn, RADTI=exam date/time (inverse)
 | 
|---|
| 88 |  ; RACNI=exam record ien (70.03), RAMDV=division parameters
 | 
|---|
| 89 |  ; RAQED=task queued(1=yes;0=no), RASTI=exam status
 | 
|---|
| 90 |  ; RAWHO=editing person
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 |  N %,D,D0,DA,DIC,DIE,DQ,DR,RAFDA,RAIEN,RAIENS,X,Y
 | 
|---|
| 93 |  S RAQED=+$G(RAQED) ; if tasked 1, else 0
 | 
|---|
| 94 |  S RAIENS="+1,"_RACNI_","_RADTI_","_RADFN_","
 | 
|---|
| 95 |  S RAFDA(70.05,RAIENS,.01)=$$MIDNGHT^RAUTL5($$NOW^XLFDT())
 | 
|---|
| 96 |  D UPDATE^DIE(,"RAFDA","RAIEN") ; RAIEN(1)=ien of new record
 | 
|---|
| 97 |  K RAFDA,RAIENS Q:'$D(RAIEN(1))  ; record not added
 | 
|---|
| 98 |  I $P(RAMDV,"^",11),('RAQED) D
 | 
|---|
| 99 |  .S DIE="^RADPT("_RADFN_",""DT"","_RADTI_",""P"","_RACNI_",""T"","
 | 
|---|
| 100 |  .S DA=RAIEN(1),DR=".01" D ^DIE
 | 
|---|
| 101 |  S RAIENS=RAIEN(1)_","_RACNI_","_RADTI_","_RADFN_","
 | 
|---|
| 102 |  S RAFDA(70.05,RAIENS,2)=RASTI
 | 
|---|
| 103 |  S RAFDA(70.05,RAIENS,3)=$G(RAWHO)
 | 
|---|
| 104 |  D FILE^DIE(,"RAFDA")
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 | A7007(RADFN,RADTI,RACNI,RAWHO,RATC) ; update the ACTIVITY LOG (70.07)
 | 
|---|
| 107 |  ; multiple.  Called from RASTED (will be called from RAUTL1 in the
 | 
|---|
| 108 |  ; future)
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ; input variables:
 | 
|---|
| 111 |  ; ----------------
 | 
|---|
| 112 |  ; RADFN=patient dfn, RADTI=exam date/time (inverse)
 | 
|---|
| 113 |  ; RACNI=exam record ien (70.03), RAWHO=editing person
 | 
|---|
| 114 |  ; RATC=technologist comments (optional)
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  N %,D,D0,DA,DIC,DIE,DQ,DR,RAFDA,RAIEN,RAIENS,X,Y
 | 
|---|
| 117 |  S RAIENS="+1,"_RACNI_","_RADTI_","_RADFN_","
 | 
|---|
| 118 |  S RAFDA(70.07,RAIENS,.01)="NOW"
 | 
|---|
| 119 |  D UPDATE^DIE("E","RAFDA","RAIEN") ;RAIEN(1)=ien of new record
 | 
|---|
| 120 |  K RAFDA,RAIENS  Q:'$D(RAIEN(1))  ; record not added
 | 
|---|
| 121 |  S RAIENS=RAIEN(1)_","_RACNI_","_RADTI_","_RADFN_","
 | 
|---|
| 122 |  S RAFDA(70.07,RAIENS,2)="U"
 | 
|---|
| 123 |  S RAFDA(70.07,RAIENS,3)=$G(RAWHO)
 | 
|---|
| 124 |  S:$G(RATC)]"" RAFDA(70.07,RAIENS,4)=RATC
 | 
|---|
| 125 |  D FILE^DIE(,"RAFDA")
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  ;updates EXAM STATUS
 | 
|---|
| 129 | U70033(RA18DFN,RA18DTI,RA18CNI,RA18ST) ;
 | 
|---|
| 130 |  N %,D,D0,DA,DIC,DIE,DQ,DR,RA18FDA,RA18IENS,X,Y
 | 
|---|
| 131 |  S RA18IENS=RA18CNI_","_RA18DTI_","_RA18DFN_","
 | 
|---|
| 132 |  S RA18FDA(70.03,RA18IENS,3)=RA18ST
 | 
|---|
| 133 |  D FILE^DIE(,"RA18FDA")
 | 
|---|
| 134 |  Q
 | 
|---|
| 135 |  ;
 | 
|---|