Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HDISVF01

HDISVF01.m

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