| 1 | RAREG2 ;HISC/CAH,FPT,DAD,SS AISC/MJK,RMO-Register Patient ;1/12/98  16:08
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**13,18**;Mar 16, 1998
 | 
|---|
| 3 |  ;last modif. JULY 5,00 by SS 
 | 
|---|
| 4 | ORDER ; Get data from ordered procedure for registration
 | 
|---|
| 5 |  K RACLNC,RALIFN,RALOC,RAPIFN,RAPRC,RARDTE,RARSH,RASHA
 | 
|---|
| 6 |  S Y=^RAO(75.1,+RAOIFN,0),RAPRC=$S($D(^RAMIS(71,+$P(Y,"^",2),0)):$P(^(0),"^"),1:"") S:$D(RADPARFL) RAPRC=RADPARPR ;may not need to redefine raprc ?
 | 
|---|
| 7 |  S RACAT=$S('$D(RAWARD):$P($P(^DD(75.1,4,0),$P(Y,"^",4)_":",2),";"),1:RACAT)
 | 
|---|
| 8 |  D SL^RAREG3 Q:RAQUIT
 | 
|---|
| 9 |  S:"CS"[$E(RACAT)&($D(^DIC(34,+$P(Y,"^",9),0))) RASHA=$P(^(0),"^") S:"R"[$E(RACAT)&($D(^RAO(75.1,+RAOIFN,"R"))) RARSH=^("R")
 | 
|---|
| 10 |  S:$D(^VA(200,+$P(Y,"^",14),0)) RAPIFN=+$P(Y,"^",14) S:$P(Y,"^",21) RARDTE=$P(Y,"^",21) S:$D(^SC(+$P(Y,"^",22),0)) RALIFN=+$P(Y,"^",22)
 | 
|---|
| 11 |  I '$D(RAWARD),$D(RALIFN),$P(^SC(RALIFN,0),"^",3)="C" S RALOC=$P(^(0),"^") S RACLNC=$S('$D(^("SL")):RALOC,$D(^SC(+$P(^("SL"),"^",5),0)):$P(^(0),"^"),1:RALOC)
 | 
|---|
| 12 |  ;check nodes ahead 6/18/96
 | 
|---|
| 13 |  N RAAHEAD
 | 
|---|
| 14 |  S RAAHEAD=$O(^RADPT(RADFN,"DT","B",RADTE))
 | 
|---|
| 15 |  I RAAHEAD[RADTE W *7,!!?5,"Someone else has already started editing a record for this",!?5,"patient at this time, please try a few minutes later." S RAQUIT=1 R !!,"Press RETURN to continue :",RAAHEAD:DTIME
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 | EXAMLOOP ; register the exam
 | 
|---|
| 18 |  N REM ;this is used by the edit template
 | 
|---|
| 19 |  S DA=RADFN,RACN="N",DIE("NO^")="OUTOK",DR="[RA REGISTER]",DIE="^RADPT(" D ^DIE K DIE("NO^"),DE,DQ
 | 
|---|
| 20 |  K RAPOP,RAFM,RAFM1,RAI,RAMOD,RASTI,RACMTHOD,RANMFLG,RAIEN702 ;moved from edit template
 | 
|---|
| 21 |  S RACNICNT=RACNICNT+1
 | 
|---|
| 22 |  S ^TMP($J,"RAREG1",RACNICNT)=RADFN_U_RADTI_U_RACNI_U_RAOIFN
 | 
|---|
| 23 |  I '$D(RAFIN) D  Q
 | 
|---|
| 24 |  . W !?3,*7,"Exam entry not complete. Must delete..."
 | 
|---|
| 25 |  . S DA(2)=RADFN,DA(1)=RADTI,DA=RACNI
 | 
|---|
| 26 |  . S DIK="^RADPT(DA(2),""DT"",DA(1),""P""," D ^DIK
 | 
|---|
| 27 |  . K ^TMP($J,"RAREG1",RACNICNT)
 | 
|---|
| 28 |  . K RAPX  ; added in RA*5*13 to stop labels & flash cards in RAREG1
 | 
|---|
| 29 |  . Q
 | 
|---|
| 30 |  S RAPARENT=$S($G(RAPARENT):RAPARENT,$P($G(^RAMIS(71,RAPROC,0)),U,6)="P":1,1:+$G(RAPARENT))
 | 
|---|
| 31 |  I $D(^RAO(75.1,+RAOIFN,"H")) S:$D(^("H",0)) ^RADPT(RADFN,"DT",RADTI,"P",RACNI,"H",0)=^(0) F I=1:1 Q:'$D(^RAO(75.1,+RAOIFN,"H",I,0))  S ^RADPT(RADFN,"DT",RADTI,"P",RACNI,"H",I,0)=^(0)
 | 
|---|
| 32 |  S ^DISV($S($D(DUZ)#2:DUZ,1:0),"RA","CASE #")=RADFN_"^"_RADTI_"^"_RACNI,RAREC=""
 | 
|---|
| 33 |  S:$D(RADPARFL) ^TMP($J,"PRO-REG",RAPROCI,RAOIFN)=""
 | 
|---|
| 34 |  K RAFIN,DR
 | 
|---|
| 35 |  K RACLNC,RALIFN,RALOC,RAOSTS,RAPHY,RAPRC,RARDTE,RARSH,RASHA
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 | EXAMDEL ; Delete examset if incomplete
 | 
|---|
| 38 |  W !!?3,*7,"Exam entry not complete. Must delete all descendent exams..."
 | 
|---|
| 39 |  S RATMP=0
 | 
|---|
| 40 |  F  S RATMP=$O(^TMP($J,"RAREG1",RATMP)) Q:RATMP'>0  D
 | 
|---|
| 41 |  . S RA=^TMP($J,"RAREG1",RATMP)
 | 
|---|
| 42 |  . S RAOIFN=$P(RA,U,4),(RADFN,DA(2))=$P(RA,U)
 | 
|---|
| 43 |  . S (RADTI,DA(1))=$P(RA,U,2),(RACNI,DA)=$P(RA,U,3)
 | 
|---|
| 44 |  . S DIK="^RADPT(DA(2),""DT"",DA(1),""P""," D ^DIK
 | 
|---|
| 45 |  . K ^TMP($J,"RAREG1",RATMP),RAPX(RATMP)
 | 
|---|
| 46 |  . K DIE,DR S DIE="^RAO(75.1,",DA=RAOIFN,DR="5///5" D ^DIE K DIE,DR
 | 
|---|
| 47 |  . Q
 | 
|---|
| 48 |  W !?3,"Deletion complete!",!
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | XTRADESC ; Ask extra descendent procedures for a parent
 | 
|---|
| 51 |  N RASKIPIT S RASKIPIT=0
 | 
|---|
| 52 |  F  D  Q:RASKIPIT!RAEXIT!RAQUIT
 | 
|---|
| 53 |  . N DIR S DIR(0)="Y"
 | 
|---|
| 54 |  . S DIR("A")="Register another descendent exam for "_RANME_" (Y/N)"
 | 
|---|
| 55 |  . W ! D ^DIR
 | 
|---|
| 56 |  . S RAEXIT=$S($D(DTOUT)!$D(DUOUT):1,1:0),RASKIPIT='Y
 | 
|---|
| 57 |  . I RASKIPIT!RAEXIT Q
 | 
|---|
| 58 |  . D ORDER K RAPRC Q:RAQUIT
 | 
|---|
| 59 |  . D EXAMLOOP,MEMSET(RADFN,RADTI,RACNI)
 | 
|---|
| 60 |  . Q
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | EXAMSET ; Set the EXAM SET field if a parent is registered
 | 
|---|
| 63 |  N DA,DIE,DR,Y
 | 
|---|
| 64 |  S DIE="^RADPT("_RADFN_",""DT"","
 | 
|---|
| 65 |  S DA(1)=RADFN,DA=RADTI
 | 
|---|
| 66 |  S DR="5///^S X=$S($G(RAPARENT):''RAPARENT,1:""@"")"
 | 
|---|
| 67 |  D ^DIE
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 | MEMSET(RAX,RAY,RAZ) ; Set 'MEMBER OF SET' field on the exam node
 | 
|---|
| 70 |  ; if the procedure is a descendant procedure.
 | 
|---|
| 71 |  ; Var List:   RAX <-> RADFN : RAY <-> RADTI : RAZ <-> RACNI
 | 
|---|
| 72 |  Q:$G(^RADPT(RAX,"DT",RAY,"P",RAZ,0))']""
 | 
|---|
| 73 |  N D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y
 | 
|---|
| 74 |  S DIE="^RADPT("_RAX_",""DT"","_RAY_",""P"","
 | 
|---|
| 75 |  S DA(2)=RAX,DA(1)=RAY,DA=RAZ,DR="25///"_$S($P($G(^RAMIS(71,+RAPROC,0)),"^",18)="Y":2,1:1) D ^DIE ;2=combined report, 1=separate reports
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 | SET17(RAX,RAY,RAZ) ; Set piece 17 on exam node
 | 
|---|
| 78 |  Q:$G(^RADPT(RAX,"DT",RAY,"P",RAZ,0))']""
 | 
|---|
| 79 |  N D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y
 | 
|---|
| 80 |  S DIE="^RADPT("_RAX_",""DT"","_RAY_",""P"","
 | 
|---|
| 81 |  S DA(2)=RAX,DA(1)=RAY,DA=RAZ,DR="17///"_RA17 D ^DIE
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 | UOSM ; called from RAREG1
 | 
|---|
| 84 |  ; update order status and send OE v3.0 message
 | 
|---|
| 85 |  ; This code will $O through the ^TMP($J,"RAREG1" global and make
 | 
|---|
| 86 |  ; just one call per order/request number to ^RAORDU to update the
 | 
|---|
| 87 |  ; status in File 75.1. One call to ^RAORDU per order/request number
 | 
|---|
| 88 |  ; means only one HL7 type message per order/request will be sent to 
 | 
|---|
| 89 |  ; OE v3.0.
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  Q:'$D(^TMP($J,"RAREG1"))
 | 
|---|
| 92 |  N RACNT,RAORDNUM,RATMPNDE
 | 
|---|
| 93 |  S RACNT=0
 | 
|---|
| 94 |  F  S RACNT=$O(^TMP($J,"RAREG1",RACNT)) Q:RACNT'>0  D
 | 
|---|
| 95 |  .S RATMPNDE=$G(^TMP($J,"RAREG1",RACNT))
 | 
|---|
| 96 |  .S RAOIFN=$P(RATMPNDE,U,4) I RAOIFN D
 | 
|---|
| 97 |  ..Q:$D(RAORDNUM(RAOIFN))
 | 
|---|
| 98 |  ..S RAPROC=$P(^RAO(75.1,+RAOIFN,0),U,2)
 | 
|---|
| 99 |  ..N RA18PCHG S RA18PCHG=$$EN1^RAO7XX(RAOIFN) ;P18 - if the proc changed, sends XX mess, sets RA18PCHG=1 for RAORDU
 | 
|---|
| 100 |  ..S RAOSTS=6 D ^RAORDU
 | 
|---|
| 101 |  ..S RAORDNUM(RAOIFN)=""
 | 
|---|
| 102 |  ..Q
 | 
|---|
| 103 |  .Q
 | 
|---|
| 104 |  Q
 | 
|---|
| 105 | CKDUPORD ; ck for dupl procedures in outstanding orders
 | 
|---|
| 106 |  S RA6="",RA8=0
 | 
|---|
| 107 | CKD1 S RA6=$O(^TMP($J,"PRO-REG",RA6)) Q:'RA6
 | 
|---|
| 108 |  S RA7=$O(^TMP($J,"PRO-REG",RA6,0)) G:'RA7 CKD1
 | 
|---|
| 109 |  K ^TMP($J,"PRO-ORD",RA6,RA7) ; kill hook for order of regist'd proc
 | 
|---|
| 110 |  G:'$O(^TMP($J,"PRO-ORD",RA6,0)) CKD1
 | 
|---|
| 111 |  W:'RA8 !!?5,"Of the procedures you just registered,",!?5,"the following procedure(s) are still in outstanding order(s) :",*7,!
 | 
|---|
| 112 |  S RA8=1
 | 
|---|
| 113 |  S RA7=""
 | 
|---|
| 114 |  F  S RA7=$O(^TMP($J,"PRO-ORD",RA6,RA7)) Q:'RA7  W !?5,$P(^RAMIS(71,RA6,0),U) W:^TMP($J,"PRO-ORD",RA6,RA7)="DESC" ?35,"(parent=",$P(^RAMIS(71,$P($G(^RAO(75.1,RA7,0)),U,2),0),U),")"
 | 
|---|
| 115 |  G CKD1
 | 
|---|
| 116 | COPYFROM(RAZ) ;called by RAREG1 if add exam shd copy dx/staff/resident
 | 
|---|
| 117 |  ;RAZ is "P"-node's ien of newly added case of set
 | 
|---|
| 118 |  Q:'$D(RAFIRST)#2  ;RAFIRST is "P"-node's ien of first case of set
 | 
|---|
| 119 |  Q:$G(^RADPT(RADFN,"DT",RADTI,"P",RAZ,0))']""
 | 
|---|
| 120 |  Q:$G(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,0))']""
 | 
|---|
| 121 |  N RA,RA2,RA3,RA5 S RA5=0
 | 
|---|
| 122 |  ; RA is a dummy var
 | 
|---|
| 123 |  ; RA2 is used by data server call in RARTE2
 | 
|---|
| 124 |  ; RA3 is used by COPYn^RARTE2 as a dummy var
 | 
|---|
| 125 |  ; RA5=1 if any data got copied over to the new case
 | 
|---|
| 126 |  N RA1PR,RA1PS ; prim res/staff
 | 
|---|
| 127 |  N RA1SR,RA1SS ; sec res/staff arrays
 | 
|---|
| 128 |  N RA1PD,RA1SD ; prim diag, then sec diags arrays
 | 
|---|
| 129 |  N RAFDA,RAIEN,RAMSG,RAXIT
 | 
|---|
| 130 |  S RAXIT=0
 | 
|---|
| 131 |  S RA2=RAZ_","_RADTI_","_RADFN
 | 
|---|
| 132 |  ; get data from first case of set
 | 
|---|
| 133 |  S RA1PR=$P(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,0),U,12),RA1PS=$P(^(0),U,15),RA1PD=$P(^(0),U,13)
 | 
|---|
| 134 |  I $D(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,"SRR",0)) S RA=0 F  S RA=$O(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,"SRR",RA)) Q:+RA'=RA  S RA1SR(RA)=+(^(RA,0))
 | 
|---|
| 135 |  I $D(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,"SSR",0)) S RA=0 F  S RA=$O(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,"SSR",RA)) Q:+RA'=RA  S RA1SS(RA)=+(^(RA,0))
 | 
|---|
| 136 |  I $D(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,"DX",0)) S RA=0 F  S RA=$O(^RADPT(RADFN,"DT",RADTI,"P",RAFIRST,"DX",RA)) Q:+RA'=RA  S RA1SD(RA)=+(^(RA,0))
 | 
|---|
| 137 |  ; copy data from first case of set to new case
 | 
|---|
| 138 |  S:RA1PR $P(^RADPT(RADFN,"DT",RADTI,"P",RAZ,0),U,12)=RA1PR,RA5=1
 | 
|---|
| 139 |  S:RA1PS $P(^RADPT(RADFN,"DT",RADTI,"P",RAZ,0),U,15)=RA1PS,RA5=1
 | 
|---|
| 140 |  S:RA1PD $P(^RADPT(RADFN,"DT",RADTI,"P",RAZ,0),U,13)=RA1PD,RA5=1
 | 
|---|
| 141 |  I $O(RA1SR("")) S RA3="" D COPY3^RARTE2 S RA5=1
 | 
|---|
| 142 |  I $O(RA1SS("")) S RA3="" D COPY4^RARTE2 S RA5=1
 | 
|---|
| 143 |  I $O(RA1SD("")) S RA3="" D COPY5^RARTE2 S RA5=1
 | 
|---|
| 144 |  Q:'RA5
 | 
|---|
| 145 |  ; set xref for this new case only
 | 
|---|
| 146 |  S DIK="^RADPT("_RADFN_",""DT"","_RADTI_",""P"","
 | 
|---|
| 147 |  S DA(2)=RADFN,DA(1)=RADTI,DA=RAZ
 | 
|---|
| 148 |  D IX1^DIK
 | 
|---|
| 149 |  Q
 | 
|---|