| 1 | PXRMEXCF ; SLC/PKR - Reminder exchange routines for computed findings. ;06/28/2007 | 
|---|
| 2 | ;;2.0;CLINICAL REMINDERS;**6**;Feb 04, 2005;Build 123 | 
|---|
| 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,CSUM,DIR,DIROUT,DIRUT,DTOUT,DUOUT,ECS,IND,MSG | 
|---|
| 13 | N PCS,ROUTINE,SAME,TEXT,X,Y | 
|---|
| 14 | S NEWNAME="" | 
|---|
| 15 | S ROUTINE=ATTR("NAME") | 
|---|
| 16 | I EXISTS="" S EXISTS=$$EXISTS^PXRMEXCF(ROUTINE) | 
|---|
| 17 | S CHOICES=$S(EXISTS:"COQS",1:"CIQS") | 
|---|
| 18 | I EXISTS D | 
|---|
| 19 | .;If the routine exists compare the existing routine checksum with the | 
|---|
| 20 | .;the checksum of the routine in the packed definition. | 
|---|
| 21 | . S CSUM=$$RTNCS^PXRMEXCS(ROUTINE) | 
|---|
| 22 | . S SAME=$S(ATTR("CHECKSUM")=CSUM:1,1:0) | 
|---|
| 23 | . S TEXT(1)="Routine "_ROUTINE_" already exists " | 
|---|
| 24 | . I SAME D | 
|---|
| 25 | .. S TEXT(1)=TEXT(1)_"and the packed routine is identical, skipping." | 
|---|
| 26 | .. W !,TEXT(1),! H 2 | 
|---|
| 27 | .. S ACTION="S" | 
|---|
| 28 | . I 'SAME D | 
|---|
| 29 | .. S TEXT(1)=TEXT(1)_"but the packed routine is different," | 
|---|
| 30 | .. S TEXT(2)="what do you want to do?" | 
|---|
| 31 | .. W !,TEXT(1),!,TEXT(2) | 
|---|
| 32 | .. S DIR("B")="O" | 
|---|
| 33 | .. S ACTION=$$GETACT^PXRMEXIU(CHOICES,.DIR) | 
|---|
| 34 | E  D | 
|---|
| 35 | . W !!,"Routine "_ROUTINE_" is new, what do you want to do?" | 
|---|
| 36 | . S DIR("B")="I" | 
|---|
| 37 | . S ACTION=$$GETACT^PXRMEXIU(CHOICES,.DIR) | 
|---|
| 38 | ; | 
|---|
| 39 | I (ACTION="Q")!(ACTION="S") Q ACTION | 
|---|
| 40 | ; | 
|---|
| 41 | I ACTION="C" D | 
|---|
| 42 | . N CDONE | 
|---|
| 43 | . S CDONE=0 | 
|---|
| 44 | . F  Q:CDONE  D | 
|---|
| 45 | .. S NEWNAME=$$GETNAME^PXRMEXIU(ATTR("MIN FIELD LENGTH"),ATTR("FIELD LENGTH")) | 
|---|
| 46 | .. I NEWNAME="" S ACTION="S",CDONE=1 Q | 
|---|
| 47 | .. S EXISTS=$$EXISTS^PXRMEXCF(NEWNAME) | 
|---|
| 48 | .. I EXISTS W !,"Routine ",NEWNAME," already exists, try again." | 
|---|
| 49 | .. E  D  Q | 
|---|
| 50 | ... S CDONE=1 | 
|---|
| 51 | ... S NAMECHG(ATTR("FILE NUMBER"),ROUTINE)=NEWNAME | 
|---|
| 52 | ; | 
|---|
| 53 | I (ACTION="I")&(EXISTS) D | 
|---|
| 54 | .;If the action is overwrite double check that overwrite is what the | 
|---|
| 55 | .;user really wants to do. | 
|---|
| 56 | . K DIR | 
|---|
| 57 | . S DIR(0)="Y"_U_"A" | 
|---|
| 58 | . S DIR("A")="Are you sure you want to overwrite" | 
|---|
| 59 | . S DIR("B")="N" | 
|---|
| 60 | . D ^DIR | 
|---|
| 61 | . I $D(DIROUT)!$D(DIRUT) S Y=0 | 
|---|
| 62 | . I $D(DTOUT)!$D(DUOUT) S Y=0 | 
|---|
| 63 | . I 'Y S ACTION="S" | 
|---|
| 64 | . S NAMECHG(ATTR("FILE NUMBER"),ROUTINE)=NEWNAME | 
|---|
| 65 | Q ACTION | 
|---|
| 66 | ; | 
|---|