HDISVF08 ;ALB/RMO - 7118.22 File Utilities/API Cont.; 1/18/05@1:57:00
 ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
 ;
 ;---- Begin HDIS Facility Term/Concept Association file (#7118.22) API(s) ----
 ;
FINDFAC(HDISYIEN,HDISFIEN,HDISTIEN,HDISIREF,HDISADDF,HDISAIEN,HDISERRM) ;Find or Add a New Facility Term/Concept Entry
 ; Input  -- HDISYIEN HDIS System file (#7118.21) IEN
 ;           HDISFIEN HDIS File/Field file (#7115.6) IEN
 ;           HDISTIEN HDIS Term/Concept VUID Association file (#7118.11) IEN
 ;           HDISIREF Internal Reference  (Optional)
 ;           HDISADDF Add a New Entry Flag  (Optional- Default 0)
 ;                    1=Yes and 0=No
 ; Output -- 1=Successful and 0=Failure
 ;           If Successful:
 ;           HDISAIEN  HDIS Facility Term/Concept Association file IEN
 ;           If Failure:
 ;           HDISERRM  Error Message  (Optional)
 N HDISI,HDISOKF
 ;Initialize ouput
 S (HDISAIEN,HDISERRM)=""
 ;Check for missing variables, exit if not defined
 I $G(HDISYIEN)'>0!($G(HDISFIEN)'>0)!($G(HDISTIEN)'>0) D  G FINDFACQ
 . S HDISERRM="Required Variable Missing."
 ;Check for existing System, File/Field, Term/Concept and Internal Reference, return entry and exit if it exists
 I $D(^HDISF(7118.22,"AS",HDISYIEN,HDISFIEN,HDISTIEN)) D  G ADDFACQ:$G(HDISAIEN)
 . S HDISI=0
 . F  S HDISI=$O(^HDISF(7118.22,"AS",HDISYIEN,HDISFIEN,HDISTIEN,HDISI))  Q:'HDISI!($G(HDISAIEN))  D
 . . I $D(^HDISF(7118.22,HDISI,0)),$P(^(0),"^",3)=$G(HDISIREF) D
 . . . S HDISAIEN=HDISI
 . . . S HDISOKF=1
 ;If flag set, Add a New Facility Term/Concept Entry
 I $G(HDISADDF) S HDISOKF=$$ADDFAC(HDISYIEN,HDISFIEN,HDISTIEN,$G(HDISIREF),.HDISAIEN,.HDISERRM)
FINDFACQ Q +$G(HDISOKF)
 ;
ADDFAC(HDISYIEN,HDISFIEN,HDISTIEN,HDISIREF,HDISAIEN,HDISERRM) ;Find or Add a New Facility Term/Concept Entry
 ; Input  -- HDISYIEN HDIS System file (#7118.21) IEN
 ;           HDISFIEN HDIS File/Field file (#7115.6) IEN
 ;           HDISTIEN HDIS Term/Concept VUID Association file (#7118.11) IEN
 ;           HDISIREF Internal Reference  (Optional)
 ; Output -- 1=Successful and 0=Failure
 ;           If Successful:
 ;           HDISAIEN  HDIS Facility Term/Concept Association file IEN
 ;           If Failure:
 ;           HDISERRM  Error Message  (Optional)
 N HDISFDA,HDISIEN,HDISMSG,HDISOKF
 ;Initialize ouput
 S (HDISAIEN,HDISERRM)=""
 ;Set array for System, File/Field, Internal Reference, Term/Concept and Date/Time Term/Concept Associated
 S HDISFDA(7118.22,"+1,",.01)=$G(HDISYIEN)
 S HDISFDA(7118.22,"+1,",.02)=$G(HDISFIEN)
 I $D(HDISIREF) S HDISFDA(7118.22,"+1,",.03)=$G(HDISIREF)
 S HDISFDA(7118.22,"+1,",.04)=$G(HDISTIEN)
 S HDISFDA(7118.22,"+1,",.05)=$$NOW^XLFDT
 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 HDISAIEN=+$G(HDISIEN(1))
 . S HDISOKF=1
 D CLEAN^DILF
ADDFACQ Q +$G(HDISOKF)
 ;
GETIENS(HDISYIEN,HDISFIEN,HDISTIEN,HDISIENS) ;Get IENS for Facility Term/Concept by System, File/Field and Term/Concept
 ; Input  -- HDISYIEN HDIS System file (#7118.21) IEN
 ;           HDISFIEN HDIS File/Field file (#7115.6) IEN
 ;           HDISTIEN HDIS Term/Concept VUID Association file (#7118.11) IEN
 ; Output -- 1=Successful and 0=Failure
 ;           If Successful:
 ;           HDISIENS Array where HDISIENS(IEN)=Internal Reference field (#.03)
 N HDISI
 ;Initialize ouput
 K HDISIENS
 ;Check for missing variables, exit if not defined
 I $G(HDISYIEN)'>0!($G(HDISFIEN)'>0)!($G(HDISTIEN)'>0) G GETIENSQ
 S HDISI=0
 F  S HDISI=$O(^HDISF(7118.22,"AS",HDISYIEN,HDISFIEN,HDISTIEN,HDISI))  Q:'HDISI  D
 . I $D(^HDISF(7118.22,HDISI,0)) S HDISIENS(HDISI)=$P(^(0),"^",3)
GETIENSQ Q +$S($D(HDISIENS):1,1:0)
 ;
 ;---- End HDIS Facility Term/Concept Association file (#7118.22) ----
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHDISVF08   3869     printed  Sep 23, 2025@19:32:58                                                                                                                                                                                                    Page 2
HDISVF08  ;ALB/RMO - 7118.22 File Utilities/API Cont.; 1/18/05@1:57:00
 +1       ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
 +2       ;
 +3       ;---- Begin HDIS Facility Term/Concept Association file (#7118.22) API(s) ----
 +4       ;
FINDFAC(HDISYIEN,HDISFIEN,HDISTIEN,HDISIREF,HDISADDF,HDISAIEN,HDISERRM) ;Find or Add a New Facility Term/Concept Entry
 +1       ; Input  -- HDISYIEN HDIS System file (#7118.21) IEN
 +2       ;           HDISFIEN HDIS File/Field file (#7115.6) IEN
 +3       ;           HDISTIEN HDIS Term/Concept VUID Association file (#7118.11) IEN
 +4       ;           HDISIREF Internal Reference  (Optional)
 +5       ;           HDISADDF Add a New Entry Flag  (Optional- Default 0)
 +6       ;                    1=Yes and 0=No
 +7       ; Output -- 1=Successful and 0=Failure
 +8       ;           If Successful:
 +9       ;           HDISAIEN  HDIS Facility Term/Concept Association file IEN
 +10      ;           If Failure:
 +11      ;           HDISERRM  Error Message  (Optional)
 +12       NEW HDISI,HDISOKF
 +13      ;Initialize ouput
 +14       SET (HDISAIEN,HDISERRM)=""
 +15      ;Check for missing variables, exit if not defined
 +16       IF $GET(HDISYIEN)'>0!($GET(HDISFIEN)'>0)!($GET(HDISTIEN)'>0)
               Begin DoDot:1
 +17               SET HDISERRM="Required Variable Missing."
               End DoDot:1
               GOTO FINDFACQ
 +18      ;Check for existing System, File/Field, Term/Concept and Internal Reference, return entry and exit if it exists
 +19       IF $DATA(^HDISF(7118.22,"AS",HDISYIEN,HDISFIEN,HDISTIEN))
               Begin DoDot:1
 +20               SET HDISI=0
 +21               FOR 
                       SET HDISI=$ORDER(^HDISF(7118.22,"AS",HDISYIEN,HDISFIEN,HDISTIEN,HDISI))
                       if 'HDISI!($GET(HDISAIEN))
                           QUIT 
                       Begin DoDot:2
 +22                       IF $DATA(^HDISF(7118.22,HDISI,0))
                               IF $PIECE(^(0),"^",3)=$GET(HDISIREF)
                                   Begin DoDot:3
 +23                                   SET HDISAIEN=HDISI
 +24                                   SET HDISOKF=1
                                   End DoDot:3
                       End DoDot:2
               End DoDot:1
               if $GET(HDISAIEN)
                   GOTO ADDFACQ
 +25      ;If flag set, Add a New Facility Term/Concept Entry
 +26       IF $GET(HDISADDF)
               SET HDISOKF=$$ADDFAC(HDISYIEN,HDISFIEN,HDISTIEN,$GET(HDISIREF),.HDISAIEN,.HDISERRM)
FINDFACQ   QUIT +$GET(HDISOKF)
 +1       ;
ADDFAC(HDISYIEN,HDISFIEN,HDISTIEN,HDISIREF,HDISAIEN,HDISERRM) ;Find or Add a New Facility Term/Concept Entry
 +1       ; Input  -- HDISYIEN HDIS System file (#7118.21) IEN
 +2       ;           HDISFIEN HDIS File/Field file (#7115.6) IEN
 +3       ;           HDISTIEN HDIS Term/Concept VUID Association file (#7118.11) IEN
 +4       ;           HDISIREF Internal Reference  (Optional)
 +5       ; Output -- 1=Successful and 0=Failure
 +6       ;           If Successful:
 +7       ;           HDISAIEN  HDIS Facility Term/Concept Association file IEN
 +8       ;           If Failure:
 +9       ;           HDISERRM  Error Message  (Optional)
 +10       NEW HDISFDA,HDISIEN,HDISMSG,HDISOKF
 +11      ;Initialize ouput
 +12       SET (HDISAIEN,HDISERRM)=""
 +13      ;Set array for System, File/Field, Internal Reference, Term/Concept and Date/Time Term/Concept Associated
 +14       SET HDISFDA(7118.22,"+1,",.01)=$GET(HDISYIEN)
 +15       SET HDISFDA(7118.22,"+1,",.02)=$GET(HDISFIEN)
 +16       IF $DATA(HDISIREF)
               SET HDISFDA(7118.22,"+1,",.03)=$GET(HDISIREF)
 +17       SET HDISFDA(7118.22,"+1,",.04)=$GET(HDISTIEN)
 +18       SET HDISFDA(7118.22,"+1,",.05)=$$NOW^XLFDT
 +19       DO UPDATE^DIE("","HDISFDA","HDISIEN","HDISMSG")
 +20      ;Check for error
 +21       IF $DATA(HDISMSG("DIERR"))
               Begin DoDot:1
 +22               SET HDISERRM=$GET(HDISMSG("DIERR",1,"TEXT",1))
               End DoDot:1
 +23      IF '$TEST
               Begin DoDot:1
 +24               SET HDISAIEN=+$GET(HDISIEN(1))
 +25               SET HDISOKF=1
               End DoDot:1
 +26       DO CLEAN^DILF
ADDFACQ    QUIT +$GET(HDISOKF)
 +1       ;
GETIENS(HDISYIEN,HDISFIEN,HDISTIEN,HDISIENS) ;Get IENS for Facility Term/Concept by System, File/Field and Term/Concept
 +1       ; Input  -- HDISYIEN HDIS System file (#7118.21) IEN
 +2       ;           HDISFIEN HDIS File/Field file (#7115.6) IEN
 +3       ;           HDISTIEN HDIS Term/Concept VUID Association file (#7118.11) IEN
 +4       ; Output -- 1=Successful and 0=Failure
 +5       ;           If Successful:
 +6       ;           HDISIENS Array where HDISIENS(IEN)=Internal Reference field (#.03)
 +7        NEW HDISI
 +8       ;Initialize ouput
 +9        KILL HDISIENS
 +10      ;Check for missing variables, exit if not defined
 +11       IF $GET(HDISYIEN)'>0!($GET(HDISFIEN)'>0)!($GET(HDISTIEN)'>0)
               GOTO GETIENSQ
 +12       SET HDISI=0
 +13       FOR 
               SET HDISI=$ORDER(^HDISF(7118.22,"AS",HDISYIEN,HDISFIEN,HDISTIEN,HDISI))
               if 'HDISI
                   QUIT 
               Begin DoDot:1
 +14               IF $DATA(^HDISF(7118.22,HDISI,0))
                       SET HDISIENS(HDISI)=$PIECE(^(0),"^",3)
               End DoDot:1
GETIENSQ   QUIT +$SELECT($DATA(HDISIENS):1,1:0)
 +1       ;
 +2       ;---- End HDIS Facility Term/Concept Association file (#7118.22) ----