| 1 | HDISVU02 ;BPFO/JRP - STORE VUIDS FOR SET OF CODES;5/12/2005 | 
|---|
| 2 | ;;1.0;HEALTH DATA & INFORMATICS;**1,2**;Feb 22, 2005 | 
|---|
| 3 | ; | 
|---|
| 4 | VUIDL(TAG,ROUTINE) ;Instantiate VUIDs for set of code fields | 
|---|
| 5 | ; Input: TAG - Line tag under which VUID data has been placed | 
|---|
| 6 | ;        ROUTINE - Routine line tag is in | 
|---|
| 7 | ;                  Leave blank if in this routine | 
|---|
| 8 | ;Output: 0 = Stop post-install (error) | 
|---|
| 9 | ;        1 = Continue with post-install | 
|---|
| 10 | ; Notes: Data lines must be in the format | 
|---|
| 11 | ;          File~Field~Code~VUID~Status~EffectiveDateTime | 
|---|
| 12 | ;          (Status and EffectiveDateTime must be in internal format) | 
|---|
| 13 | ;          (Default value for Status is 0 - Inactive) | 
|---|
| 14 | ;          (Default value for EffectiveDateTime is NOW) | 
|---|
| 15 | ;      : Call assumes that all input (TAG & ROUTINE) is valid | 
|---|
| 16 | ;      : Call assumes that data lines are valid | 
|---|
| 17 | ;        (i.e. no missing/bad data) | 
|---|
| 18 | ;      : The incoming status/date will not be stored in an existing | 
|---|
| 19 | ;        entry for the VUID if the currently stored status is the | 
|---|
| 20 | ;        same as the input status. | 
|---|
| 21 | ; | 
|---|
| 22 | N OFFSET,DATA,FILE,FIELD,IREF,VUID,STAT,STDT,DONE,RESULT,HDIMSG | 
|---|
| 23 | S ROUTINE=$G(ROUTINE) | 
|---|
| 24 | S RESULT=1 | 
|---|
| 25 | S DONE=0 | 
|---|
| 26 | F OFFSET=1:1 D  Q:DONE | 
|---|
| 27 | .S DATA=$S(ROUTINE="":$T(@TAG+OFFSET),1:$T(@TAG+OFFSET^@ROUTINE)) | 
|---|
| 28 | .S DATA=$P(DATA,";;",2) | 
|---|
| 29 | .I DATA="" S DONE=1 Q | 
|---|
| 30 | .S FILE=$P(DATA,"~",1) | 
|---|
| 31 | .S FIELD=$P(DATA,"~",2) | 
|---|
| 32 | .S IREF=$P(DATA,"~",3) | 
|---|
| 33 | .S VUID=$P(DATA,"~",4) | 
|---|
| 34 | .S STAT=$P(DATA,"~",5) | 
|---|
| 35 | .I STAT="" S STAT=0 | 
|---|
| 36 | .S STDT=$P(DATA,"~",6) | 
|---|
| 37 | .I STDT="" S STDT=$$NOW^XLFDT() | 
|---|
| 38 | .I '$$STOREIT(FILE,FIELD,IREF,VUID,STAT,STDT) D | 
|---|
| 39 | ..S HDIMSG(1)="**" | 
|---|
| 40 | ..S HDIMSG(2)="** Unable to store VUID and/or status information for file" | 
|---|
| 41 | ..S HDIMSG(3)="** "_FILE_", field "_FIELD_", and internal value "_IREF | 
|---|
| 42 | ..S HDIMSG(4)="**" | 
|---|
| 43 | ..D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 44 | ..S RESULT=0 | 
|---|
| 45 | Q RESULT | 
|---|
| 46 | ; | 
|---|
| 47 | STOREIT(FILE,FIELD,IREF,VUID,STAT,STDT) ;Store VUID info | 
|---|
| 48 | ; Input: FILE - File number | 
|---|
| 49 | ;        FIELD - Field number | 
|---|
| 50 | ;        IREF - Internal reference | 
|---|
| 51 | ;        VUID - VUID | 
|---|
| 52 | ;        STAT - Status | 
|---|
| 53 | ;               0 = Inacive (default)     1 = Active | 
|---|
| 54 | ;        STDT - Status Date/Time (FileMan) | 
|---|
| 55 | ;               (Defaults to NOW) | 
|---|
| 56 | ;Output: 1 = Success | 
|---|
| 57 | ;        0 = Failure | 
|---|
| 58 | ; Notes: Existance/validity of input assumed (internal call) | 
|---|
| 59 | ;      : Call will automatically inactivate terms when appropriate | 
|---|
| 60 | ;      : The input status/date will not be stored in an existing | 
|---|
| 61 | ;        entry for the VUID if the currently stored status is the | 
|---|
| 62 | ;        same as the input status.  Success (1) will be returned. | 
|---|
| 63 | ; | 
|---|
| 64 | N MASTER,CURSTAT | 
|---|
| 65 | S STAT=+$G(STAT) | 
|---|
| 66 | S STDT=+$G(STDT) | 
|---|
| 67 | I 'STDT S STDT=$$NOW^XLFDT() | 
|---|
| 68 | ;Is VUID already on file | 
|---|
| 69 | S CURSTAT=$$GETSTAT^XTID(FILE,FIELD,IREF) | 
|---|
| 70 | ;Don't store new date for same status (return SUCCESS) | 
|---|
| 71 | I $P(CURSTAT,"^",1)=STAT Q 1 | 
|---|
| 72 | ;Store VUID (also sets master entry flag, if appropriate) | 
|---|
| 73 | I '$$SETVUID^XTID(FILE,FIELD,IREF,VUID) Q 0 | 
|---|
| 74 | ;Inactivate non-master entries | 
|---|
| 75 | I '$$GETMASTR^XTID(FILE,FIELD,IREF) D | 
|---|
| 76 | .S STAT=0 | 
|---|
| 77 | .S STDT=$$NOW^XLFDT() | 
|---|
| 78 | ;Store status | 
|---|
| 79 | Q $$SETSTAT^XTID(FILE,FIELD,IREF,STAT,STDT) | 
|---|