1 | PXRMEXCF ; SLC/PKR - Reminder exchange routines for computed findings. ;12/22/2004
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;==============================================
|
---|
4 | EXISTS(ROUTINE) ;Return true if routine ROUTINE exists.
|
---|
5 | I ROUTINE="" Q 0
|
---|
6 | N RTN
|
---|
7 | S RTN="^"_ROUTINE
|
---|
8 | Q $S($T(@RTN)'="":1,1:0)
|
---|
9 | ;
|
---|
10 | ;==============================================
|
---|
11 | GETRACT(ATTR,NEWNAME,NAMECHG,RTN,EXISTS) ;Get the action for a routine.
|
---|
12 | N ACTION,CHOICES,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ECS,IND,MSG
|
---|
13 | N PCS,ROUTINE,SAME,TEXT,X,Y
|
---|
14 | S NEWNAME=""
|
---|
15 | ;If the routine exists compare the existing routine checksum with the
|
---|
16 | ;the checksum of the routine in the packed definition.
|
---|
17 | S ROUTINE=ATTR("NAME")
|
---|
18 | I EXISTS="" S EXISTS=$$EXISTS^PXRMEXCF(ROUTINE)
|
---|
19 | S CHOICES=$S(EXISTS:"COQS",1:"CIQS")
|
---|
20 | I EXISTS D
|
---|
21 | . S SAME=$$SAME(.ATTR,.RTN)
|
---|
22 | . S TEXT(1)="Routine "_ROUTINE_" already exists "
|
---|
23 | . I SAME S TEXT(1)=TEXT(1)_"and the packed routine is identical,"
|
---|
24 | . I 'SAME S TEXT(1)=TEXT(1)_"but the packed routine is different,"
|
---|
25 | . S TEXT(2)="what do you want to do?"
|
---|
26 | . D EN^DDIOL(.TEXT)
|
---|
27 | . S DIR("B")="S"
|
---|
28 | . S ACTION=$$GETACT^PXRMEXIU(CHOICES,.DIR)
|
---|
29 | E D
|
---|
30 | . W !!,"Routine "_ROUTINE_" is NEW, what do you want to do?"
|
---|
31 | . S DIR("B")="I"
|
---|
32 | . S ACTION=$$GETACT^PXRMEXIU(CHOICES,.DIR)
|
---|
33 | ;
|
---|
34 | I ACTION="Q" Q ACTION
|
---|
35 | ;
|
---|
36 | I ACTION="C" D
|
---|
37 | . N CDONE
|
---|
38 | . S CDONE=0
|
---|
39 | . F Q:CDONE D
|
---|
40 | .. S NEWNAME=$$GETNAME^PXRMEXIU(ATTR("MIN FIELD LENGTH"),ATTR("FIELD LENGTH"))
|
---|
41 | .. I NEWNAME="" S ACTION="S",CDONE=1 Q
|
---|
42 | .. S EXISTS=$$EXISTS^PXRMEXCF(NEWNAME)
|
---|
43 | .. I EXISTS W !,"Routine ",NEWNAME," already exists, try again."
|
---|
44 | .. E D Q
|
---|
45 | ... S CDONE=1
|
---|
46 | ... S NAMECHG(ATTR("FILE NUMBER"),ROUTINE)=NEWNAME
|
---|
47 | ;
|
---|
48 | I (ACTION="I")&(EXISTS) D
|
---|
49 | .;If the action is overwrite double check that overwrite is what the
|
---|
50 | .;user really wants to do.
|
---|
51 | . K DIR
|
---|
52 | . S DIR(0)="Y"_U_"A"
|
---|
53 | . S DIR("A")="Are you sure you want to overwrite"
|
---|
54 | . S DIR("B")="N"
|
---|
55 | . D ^DIR
|
---|
56 | . I $D(DIROUT)!$D(DIRUT) S Y=0
|
---|
57 | . I $D(DTOUT)!$D(DUOUT) S Y=0
|
---|
58 | . I 'Y S ACTION="S"
|
---|
59 | . S NAMECHG(ATTR("FILE NUMBER"),ROUTINE)=NEWNAME
|
---|
60 | Q ACTION
|
---|
61 | ;
|
---|
62 | ;==============================================
|
---|
63 | SAME(ATTR,RTN) ;Compare the existing routine and the new version
|
---|
64 | ;in RTN to see if they are the same.
|
---|
65 | N ECS,DIF,NEWCS,RT,SAME,X,XCNP
|
---|
66 | ;Load the existing routine into RT.
|
---|
67 | S XCNP=0
|
---|
68 | S DIF="RT("
|
---|
69 | S X=ATTR("NAME")
|
---|
70 | X ^%ZOSF("LOAD")
|
---|
71 | S ECS=$$ROUTINE^PXRMEXCS(.RT)
|
---|
72 | K RT
|
---|
73 | S NEWCS=$$ROUTINE^PXRMEXCS(.RTN)
|
---|
74 | S SAME=$S(ECS=NEWCS:1,1:0)
|
---|
75 | Q SAME
|
---|
76 | ;
|
---|