HDISVF07 ;ALB/RMO - 7118.21 File Utilities/API Cont.; 1/13/05@1:22:00
;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
;
;---- Begin HDIS System file (#7118.21) API(s) ----
;
FINDSYS(HDISDIPA,HDISFACN,HDISTYPE,HDISADDF,HDISYIEN,HDISERRM) ;Find or Add a System Entry
; Input -- HDISDIPA Domain/IP Address
; HDISFACN Facility Number (Optional- Default current facility number)
; HDISTYPE Type (Optional- Default current system)
; HDISADDF Add a New Entry Flag (Optional- Default 0)
; 1=Yes and 0=No
; Output -- 1=Successful and 0=Failure
; If Successful:
; HDISYIEN HDIS System file IEN
; If Failure:
; HDISERRM Error Message (Optional)
N HDISI,HDISIPTR,HDISOKF,HDISRSLT
;Initialize output
S (HDISYIEN,HDISERRM)=""
;Check for missing variable, exit if not defined
I $G(HDISDIPA)="" D G FINDSYSQ
. S HDISERRM="Required Variable Missing."
;Set Facility Number to default of current facility number, if needed
S HDISFACN=$S('$D(HDISFACN):$$FACNUM^HDISVF01,1:HDISFACN)
;Check Facility Number, return error and exit if no value
I $G(HDISFACN)="" D G FINDSYSQ
. S HDISERRM="Unable to determine Facility Number."
;Set Institution file (#4) IEN
S HDISIPTR=$$FACPTR^HDISVF01(HDISFACN)
;Check Institution file (#4) IEN, return error and exit if no value
I $G(HDISIPTR)'>0 D G FINDSYSQ
. S HDISERRM="Unable to determine Institution file (#4) IEN."
;Set Type to default of current system, if needed
S HDISTYPE=$S('$D(HDISTYPE):$$PROD^XUPROD,1:HDISTYPE)
;Convert HDISTYPE to internal value
D CHK^DIE(7118.21,.03,"",HDISTYPE,.HDISRSLT)
S HDISTYPE=HDISRSLT
;Check for existing Institution file (#4) IEN and Domain/IP Address, return entry and exit if it exists
I $D(^HDISF(7118.21,"B",HDISIPTR)) D G FINDSYSQ:$G(HDISYIEN)
. S HDISI=0
. F S HDISI=$O(^HDISF(7118.21,"B",HDISIPTR,HDISI)) Q:'HDISI!($G(HDISYIEN)) D
. . I $D(^HDISF(7118.21,HDISI,0)),$P(^(0),"^",2)=HDISDIPA D
. . . S HDISYIEN=HDISI
. . . S HDISOKF=1
;If flag is set, Add a New System Entry
I $G(HDISADDF) S HDISOKF=$$ADDSYS(HDISIPTR,HDISDIPA,HDISTYPE,.HDISYIEN,.HDISERRM)
;
FINDSYSQ Q +$G(HDISOKF)
;
ADDSYS(HDISIPTR,HDISDIPA,HDISTYPE,HDISYIEN,HDISERRM) ;Add a New System Entry
; Input -- HDISIPTR Institution file (#4) IEN
; HDISDIPA Domain/IP Address
; HDISTYPE Type (Internal Value)
; Output -- 1=Successful and 0=Failure
; If Successful:
; HDISYIEN HDIS System file IEN
; If Failure:
; HDISERRM Error Message (Optional)
N HDISFDA,HDISIEN,HDISMSG,HDISOKF
;Initialize output
S (HDISYIEN,HDISERRM)=""
;Set array for Institution, Domain/IP Address and Type
S HDISFDA(7118.21,"+1,",.01)=$G(HDISIPTR)
S HDISFDA(7118.21,"+1,",.02)=$G(HDISDIPA)
S HDISFDA(7118.21,"+1,",.03)=$G(HDISTYPE)
D UPDATE^DIE("","HDISFDA","HDISIEN","HDISMSG")
;Check for error
I $D(HDISMSG("DIERR")) D
. S HDISERRM=$G(HDISMSG("DIERR",1,"TEXT",1))
ELSE D
. S HDISYIEN=+$G(HDISIEN(1))
. S HDISOKF=1
D CLEAN^DILF
ADDSYSQ Q +$G(HDISOKF)
;
CURSYS(HDISYIEN) ;Current System's HDIS System file IEN
; Input -- None
; Output -- 1=Successful and 0=Failure
; If Successful:
; HDISYIEN HDIS System file IEN
N HDISFACN,HDISIPTR,HDISTYPE
;Initialize output
S HDISYIEN=""
;Set Facility Number, Institution file (#4) IEN and Type
S HDISFACN=$$FACNUM^HDISVF01
S HDISIPTR=$$FACPTR^HDISVF01(HDISFACN)
S HDISTYPE=$$PROD^XUPROD
;Check for entry by Type and Institution file (#4) IEN
S HDISYIEN=$O(^HDISF(7118.21,"ATYP",+HDISTYPE,+HDISIPTR,0))
CURSYSQ Q +$S($G(HDISYIEN)>0:1,1:0)
;
GETFAC(HDISYIEN,HDISIPTR,HDISFACN) ;Get Institution file (#4) IEN and Facility Number by IEN
; Input -- HDISYIEN HDIS System file IEN (Optional- Default current system)
; Output -- 1=Successful and 0=Failure
; If Successful:
; HDISIPTR Institution file (#4) IEN
; HDISFACN Facility Number
;Initialize output
S (HDISIPTR,HDISFACN)=""
;Set HDIS System file IEN to current system, if needed
I '$D(HDISYIEN),$$CURSYS(.HDISYIEN)
;Check for missing variable, exit if not defined
I $G(HDISYIEN)'>0 G GETFACQ
;Check for Institution file (#4) IEN and Facility Number by IEN
I $D(^HDISF(7118.21,HDISYIEN,0)) S HDISIPTR=$P($G(^(0)),"^",1) D
. S HDISFACN=$$FACNUM^HDISVF01(HDISIPTR)
GETFACQ Q +$S($G(HDISIPTR)'=""&($G(HDISFACN)'=""):1,1:0)
;
GETDIP(HDISYIEN,HDISDIPA) ;Get Domain/IP Address by IEN
; Input -- HDISYIEN HDIS System file IEN (Optional- Default current system)
; Output -- 1=Successful and 0=Failure
; If Successful:
; HDISDIPA Domain/IP Address
;Initialize output
S HDISDIPA=""
;Set HDIS System file IEN to current system, if needed
I '$D(HDISYIEN),$$CURSYS(.HDISYIEN)
;Check for missing variable, exit if not defined
I $G(HDISYIEN)'>0 G GETDIPQ
;Check for Domain/IP Address by IEN
I $D(^HDISF(7118.21,HDISYIEN,0)) S HDISDIPA=$P($G(^(0)),"^",2)
GETDIPQ Q +$S($G(HDISDIPA)'="":1,1:0)
;
;
GETTYPE(HDISYIEN,HDISTYPE,HDISTYPX) ;Get Type (Internal and External Value) by IEN
; Input -- HDISYIEN HDIS System file IEN (Optional- Default current system)
; Output -- 1=Successful and 0=Failure
; If Successful:
; HDISTYPE Type (Internal Value)
; HDISTYPX Type (External Value)
;Initialize output
S (HDISTYPE,HDISTYPX)=""
;Set HDIS System file IEN to current system, if needed
I '$D(HDISYIEN),$$CURSYS(.HDISYIEN)
;Check for missing variable, exit if not defined
I $G(HDISYIEN)'>0 G GETTYPEQ
;Check for Domain/IP Address by IEN
I $D(^HDISF(7118.21,HDISYIEN,0)) S HDISTYPE=$P($G(^(0)),"^",3) D
. S HDISTYPX=$$GET1^DIQ(7118.21,HDISYIEN,.03)
GETTYPEQ Q +$S($G(HDISTYPE)'=""&($G(HDISTYPX)'=""):1,1:0)
;
;---- End HDIS System file (#7118.21) API(s) ----