195 lines
6.9 KiB
Mathematica
195 lines
6.9 KiB
Mathematica
HDISVF01 ;BPFO/JRP - FILE UTILITIES/API;12/20/2004 ; 07 Mar 2005 9:53 AM
|
|
;;1.0;HEALTH DATA & INFORMATICS;**1**;Feb 22, 2005
|
|
;
|
|
;---- Begin HDIS VUID IMPLEMENTATION STATUS file (#7118.25) APIs ----
|
|
;
|
|
GETSTAT(FILE,FIELD,DATE,FAC,DOMAIN,TYPE) ;Get file/field implementation status
|
|
; Input : FILE - File number
|
|
; FIELD - Field number (defaults to .01)
|
|
; DATE - FileMan date/time to return status for (optional)
|
|
; (defaults to NOW)
|
|
; FAC - Facility number (optional) (defaults to current)
|
|
; DOMAIN - Domain/IP address (optional) (defaults to current)
|
|
; TYPE - Type of system (optional) (defaults to current)
|
|
; 0 = Test 1 = Production
|
|
;Output : StatusCode ^ StatusPointer ^ StatusDate
|
|
; Notes : Values for "not started" status and no date are returned
|
|
; on bad input or if no entry is found
|
|
; : If time is not included with the date, the last status
|
|
; for the given day is returned
|
|
; : If more than one entry for the same date/time is found, the
|
|
; higher entry number is returned
|
|
N IEN,STATCODE,STATPTR,STATDT,NOTYET,FFPTR,SYSPTR,X
|
|
;Calculate output for bad input
|
|
S STATCODE=0
|
|
S X=$$GETIEN^HDISVF06(STATCODE,+$$GETTYPE^HDISVF02(),.STATPTR)
|
|
S NOTYET=STATCODE_"^"_STATPTR_"^"
|
|
;Check input
|
|
S FILE=+$G(FILE)
|
|
I 'FILE Q NOTYET
|
|
S FIELD=+$G(FIELD)
|
|
I 'FIELD S FIELD=.01
|
|
S DATE=+$G(DATE)
|
|
I 'DATE S DATE=$$NOW^XLFDT()
|
|
I '$P(DATE,".",2) S $P(DATE,".",2)=24
|
|
S FAC=+$G(FAC)
|
|
I 'FAC S FAC=$$FACNUM()
|
|
S DOMAIN=$G(DOMAIN)
|
|
I DOMAIN="" S DOMAIN=$G(^XMB("NETNAME"))
|
|
S TYPE=$G(TYPE)
|
|
I TYPE="" S TYPE=$$PROD^XUPROD()
|
|
I ('FAC)!(DOMAIN="")!(TYPE="") Q NOTYET
|
|
;Get pointers
|
|
I '$$FINDSYS^HDISVF07(DOMAIN,FAC,TYPE,1,.SYSPTR) Q NOTYET
|
|
I '$$GETIEN^HDISVF05(FILE,FIELD,.FFPTR) Q NOTYET
|
|
;Get status date/time closest to input date/time
|
|
S DATE=DATE+.0000001
|
|
S STATDT=+$O(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,DATE),-1)
|
|
I 'STATDT Q NOTYET
|
|
;Build list of entry numbers with found status date/time
|
|
K IEN
|
|
S STATPTR=0
|
|
F S STATPTR=+$O(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,STATDT,STATPTR)) Q:'STATPTR D
|
|
.S IEN=0
|
|
.F S IEN=+$O(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,STATDT,STATPTR,IEN)) Q:'IEN D
|
|
..S IEN(IEN)=STATPTR
|
|
;Get last entry number
|
|
S IEN=+$O(IEN(""),-1)
|
|
I 'IEN Q NOTYET
|
|
;Build output
|
|
S STATPTR=IEN(IEN)
|
|
S X=$$GETCODE^HDISVF06(STATPTR,.STATCODE)
|
|
Q STATCODE_"^"_STATPTR_"^"_STATDT
|
|
;
|
|
SETSTAT(FILE,FIELD,CODE,DATE,STTYPE,FAC,DOMAIN,SYTYPE) ;Set file/field implementation status
|
|
; Input : FILE - File number
|
|
; FIELD - Field number (defaults to .01)
|
|
; CODE - Status code to set (defaults to "not started")
|
|
; DATE - FileMan date/time to return status for (optional)
|
|
; (defaults to NOW)
|
|
; STTYPE - Type of status code being used (optional)
|
|
; 1 = Client (default) 2 = Server
|
|
; FAC - Facility number (optional) (defaults to current)
|
|
; DOMAIN - Domain/IP address (optional) (defaults to current)
|
|
; SYTYPE - Type of system (optional) (defaults to current)
|
|
; 0 = Test 1 = Production
|
|
;Output : None
|
|
; Notes : If time is not included with the date, 1 second past
|
|
; midnight will be used as the time
|
|
; : If an entry for the given file/field and date/time already
|
|
; exists, a new entry will still be added
|
|
N FFPTR,SYSPTR
|
|
;Check input
|
|
S FILE=+$G(FILE)
|
|
I 'FILE Q
|
|
S FIELD=+$G(FIELD)
|
|
I 'FIELD S FIELD=.01
|
|
S CODE=+$G(CODE)
|
|
S DATE=+$G(DATE)
|
|
I 'DATE S DATE=$$NOW^XLFDT()
|
|
I '$P(DATE,".",2) S $P(DATE,".",2)="000001"
|
|
S STTYPE=+$G(STTYPE)
|
|
I ('STTYPE)!(STTYPE<1)!(STTYPE>2) S STTYPE=1
|
|
S FAC=+$G(FAC)
|
|
I 'FAC S FAC=$$FACNUM()
|
|
S DOMAIN=$G(DOMAIN)
|
|
I DOMAIN="" S DOMAIN=$G(^XMB("NETNAME"))
|
|
S SYTYPE=$G(SYTYPE)
|
|
I SYTYPE="" S SYTYPE=$$PROD^XUPROD()
|
|
I ('FAC)!(DOMAIN="")!(SYTYPE="") Q
|
|
;Get pointers
|
|
I '$$FINDSYS^HDISVF07(DOMAIN,FAC,SYTYPE,1,.SYSPTR) Q
|
|
I '$$GETIEN^HDISVF05(FILE,FIELD,.FFPTR) Q
|
|
;Create entry
|
|
D ADDSTAT(FFPTR,SYSPTR,CODE,STTYPE,DATE)
|
|
Q
|
|
;
|
|
SCREEN(FILE,FIELD,DATE) ;Apply screening logic to file/field ?
|
|
; Input : FILE - File number
|
|
; FIELD - Field number (defaults to .01)
|
|
; DATE - FileMan date/time to check against (optional)
|
|
; (defaults to NOW)
|
|
;Output : Flag indicating if screening logic should be applied
|
|
; 0 = Don't screen entries during selection
|
|
; 1 = Screen entries during selection
|
|
; Notes : 0 (don't screen) is returned on bad input
|
|
; : If time is not included with the date, the last status
|
|
; for the given day is returned
|
|
N SCREEN,STAT
|
|
S SCREEN=0
|
|
S FILE=+$G(FILE)
|
|
I 'FILE Q SCREEN
|
|
S FIELD=+$G(FIELD)
|
|
I 'FIELD S FIELD=.01
|
|
S DATE=+$G(DATE)
|
|
I 'DATE S DATE=$$NOW^XLFDT()
|
|
S STAT=$$GETSTAT(FILE,FIELD,DATE)
|
|
I +STAT=6 S SCREEN=1
|
|
Q SCREEN
|
|
;
|
|
ADDSTAT(FFPTR,SYSPTR,CODE,TYPE,DATE) ;Set file/field implementation status
|
|
; Input : FFPTR - Pointer to HDIS FILE/FIELD file (#7115.6)
|
|
; SYSPTR - Pointer to HDIS SYSTEM file (#7118.21)
|
|
; CODE - Status code to set (defaults to "not started")
|
|
; TYPE - Type of status code being used (optional)
|
|
; 1 = Client (default) 2 = Server
|
|
; DATE - FileMan date/time to return status for (optional)
|
|
; (defaults to NOW)
|
|
;Ouput : None
|
|
; Notes : If time is not included with the date, 1 second past
|
|
; midnight will be used as the time
|
|
; : If an entry for the given file/field and date/time already
|
|
; exists, a new entry will still be added
|
|
; : Call assumes that FFPTR and SYSPTR are valid
|
|
N STATPTR,HDISFDA,HDISIEN,HDISMSG,IENS
|
|
;Check input
|
|
S FFPTR=+$G(FFPTR)
|
|
I 'FFPTR Q
|
|
S SYSPTR=+$G(SYSPTR)
|
|
I 'SYSPTR Q
|
|
S CODE=+$G(CODE)
|
|
S DATE=+$G(DATE)
|
|
I 'DATE S DATE=$$NOW^XLFDT()
|
|
I '$P(DATE,".",2) S $P(DATE,".",2)="000001"
|
|
S TYPE=+$G(TYPE)
|
|
I ('TYPE)!(TYPE<1)!(TYPE>2) S TYPE=1
|
|
;Get pointer to status
|
|
I '$$GETIEN^HDISVF06(CODE,TYPE,.STATPTR) Q
|
|
;Create entry
|
|
S IENS="+1,"
|
|
S HDISFDA(7118.25,IENS,.01)=SYSPTR
|
|
S HDISFDA(7118.25,IENS,.02)=FFPTR
|
|
S HDISFDA(7118.25,IENS,.03)=STATPTR
|
|
S HDISFDA(7118.25,IENS,.04)=DATE
|
|
D UPDATE^DIE("","HDISFDA","HDISIEN","HDISMSG")
|
|
Q
|
|
;
|
|
;---- End HDIS VUID IMPLEMENTATION STATUS file (#7118.25) APIs ----
|
|
;
|
|
FACPTR(FACNUM) ;Return pointer to INSTITUTION file (#4) for facility number
|
|
; Input : FACNUM - Facility number (optional) (defaults to current)
|
|
;Output : Pointer to INSTITUTION file (#4)
|
|
; Notes : NULL ("") is returned if an entry can not be found
|
|
N FACPTR
|
|
S FACNUM=$G(FACNUM)
|
|
I 'FACNUM D Q FACPTR
|
|
.S FACPTR=+$$SITE^VASITE()
|
|
.I FACPTR<1 S FACPTR=""
|
|
S FACPTR=$$LKUP^XUAF4(FACNUM)
|
|
I 'FACPTR S FACPTR=""
|
|
Q FACPTR
|
|
;
|
|
FACNUM(FACPTR) ;Return facility number
|
|
; Input : FACPTR - Pointer to INSTITUTION file (#4) (optional)
|
|
; (default to current location)
|
|
;Output : Facility number
|
|
; Null ("") returned if facility number couldn't be determined
|
|
N FACNUM
|
|
S FACPTR=$G(FACPTR)
|
|
I 'FACPTR D Q FACNUM
|
|
.S FACNUM=$P($$SITE^VASITE(),"^",3)
|
|
.I FACNUM<1 S FACNUM=""
|
|
S FACNUM=$P($$NS^XUAF4(FACPTR),"^",2)
|
|
I FACNUM<1 S FACNUM=""
|
|
Q FACNUM
|