source: FOIAVistA/trunk/r/HEALTH_DATA_AND_INFORMATICS-HDI/HDISVF01.m@ 1397

Last change on this file since 1397 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 6.9 KB
Line 
1HDISVF01 ;BPFO/JRP - FILE UTILITIES/API;12/20/2004 ; 07 Mar 2005 9:53 AM
2 ;;1.0;HEALTH DATA & INFORMATICS;**1**;Feb 22, 2005
3 ;
4 ;---- Begin HDIS VUID IMPLEMENTATION STATUS file (#7118.25) APIs ----
5 ;
6GETSTAT(FILE,FIELD,DATE,FAC,DOMAIN,TYPE) ;Get file/field implementation status
7 ; Input : FILE - File number
8 ; FIELD - Field number (defaults to .01)
9 ; DATE - FileMan date/time to return status for (optional)
10 ; (defaults to NOW)
11 ; FAC - Facility number (optional) (defaults to current)
12 ; DOMAIN - Domain/IP address (optional) (defaults to current)
13 ; TYPE - Type of system (optional) (defaults to current)
14 ; 0 = Test 1 = Production
15 ;Output : StatusCode ^ StatusPointer ^ StatusDate
16 ; Notes : Values for "not started" status and no date are returned
17 ; on bad input or if no entry is found
18 ; : If time is not included with the date, the last status
19 ; for the given day is returned
20 ; : If more than one entry for the same date/time is found, the
21 ; higher entry number is returned
22 N IEN,STATCODE,STATPTR,STATDT,NOTYET,FFPTR,SYSPTR,X
23 ;Calculate output for bad input
24 S STATCODE=0
25 S X=$$GETIEN^HDISVF06(STATCODE,+$$GETTYPE^HDISVF02(),.STATPTR)
26 S NOTYET=STATCODE_"^"_STATPTR_"^"
27 ;Check input
28 S FILE=+$G(FILE)
29 I 'FILE Q NOTYET
30 S FIELD=+$G(FIELD)
31 I 'FIELD S FIELD=.01
32 S DATE=+$G(DATE)
33 I 'DATE S DATE=$$NOW^XLFDT()
34 I '$P(DATE,".",2) S $P(DATE,".",2)=24
35 S FAC=+$G(FAC)
36 I 'FAC S FAC=$$FACNUM()
37 S DOMAIN=$G(DOMAIN)
38 I DOMAIN="" S DOMAIN=$G(^XMB("NETNAME"))
39 S TYPE=$G(TYPE)
40 I TYPE="" S TYPE=$$PROD^XUPROD()
41 I ('FAC)!(DOMAIN="")!(TYPE="") Q NOTYET
42 ;Get pointers
43 I '$$FINDSYS^HDISVF07(DOMAIN,FAC,TYPE,1,.SYSPTR) Q NOTYET
44 I '$$GETIEN^HDISVF05(FILE,FIELD,.FFPTR) Q NOTYET
45 ;Get status date/time closest to input date/time
46 S DATE=DATE+.0000001
47 S STATDT=+$O(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,DATE),-1)
48 I 'STATDT Q NOTYET
49 ;Build list of entry numbers with found status date/time
50 K IEN
51 S STATPTR=0
52 F S STATPTR=+$O(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,STATDT,STATPTR)) Q:'STATPTR D
53 .S IEN=0
54 .F S IEN=+$O(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,STATDT,STATPTR,IEN)) Q:'IEN D
55 ..S IEN(IEN)=STATPTR
56 ;Get last entry number
57 S IEN=+$O(IEN(""),-1)
58 I 'IEN Q NOTYET
59 ;Build output
60 S STATPTR=IEN(IEN)
61 S X=$$GETCODE^HDISVF06(STATPTR,.STATCODE)
62 Q STATCODE_"^"_STATPTR_"^"_STATDT
63 ;
64SETSTAT(FILE,FIELD,CODE,DATE,STTYPE,FAC,DOMAIN,SYTYPE) ;Set file/field implementation status
65 ; Input : FILE - File number
66 ; FIELD - Field number (defaults to .01)
67 ; CODE - Status code to set (defaults to "not started")
68 ; DATE - FileMan date/time to return status for (optional)
69 ; (defaults to NOW)
70 ; STTYPE - Type of status code being used (optional)
71 ; 1 = Client (default) 2 = Server
72 ; FAC - Facility number (optional) (defaults to current)
73 ; DOMAIN - Domain/IP address (optional) (defaults to current)
74 ; SYTYPE - Type of system (optional) (defaults to current)
75 ; 0 = Test 1 = Production
76 ;Output : None
77 ; Notes : If time is not included with the date, 1 second past
78 ; midnight will be used as the time
79 ; : If an entry for the given file/field and date/time already
80 ; exists, a new entry will still be added
81 N FFPTR,SYSPTR
82 ;Check input
83 S FILE=+$G(FILE)
84 I 'FILE Q
85 S FIELD=+$G(FIELD)
86 I 'FIELD S FIELD=.01
87 S CODE=+$G(CODE)
88 S DATE=+$G(DATE)
89 I 'DATE S DATE=$$NOW^XLFDT()
90 I '$P(DATE,".",2) S $P(DATE,".",2)="000001"
91 S STTYPE=+$G(STTYPE)
92 I ('STTYPE)!(STTYPE<1)!(STTYPE>2) S STTYPE=1
93 S FAC=+$G(FAC)
94 I 'FAC S FAC=$$FACNUM()
95 S DOMAIN=$G(DOMAIN)
96 I DOMAIN="" S DOMAIN=$G(^XMB("NETNAME"))
97 S SYTYPE=$G(SYTYPE)
98 I SYTYPE="" S SYTYPE=$$PROD^XUPROD()
99 I ('FAC)!(DOMAIN="")!(SYTYPE="") Q
100 ;Get pointers
101 I '$$FINDSYS^HDISVF07(DOMAIN,FAC,SYTYPE,1,.SYSPTR) Q
102 I '$$GETIEN^HDISVF05(FILE,FIELD,.FFPTR) Q
103 ;Create entry
104 D ADDSTAT(FFPTR,SYSPTR,CODE,STTYPE,DATE)
105 Q
106 ;
107SCREEN(FILE,FIELD,DATE) ;Apply screening logic to file/field ?
108 ; Input : FILE - File number
109 ; FIELD - Field number (defaults to .01)
110 ; DATE - FileMan date/time to check against (optional)
111 ; (defaults to NOW)
112 ;Output : Flag indicating if screening logic should be applied
113 ; 0 = Don't screen entries during selection
114 ; 1 = Screen entries during selection
115 ; Notes : 0 (don't screen) is returned on bad input
116 ; : If time is not included with the date, the last status
117 ; for the given day is returned
118 N SCREEN,STAT
119 S SCREEN=0
120 S FILE=+$G(FILE)
121 I 'FILE Q SCREEN
122 S FIELD=+$G(FIELD)
123 I 'FIELD S FIELD=.01
124 S DATE=+$G(DATE)
125 I 'DATE S DATE=$$NOW^XLFDT()
126 S STAT=$$GETSTAT(FILE,FIELD,DATE)
127 I +STAT=6 S SCREEN=1
128 Q SCREEN
129 ;
130ADDSTAT(FFPTR,SYSPTR,CODE,TYPE,DATE) ;Set file/field implementation status
131 ; Input : FFPTR - Pointer to HDIS FILE/FIELD file (#7115.6)
132 ; SYSPTR - Pointer to HDIS SYSTEM file (#7118.21)
133 ; CODE - Status code to set (defaults to "not started")
134 ; TYPE - Type of status code being used (optional)
135 ; 1 = Client (default) 2 = Server
136 ; DATE - FileMan date/time to return status for (optional)
137 ; (defaults to NOW)
138 ;Ouput : None
139 ; Notes : If time is not included with the date, 1 second past
140 ; midnight will be used as the time
141 ; : If an entry for the given file/field and date/time already
142 ; exists, a new entry will still be added
143 ; : Call assumes that FFPTR and SYSPTR are valid
144 N STATPTR,HDISFDA,HDISIEN,HDISMSG,IENS
145 ;Check input
146 S FFPTR=+$G(FFPTR)
147 I 'FFPTR Q
148 S SYSPTR=+$G(SYSPTR)
149 I 'SYSPTR Q
150 S CODE=+$G(CODE)
151 S DATE=+$G(DATE)
152 I 'DATE S DATE=$$NOW^XLFDT()
153 I '$P(DATE,".",2) S $P(DATE,".",2)="000001"
154 S TYPE=+$G(TYPE)
155 I ('TYPE)!(TYPE<1)!(TYPE>2) S TYPE=1
156 ;Get pointer to status
157 I '$$GETIEN^HDISVF06(CODE,TYPE,.STATPTR) Q
158 ;Create entry
159 S IENS="+1,"
160 S HDISFDA(7118.25,IENS,.01)=SYSPTR
161 S HDISFDA(7118.25,IENS,.02)=FFPTR
162 S HDISFDA(7118.25,IENS,.03)=STATPTR
163 S HDISFDA(7118.25,IENS,.04)=DATE
164 D UPDATE^DIE("","HDISFDA","HDISIEN","HDISMSG")
165 Q
166 ;
167 ;---- End HDIS VUID IMPLEMENTATION STATUS file (#7118.25) APIs ----
168 ;
169FACPTR(FACNUM) ;Return pointer to INSTITUTION file (#4) for facility number
170 ; Input : FACNUM - Facility number (optional) (defaults to current)
171 ;Output : Pointer to INSTITUTION file (#4)
172 ; Notes : NULL ("") is returned if an entry can not be found
173 N FACPTR
174 S FACNUM=$G(FACNUM)
175 I 'FACNUM D Q FACPTR
176 .S FACPTR=+$$SITE^VASITE()
177 .I FACPTR<1 S FACPTR=""
178 S FACPTR=$$LKUP^XUAF4(FACNUM)
179 I 'FACPTR S FACPTR=""
180 Q FACPTR
181 ;
182FACNUM(FACPTR) ;Return facility number
183 ; Input : FACPTR - Pointer to INSTITUTION file (#4) (optional)
184 ; (default to current location)
185 ;Output : Facility number
186 ; Null ("") returned if facility number couldn't be determined
187 N FACNUM
188 S FACPTR=$G(FACPTR)
189 I 'FACPTR D Q FACNUM
190 .S FACNUM=$P($$SITE^VASITE(),"^",3)
191 .I FACNUM<1 S FACNUM=""
192 S FACNUM=$P($$NS^XUAF4(FACPTR),"^",2)
193 I FACNUM<1 S FACNUM=""
194 Q FACNUM
Note: See TracBrowser for help on using the repository browser.