| 1 | DICU ;SEA/TOAD-VA FileMan: Lookup Utilities ;5/15/97  08:31
 | 
|---|
| 2 |  ;;22.0;VA FileMan;;Mar 30, 1999
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;11961;3150917;2853;
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | REQIDS(DIFILE,DITARGET) ;
 | 
|---|
| 7 |  ; return REQUIRED IDENTIFIERS file attribute
 | 
|---|
| 8 |  ; DIFILE = file#, DITARGET = target array
 | 
|---|
| 9 |  N DIATTRBT S DIATTRBT="REQUIRED IDENTIFIERS"
 | 
|---|
| 10 |  S @DITARGET@(DIATTRBT,.01)=""
 | 
|---|
| 11 |  N DIFIELD
 | 
|---|
| 12 |  S DIFIELD=0 F  S DIFIELD=$O(^DD(DIFILE,0,"ID",DIFIELD)) Q:'DIFIELD  D
 | 
|---|
| 13 |  . I $D(^DD(DIFILE,"RQ",DIFIELD)) S @DITARGET@(DIATTRBT,DIFIELD)=""
 | 
|---|
| 14 |  Q
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | RID(DIFILE) ;
 | 
|---|
| 17 |  ; return a string listing a file's required identifiers
 | 
|---|
| 18 |  ; DIFILE = file#
 | 
|---|
| 19 |  N DILIST S DILIST=".01"
 | 
|---|
| 20 |  N DID S DID="" F  S DID=$O(^DD(DIFILE,0,"ID",DID)) Q:'DID  D
 | 
|---|
| 21 |  . I $D(^DD(DIFILE,"RQ",DID)) S DILIST=DILIST_U_DID
 | 
|---|
| 22 |  Q DILIST
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | RECALL(DIFILE,DIEN,DIUSER) ;
 | 
|---|
| 25 | RECALLX ; input from DILFD
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ; ENTRY POINT--save a user's selection for use with space-bar recall
 | 
|---|
| 28 |  ; procedure, all passed by value
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  I '$D(DIQUIET) N DIQUIET S DIQUIET=1
 | 
|---|
| 31 |  I '$D(DIFM) N DIFM S DIFM=1 D INIZE^DIEFU
 | 
|---|
| 32 |  N DICLERR S DICLERR=$G(DIERR) K DIERR
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 | 30 S DIFILE=$G(DIFILE)
 | 
|---|
| 35 |  I +DIFILE'=DIFILE!(DIFILE<0) D ERR(202,"","","","file") Q
 | 
|---|
| 36 |  S DIEN=$G(DIEN) I DIEN="" S DIEN=","
 | 
|---|
| 37 |  I '$$IEN^DIDU1(DIEN) D ERR(202,"","","","IEN string") Q
 | 
|---|
| 38 |  S DIUSER=+$G(DIUSER)
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | 32 N DIOROOT,DIOUT S DIOUT=0 D  I DIOUT Q
 | 
|---|
| 41 |  . I '$D(^DD(DIFILE)) D ERR(401,DIFILE) S DIOUT=1 Q
 | 
|---|
| 42 |  . S DIOROOT=$$ROOT^DILFD(DIFILE,DIEN,"Q")
 | 
|---|
| 43 |  . I DIOROOT'?1"^"1U.7UN1"(".ANP,DIOROOT'?1"^%".7UN1"(".ANP D  Q
 | 
|---|
| 44 |  . . D ERR(402,DIFILE,"","","","","",DIOROOT) S DIOUT=1
 | 
|---|
| 45 |  S ^DISV(DIUSER,$E(DIOROOT,1,28))=$E(DIOROOT,29,$L(DIOROOT))_+DIEN
 | 
|---|
| 46 |  I DICLERR'=""!$G(DIERR) D
 | 
|---|
| 47 |  . S DIERR=$G(DIERR)+DICLERR_U_($P($G(DIERR),U,2)+$P(DICLERR,U,2))
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | FILE(DIFILE,DIDA,DIFLAGS,DIROOT) ;
 | 
|---|
| 51 |  ; entry point -- given a root, calculate the file # and DA
 | 
|---|
| 52 |  ; DO NOT USE UNTIL $QS & $QL AVAILABLE
 | 
|---|
| 53 |  N DIGLOBAL I $G(DIFLAGS)'["O" S DIGLOBAL=DIROOT
 | 
|---|
| 54 |  E  S DIGLOBAL=$$CREF^DIQGU(DIROOT),DIROOT=DIGLOBAL
 | 
|---|
| 55 |  S DIFILE=+$P($G(@DIGLOBAL@(0)),U,2),DIDA=""
 | 
|---|
| 56 |  N DA,DIENTRY S DA=1,DIENTRY=0
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 | LOOP N DICHAR,DIL,DILEAD,DIQL,DIQS,DIQSL F  D  Q:'DIQL
 | 
|---|
| 59 |  .
 | 
|---|
| 60 | STRIP .
 | 
|---|
| 61 |  . ; S DIQL=$QL(DIGLOBAL) Q:'DIQL
 | 
|---|
| 62 |  . ; S DIQS=$QS(DIGLOBAL,DIQL)
 | 
|---|
| 63 |  . N DIQSL S DIQSL=$L(DIQS)+1 I +DIQS'=DIQS S DIQSL=DIQSL+2
 | 
|---|
| 64 |  . S DIL=$L(DIGLOBAL),DILEAD=DIL-DIQSL
 | 
|---|
| 65 |  . S $E(DIGLOBAL,DILEAD+1,DIL-1)=""
 | 
|---|
| 66 |  . S DICHAR=$E(DIGLOBAL,DILEAD)
 | 
|---|
| 67 |  . I DICHAR="," S $E(DIGLOBAL,DILEAD)=""
 | 
|---|
| 68 |  . E  I DICHAR="(" S $E(DIGLOBAL,DILEAD,DILEAD+1)=""
 | 
|---|
| 69 |  . E  S DIGLOBAL="ERROR:  "_DIGLOBAL,DIQL=0
 | 
|---|
| 70 |  .
 | 
|---|
| 71 | ENTRY . I DIENTRY D
 | 
|---|
| 72 |  . . S DIFILE(DA)=+$P($G(@DIGLOBAL@(0)),U,2)
 | 
|---|
| 73 |  . . S DIROOT(DA)=DIGLOBAL
 | 
|---|
| 74 |  . . S DIDA(DA)=DIQS,DA=DA+1
 | 
|---|
| 75 |  . S DIENTRY='DIENTRY
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | ERR(DIERN,DIFILE,DIIENS,DIFIELD,DI1,DI2,DI3,DIROOT) ;
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  ; error logging procedure
 | 
|---|
| 81 |  ; RECALL
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  N DIPE,DI
 | 
|---|
| 84 |  F DI="FILE","IENS","FIELD",1:1:3,"ROOT" S DIPE(DI)=$G(@("DI"_DI))
 | 
|---|
| 85 |  D BLD^DIALOG(DIERN,.DIPE,.DIPE)
 | 
|---|
| 86 |  S DIERR=$G(DIERR)+DICLERR_U_($P($G(DIERR),U,2)+$P(DICLERR,U,2))
 | 
|---|
| 87 |  Q
 | 
|---|