- LRMIEDIM ;BPFO/DTG - LAB MICRO - LOOP ETIOLOGY FIELD FILE 61.2 FOR INACTIVE DATE ;08/15/2017
- ;;5.2;LAB SERVICE;**495**;Sep 27, 1994;Build 6
- ;
- ;associated to the [LRMI EDIT INACT DT MULTI 61.2] option
- ;
- ;This routine will go through the 61.2 by IDENTIFIER oldest to newest for those entries
- ;that do not have an INACTIVE DATE. The last entry (if the file for that combination was
- ;not complete) will be stored for upto 6 months so that when re-starting for that identifier
- ;it will allow to restart with that item if it does not have a inactive date or the next newest
- ;if it does. The person will also have the choice to start over from the oldest entry.
- ;
- Q
- ;
- EN ; entry point from option
- N DIR,DIRUT,DIC,A,B,LRXT,MSG,LRRUN,LR0,LRIDENT,LRIDNM,X,Y,DIE,DTOUT,DR,DA,LR6491
- EN1 S U="^" I $G(DT)="" S DT=$$DT^XLFDT
- S B=$$SITE^VASITE,B=$P(B,U,1),LRXT="LRENT-INACT"
- ;
- D ASKFILE
- I $D(DIRUT)!(Y="^") K MSG D G OUT
- . S MSG(1)="Identifier Type Not Selected. Quitting"
- . S MSG(2)=""
- . D DISP
- S LRIDENT=Y,LRIDNM=Y(0)
- K DIR,DIRUT
- ;get ^XTMP for identifier
- S LRRUN=0,A=$G(^XTMP(LRXT,0)),B=$G(^XTMP(LRXT,LRIDENT,0))
- I +B>0 S LRRUN=+B
- I A="" S $P(A,U,3)="Save of Etiology File 61.2 Identifiers for Inactive Date entry"
- S $P(A,U,1)=$$FMADD^XLFDT(DT,60),$P(A,U,2)=DT
- S ^XTMP(LRXT,0)=A,^XTMP(LRXT,LRIDENT,0)=LRRUN
- I LRRUN=0 D XSET(LRIDENT,"") G LOOP
- S A=$$GETVAL(LRRUN)
- K DIR,DIRUT S DIR(0)="SO^C:CONTINUE WITH "_$E($P(A,U,1),1,45)_" ["_(+B)_"];S:START OVER"
- S DIR("L",1)=" CONTINUE WITH "_$E($P(A,U,1),1,45)_" ["_(+B)_"] (C)"
- S DIR("L")=" START OVER (S)"
- D ^DIR
- I $D(DIRUT)!(Y="^") K MSG D G OUT
- . S MSG(1)="Continuation Method Not Selected. Quitting"
- . S MSG(2)=""
- . D DISP
- I $G(Y)="S" S LRRUN=0 G LOOP
- S LRRUN=LRRUN+1
- ;
- LOOP S LRRUN=$O(^LAB(61.2,LRRUN)) I 'LRRUN D XSET(LRIDENT,"") D G OUT
- . K MSG S MSG(1)="All Entries for the Selected Identifier ("_LRIDNM_") have been reviewed. Quitting"
- . S MSG(2)=""
- . D DISP
- S LR0=$G(^LAB(61.2,LRRUN,0)),LR6491=$G(^LAB(61.2,LRRUN,"64.91"))
- ; check if inactive date
- I $P(LR6491,U,2)'="" D XSET(LRIDENT,LRRUN) G LOOP
- ; check if right identifier
- I LRIDENT="X" G LP1
- I $P(LR0,U,5)=""&(LRIDENT="N") G LP1
- I $P(LR0,U,5)'=LRIDENT D XSET(LRIDENT,LRRUN) G LOOP
- ;
- LP1 ; ask inactive date
- ; first lock entry
- L +^LAB(61.2,LRRUN):60 I '$T D G OUT
- . K MSG S MSG(1)="Not Able to Lock Entry ("_$E($P(LR0,U,1),1,45)_" ["_LRRUN_"]). Quitting"
- . S MSG(2)=""
- . D DISP
- W !!,"Organism: ",$E($P(LR0,U,1),1,45)," (",LRRUN,")"
- K Y,DIE,DTOUT S DIE("NO^")="OUTOK",DIE="^LAB(61.2,",DA=LRRUN,DR="64.9102" D ^DIE
- L -^LAB(61.2,LRRUN)
- ; check if ^ was entered
- I $D(Y) D G OUT
- . K MSG S MSG(1)="An '^' was detected. Quitting"
- . S MSG(2)=""
- . D DISP
- D XSET(LRIDENT,LRRUN)
- G LOOP
- ;
- ASKFILE() ; Ask user to select Identifier
- K DIR,DIRUT
- S DIR(0)="SO^B:BACTERIUM;F:FUNGUS;P:PARASITE;M:MYCOBACTERIUM;V:VIRUS;C:CHEMICAL;D:DRUG;R:RICKETTSIAE;A:PHYSICAL AGENT;N:NULL;X:ALL"
- S DIR("L",1)=" BACTERIUM (B)"
- S DIR("L",2)=" FUNGUS (F)"
- S DIR("L",3)=" PARASITE (P)"
- S DIR("L",4)=" MYCOBACTERIUM (M)"
- S DIR("L",5)=" VIRUS (V)"
- S DIR("L",6)=" CHEMICAL (C)"
- S DIR("L",7)=" DRUG (D)"
- S DIR("L",8)=" RICKETTSIAE (R)"
- S DIR("L",9)=" PHYSICAL AGENT (A)"
- S DIR("L",10)=" NULL (N)"
- S DIR("L")=" ALL (X)"
- S DIR("A")="Enter the Identifier Name or Code "
- D ^DIR
- Q
- ;
- DISP ; display message
- D CLEAR^VALM1
- D BMES^XPDUTL(.MSG)
- Q
- ;
- GETVAL(C) ; get 61.2 info
- N A,B,D
- S A=$G(^LAB(61.2,C,0)),B=$G(^LAB(61.2,C,64.91))
- S D=$P(A,U,1)_U_$P(A,U,5)_U_$P(B,U,2)
- Q D
- ;
- OUT ; quit
- K DIR,DIRUT,DIC,A,B,LRXT,MSG,LRRUN,LR0,LRIDENT,LRIDNM,X,Y,DIE,DTOUT,DR,DA,LR6491,DIE("NO^")
- Q
- ;
- XSET(A,B) ; set into XTMP
- ; A - Identifier, B - value
- S ^XTMP(LRXT,A,0)=B
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRMIEDIM 3969 printed Mar 13, 2025@21:21:28 Page 2
- LRMIEDIM ;BPFO/DTG - LAB MICRO - LOOP ETIOLOGY FIELD FILE 61.2 FOR INACTIVE DATE ;08/15/2017
- +1 ;;5.2;LAB SERVICE;**495**;Sep 27, 1994;Build 6
- +2 ;
- +3 ;associated to the [LRMI EDIT INACT DT MULTI 61.2] option
- +4 ;
- +5 ;This routine will go through the 61.2 by IDENTIFIER oldest to newest for those entries
- +6 ;that do not have an INACTIVE DATE. The last entry (if the file for that combination was
- +7 ;not complete) will be stored for upto 6 months so that when re-starting for that identifier
- +8 ;it will allow to restart with that item if it does not have a inactive date or the next newest
- +9 ;if it does. The person will also have the choice to start over from the oldest entry.
- +10 ;
- +11 QUIT
- +12 ;
- EN ; entry point from option
- +1 NEW DIR,DIRUT,DIC,A,B,LRXT,MSG,LRRUN,LR0,LRIDENT,LRIDNM,X,Y,DIE,DTOUT,DR,DA,LR6491
- EN1 SET U="^"
- IF $GET(DT)=""
- SET DT=$$DT^XLFDT
- +1 SET B=$$SITE^VASITE
- SET B=$PIECE(B,U,1)
- SET LRXT="LRENT-INACT"
- +2 ;
- +3 DO ASKFILE
- +4 IF $DATA(DIRUT)!(Y="^")
- KILL MSG
- Begin DoDot:1
- +5 SET MSG(1)="Identifier Type Not Selected. Quitting"
- +6 SET MSG(2)=""
- +7 DO DISP
- End DoDot:1
- GOTO OUT
- +8 SET LRIDENT=Y
- SET LRIDNM=Y(0)
- +9 KILL DIR,DIRUT
- +10 ;get ^XTMP for identifier
- +11 SET LRRUN=0
- SET A=$GET(^XTMP(LRXT,0))
- SET B=$GET(^XTMP(LRXT,LRIDENT,0))
- +12 IF +B>0
- SET LRRUN=+B
- +13 IF A=""
- SET $PIECE(A,U,3)="Save of Etiology File 61.2 Identifiers for Inactive Date entry"
- +14 SET $PIECE(A,U,1)=$$FMADD^XLFDT(DT,60)
- SET $PIECE(A,U,2)=DT
- +15 SET ^XTMP(LRXT,0)=A
- SET ^XTMP(LRXT,LRIDENT,0)=LRRUN
- +16 IF LRRUN=0
- DO XSET(LRIDENT,"")
- GOTO LOOP
- +17 SET A=$$GETVAL(LRRUN)
- +18 KILL DIR,DIRUT
- SET DIR(0)="SO^C:CONTINUE WITH "_$EXTRACT($PIECE(A,U,1),1,45)_" ["_(+B)_"];S:START OVER"
- +19 SET DIR("L",1)=" CONTINUE WITH "_$EXTRACT($PIECE(A,U,1),1,45)_" ["_(+B)_"] (C)"
- +20 SET DIR("L")=" START OVER (S)"
- +21 DO ^DIR
- +22 IF $DATA(DIRUT)!(Y="^")
- KILL MSG
- Begin DoDot:1
- +23 SET MSG(1)="Continuation Method Not Selected. Quitting"
- +24 SET MSG(2)=""
- +25 DO DISP
- End DoDot:1
- GOTO OUT
- +26 IF $GET(Y)="S"
- SET LRRUN=0
- GOTO LOOP
- +27 SET LRRUN=LRRUN+1
- +28 ;
- LOOP SET LRRUN=$ORDER(^LAB(61.2,LRRUN))
- IF 'LRRUN
- DO XSET(LRIDENT,"")
- Begin DoDot:1
- +1 KILL MSG
- SET MSG(1)="All Entries for the Selected Identifier ("_LRIDNM_") have been reviewed. Quitting"
- +2 SET MSG(2)=""
- +3 DO DISP
- End DoDot:1
- GOTO OUT
- +4 SET LR0=$GET(^LAB(61.2,LRRUN,0))
- SET LR6491=$GET(^LAB(61.2,LRRUN,"64.91"))
- +5 ; check if inactive date
- +6 IF $PIECE(LR6491,U,2)'=""
- DO XSET(LRIDENT,LRRUN)
- GOTO LOOP
- +7 ; check if right identifier
- +8 IF LRIDENT="X"
- GOTO LP1
- +9 IF $PIECE(LR0,U,5)=""&(LRIDENT="N")
- GOTO LP1
- +10 IF $PIECE(LR0,U,5)'=LRIDENT
- DO XSET(LRIDENT,LRRUN)
- GOTO LOOP
- +11 ;
- LP1 ; ask inactive date
- +1 ; first lock entry
- +2 LOCK +^LAB(61.2,LRRUN):60
- IF '$TEST
- Begin DoDot:1
- +3 KILL MSG
- SET MSG(1)="Not Able to Lock Entry ("_$EXTRACT($PIECE(LR0,U,1),1,45)_" ["_LRRUN_"]). Quitting"
- +4 SET MSG(2)=""
- +5 DO DISP
- End DoDot:1
- GOTO OUT
- +6 WRITE !!,"Organism: ",$EXTRACT($PIECE(LR0,U,1),1,45)," (",LRRUN,")"
- +7 KILL Y,DIE,DTOUT
- SET DIE("NO^")="OUTOK"
- SET DIE="^LAB(61.2,"
- SET DA=LRRUN
- SET DR="64.9102"
- DO ^DIE
- +8 LOCK -^LAB(61.2,LRRUN)
- +9 ; check if ^ was entered
- +10 IF $DATA(Y)
- Begin DoDot:1
- +11 KILL MSG
- SET MSG(1)="An '^' was detected. Quitting"
- +12 SET MSG(2)=""
- +13 DO DISP
- End DoDot:1
- GOTO OUT
- +14 DO XSET(LRIDENT,LRRUN)
- +15 GOTO LOOP
- +16 ;
- ASKFILE() ; Ask user to select Identifier
- +1 KILL DIR,DIRUT
- +2 SET DIR(0)="SO^B:BACTERIUM;F:FUNGUS;P:PARASITE;M:MYCOBACTERIUM;V:VIRUS;C:CHEMICAL;D:DRUG;R:RICKETTSIAE;A:PHYSICAL AGENT;N:NULL;X:ALL"
- +3 SET DIR("L",1)=" BACTERIUM (B)"
- +4 SET DIR("L",2)=" FUNGUS (F)"
- +5 SET DIR("L",3)=" PARASITE (P)"
- +6 SET DIR("L",4)=" MYCOBACTERIUM (M)"
- +7 SET DIR("L",5)=" VIRUS (V)"
- +8 SET DIR("L",6)=" CHEMICAL (C)"
- +9 SET DIR("L",7)=" DRUG (D)"
- +10 SET DIR("L",8)=" RICKETTSIAE (R)"
- +11 SET DIR("L",9)=" PHYSICAL AGENT (A)"
- +12 SET DIR("L",10)=" NULL (N)"
- +13 SET DIR("L")=" ALL (X)"
- +14 SET DIR("A")="Enter the Identifier Name or Code "
- +15 DO ^DIR
- +16 QUIT
- +17 ;
- DISP ; display message
- +1 DO CLEAR^VALM1
- +2 DO BMES^XPDUTL(.MSG)
- +3 QUIT
- +4 ;
- GETVAL(C) ; get 61.2 info
- +1 NEW A,B,D
- +2 SET A=$GET(^LAB(61.2,C,0))
- SET B=$GET(^LAB(61.2,C,64.91))
- +3 SET D=$PIECE(A,U,1)_U_$PIECE(A,U,5)_U_$PIECE(B,U,2)
- +4 QUIT D
- +5 ;
- OUT ; quit
- +1 KILL DIR,DIRUT,DIC,A,B,LRXT,MSG,LRRUN,LR0,LRIDENT,LRIDNM,X,Y,DIE,DTOUT,DR,DA,LR6491,DIE("NO^")
- +2 QUIT
- +3 ;
- XSET(A,B) ; set into XTMP
- +1 ; A - Identifier, B - value
- +2 SET ^XTMP(LRXT,A,0)=B
- +3 QUIT