1 | XTIDTERM ;OAKCIOFO/JLG - TERM/CONCEPT index entry ;03/18/2005 15:12
|
---|
2 | ;;7.3;TOOLKIT;**93**;Apr 25, 1995
|
---|
3 | Q
|
---|
4 | ; encapsulates a term/concept index entry for both
|
---|
5 | ; "set of codes" and "table" indexes
|
---|
6 | ; it interfaces through FileMan
|
---|
7 | ; TERM is by reference and is in FDA format + CTX data
|
---|
8 | ; only exceptions are $$GETSTAT and $$SETSTAT
|
---|
9 | ; FDA format is left for convenience but future
|
---|
10 | ; implementations might customize it.
|
---|
11 | ; TERM is passed by ref in all calls
|
---|
12 | GETVUID(TERM) ; return VUID value
|
---|
13 | ;
|
---|
14 | N FILE,IENS
|
---|
15 | Q:'$D(TERM)
|
---|
16 | S FILE=TERM("CTX","SOURCE FILE#")
|
---|
17 | S IENS=$O(TERM(FILE,""))
|
---|
18 | Q $G(TERM(FILE,IENS,"VUID","I"))
|
---|
19 | ;
|
---|
20 | GETMASTR(TERM) ; return MASTER VUID value
|
---|
21 | ;
|
---|
22 | N FILE,IENS
|
---|
23 | Q:'$D(TERM)
|
---|
24 | S FILE=TERM("CTX","SOURCE FILE#")
|
---|
25 | S IENS=$O(TERM(FILE,""))
|
---|
26 | Q $G(TERM(FILE,IENS,"MASTER ENTRY FOR VUID","I"))
|
---|
27 | ;
|
---|
28 | GETSTAT(TERM,DATE) ; return MASTER VUID value
|
---|
29 | ;
|
---|
30 | N FILE,SFILE,IENS,STATUS
|
---|
31 | Q:'$D(TERM)
|
---|
32 | S:'$G(DATE) DATE=$$NOW^XLFDT
|
---|
33 | S FILE=TERM("CTX","SOURCE FILE#")
|
---|
34 | S SFILE=TERM("CTX","TERMSTATUS SUBFILE#")
|
---|
35 | S IENS=","_$O(TERM(FILE,""))
|
---|
36 | S STATUS=$$FINDSTAT(SFILE,IENS,DATE)
|
---|
37 | ;I 'STATUS Q "^status not found for given date/time"
|
---|
38 | Q $P(STATUS,"^",2,4)
|
---|
39 | ;
|
---|
40 | SETVUID(TERM,VUID) ; set new VUID to existing TERM
|
---|
41 | ;
|
---|
42 | N DIERR,FLAGS,FILE,IENS,MSG,MYFDA,SUCCESS
|
---|
43 | S VUID=$G(VUID)
|
---|
44 | Q:'$D(TERM)!('VUID) 0
|
---|
45 | ; check constraints first
|
---|
46 | Q:$$CNSTR1() 0
|
---|
47 | S SUCCESS=0,FLAGS="KS"
|
---|
48 | S FILE=TERM("CTX","SOURCE FILE#")
|
---|
49 | S IENS=$O(TERM(+FILE,""))
|
---|
50 | Q:IENS']"" SUCCESS
|
---|
51 | S MYFDA(FILE,IENS,99.99)=VUID
|
---|
52 | D FILE^DIE(FLAGS,"MYFDA","MSG")
|
---|
53 | I '$D(MSG("DIERR")) D
|
---|
54 | . S SUCCESS=1
|
---|
55 | . ; update the cached TERM array
|
---|
56 | . S TERM(FILE,IENS,"VUID","I")=VUID
|
---|
57 | ;
|
---|
58 | Q SUCCESS
|
---|
59 | ;
|
---|
60 | SETMASTR(TERM,MVUID) ; set MASTER ENTRY flag to existing TERM
|
---|
61 | ;
|
---|
62 | N DIERR,FLAGS,FILE,IENS,MSG,MYFDA,SUCCESS
|
---|
63 | S MVUID=+$G(MVUID)
|
---|
64 | Q:'$D(TERM) 0
|
---|
65 | ; check constraints first and override VUID flag
|
---|
66 | I MVUID,$$CNSTR2() S MVUID=0
|
---|
67 | S FILE=TERM("CTX","SOURCE FILE#")
|
---|
68 | S IENS=$O(TERM(+FILE,""))
|
---|
69 | Q:IENS']"" 0
|
---|
70 | S SUCCESS=0,FLAGS="KS"
|
---|
71 | S MYFDA(FILE,IENS,99.98)=MVUID
|
---|
72 | D FILE^DIE(FLAGS,"MYFDA","MSG")
|
---|
73 | I '$D(MSG("DIERR")) D
|
---|
74 | . S SUCCESS=1
|
---|
75 | . ; update the cached TERM array
|
---|
76 | . S TERM(FILE,IENS,"MASTER ENTRY FOR VUID","I")=MVUID
|
---|
77 | ;
|
---|
78 | Q SUCCESS
|
---|
79 | ;
|
---|
80 | SETSTAT(TERM,STATUS,DATE) ; set status
|
---|
81 | ; set status and date for the given term
|
---|
82 | N DIERR,FLAGS,FILE,SFILE,MYFDA,MSG,SUCCESS,IENS
|
---|
83 | S STATUS=$G(STATUS),DATE=$G(DATE)
|
---|
84 | Q:'$D(TERM)!(STATUS']"") 0
|
---|
85 | S SUCCESS=0,FLAGS="KS"
|
---|
86 | S STATUS=+$G(STATUS)
|
---|
87 | S:'$G(DATE) DATE=$$NOW^XLFDT
|
---|
88 | S FILE=TERM("CTX","SOURCE FILE#")
|
---|
89 | S SFILE=TERM("CTX","TERMSTATUS SUBFILE#")
|
---|
90 | S IENS="?+1,"_$O(TERM(FILE,""))
|
---|
91 | S MYFDA(SFILE,IENS,.01)=DATE
|
---|
92 | S MYFDA(SFILE,IENS,.02)=STATUS
|
---|
93 | D UPDATE^DIE(FLAGS,"MYFDA","","MSG")
|
---|
94 | S:'$D(MSG("DIERR")) SUCCESS=1
|
---|
95 | Q SUCCESS
|
---|
96 | ;
|
---|
97 | FINDSTAT(FILE,IENS,DATE) ; find status info
|
---|
98 | ; find status of term for given DATE
|
---|
99 | ; D LIST^DIC(FILE,IENS,FIELDS,FLAGS,NUMBER,[.]FROM,[.]PART,INDEX,[.]SCREEN,IDENTIFIER,TARGET_ROOT,MSG_ROOT)
|
---|
100 | N DIERR,FIELDS,FLAGS,FROM,MSG,MYSTAT,NUMBER,STATUS
|
---|
101 | S STATUS="^^^"
|
---|
102 | S:'$G(DATE) DATE=$$NOW^XLFDT
|
---|
103 | S FROM=DATE+.000001
|
---|
104 | S FIELDS="@;.01IE;.02IE",FLAGS="B",NUMBER=1
|
---|
105 | D LIST^DIC(FILE,IENS,FIELDS,FLAGS,NUMBER,FROM,"","","","","MYSTAT","MSG")
|
---|
106 | Q:$D(MSG("DIERR")) STATUS
|
---|
107 | I $D(MYSTAT("DILIST","ID",1)) D
|
---|
108 | . N ESTAT,IDATE,IENSTAT,ISTAT
|
---|
109 | . S IENSTAT=$G(MYSTAT("DILIST",2,1))
|
---|
110 | . S ISTAT=$G(MYSTAT("DILIST","ID",1,.02,"I"))
|
---|
111 | . S ESTAT=$G(MYSTAT("DILIST","ID",1,.02,"E"))
|
---|
112 | . S IDATE=$G(MYSTAT("DILIST","ID",1,.01,"I"))
|
---|
113 | . S STATUS=IENSTAT_"^"_ISTAT_"^"_IDATE_"^"_ESTAT
|
---|
114 | ;
|
---|
115 | Q STATUS
|
---|
116 | ;
|
---|
117 | DUPLMSTR(FILE,FIELD,TVUID) ; check duplicates
|
---|
118 | ; used to determine existence of duplicate
|
---|
119 | ; entries with the same VUID and master flag
|
---|
120 | ; can potentially use this from DD trigger
|
---|
121 | N XTTARR,DUPL
|
---|
122 | S DUPL=0
|
---|
123 | D GETIREF^XTID(FILE,FIELD,TVUID,"XTTARR",1)
|
---|
124 | I +$G(XTTARR) S DUPL=1
|
---|
125 | Q DUPL
|
---|
126 | ;
|
---|
127 | CNSTR1() ; check constraints when setting VUID
|
---|
128 | ; called from SETVUID()
|
---|
129 | ; only one MASTER ENTRY FOR VUID can exist
|
---|
130 | N CONSTR,DUPL,MFLAG,TFILE,TFIELD
|
---|
131 | S CONSTR=1
|
---|
132 | S MFLAG=$$GETMASTR(.TERM)
|
---|
133 | Q:'MFLAG 'CONSTR ; no constraint
|
---|
134 | S TFILE=TERM("CTX","TERM FILE#")
|
---|
135 | S TFIELD=TERM("CTX","TERM FIELD#")
|
---|
136 | S DUPL=$$DUPLMSTR(TFILE,TFIELD,VUID)
|
---|
137 | Q:'DUPL 'CONSTR ; no constraint
|
---|
138 | Q CONSTR ; constrained
|
---|
139 | ;
|
---|
140 | CNSTR2() ; check constraints when setting MASTER ENTRY flag
|
---|
141 | ; called from SETMASTR()
|
---|
142 | ; only one MASTER ENTRY FOR VUID can exist
|
---|
143 | N CONSTR,DUPL,MFLAG,TFILE,TFIELD,TVUID
|
---|
144 | S CONSTR=1
|
---|
145 | S MFLAG=$$GETMASTR(.TERM)
|
---|
146 | Q:MFLAG 'CONSTR ; TERM is already MASTER
|
---|
147 | S TFILE=TERM("CTX","TERM FILE#")
|
---|
148 | S TFIELD=TERM("CTX","TERM FIELD#")
|
---|
149 | S TVUID=$$GETVUID(.TERM)
|
---|
150 | S DUPL=$$DUPLMSTR(TFILE,TFIELD,TVUID)
|
---|
151 | Q:'DUPL 'CONSTR ; no constraint
|
---|
152 | Q CONSTR ; constrained
|
---|
153 | ;
|
---|