[613] | 1 | RASETU ;HISC/DAD-Determine Order Status for an Exam Set ;6/17/97 11:17
|
---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;**15**;Mar 16, 1998
|
---|
| 3 | ;
|
---|
| 4 | ;Routine reads through all cases generated from a single order
|
---|
| 5 | ;to gather information about the case statuses needed to determine
|
---|
| 6 | ;what status the order should be updated to
|
---|
| 7 | ;Input: RADFN=Patient ien <-> RAOIFN=order IEN
|
---|
| 8 | ;Output: RASTATUS array with status info about exam set passed back
|
---|
| 9 | ; format: min status_"^"_max status_"^"_$S(All_Statuses=0:1,1:0)
|
---|
| 10 | EN1(RAOIFN,RADFN) ;
|
---|
| 11 | Q:'($D(^RADPT("AO",RAOIFN,RADFN))\10) "^^"
|
---|
| 12 | ; save current RACNI so we'd know which exam to skip
|
---|
| 13 | ; in the loop below if Exam Deletion is being processed, because
|
---|
| 14 | ; 1. the exam node hasn't been killed off yet,
|
---|
| 15 | ; 2. the exam node may have a non-cancelled exam status,
|
---|
| 16 | ; which would throw off the loop calculation below
|
---|
| 17 | N RACNISAV S RACNISAV=$G(RACNI)
|
---|
| 18 | ;
|
---|
| 19 | N RACNI,RADTI,RAORDER,RAPROC,RASTATUS
|
---|
| 20 | S RAORDER=$G(^RAO(75.1,RAOIFN,0))
|
---|
| 21 | I RAORDER="" Q "^^"
|
---|
| 22 | S RAPROC=+$P(RAORDER,U,2) ; Procedure IEN
|
---|
| 23 | S RASTATUS("ORD")=$P(RAORDER,U,5) ; Initial status
|
---|
| 24 | S RASTATUS("MAX")=-1 ; Largest status found
|
---|
| 25 | S RASTATUS("MIN")=10 ; Smallest non-zero status found
|
---|
| 26 | S RASTATUS("NUL")=1 ; $S(All_Statuses=0:1,1:0)
|
---|
| 27 | ;
|
---|
| 28 | S RADTI=0
|
---|
| 29 | F S RADTI=$O(^RADPT("AO",RAOIFN,RADFN,RADTI)) Q:RADTI'>0 D
|
---|
| 30 | . S RACNI=0
|
---|
| 31 | . F S RACNI=$O(^RADPT("AO",RAOIFN,RADFN,RADTI,RACNI)) Q:RACNI'>0 D
|
---|
| 32 | .. I $D(RADELFLG),RACNISAV=RACNI Q ;skip if Exam Deletion
|
---|
| 33 | .. S RASTATUS=+$P($G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)),U,3)
|
---|
| 34 | .. S RASTATUS(0)=$P($G(^RA(72,RASTATUS,0)),U,3) Q:RASTATUS(0)=""
|
---|
| 35 | .. I RASTATUS(0)>RASTATUS("MAX") S RASTATUS("MAX")=RASTATUS(0)
|
---|
| 36 | .. I (RASTATUS(0)),(RASTATUS(0)<RASTATUS("MIN")) D
|
---|
| 37 | ... S RASTATUS("MIN")=RASTATUS(0)
|
---|
| 38 | ... Q
|
---|
| 39 | .. I RASTATUS(0)>0 S RASTATUS("NUL")=0
|
---|
| 40 | .. Q
|
---|
| 41 | . Q
|
---|
| 42 | Q RASTATUS("MIN")_"^"_RASTATUS("MAX")_"^"_RASTATUS("NUL")
|
---|
| 43 | ;
|
---|
| 44 | PARNT(RAOIFN,RADFN) ; Based on the patient and the order number, determine
|
---|
| 45 | ; if the exams are part of an exam set.
|
---|
| 46 | ; Input: 'RAOIFN' -> Order # 'RADFN' -> Patient ien
|
---|
| 47 | ; Output: $S(Exam Set:1,1:0)
|
---|
| 48 | ;
|
---|
| 49 | Q:'($D(^RADPT("AO",RAOIFN,RADFN))\10) 0
|
---|
| 50 | N RADTI,RARXM
|
---|
| 51 | S RADTI=+$O(^RADPT("AO",RAOIFN,RADFN,0)) Q:'RADTI 0
|
---|
| 52 | S RARXM(0)=$G(^RADPT(RADFN,"DT",RADTI,0))
|
---|
| 53 | Q +$P(RARXM(0),"^",5)
|
---|