- 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
- 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
- +2 ;
- +3 ;---- Begin HDIS VUID IMPLEMENTATION STATUS file (#7118.25) APIs ----
- +4 ;
- GETSTAT(FILE,FIELD,DATE,FAC,DOMAIN,TYPE) ;Get file/field implementation status
- +1 ; Input : FILE - File number
- +2 ; FIELD - Field number (defaults to .01)
- +3 ; DATE - FileMan date/time to return status for (optional)
- +4 ; (defaults to NOW)
- +5 ; FAC - Facility number (optional) (defaults to current)
- +6 ; DOMAIN - Domain/IP address (optional) (defaults to current)
- +7 ; TYPE - Type of system (optional) (defaults to current)
- +8 ; 0 = Test 1 = Production
- +9 ;Output : StatusCode ^ StatusPointer ^ StatusDate
- +10 ; Notes : Values for "not started" status and no date are returned
- +11 ; on bad input or if no entry is found
- +12 ; : If time is not included with the date, the last status
- +13 ; for the given day is returned
- +14 ; : If more than one entry for the same date/time is found, the
- +15 ; higher entry number is returned
- +16 NEW IEN,STATCODE,STATPTR,STATDT,NOTYET,FFPTR,SYSPTR,X
- +17 ;Calculate output for bad input
- +18 SET STATCODE=0
- +19 SET X=$$GETIEN^HDISVF06(STATCODE,+$$GETTYPE^HDISVF02(),.STATPTR)
- +20 SET NOTYET=STATCODE_"^"_STATPTR_"^"
- +21 ;Check input
- +22 SET FILE=+$GET(FILE)
- +23 IF 'FILE
- QUIT NOTYET
- +24 SET FIELD=+$GET(FIELD)
- +25 IF 'FIELD
- SET FIELD=.01
- +26 SET DATE=+$GET(DATE)
- +27 IF 'DATE
- SET DATE=$$NOW^XLFDT()
- +28 IF '$PIECE(DATE,".",2)
- SET $PIECE(DATE,".",2)=24
- +29 SET FAC=+$GET(FAC)
- +30 IF 'FAC
- SET FAC=$$FACNUM()
- +31 SET DOMAIN=$GET(DOMAIN)
- +32 IF DOMAIN=""
- SET DOMAIN=$GET(^XMB("NETNAME"))
- +33 SET TYPE=$GET(TYPE)
- +34 IF TYPE=""
- SET TYPE=$$PROD^XUPROD()
- +35 IF ('FAC)!(DOMAIN="")!(TYPE="")
- QUIT NOTYET
- +36 ;Get pointers
- +37 IF '$$FINDSYS^HDISVF07(DOMAIN,FAC,TYPE,1,.SYSPTR)
- QUIT NOTYET
- +38 IF '$$GETIEN^HDISVF05(FILE,FIELD,.FFPTR)
- QUIT NOTYET
- +39 ;Get status date/time closest to input date/time
- +40 SET DATE=DATE+.0000001
- +41 SET STATDT=+$ORDER(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,DATE),-1)
- +42 IF 'STATDT
- QUIT NOTYET
- +43 ;Build list of entry numbers with found status date/time
- +44 KILL IEN
- +45 SET STATPTR=0
- +46 FOR
- SET STATPTR=+$ORDER(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,STATDT,STATPTR))
- IF 'STATPTR
- QUIT
- Begin DoDot:1
- +47 SET IEN=0
- +48 FOR
- SET IEN=+$ORDER(^HDISF(7118.25,"AFAC",SYSPTR,FFPTR,STATDT,STATPTR,IEN))
- IF 'IEN
- QUIT
- Begin DoDot:2
- +49 SET IEN(IEN)=STATPTR
- End DoDot:2
- End DoDot:1
- +50 ;Get last entry number
- +51 SET IEN=+$ORDER(IEN(""),-1)
- +52 IF 'IEN
- QUIT NOTYET
- +53 ;Build output
- +54 SET STATPTR=IEN(IEN)
- +55 SET X=$$GETCODE^HDISVF06(STATPTR,.STATCODE)
- +56 QUIT STATCODE_"^"_STATPTR_"^"_STATDT
- +57 ;
- SETSTAT(FILE,FIELD,CODE,DATE,STTYPE,FAC,DOMAIN,SYTYPE) ;Set file/field implementation status
- +1 ; Input : FILE - File number
- +2 ; FIELD - Field number (defaults to .01)
- +3 ; CODE - Status code to set (defaults to "not started")
- +4 ; DATE - FileMan date/time to return status for (optional)
- +5 ; (defaults to NOW)
- +6 ; STTYPE - Type of status code being used (optional)
- +7 ; 1 = Client (default) 2 = Server
- +8 ; FAC - Facility number (optional) (defaults to current)
- +9 ; DOMAIN - Domain/IP address (optional) (defaults to current)
- +10 ; SYTYPE - Type of system (optional) (defaults to current)
- +11 ; 0 = Test 1 = Production
- +12 ;Output : None
- +13 ; Notes : If time is not included with the date, 1 second past
- +14 ; midnight will be used as the time
- +15 ; : If an entry for the given file/field and date/time already
- +16 ; exists, a new entry will still be added
- +17 NEW FFPTR,SYSPTR
- +18 ;Check input
- +19 SET FILE=+$GET(FILE)
- +20 IF 'FILE
- QUIT
- +21 SET FIELD=+$GET(FIELD)
- +22 IF 'FIELD
- SET FIELD=.01
- +23 SET CODE=+$GET(CODE)
- +24 SET DATE=+$GET(DATE)
- +25 IF 'DATE
- SET DATE=$$NOW^XLFDT()
- +26 IF '$PIECE(DATE,".",2)
- SET $PIECE(DATE,".",2)="000001"
- +27 SET STTYPE=+$GET(STTYPE)
- +28 IF ('STTYPE)!(STTYPE<1)!(STTYPE>2)
- SET STTYPE=1
- +29 SET FAC=+$GET(FAC)
- +30 IF 'FAC
- SET FAC=$$FACNUM()
- +31 SET DOMAIN=$GET(DOMAIN)
- +32 IF DOMAIN=""
- SET DOMAIN=$GET(^XMB("NETNAME"))
- +33 SET SYTYPE=$GET(SYTYPE)
- +34 IF SYTYPE=""
- SET SYTYPE=$$PROD^XUPROD()
- +35 IF ('FAC)!(DOMAIN="")!(SYTYPE="")
- QUIT
- +36 ;Get pointers
- +37 IF '$$FINDSYS^HDISVF07(DOMAIN,FAC,SYTYPE,1,.SYSPTR)
- QUIT
- +38 IF '$$GETIEN^HDISVF05(FILE,FIELD,.FFPTR)
- QUIT
- +39 ;Create entry
- +40 DO ADDSTAT(FFPTR,SYSPTR,CODE,STTYPE,DATE)
- +41 QUIT
- +42 ;
- SCREEN(FILE,FIELD,DATE) ;Apply screening logic to file/field ?
- +1 ; Input : FILE - File number
- +2 ; FIELD - Field number (defaults to .01)
- +3 ; DATE - FileMan date/time to check against (optional)
- +4 ; (defaults to NOW)
- +5 ;Output : Flag indicating if screening logic should be applied
- +6 ; 0 = Don't screen entries during selection
- +7 ; 1 = Screen entries during selection
- +8 ; Notes : 0 (don't screen) is returned on bad input
- +9 ; : If time is not included with the date, the last status
- +10 ; for the given day is returned
- +11 NEW SCREEN,STAT
- +12 SET SCREEN=0
- +13 SET FILE=+$GET(FILE)
- +14 IF 'FILE
- QUIT SCREEN
- +15 SET FIELD=+$GET(FIELD)
- +16 IF 'FIELD
- SET FIELD=.01
- +17 SET DATE=+$GET(DATE)
- +18 IF 'DATE
- SET DATE=$$NOW^XLFDT()
- +19 SET STAT=$$GETSTAT(FILE,FIELD,DATE)
- +20 IF +STAT=6
- SET SCREEN=1
- +21 QUIT SCREEN
- +22 ;
- ADDSTAT(FFPTR,SYSPTR,CODE,TYPE,DATE) ;Set file/field implementation status
- +1 ; Input : FFPTR - Pointer to HDIS FILE/FIELD file (#7115.6)
- +2 ; SYSPTR - Pointer to HDIS SYSTEM file (#7118.21)
- +3 ; CODE - Status code to set (defaults to "not started")
- +4 ; TYPE - Type of status code being used (optional)
- +5 ; 1 = Client (default) 2 = Server
- +6 ; DATE - FileMan date/time to return status for (optional)
- +7 ; (defaults to NOW)
- +8 ;Ouput : None
- +9 ; Notes : If time is not included with the date, 1 second past
- +10 ; midnight will be used as the time
- +11 ; : If an entry for the given file/field and date/time already
- +12 ; exists, a new entry will still be added
- +13 ; : Call assumes that FFPTR and SYSPTR are valid
- +14 NEW STATPTR,HDISFDA,HDISIEN,HDISMSG,IENS
- +15 ;Check input
- +16 SET FFPTR=+$GET(FFPTR)
- +17 IF 'FFPTR
- QUIT
- +18 SET SYSPTR=+$GET(SYSPTR)
- +19 IF 'SYSPTR
- QUIT
- +20 SET CODE=+$GET(CODE)
- +21 SET DATE=+$GET(DATE)
- +22 IF 'DATE
- SET DATE=$$NOW^XLFDT()
- +23 IF '$PIECE(DATE,".",2)
- SET $PIECE(DATE,".",2)="000001"
- +24 SET TYPE=+$GET(TYPE)
- +25 IF ('TYPE)!(TYPE<1)!(TYPE>2)
- SET TYPE=1
- +26 ;Get pointer to status
- +27 IF '$$GETIEN^HDISVF06(CODE,TYPE,.STATPTR)
- QUIT
- +28 ;Create entry
- +29 SET IENS="+1,"
- +30 SET HDISFDA(7118.25,IENS,.01)=SYSPTR
- +31 SET HDISFDA(7118.25,IENS,.02)=FFPTR
- +32 SET HDISFDA(7118.25,IENS,.03)=STATPTR
- +33 SET HDISFDA(7118.25,IENS,.04)=DATE
- +34 DO UPDATE^DIE("","HDISFDA","HDISIEN","HDISMSG")
- +35 QUIT
- +36 ;
- +37 ;---- End HDIS VUID IMPLEMENTATION STATUS file (#7118.25) APIs ----
- +38 ;
- FACPTR(FACNUM) ;Return pointer to INSTITUTION file (#4) for facility number
- +1 ; Input : FACNUM - Facility number (optional) (defaults to current)
- +2 ;Output : Pointer to INSTITUTION file (#4)
- +3 ; Notes : NULL ("") is returned if an entry can not be found
- +4 NEW FACPTR
- +5 SET FACNUM=$GET(FACNUM)
- +6 IF 'FACNUM
- Begin DoDot:1
- +7 SET FACPTR=+$$SITE^VASITE()
- +8 IF FACPTR<1
- SET FACPTR=""
- End DoDot:1
- QUIT FACPTR
- +9 SET FACPTR=$$LKUP^XUAF4(FACNUM)
- +10 IF 'FACPTR
- SET FACPTR=""
- +11 QUIT FACPTR
- +12 ;
- FACNUM(FACPTR) ;Return facility number
- +1 ; Input : FACPTR - Pointer to INSTITUTION file (#4) (optional)
- +2 ; (default to current location)
- +3 ;Output : Facility number
- +4 ; Null ("") returned if facility number couldn't be determined
- +5 NEW FACNUM
- +6 SET FACPTR=$GET(FACPTR)
- +7 IF 'FACPTR
- Begin DoDot:1
- +8 SET FACNUM=$PIECE($$SITE^VASITE(),"^",3)
- +9 IF FACNUM<1
- SET FACNUM=""
- End DoDot:1
- QUIT FACNUM
- +10 SET FACNUM=$PIECE($$NS^XUAF4(FACPTR),"^",2)
- +11 IF FACNUM<1
- SET FACNUM=""
- +12 QUIT FACNUM