A1B2BGJ ;ALB/MIR - BACKGROUND JOB TO UPDATE A1B2 ENTRIES ; 14 JAN 91
 ;;Version 1.55 (local for MAS v5 sites);;
 ;
 F I=1:1:4 S A1B2FN=11500+(I/10) F J=0:0 S J=$O(^A1B2(A1B2FN,"AX",0,J)) Q:'J  I $D(^A1B2(A1B2FN,J,0)) S DIE="^A1B2("_A1B2FN_",",DA=J,DR="" D @I:I'=3,2:I=3 D DIE:DR]""
 D ST^A1B2T1
 K XFR,I,J,A1B2FN D KILL^%ZTLOAD
 Q
 ;
 ;
DIE ; new variables, call ^DIE
 N I,J,K D ^DIE
 Q
 ;
 ;
1 ;Update patients
 S DFN=$S($D(^A1B2(11500.1,+J,0)):$P(^(0),"^",12),1:"") Q:'DFN
 F K=0,.32,"ODS" S X(K)=$S($D(^DPT(DFN,K)):^(K),1:"")
 S DR=".01///"_$P(X(0),"^",9)_";.02////"_$P(X(0),"^",1)_";.03////"_$P(X(0),"^",3)_";.04///"_$S($P(X(.32),"^",5):"/"_$P(X(.32),"^",5),1:"@")_";.05///"_$S($P(X("ODS"),"^",3):"/"_$P(X("ODS"),"^",3),1:"@")
 S DR=DR_";.06///"_$S($P(X("ODS"),"^",2)]"":"/"_$P(X("ODS"),"^",2),1:"@")_";.07///"_$S('$D(^DPT(DFN,"DAC")):"",$P(^("DAC"),"^",1)]"":"/"_$P(^("DAC"),"^",1),1:"@")_";1.01////3"
 S ^A1B2(11500.1,J,.11)=$S($D(^DPT(DFN,.11)):^(.11),1:"") S X=^(.11),$P(^A1B2(11500.1,J,.11),"^",7)=$S($D(^DIC(5,+$P(X,"^",5),1,+$P(X,"^",7),0)):$P(^(0),"^",1),1:"")
 Q
 ;
 ;
2 ;Update admissions/discharges
 S XFR="AODS"_$S(I=2:"A",1:"D"),IFN=+$O(^DGPM(XFR,J,0)) I '$D(^DGPM(IFN,0)) Q
 F X=0,"ODS" S X(X)=$S($D(^DGPM(IFN,X)):^(X),1:"")
 I $P(X("ODS"),"^",7) D 3 Q
 S (X(1),X("ODS1"))=""
 I $P(X(0),U,17) S:$D(^DGPM($P(X(0),U,17),0)) X(1)=^(0) S:$D(^("ODS")) X("ODS1")=^("ODS")
 S DGSPEC=$O(^DGPM("APHY",IFN,0)),DGSPEC=$S($D(^DGPM(+DGSPEC,0)):$P(^(0),"^",9),1:""),DGSPEC=$S($D(^DIC(45.7,+DGSPEC,0)):$P(^(0),"^",2),1:"")
 S DR=".01///"_+X(0)_";.03////"_DGSPEC_";.05////"_$S($D(^DG(405.1,+$P(X(1),"^",4),0)):$P(^(0),"^",3),1:"")
 S DR=DR_";.06////"_$S(+X(1):+X(1),1:"")_";.1////"_$S($D(^DIC(4,+$P(X(1),"^",5),0)):$P(^(0),"^",1),1:"")_";.11////"_$P(X("ODS1"),"^",2)_";1.01////3"
 K DGSPEC Q
 ;
 ;
3 ;Update displace patients
 S DR=".01///"_+X(0)_";.03////"_$P(X("ODS"),"^",6)_";.1////"_$S($D(^DIC(4,+$P(X(0),"^",5),0)):$P(^(0),"^"),1:"")_";.11////"_$P(X("ODS"),"^",2)_";1.01////3"
 Q
 ;
 ;
4 ;get the DFN and multiple IFNs for registration option
 N DFN
 S DFN=$O(^DPT("AODSR",J,0)),IFN=$O(^(+DFN,0)) I IFN S DIE="^A1B2(11500.4," D REG
 K K Q
 ;
 ;
REG ;Update registrations
 S X=$S($D(^DPT(DFN,"DIS",IFN,0)):^(0),1:"")
 S DR=".01///"_+X_";.05////"_$P(X,"^",7)_";1.01////3" N I,J,K D ^DIE
 Q
 ;
 ;
QUEUE ; manually queue the ods background job
 S ZTRTN="A1B2BGJ",ZTDESC="ODS BACKGROUND JOB",ZTIO=""
 D ^%ZTLOAD
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HA1B2BGJ   2473     printed  Sep 23, 2025@19:57:14                                                                                                                                                                                                     Page 2
A1B2BGJ   ;ALB/MIR - BACKGROUND JOB TO UPDATE A1B2 ENTRIES ; 14 JAN 91
 +1       ;;Version 1.55 (local for MAS v5 sites);;
 +2       ;
 +3        FOR I=1:1:4
               SET A1B2FN=11500+(I/10)
               FOR J=0:0
                   SET J=$ORDER(^A1B2(A1B2FN,"AX",0,J))
                   if 'J
                       QUIT 
                   IF $DATA(^A1B2(A1B2FN,J,0))
                       SET DIE="^A1B2("_A1B2FN_","
                       SET DA=J
                       SET DR=""
                       if I'=3
                           DO @I
                       if I=3
                           DO 2
                       if DR]""
                           DO DIE
 +4        DO ST^A1B2T1
 +5        KILL XFR,I,J,A1B2FN
           DO KILL^%ZTLOAD
 +6        QUIT 
 +7       ;
 +8       ;
DIE       ; new variables, call ^DIE
 +1        NEW I,J,K
           DO ^DIE
 +2        QUIT 
 +3       ;
 +4       ;
1         ;Update patients
 +1        SET DFN=$SELECT($DATA(^A1B2(11500.1,+J,0)):$PIECE(^(0),"^",12),1:"")
           if 'DFN
               QUIT 
 +2        FOR K=0,.32,"ODS"
               SET X(K)=$SELECT($DATA(^DPT(DFN,K)):^(K),1:"")
 +3        SET DR=".01///"_$PIECE(X(0),"^",9)_";.02////"_$PIECE(X(0),"^",1)_";.03////"_$PIECE(X(0),"^",3)_";.04///"_$SELECT($PIECE(X(.32),"^",5):"/"_$PIECE(X(.32),"^",5),1:"@")_";.05///"_$SELECT($PIECE(X("ODS"),"^",3):"/"_$PIECE(X("ODS"),"^",3),1:"@")
 +4        SET DR=DR_";.06///"_$SELECT($PIECE(X("ODS"),"^",2)]"":"/"_$PIECE(X("ODS"),"^",2),1:"@")_";.07///"_$SELECT('$DATA(^DPT(DFN,"DAC")):"",$PIECE(^("DAC"),"^",1)]"":"/"_$PIECE(^("DAC"),"^",1),1:"@")_";1.01////3"
 +5        SET ^A1B2(11500.1,J,.11)=$SELECT($DATA(^DPT(DFN,.11)):^(.11),1:"")
           SET X=^(.11)
           SET $PIECE(^A1B2(11500.1,J,.11),"^",7)=$SELECT($DATA(^DIC(5,+$PIECE(X,"^",5),1,+$PIECE(X,"^",7),0)):$PIECE(^(0),"^",1),1:"")
 +6        QUIT 
 +7       ;
 +8       ;
2         ;Update admissions/discharges
 +1        SET XFR="AODS"_$SELECT(I=2:"A",1:"D")
           SET IFN=+$ORDER(^DGPM(XFR,J,0))
           IF '$DATA(^DGPM(IFN,0))
               QUIT 
 +2        FOR X=0,"ODS"
               SET X(X)=$SELECT($DATA(^DGPM(IFN,X)):^(X),1:"")
 +3        IF $PIECE(X("ODS"),"^",7)
               DO 3
               QUIT 
 +4        SET (X(1),X("ODS1"))=""
 +5        IF $PIECE(X(0),U,17)
               if $DATA(^DGPM($PIECE(X(0),U,17),0))
                   SET X(1)=^(0)
               if $DATA(^("ODS"))
                   SET X("ODS1")=^("ODS")
 +6        SET DGSPEC=$ORDER(^DGPM("APHY",IFN,0))
           SET DGSPEC=$SELECT($DATA(^DGPM(+DGSPEC,0)):$PIECE(^(0),"^",9),1:"")
           SET DGSPEC=$SELECT($DATA(^DIC(45.7,+DGSPEC,0)):$PIECE(^(0),"^",2),1:"")
 +7        SET DR=".01///"_+X(0)_";.03////"_DGSPEC_";.05////"_$SELECT($DATA(^DG(405.1,+$PIECE(X(1),"^",4),0)):$PIECE(^(0),"^",3),1:"")
 +8        SET DR=DR_";.06////"_$SELECT(+X(1):+X(1),1:"")_";.1////"_$SELECT($DATA(^DIC(4,+$PIECE(X(1),"^",5),0)):$PIECE(^(0),"^",1),1:"")_";.11////"_$PIECE(X("ODS1"),"^",2)_";1.01////3"
 +9        KILL DGSPEC
           QUIT 
 +10      ;
 +11      ;
3         ;Update displace patients
 +1        SET DR=".01///"_+X(0)_";.03////"_$PIECE(X("ODS"),"^",6)_";.1////"_$SELECT($DATA(^DIC(4,+$PIECE(X(0),"^",5),0)):$PIECE(^(0),"^"),1:"")_";.11////"_$PIECE(X("ODS"),"^",2)_";1.01////3"
 +2        QUIT 
 +3       ;
 +4       ;
4         ;get the DFN and multiple IFNs for registration option
 +1        NEW DFN
 +2        SET DFN=$ORDER(^DPT("AODSR",J,0))
           SET IFN=$ORDER(^(+DFN,0))
           IF IFN
               SET DIE="^A1B2(11500.4,"
               DO REG
 +3        KILL K
           QUIT 
 +4       ;
 +5       ;
REG       ;Update registrations
 +1        SET X=$SELECT($DATA(^DPT(DFN,"DIS",IFN,0)):^(0),1:"")
 +2        SET DR=".01///"_+X_";.05////"_$PIECE(X,"^",7)_";1.01////3"
           NEW I,J,K
           DO ^DIE
 +3        QUIT 
 +4       ;
 +5       ;
QUEUE     ; manually queue the ods background job
 +1        SET ZTRTN="A1B2BGJ"
           SET ZTDESC="ODS BACKGROUND JOB"
           SET ZTIO=""
 +2        DO ^%ZTLOAD
 +3        QUIT