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_REMINDERS-PXRM/PXRMETH.m

    r613 r623  
    1 PXRMETH ; SLC/PJH - Reminder Extract History ;10/11/2007
    2         ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
    3         ;
    4         ;Main entry point for PXRM EXTRACT HISTORY
    5 START(EDIEN)    ;
    6         ;EDIEN is the extract definition IEN.
    7         N VALMBCK,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD
    8         ;Details of last run
    9         N DATA,NPERIOD,NSDATE,NTAS,PXRMVIEW
    10         S DATA=$G(^PXRM(810.2,EDIEN,0))
    11         S NPERIOD=$P(DATA,U,6),NSDATE=$P(DATA,U,7)
    12         ;Default view is in date created order
    13         S PXRMVIEW="D"
    14         S X="IORESET"
    15         D ENDR^%ZISS
    16         S VALMCNT=0
    17         D EN^VALM("PXRM EXTRACT HISTORY")
    18         Q
    19         ;
    20 DELETE  ;Delete an extract, called by protocol PXRM EXTRACT SUMMARY DELETE.
    21         N CLASS,IEN,IENLIST,IND
    22         S IENLIST=$$LMSEL
    23         F IND=1:1:$L(IENLIST,U) D
    24         .S IEN=$P(IENLIST,U,IND)
    25         .D DELETE^PXRMETXU(IEN)
    26         ;Rebuild workfile
    27         D BLDLIST^PXRMETH1(EDIEN)
    28         ;Refresh
    29         S VALMBCK="R"
    30         Q
    31         ;
    32 ENTRY   ;Entry code
    33         D BLDLIST^PXRMETH1(EDIEN),XQORM
    34         Q
    35         ;
    36 EXIT    ;Exit code
    37         K ^TMP("PXRMETH",$J)
    38         K ^TMP("PXRMETHH",$J)
    39         D CLEAN^VALM10
    40         D FULL^VALM1
    41         S VALMBCK="Q"
    42         Q
    43         ;
    44 EXTRACT(EDIEN)  ;Run Extract/Transmission
    45         ;Reset screen mode
    46         W IORESET
    47         ;Refresh on exit
    48         S VALMBCK="R"
    49         ;
    50         ;Get details from parameter file
    51         N ANS,DATA,DUOUT,DTOUT,EDATE,EXSUMPUG,FREQ,MODE
    52         N NAME,NAT,NEXT,PLISTPUG,RTN,REPL,STATUS,SNEXT,TEXT,XMIT
    53         S DATA=$G(^PXRM(810.2,EDIEN,0))
    54         S NAT=$P($G(^PXRM(810.2,EDIEN,100)),U)
    55         ;Determine Extract Name and Frequency
    56         S NAME=$P(DATA,U),FREQ=$P(DATA,U,3),NEXT=$P(DATA,U,6),RTN="PXRMETX"
    57         ;Save next scheduled extract
    58         S SNEXT=NEXT
    59         ;Select extract period
    60 EXSEL   D SELECT(FREQ,.NEXT) Q:$D(DUOUT)!$D(DTOUT)
    61         ;Warn if period is still open
    62         D WARN(NEXT,.STATUS)
    63         ;Option to continue
    64         S TEXT="Are you sure you want to run a "_NAME_" extract for "_$TR(NEXT,"/"," ")
    65 SURE    ;
    66         S ANS=$$ASKYN^PXRMEUT("N",TEXT,RTN,1) Q:$D(DUOUT)!$D(DTOUT)  Q:'ANS
    67         ;Purge options
    68 PLIST   ;
    69         S PLISTPUG="N" D ASK^PXRMXD(.PLISTPUG,"Purge Patient List after 5 years?: ",5)
    70         G:$D(DUOUT) SURE Q:$D(DTOUT)
    71         S EXSUMPUG="N" D ASK^PXRMXD(.EXSUMPUG,"Purge Extract Summary after 5 years?: ",5)
    72         G:$D(DUOUT) PLIST Q:$D(DTOUT)
    73         ;Option to transmit
    74         S TEXT="Transmit extract results to AAC"
    75         I NAT="N" S XMIT=$$ASKYN^PXRMEUT("N",TEXT,RTN,3) Q:$D(DUOUT)!$D(DTOUT)
    76         E  S XMIT=0
    77         ;Option to replace scheduled run
    78         S REPL=0
    79         I XMIT,SNEXT=NEXT,STATUS="COMPLETE" D  Q:$D(DUOUT)!$D(DTOUT)
    80         .S TEXT="Does this extract replace the scheduled extract"
    81         .S REPL=$$ASKYN^PXRMEUT("N",TEXT,RTN,4) Q:$D(DUOUT)!$D(DTOUT)
    82         ;
    83         ;Note that the manual extract does not update 810.2
    84         ;exept if the selected period is the same as the scheduled
    85         ;period AND this period is complete
    86         ;
    87         ;Default is to extract and transmit and not update 810.2
    88         S MODE=2 I 'XMIT S MODE=3
    89         ;Update 810.2 if this extract is for current completed period
    90         I REPL S MODE=0 I 'XMIT S MODE=1
    91         ;
    92         ;Extract/transmission run
    93         N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
    94         S ZTDESC="Reminder Extract "_NAME
    95         S ZTRTN="RUN^PXRMETX(EDIEN,NEXT,MODE,EXSUMPUG)"
    96         S ZTSAVE("EDIEN")=""
    97         S ZTSAVE("MODE")=""
    98         S ZTSAVE("NEXT")=""
    99         S ZTSAVE("PLISTPUG")=""
    100         S ZTSAVE("EXSUMPUG")=""
    101         S ZTIO=""
    102         ;
    103         ;Select and verify start date/time for task
    104         N DIR,DTOUT,DUOUT,MINDT,SDTIME,STIME,X,Y
    105         S MINDT=$$NOW^XLFDT
    106         W !,"Queue a "_ZTDESC_" for "_NEXT
    107         S DIR("A",1)="Enter the date and time you want the job to start."
    108         S DIR("A",2)="It must be after "_$$FMTE^XLFDT(MINDT,"5Z")
    109         S DIR("A")="Start the task at: "
    110         S DIR(0)="DAU"_U_MINDT_"::RSX"
    111         D ^DIR
    112         I $D(DTOUT)!$D(DUOUT) Q
    113         S SDTIME=Y
    114         ;
    115         ;Put the task into the queue.
    116         S ZTDTH=SDTIME
    117         D ^%ZTLOAD
    118         W !,"Task number ",ZTSK," queued." H 2
    119         S VALMBCK="Q"
    120         Q
    121         ;
    122 HDR     ; Header code
    123         N VIEW
    124         S VIEW=$S(PXRMVIEW="D":"Creation Date Order",1:"Extract Period Order")
    125         S VALMHDR(2)="          Extract Name: "_$P($G(^PXRM(810.2,EDIEN,0)),U)
    126         S VALMHDR(3)="   Next Extract Period: "_NPERIOD
    127         S VALMHDR(4)="      Scheduled to Run: "_$$FMTE^XLFDT(NSDATE,"5Z")
    128         S VALMHDR(4)=$$LJ^XLFSTR(VALMHDR(4),45)_"    View: "_VIEW
    129         S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
    130         Q
    131         ;
    132 HLP     ;Help code
    133         N ORU,ORUPRMT,SUB,XQORM
    134         S SUB="PXRMETHH"
    135         D EN^VALM("PXRM EXTRACT HELP")
    136         Q
    137         ;
    138 INIT    ;Init
    139         S VALMCNT=0
    140         Q
    141         ;
    142 LMSEL() ;Return selection list
    143         N IENLIST,IND,VALMY,XIEN
    144         D EN^VALM2(XQORNOD(0))
    145         ;If there is no list quit.
    146         I '$D(VALMY) Q ""
    147         S PXRMDONE=0,IENLIST=""
    148         S IND=""
    149         F  S IND=$O(VALMY(IND)) Q:(+IND=0)!(PXRMDONE)  D
    150         .;Get the ien.
    151         .S XIEN=^TMP("PXRMETH",$J,"SEL",IND)
    152         .S IENLIST=$S(IENLIST'="":IENLIST_U_XIEN,1:XIEN)
    153         Q IENLIST
    154         ;
    155 PEXIT   ;PXRM EXCH MENU protocol exit code
    156         S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
    157         D XQORM
    158         Q
    159         ;
    160 SELECT(FREQ,SEL)        ;Select extract period
    161         N BDATE,EDATE,DA,DIE,DIK,DIR,DR,FDATE,VALID,X
    162         ;Get the new name.
    163         F  D  Q:$D(DTOUT)!$D(DUOUT)  Q:SEL]""
    164         .S DIR("A")="Select EXTRACT PERIOD "
    165         .I FREQ="M" D
    166         ..S DIR("A")=DIR("A")_"(Mnn/yyyy)"
    167         ..S DIR(0)="F"_U_"7:8"_U_"K:'$$VALID^PXRMETH(FREQ,X) X"
    168         .I FREQ="Q" D
    169         ..S DIR("A")=DIR("A")_"(Qnn/yyyy)"
    170         ..S DIR(0)="F"_U_"7:7"_U_"K:'$$VALID^PXRMETH(FREQ,X) X"
    171         .I FREQ="Y" D
    172         ..S DIR("A")=DIR("A")_"(yyyy)"
    173         ..S DIR(0)="N"_U_"2000:2050"_U_"K:(X'?4N) X"
    174         .;Default is next period
    175         .S DIR("B")=NEXT
    176         .W ! D ^DIR Q:$D(DTOUT)!$D(DUOUT)
    177         .;Calculate beginning and end dates for period
    178         .S Y=$$UP^XLFSTR(Y) D CALC^PXRMEUT(Y,.BDATE,.EDATE)
    179         .;Abort if period has not started
    180         .I $$FMDIFF^XLFDT(BDATE,$$NOW^XLFDT)>0 D   Q
    181         ..S FDATE=$$FMTE^XLFDT(BDATE,5)
    182         ..W !,"ERROR -This period does not start until "_FDATE,*7
    183         .S SEL=Y
    184         Q
    185         ;
    186 TLIST   ;Extract summary display
    187         N IEN,IENLIST,IND
    188         S IENLIST=$$LMSEL
    189         F IND=1:1:$L(IENLIST,U) D
    190         .S IEN=$P(IENLIST,U,IND)
    191         .D START^PXRMETT(IEN)
    192         .S VALMBCK="R"
    193         S VALMBCK="R"
    194         Q
    195         ;
    196 TRANS   ;Run Transmission
    197         N IEN,IENLIST,IND
    198         S IENLIST=$$LMSEL
    199         F IND=1:1:$L(IENLIST,U) D
    200         .S IEN=$P(IENLIST,U,IND)
    201         .I $P($G(^PXRMXT(810.3,IEN,100)),U)'="N" D  Q
    202         ..W !,"Local extracts cannot be transmitted to AAC." H 2
    203         .;Transmit extract summary
    204         .N ANS,DUOUT,DTOUT,RTN,TEXT
    205         .S TEXT="Transmit this extract to AAC",ANS="",RTN="PXRMETH"
    206         .S ANS=$$ASKYN^PXRMEUT("N",TEXT,RTN,3) Q:$D(DUOUT)!$D(DTOUT)
    207         .I ANS D TRANS^PXRMETX(IEN)
    208         ;
    209         ;Rebuild workfile
    210         D BLDLIST^PXRMETH1(EDIEN)
    211         ;Refresh
    212         S VALMBCK="R"
    213         Q
    214         ;
    215 TRHIST  ;Transmission History
    216         N IEN,IENLIST,IND
    217         S IENLIST=$$LMSEL
    218         F IND=1:1:$L(IENLIST,U) D
    219         .S IEN=$P(IENLIST,U,IND)
    220         .D START^PXRMETHL(IEN)
    221         S VALMBCK="R"
    222         Q
    223         ;
    224 VALID(FREQ,INP) ;Validate Period input
    225         W !
    226         N PERIOD,YEAR
    227         ;Convert to upper case
    228         S INP=$$UP^XLFSTR(INP)
    229         ;General format
    230         I $E(INP)'=FREQ D EN^DDIOL("Format should be "_FREQ_"nn/yyyy") Q 0
    231         S PERIOD=$P(INP,"/"),YEAR=$P(INP,"/",2)
    232         S PERIOD=$P(PERIOD,FREQ,2)
    233         ;All runs
    234         I (YEAR<2000)!(YEAR>2050) D EN^DDIOL("Year should be in range 2000-2050") Q 0
    235         ;Quarterly run
    236         I FREQ="Q",(PERIOD>4)!(PERIOD<1) D EN^DDIOL("Quarter should be in range 1-4") Q 0
    237         ;Monthly run
    238         I FREQ="M",(PERIOD>12)!(PERIOD<1) D EN^DDIOL("Month should be in range 1-12") Q 0
    239         ;Otherwise
    240         Q 1
    241         ;
    242 VIEW    ;Select view
    243         W IORESET
    244         S VALMBCK="R"
    245         N X,Y,CODE,DIR
    246         K DIROUT,DIRUT,DTOUT,DUOUT
    247         S DIR(0)="S"_U_"D:Sort by Creation Date;"
    248         S DIR(0)=DIR(0)_"P:Sort by Extract Period;"
    249         S DIR("A")="TYPE OF VIEW"
    250         S DIR("B")=$S(PXRMVIEW="P":"D",1:"P")
    251         S DIR("?")="Select from the codes displayed. For detailed help type ??"
    252         ;BOOKMARK - HELP NEEDS MOVING
    253         S DIR("??")=U_"D HELP^PXRMSEL2(3)"
    254         D ^DIR K DIR
    255         I $D(DIROUT) S DTOUT=1
    256         I $D(DTOUT)!($D(DUOUT)) Q
    257         ;Change display type
    258         S PXRMVIEW=Y
    259         ;
    260         ;Rebuild Workfile
    261         D BLDLIST^PXRMETH1(EDIEN),HDR
    262         Q
    263         ;
    264 WARN(NEXT,STATUS)       ;Warn if period is not completed
    265         N BDATE,EDATE,FDATE
    266         ;Calculate beginning and end dates for period
    267         D CALC^PXRMEUT(NEXT,.BDATE,.EDATE)
    268         ;No warning if period end date is a prior date
    269         I $$FMDIFF^XLFDT($$NOW^XLFDT,EDATE)>0 S STATUS="COMPLETE" Q
    270         ;Else Format date
    271         S FDATE=$$FMTE^XLFDT(EDATE,5),STATUS="INCOMPLETE"
    272         ;And Warn that period end date is a future date
    273         W !!,"WARNING -This period is not complete until "_FDATE
    274         Q
    275 XQORM   S XQORM("#")=$O(^ORD(101,"B","PXRM EXTRACT HISTORY SELECT ENTRY",0))_U_"1:"_VALMCNT
    276         S XQORM("A")="Select Item: "
    277         Q
    278         ;
    279 XSEL    ;PXRM EXTRACT HISTORY SELECT ENTRY validation
    280         N SEL,PXRMSIEN
    281         S SEL=$P(XQORNOD(0),"=",2)
    282         ;Remove trailing ,
    283         I $E(SEL,$L(SEL))="," S SEL=$E(SEL,1,$L(SEL)-1)
    284         ;Invalid selection
    285         I SEL["," D  Q
    286         .W $C(7),!,"Only one item number allowed." H 2
    287         .S VALMBCK="R"
    288         I ('SEL)!(SEL>VALMCNT)!('$D(@VALMAR@("SEL",SEL))) D  Q
    289         .W $C(7),!,SEL_" is not a valid item number." H 2
    290         .S VALMBCK="R"
    291         ;
    292         ;Get the list ien.
    293         ;S PXRMSIEN=^TMP("PXRMETH",$J,"IDX",SEL,SEL)
    294         S PXRMSIEN=^TMP("PXRMETH",$J,"SEL",SEL)
    295         ;
    296         ;Full screen mode
    297         D FULL^VALM1
    298         ;
    299         ;Options
    300         N X,Y,DIR,OPTION K DIROUT,DIRUT,DTOUT,DUOUT
    301         S DIR(0)="SBM"_U_"DE:Delete Extract;"
    302         S DIR(0)=DIR(0)_"ES:Extract Summary;"
    303         S DIR(0)=DIR(0)_"MT:Manual Transmission;"
    304         S DIR(0)=DIR(0)_"TH:Transmission History;"
    305         S DIR("A")="Select Action"
    306         S DIR("B")="ES"
    307         S DIR("?")="Select from the codes displayed. For detailed help type ??"
    308         S DIR("??")=U_"D HELP^PXRMETH1(1)"
    309         D ^DIR K DIR
    310         I $D(DIROUT) S DTOUT=1
    311         I $D(DTOUT)!($D(DUOUT)) S VALMBCK="R" Q
    312         S OPTION=Y
    313         ;
    314         ;Delete an extract
    315         I OPTION="DE" D
    316         .D DELETE^PXRMETXU(PXRMSIEN)
    317         .;Rebuild workfile
    318         .D BLDLIST^PXRMETH1(PXRMSIEN)
    319         .;Refresh
    320         .S VALMBCK="R"
    321         ;
    322         ;Display Extract Summary
    323         I OPTION="ES" D START^PXRMETT(PXRMSIEN)
    324         ;
    325         ;Transmission option
    326         I OPTION="MT" D
    327         .N ANS,DUOUT,DTOUT,RTN,TEXT
    328         .I $P($G(^PXRMXT(810.3,PXRMSIEN,100)),U)'="N" D  Q
    329         ..W !,"Local extracts cannot be transmitted to AAC" H 2 Q
    330         .S TEXT="Transmit this extract to AAC",ANS="",RTN="PXRMETH"
    331         .S ANS=$$ASKYN^PXRMEUT("N",TEXT,RTN,3) Q:$D(DUOUT)!$D(DTOUT)
    332         .I ANS D TRANS^PXRMETX(PXRMSIEN)
    333         ;
    334         ;Transmission History
    335         I OPTION="TH" D START^PXRMETHL(PXRMSIEN)
    336         ;
    337         S VALMBCK="R"
    338         Q
    339         ;
     1PXRMETH ; SLC/PJH - Reminder Extract History ;08/15/2006
     2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
     3 ;
     4 ;Main entry point for PXRM EXTRACT HISTORY
     5START(IEN) ;
     6 N VALMBCK,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD
     7 ;Details of last run
     8 N DATA,NPERIOD,NSDATE,NTAS,PXRMVIEW
     9 S DATA=$G(^PXRM(810.2,IEN,0))
     10 S NPERIOD=$P(DATA,U,6),NSDATE=$P(DATA,U,7)
     11 ;Default view is in date created order
     12 S PXRMVIEW="D"
     13 S X="IORESET"
     14 D ENDR^%ZISS
     15 S VALMCNT=0
     16 D EN^VALM("PXRM EXTRACT HISTORY")
     17 Q
     18 ;
     19ENTRY ;Entry code
     20 D BLDLIST^PXRMETH1(IEN),XQORM
     21 Q
     22 ;
     23EXIT ;Exit code
     24 K ^TMP("PXRMETH",$J)
     25 K ^TMP("PXRMETHH",$J)
     26 D CLEAN^VALM10
     27 D FULL^VALM1
     28 S VALMBCK="Q"
     29 Q
     30 ;
     31HDR ; Header code
     32 N VIEW
     33 S VIEW=$S(PXRMVIEW="D":"Creation Date Order",1:"Extract Period Order")
     34 S VALMHDR(2)="          Extract Name: "_$P($G(^PXRM(810.2,IEN,0)),U)
     35 S VALMHDR(3)="   Next Extract Period: "_NPERIOD
     36 S VALMHDR(4)="      Scheduled to Run: "_NSDATE
     37 S VALMHDR(4)=$$LJ^XLFSTR(VALMHDR(4),45)_"    View: "_VIEW
     38 S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
     39 Q
     40 ;
     41HLP ;Help code
     42 N ORU,ORUPRMT,SUB,XQORM
     43 S SUB="PXRMETHH"
     44 D EN^VALM("PXRM EXTRACT HELP")
     45 Q
     46 ;
     47INIT ;Init
     48 S VALMCNT=0
     49 Q
     50 ;
     51PEXIT ;PXRM EXCH MENU protocol exit code
     52 S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
     53 D XQORM
     54 Q
     55 ;
     56XQORM S XQORM("#")=$O(^ORD(101,"B","PXRM EXTRACT HISTORY SELECT ENTRY",0))_U_"1:"_VALMCNT
     57 S XQORM("A")="Select Item: "
     58 Q
     59 ;
     60XSEL ;PXRM EXTRACT HISTORY SELECT ENTRY validation
     61 N SEL,PXRMSIEN
     62 S SEL=$P(XQORNOD(0),"=",2)
     63 ;Remove trailing ,
     64 I $E(SEL,$L(SEL))="," S SEL=$E(SEL,1,$L(SEL)-1)
     65 ;Invalid selection
     66 I SEL["," D  Q
     67 .W $C(7),!,"Only one item number allowed." H 2
     68 .S VALMBCK="R"
     69 I ('SEL)!(SEL>VALMCNT)!('$D(@VALMAR@("IDX",SEL))) D  Q
     70 .W $C(7),!,SEL_" is not a valid item number." H 2
     71 .S VALMBCK="R"
     72 ;
     73 ;Get the list ien.
     74 S PXRMSIEN=^TMP("PXRMETH",$J,"IDX",SEL,SEL)
     75 ;
     76 ;Full screen mode
     77 D FULL^VALM1
     78 ;
     79 ;Options
     80 N X,Y,DIR,OPTION K DIROUT,DIRUT,DTOUT,DUOUT
     81 S DIR(0)="SBM"_U_"ES:Extract Summary;"
     82 S DIR(0)=DIR(0)_"MT:Manual Transmission;"
     83 S DIR(0)=DIR(0)_"TH:Transmission History;"
     84 S DIR("A")="Select Action"
     85 S DIR("B")="ES"
     86 S DIR("?")="Select from the codes displayed. For detailed help type ??"
     87 S DIR("??")=U_"D HELP^PXRMETH1(1)"
     88 D ^DIR K DIR
     89 I $D(DIROUT) S DTOUT=1
     90 I $D(DTOUT)!($D(DUOUT)) S VALMBCK="R" Q
     91 S OPTION=Y
     92 ;
     93 ;Display Extract Summary
     94 I OPTION="ES" D
     95 .D START^PXRMETT(PXRMSIEN)
     96 ;
     97 ;Transmission option
     98 I OPTION="MT" D
     99 .N ANS,DUOUT,DTOUT,RTN,TEXT
     100 .I $P($G(^PXRMXT(810.3,PXRMSIEN,100)),U)'="N" D  Q
     101 ..W !,"Local extracts cannot be transmitted to AAC" H 2 Q
     102 .S TEXT="Transmit this extract to AAC",ANS="",RTN="PXRMETH"
     103 .S ANS=$$ASKYN^PXRMEUT("N",TEXT,RTN,3) Q:$D(DUOUT)!$D(DTOUT)
     104 .I ANS D TRANS^PXRMETX(PXRMSIEN)
     105 ;
     106 ;Transmission History
     107 I OPTION="TH" D
     108 .D START^PXRMETHL(PXRMSIEN)
     109 ;
     110 S VALMBCK="R"
     111 Q
     112 ;
     113EXTRACT(IEN) ;Run Extract/Transmission
     114 ;
     115 ;Reset screen mode
     116 W IORESET
     117 ;Refresh on exit
     118 S VALMBCK="R"
     119 ;
     120 ;Get details from parameter file
     121 N ANS,DATA,DUOUT,DTOUT,EDATE,EXSUMPUG,FREQ,MODE
     122 N NAME,NAT,NEXT,PLISTPUG,RTN,REPL,STATUS,SNEXT,TEXT,XMIT
     123 S DATA=$G(^PXRM(810.2,IEN,0))
     124 S NAT=$P($G(^PXRM(810.2,IEN,100)),U)
     125 ;Determine Extract Name and Frequency
     126 S NAME=$P(DATA,U),FREQ=$P(DATA,U,3),NEXT=$P(DATA,U,6),RTN="PXRMETX"
     127 ;Save next scheduled extract
     128 S SNEXT=NEXT
     129 ;Select extract period
     130EXSEL D SELECT(FREQ,.NEXT) Q:$D(DUOUT)!$D(DTOUT)
     131 ;Warn if period is still open
     132 D WARN(NEXT,.STATUS)
     133 ;Option to continue
     134 S TEXT="Are you sure you want to run a "_NAME_" extract for "_$TR(NEXT,"/"," ")
     135SURE ;
     136 S ANS=$$ASKYN^PXRMEUT("N",TEXT,RTN,1) Q:$D(DUOUT)!$D(DTOUT)  Q:'ANS
     137 ;Purge options
     138PLIST ;
     139 S PLISTPUG="N" D ASK^PXRMXD(.PLISTPUG,"Purge Patient List after 5 years?: ",5)
     140 G:$D(DUOUT) SURE Q:$D(DTOUT)
     141 S EXSUMPUG="N" D ASK^PXRMXD(.EXSUMPUG,"Purge Extract Summary after 5 years?: ",5)
     142 G:$D(DUOUT) PLIST Q:$D(DTOUT)
     143 ;Option to transmit
     144 S TEXT="Transmit extract results to AAC"
     145 I NAT="N" S XMIT=$$ASKYN^PXRMEUT("N",TEXT,RTN,3) Q:$D(DUOUT)!$D(DTOUT)
     146 E  S XMIT=0
     147 ;Option to replace scheduled run
     148 S REPL=0
     149 I XMIT,SNEXT=NEXT,STATUS="COMPLETE" D  Q:$D(DUOUT)!$D(DTOUT)
     150 .S TEXT="Does this extract replace the scheduled extract"
     151 .S REPL=$$ASKYN^PXRMEUT("N",TEXT,RTN,4) Q:$D(DUOUT)!$D(DTOUT)
     152 ;
     153 ;Note that the manual extract does not update 810.2
     154 ;exept if the selected period is the same as the scheduled
     155 ;period AND this period is complete
     156 ;
     157 ;Default is to extract and transmit and not update 810.2
     158 S MODE=2 I 'XMIT S MODE=3
     159 ;Update 810.2 if this extract is for current completed period
     160 I REPL S MODE=0 I 'XMIT S MODE=1
     161 ;
     162 ;Extract/transmission run
     163 N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE
     164 S ZTDESC="Reminder Extract "_NAME
     165 S ZTRTN="RUN^PXRMETX(IEN,NEXT,MODE,EXSUMPUG)"
     166 S ZTSAVE("IEN")=""
     167 S ZTSAVE("MODE")=""
     168 S ZTSAVE("NEXT")=""
     169 S ZTSAVE("PLISTPUG")=""
     170 S ZTSAVE("EXSUMPUG")=""
     171 S ZTIO=""
     172 ;
     173 ;Select and verify start date/time for task
     174 N DIR,DTOUT,DUOUT,MINDT,SDTIME,STIME,X,Y
     175 S MINDT=$$NOW^XLFDT
     176 W !,"Queue a "_ZTDESC_" for "_NEXT
     177 S DIR("A",1)="Enter the date and time you want the job to start."
     178 S DIR("A",2)="It must be after "_$$FMTE^XLFDT(MINDT,"5Z")
     179 S DIR("A")="Start the task at: "
     180 S DIR(0)="DAU"_U_MINDT_"::RSX"
     181 D ^DIR
     182 I $D(DTOUT)!$D(DUOUT) Q
     183 S SDTIME=Y
     184 ;
     185 ;Put the task into the queue.
     186 S ZTDTH=SDTIME
     187 D ^%ZTLOAD
     188 W !,"Task number ",ZTSK," queued." H 2
     189 ;
     190 S VALMBCK="Q"
     191 Q
     192 ;
     193SELECT(FREQ,SEL) ;Select extract period
     194 ;
     195 N BDATE,EDATE,DA,DIE,DIK,DIR,DR,FDATE,VALID,X
     196 ;Get the new name.
     197 F  D  Q:$D(DTOUT)!$D(DUOUT)  Q:SEL]""
     198 .S DIR("A")="Select EXTRACT PERIOD "
     199 .I FREQ="M" D
     200 ..S DIR("A")=DIR("A")_"(Mnn/yyyy)"
     201 ..S DIR(0)="F"_U_"7:8"_U_"K:'$$VALID^PXRMETH(FREQ,X) X"
     202 .I FREQ="Q" D
     203 ..S DIR("A")=DIR("A")_"(Qnn/yyyy)"
     204 ..S DIR(0)="F"_U_"7:7"_U_"K:'$$VALID^PXRMETH(FREQ,X) X"
     205 .I FREQ="Y" D
     206 ..S DIR("A")=DIR("A")_"(yyyy)"
     207 ..S DIR(0)="N"_U_"2000:2050"_U_"K:(X'?4N) X"
     208 .;Default is next period
     209 .S DIR("B")=NEXT
     210 .W ! D ^DIR Q:$D(DTOUT)!$D(DUOUT)
     211 .;Calculate beginning and end dates for period
     212 .S Y=$$UP^XLFSTR(Y) D CALC^PXRMEUT(Y,.BDATE,.EDATE)
     213 .;Abort if period has not started
     214 .I $$FMDIFF^XLFDT(BDATE,$$NOW^XLFDT)>0 D   Q
     215 ..S FDATE=$$FMTE^XLFDT(BDATE,5)
     216 ..W !,"ERROR -This period does not start until "_FDATE,*7
     217 .S SEL=Y
     218 Q
     219 ;
     220TLIST ;Extract Totals
     221 N IND,PXRMSIEN,VALMY
     222 D EN^VALM2(XQORNOD(0))
     223 ;If there is no list quit.
     224 I '$D(VALMY) Q
     225 ;PXRMDONE is newed in PXRMLPM
     226 S PXRMDONE=0
     227 S IND=""
     228 F  S IND=$O(VALMY(IND)) Q:(+IND=0)!(PXRMDONE)  D
     229 .;Get the ien.
     230 .S PXRMSIEN=^TMP("PXRMETH",$J,"IDX",IND,IND)
     231 .D START^PXRMETT(PXRMSIEN)
     232 ;
     233 S VALMBCK="R"
     234 Q
     235 ;
     236TRANS ;Run Transmission
     237 N IND,PXRMXIEN,VALMY
     238 D EN^VALM2(XQORNOD(0))
     239 ;If there is no list quit.
     240 I '$D(VALMY) Q
     241 S PXRMDONE=0
     242 S IND=""
     243 F  S IND=$O(VALMY(IND)) Q:(+IND=0)!(PXRMDONE)  D
     244 .;Get the ien.
     245 .S PXRMXIEN=^TMP("PXRMETH",$J,"IDX",IND,IND)
     246 .I $P($G(^PXRMXT(810.3,PXRMXIEN,100)),U)'="N" D  Q
     247 ..W !,"Local extracts cannot be transmitted to AAC." H 1
     248 .;Transmit extract summary
     249 .N ANS,DUOUT,DTOUT,RTN,TEXT
     250 .S TEXT="Transmit this extract to AAC",ANS="",RTN="PXRMETH"
     251 .S ANS=$$ASKYN^PXRMEUT("N",TEXT,RTN,3) Q:$D(DUOUT)!$D(DTOUT)
     252 .I ANS D TRANS^PXRMETX(PXRMXIEN)
     253 ;
     254 ;Rebuild workfile
     255 D BLDLIST^PXRMETH1(IEN)
     256 ;Refresh
     257 S VALMBCK="R"
     258 Q
     259 ;
     260TRHIST ;Transmission History
     261 N IND,PXRMSIEN,VALMY
     262 D EN^VALM2(XQORNOD(0))
     263 ;If there is no list quit.
     264 I '$D(VALMY) Q
     265 ;PXRMDONE is newed in PXRMLPM
     266 S PXRMDONE=0
     267 S IND=""
     268 F  S IND=$O(VALMY(IND)) Q:(+IND=0)!(PXRMDONE)  D
     269 .;Get the ien.
     270 .S PXRMSIEN=^TMP("PXRMETH",$J,"IDX",IND,IND)
     271 .D START^PXRMETHL(PXRMSIEN)
     272 ;
     273 S VALMBCK="R"
     274 Q
     275 ;
     276VALID(FREQ,INP) ;Validate Period input
     277 W !
     278 N PERIOD,YEAR
     279 ;Convert to upper case
     280 S INP=$$UP^XLFSTR(INP)
     281 ;General format
     282 I $E(INP)'=FREQ D EN^DDIOL("Format should be "_FREQ_"nn/yyyy") Q 0
     283 S PERIOD=$P(INP,"/"),YEAR=$P(INP,"/",2)
     284 S PERIOD=$P(PERIOD,FREQ,2)
     285 ;All runs
     286 I (YEAR<2000)!(YEAR>2050) D EN^DDIOL("Year should be in range 2000-2050") Q 0
     287 ;Quarterly run
     288 I FREQ="Q",(PERIOD>4)!(PERIOD<1) D EN^DDIOL("Quarter should be in range 1-4") Q 0
     289 ;Monthly run
     290 I FREQ="M",(PERIOD>12)!(PERIOD<1) D EN^DDIOL("Month should be in range 1-12") Q 0
     291 ;Otherwise
     292 Q 1
     293 ;
     294VIEW ;Select view
     295 ;
     296 W IORESET
     297 ;
     298 S VALMBCK="R"
     299 ;
     300 N X,Y,CODE,DIR
     301 K DIROUT,DIRUT,DTOUT,DUOUT
     302 S DIR(0)="S"_U_"D:Sort by Creation Date;"
     303 S DIR(0)=DIR(0)_"P:Sort by Extract Period;"
     304 S DIR("A")="TYPE OF VIEW"
     305 S DIR("B")=$S(PXRMVIEW="P":"D",1:"P")
     306 S DIR("?")="Select from the codes displayed. For detailed help type ??"
     307 ;BOOKMARK - HELP NEEDS MOVING
     308 S DIR("??")=U_"D HELP^PXRMSEL2(3)"
     309 D ^DIR K DIR
     310 I $D(DIROUT) S DTOUT=1
     311 I $D(DTOUT)!($D(DUOUT)) Q
     312 ;Change display type
     313 S PXRMVIEW=Y
     314 ;
     315 ;Rebuild Workfile
     316 D BLDLIST^PXRMETH1(IEN),HDR
     317 Q
     318 ;
     319WARN(NEXT,STATUS) ;Warn if period is not completed
     320 N BDATE,EDATE,FDATE
     321 ;Calculate beginning and end dates for period
     322 D CALC^PXRMEUT(NEXT,.BDATE,.EDATE)
     323 ;No warning if period end date is a prior date
     324 I $$FMDIFF^XLFDT($$NOW^XLFDT,EDATE)>0 S STATUS="COMPLETE" Q
     325 ;Else Format date
     326 S FDATE=$$FMTE^XLFDT(EDATE,5),STATUS="INCOMPLETE"
     327 ;And Warn that period end date is a future date
     328 W !!,"WARNING -This period is not complete until "_FDATE
     329 Q
Note: See TracChangeset for help on using the changeset viewer.