Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/CLINICAL_INFO_RESOURCE_NETWORK-MRF-RGE--RG--RGED--RGUT--RGWB/RGEVPRG.m

    r613 r623  
    1 RGEVPRG ;BAY/ALS-OPTIONS TO PURGE MPI/PD EXCEPTIONS ;08/23/99
    2         ;;1.0;CLINICAL INFO RESOURCE NETWORK;**3,12,19,32,35,43,44,50,52**;30 Apr 99;Build 2
    3         ;
    4 MAIN    ;
    5         ;Q:($D(^TMP("RGEXC")))!($D(^TMP("RGEXC2")))
    6         L +^RGHL7(991.1):0 I '$T Q
    7         L -^RGHL7(991.1)
    8         L +^RGHL7(991.1,"RG PURGE EXCEPTION"):5 E  Q
    9         I $D(ZTQUEUED) S ZTREQ="@"
    10         S $P(^RGSITE(991.8,1,"EXCPRG"),"^",1)=$$NOW^XLFDT
    11         S $P(^RGSITE(991.8,1,"EXCPRG"),"^",3)="R"
    12         ;D PROC  ;**52 Module is obsolete
    13         D PRGDUP
    14         D PRG30
    15         D PRGZZ
    16         S $P(^RGSITE(991.8,1,"EXCPRG"),"^",2)=$$NOW^XLFDT
    17         S $P(^RGSITE(991.8,1,"EXCPRG"),"^",3)="C"
    18         L -^RGHL7(991.1,"RG PURGE EXCEPTION")
    19         Q
    20 PRGPAT  ;Purge by Patient
    21         W !
    22         S DIC="^DPT(",DIC(0)="QEAM",DIC("A")="Select PATIENT: "
    23         D ^DIC K DIC G:Y<0 QUIT  S RGDFN=+Y
    24         S EXCT="",FLAG=0
    25         F  S EXCT=$O(^RGHL7(991.1,"ADFN",EXCT)) Q:EXCT=""  D
    26         . I $D(^RGHL7(991.1,"ADFN",EXCT,RGDFN)) S FLAG=1 Q
    27         I FLAG=0 W !,"There are no exceptions on file for this patient." G PRGPAT
    28         I $$IFLOCAL^MPIF001(RGDFN) W !,"This patient does not have a national ICN assigned, do not purge." Q
    29         S DFN=RGDFN D DEM^VADPT
    30         S DIR(0)="YA",DIR("B")="YES"
    31         S DIR("A")="Are you sure you want to purge all exceptions on file for "_VADM(1)_"?   YES//  "
    32         D ^DIR Q:$D(DIRUT)  I Y>0 D
    33         . S EXCT="",CNT=0
    34         . F  S EXCT=$O(^RGHL7(991.1,"ADFN",EXCT)) Q:'EXCT  D
    35         .. S IEN=0
    36         .. F  S IEN=$O(^RGHL7(991.1,"ADFN",EXCT,RGDFN,IEN)) Q:'IEN  D
    37         ... S IEN2=0
    38         ... F  S IEN2=$O(^RGHL7(991.1,"ADFN",EXCT,RGDFN,IEN,IEN2)) Q:'IEN2  D
    39         .... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
    40         .... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA S CNT=CNT+1
    41         .... E  I NUM>1 D DEL
    42         . W !,"All exceptions purged for "_VADM(1)_"   DFN: "_RGDFN
    43         K EXCT,DFN,FLAG,VADM,CNT,IEN,IEN2,NUM,RGDFN,Y
    44 QUIT    Q
    45         ;
    46 PRGDT   ; Purge by Date
    47         W !!,"Enter a date for the purge. All exceptions on file, on or before that date, will be deleted."
    48         K DIR,DIRUT,DTOUT,DUOUT
    49         S DIR(0)="DA^:DT:EPX",DIR("A")="Enter Date for Purge: "
    50         D ^DIR K DIR Q:$D(DIRUT)
    51         S PURDT=Y
    52         S PDATE=$$FMTE^XLFDT(PURDT)
    53         S DIR(0)="YA",DIR("B")="YES"
    54         S DIR("A")="Are you sure you want to purge all exceptions on file dated on or before "_PDATE_"?  YES//  "
    55         D ^DIR Q:$D(DIRUT)  I Y>0 D
    56         . S EXCDT="",CNT=0
    57         . F  S EXCDT=$O(^RGHL7(991.1,"AD",EXCDT)) Q:'EXCDT  D
    58         .. I ($P(EXCDT,".",1)=PURDT)!($P(EXCDT,".",1)<PURDT) D
    59         ... S IEN=0
    60         ... F  S IEN=$O(^RGHL7(991.1,"AD",EXCDT,IEN)) Q:'IEN  D
    61         .... S NUM="" S NUM=$P($G(^RGHL7(991.1,IEN,1,0)),"^",4) Q:NUM<1
    62         .... S CNT=CNT+NUM
    63         .... S DIK="^RGHL7(991.1,",DA=IEN
    64         .... D ^DIK K DIK,DA
    65         I CNT=0 W !,"There are no exceptions dated on or before "_PDATE_", no data to purge."
    66         E  I CNT>0 W !,CNT_" exceptions, dated on or before "_PDATE_" have been purged!"
    67         K PDATE,PURDT,EXCDT,CNT,IEN,NUM,Y
    68         Q
    69 PRG30     ; Purge Exceptions over 30 days old
    70         S TODAY=""
    71         S TODAY=$$NOW^XLFDT D
    72         . S EXCDT="",CNT=0,DIFF=""
    73         . F  S EXCDT=$O(^RGHL7(991.1,"AD",EXCDT)) Q:'EXCDT  D
    74         .. S DIFF=$$FMDIFF^XLFDT(TODAY,EXCDT)
    75         .. I DIFF>30 D
    76         ... S IEN=0
    77         ... F  S IEN=$O(^RGHL7(991.1,"AD",EXCDT,IEN)) Q:'IEN  D
    78         .... S NUM="" S NUM=$P($G(^RGHL7(991.1,IEN,1,0)),"^",4) Q:'NUM
    79         .... S IEN2=0
    80         .... F  S IEN2=$O(^RGHL7(991.1,IEN,1,IEN2)) Q:'IEN2  D
    81         ..... S STAT=""
    82         ..... S STAT=$P(^RGHL7(991.1,IEN,1,IEN2,0),"^",5)
    83         ..... ; Only delete PROCESSED exceptions
    84         ..... I (STAT>0)!(STAT="") D
    85         ...... I NUM>1 D DEL
    86         ...... E  I NUM=1 D
    87         ....... S CNT=CNT+NUM
    88         ....... S DIK="^RGHL7(991.1,",DA=IEN
    89         ....... D ^DIK K DIK,DA
    90         K DIFF,TODAY,EXCDT,CNT,IEN,IEN2,NUM,STAT
    91         Q
    92 PRGEXC  ; Purge by Exception Type
    93         ;**52 This module was obsolete before 52; just adding comment
    94         ;S DIC="^RGHL7(991.11,",DIC(0)="QEAM"
    95         ;S DIC("A")="Enter an exception type to purge: "
    96         ;D ^DIC K DIC G:Y<200 QUIT  S EXCTYP=+Y,ETYPE=X
    97         ;S DIR(0)="YA",DIR("B")="YES"
    98         ;S DIR("A")="*WARNING* This will permanently delete all "_ETYPE_" exceptions. Are you sure you want to do this?  YES//  "
    99         ;D ^DIR Q:$D(DIRUT)  I Y>0 D
    100         ;. S CNT=0,IEN=""
    101         ;. F  S IEN=$O(^RGHL7(991.1,"AC",EXCTYP,IEN)) Q:'IEN  D
    102         ;.. S IEN2=0
    103         ;.. F  S IEN2=$O(^RGHL7(991.1,"AC",EXCTYP,IEN,IEN2)) Q:'IEN2  D
    104         ;... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
    105         ;... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA S CNT=CNT+1
    106         ;... E  I NUM>1 D DEL
    107         ;I CNT=0 W !,"There are no "_ETYPE_" exceptions on file."
    108         ;E  I CNT>0 W !,CNT_" "_ETYPE_" Exceptions purged!"
    109         ;K ETYPE,CNT,IEN,IEN2,NUM,X,Y
    110         Q  ;**52;if module accidentally called, should quit instead of falling into next module.
    111 PRGDUP  ;Purge Duplicate Entries; retain most recent for all except types.
    112         ;**50 through remainder of module.
    113         S EXCTYP="",CNT=0
    114         K ^TMP("RGEVDUP",$J)
    115         F  S EXCTYP=$O(^RGHL7(991.1,"ADFN",EXCTYP)) Q:'EXCTYP  D
    116         . S RGDFN=""
    117         . F  S RGDFN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN)) Q:'RGDFN  D
    118         .. S IEN=0
    119         .. F  S IEN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN)) Q:'IEN  D
    120         ... S IEN2=0
    121         ... F  S IEN2=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN,IEN2)) Q:'IEN2  D
    122         .... I $P($G(^RGHL7(991.1,IEN,1,IEN2,0)),"^",5)=1 K ^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN,IEN2) Q  ;exception processed
    123         .... S EXCDT=$P($G(^RGHL7(991.1,IEN,0)),"^",3) ;incoming date
    124         .... I '$D(^TMP("RGEVDUP",$J,RGDFN,EXCTYP)) D  Q
    125         ..... S ^TMP("RGEVDUP",$J,RGDFN,EXCTYP)=EXCDT_"^"_IEN_"^"_IEN2
    126         .... I $D(^TMP("RGEVDUP",$J,RGDFN,EXCTYP)) D  ;duplicate exists; compare incoming to previous.
    127         ..... S OLDNODE=^TMP("RGEVDUP",$J,RGDFN,EXCTYP)
    128         ..... S OLDDT=$P(OLDNODE,"^"),OLDIEN=$P(OLDNODE,"^",2),OLDIEN2=$P(OLDNODE,"^",3)
    129         ..... I EXCDT>OLDDT D  Q  ;incoming date greater than previous? purge old, keep new.
    130         ...... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
    131         ...... I NUM=1 S DIK="^RGHL7(991.1,",DA=OLDIEN D ^DIK K DIK,DA
    132         ...... I NUM>1 D
    133         ....... S DA(1)=OLDIEN,DA=OLDIEN2
    134         ....... S DIK="^RGHL7(991.1,"_DA(1)_",1," D ^DIK K DIK,DA
    135         ...... S ^TMP("RGEVDUP",$J,RGDFN,EXCTYP)=EXCDT_"^"_IEN_"^"_IEN2
    136         ..... ;
    137         ..... I OLDDT>EXCDT!(OLDDT=EXCDT) D  ;previous date greater or equal incoming? purge new, keep old.
    138         ...... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
    139         ...... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA
    140         ...... I NUM>1 D DEL
    141         ...... ;
    142         K CNT,EXCDT,EXCTYP,IEN,IEN2,NUM,OLDDT,OLDIEN,OLDIEN2,OLDNODE,RGDFN,RGDT,^TMP("RGEVDUP")
    143         Q
    144         ;
    145 PRGZZ   ;Purge if name field is null (incomplete record)
    146         ;Purge if -9 node exists, this indicates the record has been merged.
    147         S EXCTYP="",CNT=""
    148         F  S EXCTYP=$O(^RGHL7(991.1,"ADFN",EXCTYP)) Q:'EXCTYP  D
    149         . S RGDFN=""
    150         . F  S RGDFN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN)) Q:'RGDFN  D
    151         .. S IEN=0
    152         .. F  S IEN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN)) Q:'IEN  D
    153         ... S IEN2=0
    154         ... F  S IEN2=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN,IEN2)) Q:'IEN2  D
    155         .... S DFN=RGDFN D DEM^VADPT
    156         .... I VADM(1)=""!($D(^DPT(RGDFN,-9))) D
    157         ..... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
    158         ..... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA
    159         ..... E  I NUM>1 D DEL
    160         K EXCTYP,RGDFN,DFN,IEN,IEN2,NUM,VADM
    161         Q
    162 DEL     ;
    163         S CNT=CNT+1
    164         S DA(1)=IEN,DA=IEN2
    165         S DIK="^RGHL7(991.1,"_DA(1)_",1,"
    166         D ^DIK K DIK,DA
    167         Q
    168 PROC    ;Set these exception types to PROCESSED if they have a national ICN
    169         ;**52 The PROC module is obsolete and is no longer being called.
    170         ;209 - Required field(s) missing for patient sent to MPI,
    171         ;227 - Multiple ICNs, 213 - SSN Match Failed, 214 - Name Doesn't Match
    172         ;S EXCTYP=""
    173         ;S HOME=$$SITE^VASITE()
    174         ;F  S EXCTYP=$O(^RGHL7(991.1,"AC",EXCTYP)) Q:'EXCTYP  D
    175         ;. I (EXCTYP=209)!(EXCTYP=227)!(EXCTYP=213)!(EXCTYP=214) D  ;**43
    176         ;.. S IEN=0
    177         ;.. F  S IEN=$O(^RGHL7(991.1,"AC",EXCTYP,IEN)) Q:'IEN  D
    178         ;... S IEN2=0,ICN="",RGDFN=""
    179         ;... F  S IEN2=$O(^RGHL7(991.1,"AC",EXCTYP,IEN,IEN2)) Q:'IEN2  D
    180         ;.... S RGDFN=$P(^RGHL7(991.1,IEN,1,IEN2,0),"^",4) Q:'RGDFN
    181         ;.... S ICN=+$$GETICN^MPIF001(RGDFN)
    182         ;.... I $E(ICN,1,3)'=$E($P(HOME,"^",3),1,3)&(ICN>0) D
    183         ;..... L +^RGHL7(991.1,IEN):10
    184         ;..... S DA(1)=IEN,DA=IEN2,DR="6///"_1,DIE="^RGHL7(991.1,"_DA(1)_",1,"
    185         ;..... D ^DIE K DIE,DA,DR
    186         ;..... L -^RGHL7(991.1,IEN)
    187         ;K EXCTYP,HOME,ICN,IEN,IEN2,RGDFN
    188         Q
     1RGEVPRG ;BAY/ALS-OPTIONS TO PURGE MPI/PD EXCEPTIONS ;08/23/99
     2 ;;1.0;CLINICAL INFO RESOURCE NETWORK;**3,12,19,32,35,43,44**;30 Apr 99;Build 8
     3 ;
     4MAIN ;
     5 ;Q:($D(^TMP("RGEXC")))!($D(^TMP("RGEXC2")))
     6 L +^RGHL7(991.1):0 I '$T Q
     7 L -^RGHL7(991.1)
     8 L +^RGHL7(991.1,"RG PURGE EXCEPTION"):5 E  Q
     9 I $D(ZTQUEUED) S ZTREQ="@"
     10 S $P(^RGSITE(991.8,1,"EXCPRG"),"^",1)=$$NOW^XLFDT
     11 S $P(^RGSITE(991.8,1,"EXCPRG"),"^",3)="R"
     12 D PROC
     13 D PRGDUP
     14 D PRG30
     15 D PRGZZ
     16 S $P(^RGSITE(991.8,1,"EXCPRG"),"^",2)=$$NOW^XLFDT
     17 S $P(^RGSITE(991.8,1,"EXCPRG"),"^",3)="C"
     18 L -^RGHL7(991.1,"RG PURGE EXCEPTION")
     19 Q
     20PRGPAT ;Purge by Patient
     21 W !
     22 S DIC="^DPT(",DIC(0)="QEAM",DIC("A")="Select PATIENT: "
     23 D ^DIC K DIC G:Y<0 QUIT  S RGDFN=+Y
     24 S EXCT="",FLAG=0
     25 F  S EXCT=$O(^RGHL7(991.1,"ADFN",EXCT)) Q:EXCT=""  D
     26 . I $D(^RGHL7(991.1,"ADFN",EXCT,RGDFN)) S FLAG=1 Q
     27 I FLAG=0 W !,"There are no exceptions on file for this patient." G PRGPAT
     28 I $$IFLOCAL^MPIF001(RGDFN) W !,"This patient does not have a national ICN assigned, do not purge." Q
     29 S DFN=RGDFN D DEM^VADPT
     30 S DIR(0)="YA",DIR("B")="YES"
     31 S DIR("A")="Are you sure you want to purge all exceptions on file for "_VADM(1)_"?   YES//  "
     32 D ^DIR Q:$D(DIRUT)  I Y>0 D
     33 . S EXCT="",CNT=0
     34 . F  S EXCT=$O(^RGHL7(991.1,"ADFN",EXCT)) Q:'EXCT  D
     35 .. S IEN=0
     36 .. F  S IEN=$O(^RGHL7(991.1,"ADFN",EXCT,RGDFN,IEN)) Q:'IEN  D
     37 ... S IEN2=0
     38 ... F  S IEN2=$O(^RGHL7(991.1,"ADFN",EXCT,RGDFN,IEN,IEN2)) Q:'IEN2  D
     39 .... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
     40 .... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA S CNT=CNT+1
     41 .... E  I NUM>1 D DEL
     42 . W !,"All exceptions purged for "_VADM(1)_"   DFN: "_RGDFN
     43 K EXCT,DFN,FLAG,VADM,CNT,IEN,IEN2,NUM,RGDFN,Y
     44QUIT Q
     45 ;
     46PRGDT ; Purge by Date
     47 W !!,"Enter a date for the purge. All exceptions on file, on or before that date, will be deleted."
     48 K DIR,DIRUT,DTOUT,DUOUT
     49 S DIR(0)="DA^:DT:EPX",DIR("A")="Enter Date for Purge: "
     50 D ^DIR K DIR Q:$D(DIRUT)
     51 S PURDT=Y
     52 S PDATE=$$FMTE^XLFDT(PURDT)
     53 S DIR(0)="YA",DIR("B")="YES"
     54 S DIR("A")="Are you sure you want to purge all exceptions on file dated on or before "_PDATE_"?  YES//  "
     55 D ^DIR Q:$D(DIRUT)  I Y>0 D
     56 . S EXCDT="",CNT=0
     57 . F  S EXCDT=$O(^RGHL7(991.1,"AD",EXCDT)) Q:'EXCDT  D
     58 .. I ($P(EXCDT,".",1)=PURDT)!($P(EXCDT,".",1)<PURDT) D
     59 ... S IEN=0
     60 ... F  S IEN=$O(^RGHL7(991.1,"AD",EXCDT,IEN)) Q:'IEN  D
     61 .... S NUM="" S NUM=$P($G(^RGHL7(991.1,IEN,1,0)),"^",4) Q:NUM<1
     62 .... S CNT=CNT+NUM
     63 .... S DIK="^RGHL7(991.1,",DA=IEN
     64 .... D ^DIK K DIK,DA
     65 I CNT=0 W !,"There are no exceptions dated on or before "_PDATE_", no data to purge."
     66 E  I CNT>0 W !,CNT_" exceptions, dated on or before "_PDATE_" have been purged!"
     67 K PDATE,PURDT,EXCDT,CNT,IEN,NUM,Y
     68 Q
     69PRG30   ; Purge Exceptions over 30 days old
     70 S TODAY=""
     71 S TODAY=$$NOW^XLFDT D
     72 . S EXCDT="",CNT=0,DIFF=""
     73 . F  S EXCDT=$O(^RGHL7(991.1,"AD",EXCDT)) Q:'EXCDT  D
     74 .. S DIFF=$$FMDIFF^XLFDT(TODAY,EXCDT)
     75 .. I DIFF>30 D
     76 ... S IEN=0
     77 ... F  S IEN=$O(^RGHL7(991.1,"AD",EXCDT,IEN)) Q:'IEN  D
     78 .... S NUM="" S NUM=$P($G(^RGHL7(991.1,IEN,1,0)),"^",4) Q:'NUM
     79 .... S IEN2=0
     80 .... F  S IEN2=$O(^RGHL7(991.1,IEN,1,IEN2)) Q:'IEN2  D
     81 ..... S STAT=""
     82 ..... S STAT=$P(^RGHL7(991.1,IEN,1,IEN2,0),"^",5)
     83 ..... ; Only delete PROCESSED exceptions
     84 ..... I (STAT>0)!(STAT="") D
     85 ...... I NUM>1 D DEL
     86 ...... E  I NUM=1 D
     87 ....... S CNT=CNT+NUM
     88 ....... S DIK="^RGHL7(991.1,",DA=IEN
     89 ....... D ^DIK K DIK,DA
     90 K DIFF,TODAY,EXCDT,CNT,IEN,IEN2,NUM,STAT
     91 Q
     92PRGEXC ; Purge by Exception Type
     93 ;S DIC="^RGHL7(991.11,",DIC(0)="QEAM"
     94 ;S DIC("A")="Enter an exception type to purge: "
     95 ;D ^DIC K DIC G:Y<200 QUIT  S EXCTYP=+Y,ETYPE=X
     96 ;S DIR(0)="YA",DIR("B")="YES"
     97 ;S DIR("A")="*WARNING* This will permanently delete all "_ETYPE_" exceptions. Are you sure you want to do this?  YES//  "
     98 ;D ^DIR Q:$D(DIRUT)  I Y>0 D
     99 ;. S CNT=0,IEN=""
     100 ;. F  S IEN=$O(^RGHL7(991.1,"AC",EXCTYP,IEN)) Q:'IEN  D
     101 ;.. S IEN2=0
     102 ;.. F  S IEN2=$O(^RGHL7(991.1,"AC",EXCTYP,IEN,IEN2)) Q:'IEN2  D
     103 ;... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
     104 ;... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA S CNT=CNT+1
     105 ;... E  I NUM>1 D DEL
     106 ;I CNT=0 W !,"There are no "_ETYPE_" exceptions on file."
     107 ;E  I CNT>0 W !,CNT_" "_ETYPE_" Exceptions purged!"
     108 ;K ETYPE,CNT,IEN,IEN2,NUM,X,Y
     109 ;Q
     110PRGDUP ; Purge Duplicate Entries; retain most recent for all types except 234.
     111 S EXCTYP="",CNT=0
     112 K ^TMP("RGEVDUP",$J)
     113 F  S EXCTYP=$O(^RGHL7(991.1,"ADFN",EXCTYP)) Q:'EXCTYP  D
     114 . I EXCTYP=234 Q  ;**44 process 234s separately below
     115 . S RGDFN=""
     116 . F  S RGDFN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN)) Q:'RGDFN  D
     117 .. S IEN=0
     118 .. F  S IEN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN)) Q:'IEN  D
     119 ... S IEN2=0
     120 ... F  S IEN2=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN,IEN2)) Q:'IEN2  D
     121 .... S EXCDT=$P(^RGHL7(991.1,IEN,0),"^",3)
     122 .... I '$D(^TMP("RGEVDUP",$J,RGDFN,EXCTYP)) D  Q
     123 ..... S ^TMP("RGEVDUP",$J,RGDFN,EXCTYP)=EXCDT_"^"_IEN_"^"_IEN2
     124 .... I $D(^TMP("RGEVDUP",$J,RGDFN,EXCTYP)) D
     125 ..... S OLDNODE=^TMP("RGEVDUP",$J,RGDFN,EXCTYP)
     126 ..... S OLDDT=$P(OLDNODE,"^")
     127 ..... I EXCDT>OLDDT D  Q
     128 ...... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
     129 ...... I NUM=1 S DIK="^RGHL7(991.1,",DA=$P(OLDNODE,"^",2) D ^DIK K DIK,DA
     130 ...... E  I NUM>1 D
     131 ....... S DA(1)=$P(OLDNODE,"^",2),DA=$P(OLDNODE,"^",3)
     132 ....... S DIK="^RGHL7(991.1,"_DA(1)_",1," D ^DIK K DIK,DA
     133 ...... S CNT=CNT+1
     134 ...... S ^TMP("RGEVDUP",$J,RGDFN,EXCTYP)=EXCDT_"^"_IEN_"^"_IEN2
     135 ..... I OLDDT>EXCDT!(OLDDT=EXCDT) D
     136 ...... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
     137 ...... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA S CNT=CNT+1
     138 ...... E  I NUM>1 D DEL
     139 ; W !,CNT_" Duplicate entries"
     140 ;Process PRIMARY VIEW REJECT (234) duplicates; purge if for SAME day.
     141 ;**44 through remainder of module.
     142 K ^TMP("RGDFNDT",$J) S RGDFN=""
     143 F  S RGDFN=$O(^RGHL7(991.1,"ADFN",234,RGDFN)) Q:'RGDFN  D
     144 .S IEN=0
     145 .F  S IEN=$O(^RGHL7(991.1,"ADFN",234,RGDFN,IEN)) Q:'IEN  D
     146 ..S IEN2=0
     147 ..F  S IEN2=$O(^RGHL7(991.1,"ADFN",234,RGDFN,IEN,IEN2)) Q:'IEN2  D
     148 ...S EXCDT=$P(^RGHL7(991.1,IEN,0),"^",3)
     149 ...;How many for each DFN? Store in ^TMP("RGDFNDT")
     150 ...I '$D(^TMP("RGDFNDT",$J,RGDFN)) S ^TMP("RGDFNDT",$J,RGDFN)=0
     151 ...I $D(^TMP("RGDFNDT",$J,RGDFN)) D
     152 ....S ^TMP("RGDFNDT",$J,RGDFN)=^TMP("RGDFNDT",$J,RGDFN)+1
     153 ....S ^TMP("RGDFNDT",$J,RGDFN,IEN,IEN2)=$P(EXCDT,".") ;date only/no time
     154 ;If RGDFN has more than 1 exception, see if any are for same DAY.
     155 ;Process the ^TMP("RGDFNDT",$J global to build LOC array.
     156 I $D(^TMP("RGDFNDT",$J)) D
     157 .S RGDFN=""
     158 .F  S RGDFN=$O(^TMP("RGDFNDT",$J,RGDFN)) Q:'RGDFN  D
     159 ..;If only one 234 exception for DFN ignore it.
     160 ..I ^TMP("RGDFNDT",$J,RGDFN)=1 Q
     161 ..;More than one for this DFN?  How many for same day?
     162 ..S IEN=0 K LOC
     163 ..F  S IEN=$O(^TMP("RGDFNDT",$J,RGDFN,IEN)) Q:'IEN  D
     164 ...S (IEN2,VAL)=0
     165 ...F  S IEN2=$O(^TMP("RGDFNDT",$J,RGDFN,IEN,IEN2)) Q:'IEN2  D
     166 ....S VAL=$P(^TMP("RGDFNDT",$J,RGDFN,IEN,IEN2),"^")
     167 ....I '$D(LOC(VAL)) S LOC(VAL)=0
     168 ....I $D(LOC(VAL)) D
     169 .....S LOC(VAL)=LOC(VAL)+1
     170 .....S LOC(VAL,IEN,IEN2)=""
     171 ..;Process the LOC array; contains numbers / day / DFN.
     172 ..;If only 1 exception / day, keep it.
     173 ..S RGDT=0 K CTR,TOT
     174 ..F  S RGDT=$O(LOC(RGDT)) Q:'RGDT  D
     175 ...S TOT=LOC(RGDT)
     176 ...I TOT=1 K TOT Q  ;only 1.
     177 ...;More than 1, delete all except 1.
     178 ...S TOT=TOT-1 ;leave 1; doesn't matter which - all are same day.
     179 ...S IEN=0,CTR=0
     180 ...F  S IEN=$O(LOC(RGDT,IEN)) Q:'IEN  D
     181 ....I CTR=TOT Q
     182 ....S CTR=CTR+1,IEN2=0
     183 ....F  S IEN2=$O(LOC(RGDT,IEN,IEN2)) Q:'IEN2  D DEL ;delete entry
     184 K CNT,CTR,EXCDT,IEN,IEN2,LOC,NUM,OLDDT,OLDNODE,RGDFN,RGDT,TOT,VAL,^TMP("RGDFNDT")
     185 Q
     186PRGZZ ;Purge if name field is null (incomplete record)
     187 ;Purge if -9 node exists, this indicates the record has been merged.
     188 S EXCTYP="",CNT=""
     189 F  S EXCTYP=$O(^RGHL7(991.1,"ADFN",EXCTYP)) Q:'EXCTYP  D
     190 . S RGDFN=""
     191 . F  S RGDFN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN)) Q:'RGDFN  D
     192 .. S IEN=0
     193 .. F  S IEN=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN)) Q:'IEN  D
     194 ... S IEN2=0
     195 ... F  S IEN2=$O(^RGHL7(991.1,"ADFN",EXCTYP,RGDFN,IEN,IEN2)) Q:'IEN2  D
     196 .... S DFN=RGDFN D DEM^VADPT
     197 .... I VADM(1)=""!($D(^DPT(RGDFN,-9))) D
     198 ..... S NUM="" S NUM=$P(^RGHL7(991.1,IEN,1,0),"^",4)
     199 ..... I NUM=1 S DIK="^RGHL7(991.1,",DA=IEN D ^DIK K DIK,DA
     200 ..... E  I NUM>1 D DEL
     201 K EXCTYP,RGDFN,DFN,IEN,IEN2,NUM,VADM
     202 Q
     203DEL ;
     204 S CNT=CNT+1
     205 S DA(1)=IEN,DA=IEN2
     206 S DIK="^RGHL7(991.1,"_DA(1)_",1,"
     207 D ^DIK K DIK,DA
     208 Q
     209PROC ;Set these exception types to PROCESSED if they have a national ICN
     210 ;209 - Required field(s) missing for patient sent to MPI,
     211 ;227 - Multiple ICNs, 213 - SSN Match Failed, 214 - Name Doesn't Match
     212 S EXCTYP=""
     213 S HOME=$$SITE^VASITE()
     214 F  S EXCTYP=$O(^RGHL7(991.1,"AC",EXCTYP)) Q:'EXCTYP  D
     215 . I (EXCTYP=209)!(EXCTYP=227)!(EXCTYP=213)!(EXCTYP=214) D  ;**43
     216 .. S IEN=0
     217 .. F  S IEN=$O(^RGHL7(991.1,"AC",EXCTYP,IEN)) Q:'IEN  D
     218 ... S IEN2=0,ICN="",RGDFN=""
     219 ... F  S IEN2=$O(^RGHL7(991.1,"AC",EXCTYP,IEN,IEN2)) Q:'IEN2  D
     220 .... S RGDFN=$P(^RGHL7(991.1,IEN,1,IEN2,0),"^",4) Q:'RGDFN
     221 .... S ICN=+$$GETICN^MPIF001(RGDFN)
     222 .... I $E(ICN,1,3)'=$E($P(HOME,"^",3),1,3)&(ICN>0) D
     223 ..... L +^RGHL7(991.1,IEN):10
     224 ..... S DA(1)=IEN,DA=IEN2,DR="6///"_1,DIE="^RGHL7(991.1,"_DA(1)_",1,"
     225 ..... D ^DIE K DIE,DA,DR
     226 ..... L -^RGHL7(991.1,IEN)
     227 K EXCTYP,HOME,ICN,IEN,IEN2,RGDFN
     228 Q
Note: See TracChangeset for help on using the changeset viewer.