1 | RAORD1A ;HISC/FPT-Request an Exam ;7/27/07 08:00
|
---|
2 | ;;5.0;Radiology/Nuclear Medicine;**1,86**;Mar 16, 1998;Build 7
|
---|
3 | ;
|
---|
4 | ;Call to WIN^DGPMDDCF (Supported IA #1246) from the SCREENW function
|
---|
5 | ;Supported IA #10039 reference to ^DIC(42
|
---|
6 | ;Supported IA #10040 reference to ^SC
|
---|
7 | ;Supported IA #10061 reference to ^VADPT
|
---|
8 | ;Supported IA #10103 reference to ^XLFDT
|
---|
9 | ;
|
---|
10 | SCREEN(RAINPAT,RACPRS27) ; screen for active clinics/wards
|
---|
11 | ; This code is also called from RAORD1 (screen for the Patient Location
|
---|
12 | ; prompt which is a pointer to the HOSPITAL LOCATION (#44) file.)
|
---|
13 | ; We want to EXCLUDE from our selection the following types of
|
---|
14 | ; hospital locations:
|
---|
15 | ;
|
---|
16 | ; 1) Occasion of Service (OOS) locations (fld: 50.01) 'OOS' node
|
---|
17 | ; 2) File Area ("F") or Imaging ("I") locations (fld: 2)
|
---|
18 | ; 3) Inactivate Date (fld: 2505) 'I' node
|
---|
19 | ;
|
---|
20 | ; input: RAINPAT=1 if the patient is an inpatient located on a ward, else 0.
|
---|
21 | ; RACPRS27=1 if the environment is running CPRS GUI v27, else 0.
|
---|
22 | ;
|
---|
23 | Q:$D(^SC(+Y,"OOS"))#2 0 ; #1
|
---|
24 | N RA44 S RA44=$G(^SC(+Y,0)),RA44(42)=$P($G(^SC(+Y,42)),U)
|
---|
25 | Q:"^F^I^"[(U_$P(RA44,U,3)_U) 0 ; #2
|
---|
26 | ;
|
---|
27 | ; if the hospital location is defined as a ward set RAWARD to 1, else 0
|
---|
28 | N RAWARD S RAWARD=0
|
---|
29 | ;check the pointer to the WARD LOCATION file.
|
---|
30 | I RA44(42)>0 D Q:RAWARD=-1 0
|
---|
31 | .;Error; the HOSPITAL LOCATION cannot be of TYPE 'Clinic' & point to a ward
|
---|
32 | .I $P(RA44,U,3)="C" S RAWARD=-1 Q
|
---|
33 | .;Error; bad pointers between files 42 & 44
|
---|
34 | .I $P($G(^DIC(42,RA44(42),44)),U)'=+Y S RAWARD=-1 Q
|
---|
35 | .;ok, set ward flag...
|
---|
36 | .S RAWARD=1
|
---|
37 | .Q
|
---|
38 | ;
|
---|
39 | ; 1) if the hospital location is a ward check if we should screen by ward
|
---|
40 | ; 2) the hosp location=ward, facility is running v26, and we have an
|
---|
41 | ; outpatient quit zero (default of the $S)
|
---|
42 | I RAWARD Q $S(RACPRS27!RAINPAT:$$SCREENW(+Y),1:0)
|
---|
43 | ;
|
---|
44 | ; if the hospital location is a clinic, we have an inpatient, and the
|
---|
45 | ; facility is not running CPRS v27 return 0
|
---|
46 | I 'RACPRS27,(RAINPAT) Q 0
|
---|
47 | ;
|
---|
48 | ; Check INACTIVATE DATE against REACTIVATE DATE
|
---|
49 | ; inactivate date = reactivate date (allow)
|
---|
50 | ; inactivate date > reactivate date (disallow)
|
---|
51 | ; inactivate date < reactivate date (allow)
|
---|
52 | ;
|
---|
53 | N RASCA,RASCI,RASCINDE S RASCINDE=$G(^SC(+Y,"I"))
|
---|
54 | S RASCI=+$P(RASCINDE,U),RASCA=+$P(RASCINDE,U,2)
|
---|
55 | ;
|
---|
56 | Q $S(RASCI'>0:1,RASCI>DT:1,1:RASCI'>RASCA)
|
---|
57 | ;
|
---|
58 | SCREENW(Y) ; check the out-of-service field of the WARD LOCATION (#42) record.
|
---|
59 | ;input Y: ien of the HOSPITAL LOCATION record
|
---|
60 | ; RAWHEN: DATE DESIRED (Not guaranteed) (file: 75.1, fld: 21) optional
|
---|
61 | ;output : '0' if not valid, else '1' if valid
|
---|
62 | N D0,DGPMOS,X
|
---|
63 | S D0=+$G(^SC(Y,42))
|
---|
64 | Q:'D0 0
|
---|
65 | Q:'($D(^DIC(42,D0,0))#2) 0
|
---|
66 | ;
|
---|
67 | ;WIN^DGPMDDCF (Supported IA #1246) Is the ward active?
|
---|
68 | ; Input
|
---|
69 | ; D0 "Dee zero" (req): IEN of WARD LOCATION file.
|
---|
70 | ; DGPMOS (opt): defaults to DT. Is the ward in service on this date?
|
---|
71 | ; Output
|
---|
72 | ; X: 1 if out of service, 0 if in service, or -1 if input variables
|
---|
73 | ; not defined properly. Be careful; note the difference in their
|
---|
74 | ; boolean definition ('0'=success) and ours ('0'=failure)
|
---|
75 | ;
|
---|
76 | S:$D(RAWHEN)#2 DGPMOS=$P(RAWHEN,".",1)
|
---|
77 | D WIN^DGPMDDCF
|
---|
78 | Q 'X ;alter 'X' (the WIN^DGPMDDCF output value) to meet our ($$SCREENW) output definition
|
---|
79 | ;
|
---|
80 | PREG(RADFN,RADT) ; Subroutine will display the pregnancy prompt to the
|
---|
81 | ; user if the patient is between the ages of 12 - 55 inclusive.
|
---|
82 | ; Called from CREATE1^RAORD1.
|
---|
83 | ; Input : RADFN - Patient, RADT - Today's date
|
---|
84 | ; Output: Patient Pregnant? (yes, no, unknown or no default)
|
---|
85 | ; Note: (may set RAOUT if the user times out or '^' out)
|
---|
86 | Q:RASEX'="F" "" ; not a female
|
---|
87 | S:RADT="" RADT=$$DT^XLFDT()
|
---|
88 | N RADAYS,VADM D DEM^VADPT ; $P(VADM(3),"^") DOB of patient, internal
|
---|
89 | S RADAYS=$$FMDIFF^XLFDT(RAWHEN,$P(VADM(3),"^"),3)
|
---|
90 | Q:((RADAYS\365.25)<12) "" ; too young
|
---|
91 | Q:((RADAYS\365.25)>55) "" ; too old
|
---|
92 | N DIR,DIROUT,DIRUT,DUOUT,DTOUT S DIR(0)="75.1,13" D ^DIR
|
---|
93 | S:$D(DIRUT) RAOUT="^" Q:$D(RAOUT) ""
|
---|
94 | Q $P(Y,"^")
|
---|
95 | ;
|
---|
96 | INIMOD(Y) ; check if the user has selected the same
|
---|
97 | ; modifier more than once when the order is requested.
|
---|
98 | ; The 'Request an Exam' option. Called from MODS^RAORD1
|
---|
99 | ; Input: 'Y' the name of the procedure modifier
|
---|
100 | ; Output: 'X' if the user has not entered this modifier in
|
---|
101 | ; the past return one (1). Else return zero (0).
|
---|
102 | Q:'$D(RAMOD) 1 ; must allow the selection of the first modifier
|
---|
103 | ; after this, it is assumed that the RAMOD array is defined.
|
---|
104 | N RACNT,X S X=1,RACNT=99999
|
---|
105 | F S RACNT=$O(RAMOD(RACNT),-1) Q:RACNT=""!(X=0) S:RAMOD(RACNT)=Y X=0
|
---|
106 | Q X
|
---|
107 | ;
|
---|