IB20IN ;ALB/CPM - IB V2.0 INITIALIZATION ROUTINE ; 01-SEP-93
 ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
 ;
 ; Perform one-time installation items
 I +$G(^DD(350,0,"VR"))<2 D
 .D SC7H ;   delete IB SCREEN7H input template
 .D AVC ;    delete 'AVC' x-ref
 .D AVP ;    delete 'AVP' x-ref
 .D OBSLT ;  delete obsolete list template
 .D BCP ;    delete obsolete print template
 .D OBSPRO ; delete obsolete protocols
 .D EDOPT ;  change name of option IB UB-82 MENU
 ;
 ; Run at every installation
 D DEL ;     delete file #350.8 and data
 D CHGPRO ;  delete IBACM1 MENU protocol
 D DD ;      delete field decriptions and cross references
 ;
 Q
 ;
 ;
SC7H W !!,">>> Removing IB SCREEN7H input template..."
 S IBX=0 F  S IBX=$O(^DIE("B","IB SCREEN7H",IBX)) Q:IBX<1  S DA=IBX,DIE="^DIE(",DR=".01////@" D ^DIE
 K IBX
 Q
 ;
AVC W !!,">>> Removing 'AVC' cross-reference on REVENUE CODE field... "
 S DA=0
 F  S DA=$O(^DD(399.042,.01,1,DA)) Q:DA<1  I $G(^(DA,0))="399.042^AVC^MUMPS" S DIK="^DD(399.042,.01,1,",DA(2)=399.042,DA(1)=.01 W "." D ^DIK W "." K DIK
 K DA
 Q
 ;
AVP W !!,">>> Removing 'AVP' cross-reference on PROCEDURES field..."
 S DA=0
 F  S DA=$O(^DD(399.0304,.01,1,DA)) Q:DA<1  I $G(^(DA,0))="399.0304^AVP^MUMPS" S DIK="^DD(399.0304,.01,1,",DA(2)=399.0304,DA(1)=.01 W "." D ^DIK W "." K DIK
 K DA
 Q
 ;
DEL W !!,">>> Deleting IB ERROR file (350.8) with data."
 W !,"    It will be restored."
 S DIU(0)="D",DIU="^IBE(350.8," D EN^DIU2 K DIU Q
 Q
 ;
CHGPRO ; Delete the 'IBACM1 MENU' protocol (to be added later by IBONIT)
 S DIC="^ORD(101,",DIC(0)="FN",X="IBACM1 MENU" D ^DIC K DIC S DA=+Y
 I DA>0 W !!,">>> Deleting protocol 'IBACM1 MENU'...",!?4,"It will be restored." S DIK="^ORD(101," D ^DIK
 K DA,DIK,X,Y
 Q
 ;
OBSLT ; Delete the obsolete List Template 'IB BILLABLE EVENT'
 S DA=$O(^SD(409.61,"B","IB BILLABLE EVENT",0))
 I DA W !!,">>> Deleting Obsolete List Template 'IB BILLABLE EVENT'..." S DIK="^SD(409.61," D ^DIK
 K DA,DIK
 Q
 ;
BCP ; Delete obsolete print template 'IB BILLING CYCLE PRINT'
 S DA=$O(^DIPT("B","IB BILLING CYCLE PRINT",0))
 I DA W !!,">>> Deleting Obsolete Print Template 'IB BILLING CYCLE PRINT'..." S DIK="^DIPT(" D ^DIK
 K DA,DIK
 Q
 ;
OBSPRO ; Delete obsolete protocols.
 W !!,">>> Deleting obsolete protocols..."
 F IBI=1:1 S IBN=$P($T(OBSP+IBI),";;",2) Q:IBN=""  D
 .W !?5,"deleting protocol '",IBN,"'... "
 .S DIC="^ORD(101,",DIC(0)="FN",X=IBN D ^DIC K DIC S DA=+Y
 .I DA<0 W "not found." Q
 .S DIK="^ORD(101," D ^DIK W "done."
 K DA,DIK,IBI,IBN,X,Y
 Q
 ;
EDOPT ; Change name of option IB UB-82 MENU to IB THIRD PARTY BILLING MENU
 S DA=$O(^DIC(19,"B","IB UB-82 MENU",0))
 I DA W !!,">>> Changing the option 'IB UB-82 MENU' to 'IB THIRD PARTY BILLING MENU'..." S DIE="^DIC(19,",DR=".01///IB THIRD PARTY BILLING MENU" D ^DIE
 K DIE,DA,DR
 Q
 ;
DD ; Delete field descriptions and cross references
 K ^DD(399,.01,21),^DD(399,2,21),^DD(399,205,21),^DD(399,213,23),^DD(399,303,21)
 ;
 S IB=0 F  S IB=$O(^DD(399.1,.11,1,IB)) Q:IB<1  S DIK="^DD(399.1,.11,1,",DA(2)=399.1,DA(1)=.11,DA=IB D ^DIK K DIK
 S IB=0 F  S IB=$O(^DD(399.1,.13,1,IB)) Q:IB<1  S DIK="^DD(399.1,.13,1,",DA(2)=399.1,DA(1)=.13,DA=IB D ^DIK K DIK
 S IB=0 F  S IB=$O(^DD(399.2,.01,1,IB)) Q:IB<1  S DIK="^DD(399.2,.01,1,",DA(2)=399.2,DA(1)=.01,DA=IB D ^DIK K DIK
 ;
 S IB=0 F  S IB=$O(^DD(399.042,.02,1,IB)) Q:IB<1  S DIK="^DD(399.042,.02,1,",DA(2)=399.042,DA(1)=.02,DA=IB D ^DIK K DIK
 S IB=0 F  S IB=$O(^DD(399.042,.03,1,IB)) Q:IB<1  S DIK="^DD(399.042,.03,1,",DA(2)=399.042,DA(1)=.03,DA=IB D ^DIK K DIK
 ;
 K ^DGCR(399.1,"OCC"),^DGCR(399.1,"DIS"),^DGCR(399.2,"D")
 ;
 S DIK="^DD(399,101,1,",DA(2)=399,DA(1)=101,DA=3 D ^DIK
 ;
 K IB,DA,DIK
 Q
 ;
OBSP ; Obsolete protocols to be deleted
 ;;IBACM ENTRY SELECT
 ;;IBACM MENU
 ;;IBACM BLANK 1
 ;;IBACM BLANK 10
 ;;IBACM BLANK 11
 ;;IBACM BLANK 12
 ;;IBACM BLANK 2
 ;;IBACM BLANK 3
 ;;IBACM BLANK 4
 ;;IBACM BLANK 5
 ;;IBACM BLANK 6
 ;;IBACM BLANK 7
 ;;IBACM BLANK 8
 ;;IBACM BLANK 9
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIB20IN   4044     printed  Sep 23, 2025@19:37:39                                                                                                                                                                                                      Page 2
IB20IN    ;ALB/CPM - IB V2.0 INITIALIZATION ROUTINE ; 01-SEP-93
 +1       ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
 +2       ;
 +3       ; Perform one-time installation items
 +4        IF +$GET(^DD(350,0,"VR"))<2
               Begin DoDot:1
 +5       ;   delete IB SCREEN7H input template
                   DO SC7H
 +6       ;    delete 'AVC' x-ref
                   DO AVC
 +7       ;    delete 'AVP' x-ref
                   DO AVP
 +8       ;  delete obsolete list template
                   DO OBSLT
 +9       ;    delete obsolete print template
                   DO BCP
 +10      ; delete obsolete protocols
                   DO OBSPRO
 +11      ;  change name of option IB UB-82 MENU
                   DO EDOPT
               End DoDot:1
 +12      ;
 +13      ; Run at every installation
 +14      ;     delete file #350.8 and data
           DO DEL
 +15      ;  delete IBACM1 MENU protocol
           DO CHGPRO
 +16      ;      delete field decriptions and cross references
           DO DD
 +17      ;
 +18       QUIT 
 +19      ;
 +20      ;
SC7H       WRITE !!,">>> Removing IB SCREEN7H input template..."
 +1        SET IBX=0
           FOR 
               SET IBX=$ORDER(^DIE("B","IB SCREEN7H",IBX))
               if IBX<1
                   QUIT 
               SET DA=IBX
               SET DIE="^DIE("
               SET DR=".01////@"
               DO ^DIE
 +2        KILL IBX
 +3        QUIT 
 +4       ;
AVC        WRITE !!,">>> Removing 'AVC' cross-reference on REVENUE CODE field... "
 +1        SET DA=0
 +2        FOR 
               SET DA=$ORDER(^DD(399.042,.01,1,DA))
               if DA<1
                   QUIT 
               IF $GET(^(DA,0))="399.042^AVC^MUMPS"
                   SET DIK="^DD(399.042,.01,1,"
                   SET DA(2)=399.042
                   SET DA(1)=.01
                   WRITE "."
                   DO ^DIK
                   WRITE "."
                   KILL DIK
 +3        KILL DA
 +4        QUIT 
 +5       ;
AVP        WRITE !!,">>> Removing 'AVP' cross-reference on PROCEDURES field..."
 +1        SET DA=0
 +2        FOR 
               SET DA=$ORDER(^DD(399.0304,.01,1,DA))
               if DA<1
                   QUIT 
               IF $GET(^(DA,0))="399.0304^AVP^MUMPS"
                   SET DIK="^DD(399.0304,.01,1,"
                   SET DA(2)=399.0304
                   SET DA(1)=.01
                   WRITE "."
                   DO ^DIK
                   WRITE "."
                   KILL DIK
 +3        KILL DA
 +4        QUIT 
 +5       ;
DEL        WRITE !!,">>> Deleting IB ERROR file (350.8) with data."
 +1        WRITE !,"    It will be restored."
 +2        SET DIU(0)="D"
           SET DIU="^IBE(350.8,"
           DO EN^DIU2
           KILL DIU
           QUIT 
 +3        QUIT 
 +4       ;
CHGPRO    ; Delete the 'IBACM1 MENU' protocol (to be added later by IBONIT)
 +1        SET DIC="^ORD(101,"
           SET DIC(0)="FN"
           SET X="IBACM1 MENU"
           DO ^DIC
           KILL DIC
           SET DA=+Y
 +2        IF DA>0
               WRITE !!,">>> Deleting protocol 'IBACM1 MENU'...",!?4,"It will be restored."
               SET DIK="^ORD(101,"
               DO ^DIK
 +3        KILL DA,DIK,X,Y
 +4        QUIT 
 +5       ;
OBSLT     ; Delete the obsolete List Template 'IB BILLABLE EVENT'
 +1        SET DA=$ORDER(^SD(409.61,"B","IB BILLABLE EVENT",0))
 +2        IF DA
               WRITE !!,">>> Deleting Obsolete List Template 'IB BILLABLE EVENT'..."
               SET DIK="^SD(409.61,"
               DO ^DIK
 +3        KILL DA,DIK
 +4        QUIT 
 +5       ;
BCP       ; Delete obsolete print template 'IB BILLING CYCLE PRINT'
 +1        SET DA=$ORDER(^DIPT("B","IB BILLING CYCLE PRINT",0))
 +2        IF DA
               WRITE !!,">>> Deleting Obsolete Print Template 'IB BILLING CYCLE PRINT'..."
               SET DIK="^DIPT("
               DO ^DIK
 +3        KILL DA,DIK
 +4        QUIT 
 +5       ;
OBSPRO    ; Delete obsolete protocols.
 +1        WRITE !!,">>> Deleting obsolete protocols..."
 +2        FOR IBI=1:1
               SET IBN=$PIECE($TEXT(OBSP+IBI),";;",2)
               if IBN=""
                   QUIT 
               Begin DoDot:1
 +3                WRITE !?5,"deleting protocol '",IBN,"'... "
 +4                SET DIC="^ORD(101,"
                   SET DIC(0)="FN"
                   SET X=IBN
                   DO ^DIC
                   KILL DIC
                   SET DA=+Y
 +5                IF DA<0
                       WRITE "not found."
                       QUIT 
 +6                SET DIK="^ORD(101,"
                   DO ^DIK
                   WRITE "done."
               End DoDot:1
 +7        KILL DA,DIK,IBI,IBN,X,Y
 +8        QUIT 
 +9       ;
EDOPT     ; Change name of option IB UB-82 MENU to IB THIRD PARTY BILLING MENU
 +1        SET DA=$ORDER(^DIC(19,"B","IB UB-82 MENU",0))
 +2        IF DA
               WRITE !!,">>> Changing the option 'IB UB-82 MENU' to 'IB THIRD PARTY BILLING MENU'..."
               SET DIE="^DIC(19,"
               SET DR=".01///IB THIRD PARTY BILLING MENU"
               DO ^DIE
 +3        KILL DIE,DA,DR
 +4        QUIT 
 +5       ;
DD        ; Delete field descriptions and cross references
 +1        KILL ^DD(399,.01,21),^DD(399,2,21),^DD(399,205,21),^DD(399,213,23),^DD(399,303,21)
 +2       ;
 +3        SET IB=0
           FOR 
               SET IB=$ORDER(^DD(399.1,.11,1,IB))
               if IB<1
                   QUIT 
               SET DIK="^DD(399.1,.11,1,"
               SET DA(2)=399.1
               SET DA(1)=.11
               SET DA=IB
               DO ^DIK
               KILL DIK
 +4        SET IB=0
           FOR 
               SET IB=$ORDER(^DD(399.1,.13,1,IB))
               if IB<1
                   QUIT 
               SET DIK="^DD(399.1,.13,1,"
               SET DA(2)=399.1
               SET DA(1)=.13
               SET DA=IB
               DO ^DIK
               KILL DIK
 +5        SET IB=0
           FOR 
               SET IB=$ORDER(^DD(399.2,.01,1,IB))
               if IB<1
                   QUIT 
               SET DIK="^DD(399.2,.01,1,"
               SET DA(2)=399.2
               SET DA(1)=.01
               SET DA=IB
               DO ^DIK
               KILL DIK
 +6       ;
 +7        SET IB=0
           FOR 
               SET IB=$ORDER(^DD(399.042,.02,1,IB))
               if IB<1
                   QUIT 
               SET DIK="^DD(399.042,.02,1,"
               SET DA(2)=399.042
               SET DA(1)=.02
               SET DA=IB
               DO ^DIK
               KILL DIK
 +8        SET IB=0
           FOR 
               SET IB=$ORDER(^DD(399.042,.03,1,IB))
               if IB<1
                   QUIT 
               SET DIK="^DD(399.042,.03,1,"
               SET DA(2)=399.042
               SET DA(1)=.03
               SET DA=IB
               DO ^DIK
               KILL DIK
 +9       ;
 +10       KILL ^DGCR(399.1,"OCC"),^DGCR(399.1,"DIS"),^DGCR(399.2,"D")
 +11      ;
 +12       SET DIK="^DD(399,101,1,"
           SET DA(2)=399
           SET DA(1)=101
           SET DA=3
           DO ^DIK
 +13      ;
 +14       KILL IB,DA,DIK
 +15       QUIT 
 +16      ;
OBSP      ; Obsolete protocols to be deleted
 +1       ;;IBACM ENTRY SELECT
 +2       ;;IBACM MENU
 +3       ;;IBACM BLANK 1
 +4       ;;IBACM BLANK 10
 +5       ;;IBACM BLANK 11
 +6       ;;IBACM BLANK 12
 +7       ;;IBACM BLANK 2
 +8       ;;IBACM BLANK 3
 +9       ;;IBACM BLANK 4
 +10      ;;IBACM BLANK 5
 +11      ;;IBACM BLANK 6
 +12      ;;IBACM BLANK 7
 +13      ;;IBACM BLANK 8
 +14      ;;IBACM BLANK 9
 +15      ;