Ignore:
Timestamp:
Jan 4, 2012, 12:05:03 AM (12 years ago)
Author:
George Lilly
Message:

reset to certification routines with tabs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccr/branches/ohum/p/C0CMIME.m

    r1330 r1332  
    1 C0CMIME ; CCDCCR/GPL - MIME manipulation utilities; 3/8/11 ; 5/16/11 2:32pm
    2         ;;1.0;C0C;;Mar 8, 2011;Build 1
    3         ;Copyright 2008 George Lilly.  Licensed under the terms of the GNU
    4         ;General Public License See attached copy of the License.
    5         ;
    6         ;This program is free software; you can redistribute it and/or modify
    7         ;it under the terms of the GNU General Public License as published by
    8         ;the Free Software Foundation; either version 2 of the License, or
    9         ;(at your option) any later version.
    10         ;
    11         ;This program is distributed in the hope that it will be useful,
    12         ;but WITHOUT ANY WARRANTY; without even the implied warranty of
    13         ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14         ;GNU General Public License for more details.
    15         ;
    16         ;You should have received a copy of the GNU General Public License along
    17         ;with this program; if not, write to the Free Software Foundation, Inc.,
    18         ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    19         ;
    20         Q
    21         ;
    22 TEST(ZDFN)      ;
    23         D CCRRPC^C0CCCR(.ZCCR,ZDFN) ; GET A CCR TO WORK WITH
    24         ;M ZCOPY=ZCCR
    25         S ZCOPY(1)=""
    26         N ZI S ZI=0
    27         F  S ZI=$O(ZCCR(ZI)) Q:ZI=""  D  ; FOR EACH LINE
    28         . S ZCOPY(1)=ZCOPY(1)_ZCCR(ZI)
    29         ;D ENCODE("ZCOPY",1,ZCOPY(1))
    30         S G(1)=$$ENCODE^RGUTUU(ZCOPY(1))
    31         D CHUNK("G2","G",45)
    32         Q
    33 ENCODE(ZRTN,ZARY)       ;
    34         ; ROUTINE TO ENCODE AN XML DOCUMENT FOR SENDING
    35         ; ZARY IS PASSED BY NAME
    36         ; ZRTN IS PASSED BY REFERENCE AND IS THE RETURN
    37         ;
    38         S ZCOPY(1)=""
    39         N ZI S ZI=0
    40         F  S ZI=$O(@ZARY@(ZI)) Q:ZI=""  D  ; FOR EACH LINE
    41         . S ZCOPY(1)=ZCOPY(1)_@ZARY@(ZI)
    42         N G
    43         S G(1)=$$ENCODE^RGUTUU(ZCOPY(1))
    44         D CHUNK(ZRTN,"G",45)
    45         Q
    46         ; THIS ROUTINE WAS COPIED FROM LRSRVR4 AND THEN MODIFIED . THANKS JOHN
    47 ENCODEOLD(IARY,LRNODE,LRSTR)    ; Encode a string, keep remainder for next line
    48         ; Call with LRSTR by reference, Remainder returned in LRSTR
    49         ; IARY IS PASSED BY NAME
    50         S LRQUIT=0,LRLEN=$L(LRSTR)
    51         F  D  Q:LRQUIT
    52         . I $L(LRSTR)<45 S LRQUIT=1 Q
    53         . S LRX=$E(LRSTR,1,45)
    54         . S LRNODE=LRNODE+1,@IARY@(LRNODE)=$$UUEN^LRSRVR4(LRX)
    55         . S LRSTR=$E(LRSTR,46,LRLEN)
    56         Q
    57         ;
    58 TESTMAIL        ;
    59         ; TEST OF MAILSEND
    60         ;S ZTO("glilly@glilly.net")=""
    61         S ZTO("mish@nhin.openforum.opensourcevista.net")=""
    62         ;S ZTO("martijn@djigzo.com")=""
    63         ;S ZTO("profmish@gmail.com")=""
    64         ;S ZTO("nanthracite@earthlink.net")=""
    65         S ZFROM="ANTHRACITE.NANCY"
    66         S ZATTACH=$NA(^GPL("CCR"))
    67         I $G(@ZATTACH@(1))="" D  ; NO CCR THERE
    68         . D CCRRPC^C0CCCR(.GPL,2) ; GET ONE FROM PATIENT 2
    69         . M @ZATTACH=GPL ; PUT IT IN THERE FOR NEXT TIME
    70         S ZSUBJECT="TEST OF THE NEW MAILSEND ROUTINE"
    71         D MAILSEND(.GR,ZFROM,"ZTO",,ZSUBJECT,,ZATTACH)
    72         ZWR GR
    73         Q
    74         ;
    75 TESTMAIL2       ;
    76         ; TEST OF MAILSEND TO gpl.mdc-crew.net
    77         N C0CGM
    78         S C0CGM(1)="This is a test message."
    79         S C0CGM(2)="A Continuity of Care record is attached"
    80         S C0CGM(3)="It contains no Protected Health Information (PHI)"
    81         S C0CGM(4)="It is purely test data used for software development"
    82         S C0CGM(5)="It does not represent information about any person living or dead"
    83         ;S ZTO("glilly@glilly.net")=""
    84         ;S ZTO("george.lilly@pobox.com")=""
    85         ;S ZTO("george@nhin.openforum.opensourcevista.net")=""
    86         ;S ZTO("mish@nhin.openforum.opensourcevista.net")=""
    87         S ZTO("brooks.richard@securemail.opensourcevista.net")=""
    88         ;S ZTO("LILLY.GEORGE@mdc-crew.net")=""
    89         ;S ZTO("ncoal@live.com")=""
    90         ;S ZTO("martijn@djigzo.com")=""
    91         ;S ZTO("profmish@gmail.com")=""
    92         ;S ZTO("nanthracite@earthlink.net")=""
    93         S ZTO("gpl.doctortest@gmail.com")=""
    94         S ZFROM="LILLY.GEORGE"
    95         S ZATTACH=$NA(^GPL("CCR"))
    96         I $G(@ZATTACH@(1))="" D  ; NO CCR THERE
    97         . D CCRRPC^C0CCCR(.GPL,2) ; GET ONE FROM PATIENT 2
    98         . M @ZATTACH=GPL ; PUT IT IN THERE FOR NEXT TIME
    99         S ZSUBJECT="TEST OF THE NEW MAILSEND ROUTINE"
    100         D MAILSEND(.GR,ZFROM,"ZTO",,ZSUBJECT,"C0CGM",ZATTACH,"CCR.xml")
    101         ZWR GR
    102         Q
    103         ;
    104 LINE(C0CFILE,C0CTO)     ; read a file name passed in C0CFILE and send it to
    105         ; the email address in C0CTO
    106         ; the directory and the "from" are all hard coded
    107         ;
    108         N ZZFROM S ZZFROM="LILLY.GEORGE"
    109         N GN S GN=$NA(^TMP("C0CMIME2",$J))
    110         N GN1 S GN1=$NA(@GN@(1))
    111         K @GN
    112         I '$D(C0CFILE) Q  ; NO FILENAME PASSED
    113         I '$D(C0CTO) S C0CTO="brooks.richard@securemail.opensourcevista.net"
    114         S ZZTO(C0CTO)=""
    115         N ZMESS S ZMESS(1)="file transmission from wvehr3-09"
    116         N GD S GD="/home/wvehr3-09/EHR/" ; directory
    117         I '$$FTG^%ZISH(GD,C0CFILE,GN1,3) Q  D  ;
    118         . W !,"error reading file",C0CFILE
    119         D MAILSEND(.ZRTN,ZZFROM,"ZZTO",,"file transmission","ZMESS",GN,C0CFILE)
    120         K @GN ; CLEAN UP
    121         ;ZWR ZRTN
    122         W !,$G(ZRTN(1))
    123         Q
    124         ;
    125 MAILSEND(RTN,FROM,TO,CC,SUBJECT,MESSAGE,ATTACH,FNAME,FLAGS)     ; MAIL SENDING INTERFACE
    126         ; RTN IS THE RETURN ARRAY PASSED BY REFERENCE
    127         ; FROM IS PASSED BY VALUE AND IS THE EMAIL ADDRESS OF THE SENDER
    128         ;  IF NULL, WILL SEND FROM THE CURRENT DUZ
    129         ; TO AND CC ARE RECIEPIENT EMAIL ADDRESSES PASSED BY NAME
    130         ;  @TO@("addr1@domain1.net")
    131         ;  @CC@("addr2@domain2.com")  both can be multiples
    132         ; SUBJECT IS PASSED BY VALUE AND WILL GO IN THE SUBJECT LINE
    133         ; MESSAGE IS PASSED BY NAME AND IS AN ARRAY OF TEXT
    134         ; ATTACH IS PASSED BY NAME AND IS AN XML OR HTML FILE TO BE ATTACHED
    135         ; FNAME IS THE FILENAME OF THE ATTACHMENT, DEFAULT IS ccr.xml
    136         ;
    137         I '$D(FNAME) S FNAME="ccr.xml" ; default filename
    138         N GN
    139         S GN=$NA(^TMP($J,"C0CMIME"))
    140         K @GN
    141         S GM(1)="MIME-Version: 1.0"
    142         S GM(2)="Content-Type: multipart/mixed; boudary=""1234567"""
    143         S GM(3)=""
    144         S GM(4)=""
    145         ;S GM(5)="--123456788888"
    146         ;S GM(5)=$$REPEAT^XLFSTR("-",$L(X))
    147         S GM(5)="--123456899999"
    148         S GM(6)="Content-Type: text/xml; name="_FNAME
    149         S GM(7)="Content-Transfer-Encoding: base64"
    150         S GM(8)="Content-Disposition: attachment; filename="_FNAME
    151         S GM(9)=""
    152         S GM(10)="" ; FOR THE END
    153         ;S GM(11)="--123456788888--"
    154         S GM(11)="--123456899999--"
    155         S GM(12)=""
    156         S GM(13)=""
    157         S GG(1)="--123456899999"
    158         S GG(2)="Content-Type: text/plain; charset=ISO-8859-1; format=flowed"
    159         S GG(3)="Content-Transfer-Encoding: 7bit"
    160         S GG(4)=""
    161         S GG(5)="This is a test message."
    162         S GG(6)="A Continuity of Care record is attached"
    163         S GG(7)="It contains no Protected Health Information (PHI)"
    164         S GG(8)="It is purely test data used for software development"
    165         S GG(9)="It does not represent information about any person living or dead"
    166         S GG(10)=""
    167         S GG(11)="--123456899999--"
    168         ;S GG(11)="Content-Type: text/plain; charset=""us-ascii"""
    169         S GG(12)=""
    170         ;S GG(13)="This is a test message."
    171         S GG(14)="A Continuity of Care record is attached"
    172         S GG(15)="It contains no Protected Health Information (PHI)"
    173         S GG(16)="It is purely test data used for software development"
    174         S GG(17)="It does not represent information about any person living or dead"
    175         S GG(18)=""
    176         S GG(19)="--123456899999"
    177         S GG(20)="--987654321--"
    178         K GBLD
    179         ;D QUEUE^C0CXPATH("GBLD","GGG",1,3) ; THE MESSAGE
    180         ;D QUEUE^C0CXPATH("GBLD","GG",1,10) ; THE MESSAGE
    181         I $D(MESSAGE)'="" D  ; THERE IS A MESSAGE
    182         . D QUEUE^C0CXPATH("GBLD","GG",1,4) ; THE MIME BOUNDARY
    183         . D QUEUE^C0CXPATH("GBLD",MESSAGE,1,$O(@MESSAGE@(""),-1)) ;THE MESSAGE
    184         . D QUEUE^C0CXPATH("GBLD","GG",10,10) ;A BLANK LINE
    185         D QUEUE^C0CXPATH("GBLD","GM",5,9)
    186         I $D(ATTACH)'="" D  ; IF WE HAVE AN ATTACHMENT
    187         . D ENCODE("G2",ATTACH) ; ENCODE FOR SENDING
    188         . D QUEUE^C0CXPATH("GBLD","G2",1,$O(G2(""),-1))
    189         D QUEUE^C0CXPATH("GBLD","GM",11,12)
    190         D BUILD^C0CXPATH("GBLD",GN)
    191         ;S GGG=$NA(^GPL("MIME2"))
    192         K @GN@(0) ; KILL THE LINE COUNT
    193         K LRINSTR,LRTASK,LRTO,XMERR,XMZ
    194         M LRTO=@TO
    195         I $D(CC) M LRTO=@CC
    196         S LRINSTR("ADDR FLAGS")="R"
    197         S LRINSTR("FROM")=$G(FROM)
    198         S LRMSUBJ=$G(SUBJECT)
    199         S LRMSUBJ=$E(LRMSUBJ,1,65)
    200         D SENDMSG^XMXAPI(DUZ,LRMSUBJ,GN,.LRTO,.LRINSTR,.LRTASK)
    201         I $G(XMERR)=1 S RTN(1)="ERROR SENDING MESSAGE" Q  ;
    202         S RTN(1)="OK"
    203         Q
    204         ;
    205 MAILSEND0(LRMSUBJ)      ; Send extract back to requestor.
    206         ;
    207         ;D TEST
    208         S GN=$NA(^TMP($J,"C0CMIME"))
    209         K @GN
    210         ;M @GN=G2
    211         S GM(1)="MIME-Version: 1.0"
    212         S GM(2)="Content-Type: multipart/mixed; boudary=""1234567"""
    213         S GM(3)=""
    214         S GM(4)=""
    215         S GM(5)="--1234567"
    216         ;S GM(5)=$$REPEAT^XLFSTR("-",$L(X))
    217         S GM(6)="Content-Type: text/xml; name=""ccr.xml"""
    218         S GM(7)="Content-Transfer-Encoding: base64"
    219         S GM(8)="Content-Disposition: attachment; filename=""ccr.xml"""
    220         ;S GM(6)=$$UUBEGFN^LRSRVR2A("CCR.xml")
    221         S GM(9)=""
    222         S GM(10)="" ; FOR THE END
    223         S GM(11)="--frontier--"
    224         S GM(12)="."
    225         S GM(13)=""
    226         K GBLD
    227         ;D QUEUE^C0CXPATH("GBLD","GM",1,9)
    228         ;D QUEUE^C0CXPATH("GBLD","G2",1,$O(G2(""),-1))
    229         ;D QUEUE^C0CXPATH("GBLD","GM",10,13)
    230         ;D BUILD^C0CXPATH("GBLD",GN)
    231         S GGG=$NA(^GPL("MIME2"))
    232         ;D QUEUE^C0CXPATH("GBLD","GM",1,1)
    233         D QUEUE^C0CXPATH("GBLD",GGG,21,159)
    234         D BUILD^C0CXPATH("GBLD",GN)
    235         K @GN@(0) ; KILL THE LINE COUNT
    236         K LRINSTR,LRTASK,LRTO,XMERR,XMZ
    237         S XQSND="glilly@glilly.net"
    238         ;S XQSND="nanthracite@earthlink.net"
    239         ;S XQSND="dlefevre@orohosp.com"
    240         ;S XQSND="gregwoodhouse@me.com"
    241         ;S XQSND="rick.marshall@vistaexpertise.net"
    242         S LRTO(XQSND)=""
    243         S LRINSTR("ADDR FLAGS")="R"
    244         S LRINSTR("FROM")="CCR_PACKAGE"
    245         S LRMSUBJ="A SAMPLE CCR"
    246         S LRMSUBJ=$E(LRMSUBJ,1,65)
    247         D SENDMSG^XMXAPI(9,LRMSUBJ,GN,.LRTO,.LRINSTR,.LRTASK)
    248         I $G(XMERR)=1 W !,"ERROR SENDING MESSAGE" Q  ;
    249         ;S ^XMB(3.9,LRTASK,1,.1130590,0)="MIME-Version: 1.0"
    250         ;S ^XMB(3.9,LRTASK,1,.1130591,0)="Content-type: multipart/mixed; boundary=000e0cd6ae026c3d4b049e7befe9"
    251         Q
    252         ;
    253 MAILSEND2(UDFN,ADDR)    ; Send extract back to requestor.
    254         ;
    255         I +$G(UDFN)=0 S UDFN=2 ;
    256         D TEST(UDFN)
    257         S GN=$NA(^TMP($J,"C0CMIME"))
    258         K @GN
    259         ;M @GN=G2
    260         S GM(1)="MIME-Version: 1.0"
    261         S GM(2)="Content-Type: multipart/mixed; boudary=""1234567"""
    262         S GM(3)=""
    263         S GM(4)=""
    264         S GM(5)="--1234567"
    265         ;S GM(5)=$$REPEAT^XLFSTR("-",$L(X))
    266         S GM(6)="Content-Type: text/xml; name=""ccr.xml"""
    267         S GM(7)="Content-Transfer-Encoding: base64"
    268         S GM(8)="Content-Disposition: attachment; filename=""ccr.xml"""
    269         ;S GM(6)=$$UUBEGFN^LRSRVR2A("CCR.xml")
    270         S GM(9)=""
    271         S GM(10)="" ; FOR THE END
    272         S GM(11)="--1234567--"
    273         S GM(12)=""
    274         S GM(13)=""
    275         K GBLD
    276         D QUEUE^C0CXPATH("GBLD","GM",5,9)
    277         D QUEUE^C0CXPATH("GBLD","G2",1,$O(G2(""),-1))
    278         D QUEUE^C0CXPATH("GBLD","GM",10,12)
    279         D BUILD^C0CXPATH("GBLD",GN)
    280         S GGG=$NA(^GPL("MIME2"))
    281         ;D QUEUE^C0CXPATH("GBLD","GM",1,1)
    282         ;D QUEUE^C0CXPATH("GBLD",GGG,21,159)
    283         ;D BUILD^C0CXPATH("GBLD",GN)
    284         K @GN@(0) ; KILL THE LINE COUNT
    285         K LRINSTR,LRTASK,LRTO,XMERR,XMZ
    286         I $G(ADDR)'="" S XQSND=ADDR
    287         E  S XQSND="glilly@glilly.net"
    288         ;S XQSND="nanthracite@earthlink.net"
    289         ;S XQSND="dlefevre@orohosp.com"
    290         ;S XQSND="gregwoodhouse@me.com"
    291         ;S XQSND="rick.marshall@vistaexpertise.net"
    292         S LRTO(XQSND)=""
    293         ;S LRTO("glilly@glilly.net")=""
    294         S LRINSTR("ADDR FLAGS")="R"
    295         S LRINSTR("FROM")="ANTHRACITE.NANCY"
    296         S LRMSUBJ="Sending a CCR with Mailman"
    297         S LRMSUBJ=$E(LRMSUBJ,1,65)
    298         D SENDMSG^XMXAPI(9,LRMSUBJ,GN,.LRTO,.LRINSTR,.LRTASK)
    299         I $G(XMERR)=1 W !,"ERROR SENDING MESSAGE" Q  ;
    300         ;S ^XMB(3.9,LRTASK,1,.1130590,0)="MIME-Version: 1.0"
    301         ;S ^XMB(3.9,LRTASK,1,.1130591,0)="Content-type: multipart/mixed; boundary=000e0cd6ae026c3d4b049e7befe9"
    302         Q
    303         ;
    304 SIMPLE  ;
    305         S GN(1)="SIMPLE TEST MESSAGE"
    306         K LRINSTR,LRTASK,LRTO,XMERR,XMZ
    307         S XQSND="glilly@glilly.net"
    308         S LRTO(XQSND)=""
    309         S LRINSTR("ADDR FLAGS")="R"
    310         S LRINSTR("FROM")="CCR_PACKAGE"
    311         S LRMSUBJ="A SAMPLE CCR"
    312         S LRMSUBJ=$E(LRMSUBJ,1,65)
    313         D SENDMSG^XMXAPI(9,LRMSUBJ,"GN",.LRTO,.LRINSTR,.LRTASK)
    314         Q
    315 CHUNK(OUTXML,INXML,ZSIZE)       ; BREAKS INXML INTO ZSIZE BLOCKS
    316         ; INXML IS AN ARRAY PASSED BY NAME OF STRINGS
    317         ; OUTXML IS ALSO PASSED BY NAME
    318         ; IF ZSIZE IS NOT PASSED, 1000 IS USED
    319         I '$D(ZSIZE) S ZSIZE=1000 ; DEFAULT BLOCK SIZE
    320         N ZB,ZI,ZJ,ZK,ZL,ZN
    321         S ZB=ZSIZE-1
    322         S ZN=1
    323         S ZI=0 ; BEGINNING OF INDEX TO INXML
    324         F  S ZI=$O(@INXML@(ZI)) Q:+ZI=0  D  ; FOR EACH STRING IN INXML
    325         . S ZL=$L(@INXML@(ZI)) ; LENGTH OF THE STRING
    326         . F ZJ=1:ZSIZE:ZL D  ;
    327         . . S ZK=$S(ZJ+ZB<ZL:ZJ+ZB,1:ZL) ; END FOR EXTRACT
    328         . . S @OUTXML@(ZN)=$E(@INXML@(ZI),ZJ,ZK) ; PULL OUT THE PIECE
    329         . . S ZN=ZN+1 ; INCREMENT OUT ARRAY INDEX
    330         Q
    331         ;
    332 CLEAN(IARY)     ; RUNS THROUGH AN ARRAY PASSED BY NAME AND STRIPS OUT $C(13)
    333         ;
    334         N ZI S ZI=0
    335         F  S ZI=$O(@IARY@(ZI)) Q:+ZI=0  D  ;
    336         . S @IARY@(ZI)=$TR(@IARY@(ZI),$C(13)) ;
    337         . I $F(@IARY@(ZI)," <") S @IARY@(ZI)="<"_$P(@IARY@(ZI)," <",2) ; RM BLNKS
    338         Q
    339         ;
     1C0CMIME ; CCDCCR/GPL - MIME manipulation utilities; 3/8/11 ; 5/16/11 2:32pm
     2 ;;1.0;C0C;;Mar 8, 2011;
     3 ;Copyright 2008 George Lilly.  Licensed under the terms of the GNU
     4 ;General Public License See attached copy of the License.
     5 ;
     6 ;This program is free software; you can redistribute it and/or modify
     7 ;it under the terms of the GNU General Public License as published by
     8 ;the Free Software Foundation; either version 2 of the License, or
     9 ;(at your option) any later version.
     10 ;
     11 ;This program is distributed in the hope that it will be useful,
     12 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 ;GNU General Public License for more details.
     15 ;
     16 ;You should have received a copy of the GNU General Public License along
     17 ;with this program; if not, write to the Free Software Foundation, Inc.,
     18 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     19 ;
     20 Q
     21 ;
     22TEST(ZDFN) ;
     23 D CCRRPC^C0CCCR(.ZCCR,ZDFN) ; GET A CCR TO WORK WITH
     24 ;M ZCOPY=ZCCR
     25 S ZCOPY(1)=""
     26 N ZI S ZI=0
     27 F  S ZI=$O(ZCCR(ZI)) Q:ZI=""  D  ; FOR EACH LINE
     28 . S ZCOPY(1)=ZCOPY(1)_ZCCR(ZI)
     29 ;D ENCODE("ZCOPY",1,ZCOPY(1))
     30 S G(1)=$$ENCODE^RGUTUU(ZCOPY(1))
     31 D CHUNK("G2","G",45)
     32 Q
     33ENCODE(ZRTN,ZARY) ;
     34 ; ROUTINE TO ENCODE AN XML DOCUMENT FOR SENDING
     35 ; ZARY IS PASSED BY NAME
     36 ; ZRTN IS PASSED BY REFERENCE AND IS THE RETURN
     37 ;
     38 S ZCOPY(1)=""
     39 N ZI S ZI=0
     40 F  S ZI=$O(@ZARY@(ZI)) Q:ZI=""  D  ; FOR EACH LINE
     41 . S ZCOPY(1)=ZCOPY(1)_@ZARY@(ZI)
     42 N G
     43 S G(1)=$$ENCODE^RGUTUU(ZCOPY(1))
     44 D CHUNK(ZRTN,"G",45)
     45 Q
     46 ; THIS ROUTINE WAS COPIED FROM LRSRVR4 AND THEN MODIFIED . THANKS JOHN
     47ENCODEOLD(IARY,LRNODE,LRSTR) ; Encode a string, keep remainder for next line
     48 ; Call with LRSTR by reference, Remainder returned in LRSTR
     49 ; IARY IS PASSED BY NAME
     50 S LRQUIT=0,LRLEN=$L(LRSTR)
     51 F  D  Q:LRQUIT
     52 . I $L(LRSTR)<45 S LRQUIT=1 Q
     53 . S LRX=$E(LRSTR,1,45)
     54 . S LRNODE=LRNODE+1,@IARY@(LRNODE)=$$UUEN^LRSRVR4(LRX)
     55 . S LRSTR=$E(LRSTR,46,LRLEN)
     56 Q
     57 ;
     58TESTMAIL ;
     59 ; TEST OF MAILSEND
     60 ;S ZTO("glilly@glilly.net")=""
     61 S ZTO("mish@nhin.openforum.opensourcevista.net")=""
     62 ;S ZTO("martijn@djigzo.com")=""
     63 ;S ZTO("profmish@gmail.com")=""
     64 ;S ZTO("nanthracite@earthlink.net")=""
     65 S ZFROM="ANTHRACITE.NANCY"
     66 S ZATTACH=$NA(^GPL("CCR"))
     67 I $G(@ZATTACH@(1))="" D  ; NO CCR THERE
     68 . D CCRRPC^C0CCCR(.GPL,2) ; GET ONE FROM PATIENT 2
     69 . M @ZATTACH=GPL ; PUT IT IN THERE FOR NEXT TIME
     70 S ZSUBJECT="TEST OF THE NEW MAILSEND ROUTINE"
     71 D MAILSEND(.GR,ZFROM,"ZTO",,ZSUBJECT,,ZATTACH)
     72 ZWR GR
     73 Q
     74 ;
     75TESTMAIL2 ;
     76 ; TEST OF MAILSEND TO gpl.mdc-crew.net
     77 N C0CGM
     78 S C0CGM(1)="This is a test message."
     79 S C0CGM(2)="A Continuity of Care record is attached"
     80 S C0CGM(3)="It contains no Protected Health Information (PHI)"
     81 S C0CGM(4)="It is purely test data used for software development"
     82 S C0CGM(5)="It does not represent information about any person living or dead"
     83 ;S ZTO("glilly@glilly.net")=""
     84 ;S ZTO("george.lilly@pobox.com")=""
     85 ;S ZTO("george@nhin.openforum.opensourcevista.net")=""
     86 ;S ZTO("mish@nhin.openforum.opensourcevista.net")=""
     87 S ZTO("brooks.richard@securemail.opensourcevista.net")=""
     88 ;S ZTO("LILLY.GEORGE@mdc-crew.net")=""
     89 ;S ZTO("ncoal@live.com")=""
     90 ;S ZTO("martijn@djigzo.com")=""
     91 ;S ZTO("profmish@gmail.com")=""
     92 ;S ZTO("nanthracite@earthlink.net")=""
     93 S ZTO("gpl.doctortest@gmail.com")=""
     94 S ZFROM="LILLY.GEORGE"
     95 S ZATTACH=$NA(^GPL("CCR"))
     96 I $G(@ZATTACH@(1))="" D  ; NO CCR THERE
     97 . D CCRRPC^C0CCCR(.GPL,2) ; GET ONE FROM PATIENT 2
     98 . M @ZATTACH=GPL ; PUT IT IN THERE FOR NEXT TIME
     99 S ZSUBJECT="TEST OF THE NEW MAILSEND ROUTINE"
     100 D MAILSEND(.GR,ZFROM,"ZTO",,ZSUBJECT,"C0CGM",ZATTACH,"CCR.xml")
     101 ZWR GR
     102 Q
     103 ;
     104LINE(C0CFILE,C0CTO) ; read a file name passed in C0CFILE and send it to
     105 ; the email address in C0CTO
     106 ; the directory and the "from" are all hard coded
     107 ;
     108 N ZZFROM S ZZFROM="LILLY.GEORGE"
     109 N GN S GN=$NA(^TMP("C0CMIME2",$J))
     110 N GN1 S GN1=$NA(@GN@(1))
     111 K @GN
     112 I '$D(C0CFILE) Q  ; NO FILENAME PASSED
     113 I '$D(C0CTO) S C0CTO="brooks.richard@securemail.opensourcevista.net"
     114 S ZZTO(C0CTO)=""
     115 N ZMESS S ZMESS(1)="file transmission from wvehr3-09"
     116 N GD S GD="/home/wvehr3-09/EHR/" ; directory
     117 I '$$FTG^%ZISH(GD,C0CFILE,GN1,3) Q  D  ;
     118 . W !,"error reading file",C0CFILE
     119 D MAILSEND(.ZRTN,ZZFROM,"ZZTO",,"file transmission","ZMESS",GN,C0CFILE)
     120 K @GN ; CLEAN UP
     121 ;ZWR ZRTN
     122 W !,$G(ZRTN(1))
     123 Q
     124 ;
     125MAILSEND(RTN,FROM,TO,CC,SUBJECT,MESSAGE,ATTACH,FNAME,FLAGS) ; MAIL SENDING INTERFACE
     126 ; RTN IS THE RETURN ARRAY PASSED BY REFERENCE
     127 ; FROM IS PASSED BY VALUE AND IS THE EMAIL ADDRESS OF THE SENDER
     128 ;  IF NULL, WILL SEND FROM THE CURRENT DUZ
     129 ; TO AND CC ARE RECIEPIENT EMAIL ADDRESSES PASSED BY NAME
     130 ;  @TO@("addr1@domain1.net")
     131 ;  @CC@("addr2@domain2.com")  both can be multiples
     132 ; SUBJECT IS PASSED BY VALUE AND WILL GO IN THE SUBJECT LINE
     133 ; MESSAGE IS PASSED BY NAME AND IS AN ARRAY OF TEXT
     134 ; ATTACH IS PASSED BY NAME AND IS AN XML OR HTML FILE TO BE ATTACHED
     135 ; FNAME IS THE FILENAME OF THE ATTACHMENT, DEFAULT IS ccr.xml
     136 ;
     137 I '$D(FNAME) S FNAME="ccr.xml" ; default filename
     138 N GN
     139 S GN=$NA(^TMP($J,"C0CMIME"))
     140 K @GN
     141 S GM(1)="MIME-Version: 1.0"
     142 S GM(2)="Content-Type: multipart/mixed; boudary=""1234567"""
     143 S GM(3)=""
     144 S GM(4)=""
     145 ;S GM(5)="--123456788888"
     146 ;S GM(5)=$$REPEAT^XLFSTR("-",$L(X))
     147 S GM(5)="--123456899999"
     148 S GM(6)="Content-Type: text/xml; name="_FNAME
     149 S GM(7)="Content-Transfer-Encoding: base64"
     150 S GM(8)="Content-Disposition: attachment; filename="_FNAME
     151 S GM(9)=""
     152 S GM(10)="" ; FOR THE END
     153 ;S GM(11)="--123456788888--"
     154 S GM(11)="--123456899999--"
     155 S GM(12)=""
     156 S GM(13)=""
     157 S GG(1)="--123456899999"
     158 S GG(2)="Content-Type: text/plain; charset=ISO-8859-1; format=flowed"
     159 S GG(3)="Content-Transfer-Encoding: 7bit"
     160 S GG(4)=""
     161 S GG(5)="This is a test message."
     162 S GG(6)="A Continuity of Care record is attached"
     163 S GG(7)="It contains no Protected Health Information (PHI)"
     164 S GG(8)="It is purely test data used for software development"
     165 S GG(9)="It does not represent information about any person living or dead"
     166 S GG(10)=""
     167 S GG(11)="--123456899999--"
     168 ;S GG(11)="Content-Type: text/plain; charset=""us-ascii"""
     169 S GG(12)=""
     170 ;S GG(13)="This is a test message."
     171 S GG(14)="A Continuity of Care record is attached"
     172 S GG(15)="It contains no Protected Health Information (PHI)"
     173 S GG(16)="It is purely test data used for software development"
     174 S GG(17)="It does not represent information about any person living or dead"
     175 S GG(18)=""
     176 S GG(19)="--123456899999"
     177 S GG(20)="--987654321--"
     178 K GBLD
     179 ;D QUEUE^C0CXPATH("GBLD","GGG",1,3) ; THE MESSAGE
     180 ;D QUEUE^C0CXPATH("GBLD","GG",1,10) ; THE MESSAGE
     181 I $D(MESSAGE)'="" D  ; THERE IS A MESSAGE
     182 . D QUEUE^C0CXPATH("GBLD","GG",1,4) ; THE MIME BOUNDARY
     183 . D QUEUE^C0CXPATH("GBLD",MESSAGE,1,$O(@MESSAGE@(""),-1)) ;THE MESSAGE
     184 . D QUEUE^C0CXPATH("GBLD","GG",10,10) ;A BLANK LINE
     185 D QUEUE^C0CXPATH("GBLD","GM",5,9)
     186 I $D(ATTACH)'="" D  ; IF WE HAVE AN ATTACHMENT
     187 . D ENCODE("G2",ATTACH) ; ENCODE FOR SENDING
     188 . D QUEUE^C0CXPATH("GBLD","G2",1,$O(G2(""),-1))
     189 D QUEUE^C0CXPATH("GBLD","GM",11,12)
     190 D BUILD^C0CXPATH("GBLD",GN)
     191 ;S GGG=$NA(^GPL("MIME2"))
     192 K @GN@(0) ; KILL THE LINE COUNT
     193 K LRINSTR,LRTASK,LRTO,XMERR,XMZ
     194 M LRTO=@TO
     195 I $D(CC) M LRTO=@CC
     196 S LRINSTR("ADDR FLAGS")="R"
     197 S LRINSTR("FROM")=$G(FROM)
     198 S LRMSUBJ=$G(SUBJECT)
     199 S LRMSUBJ=$E(LRMSUBJ,1,65)
     200 D SENDMSG^XMXAPI(DUZ,LRMSUBJ,GN,.LRTO,.LRINSTR,.LRTASK)
     201 I $G(XMERR)=1 S RTN(1)="ERROR SENDING MESSAGE" Q  ;
     202 S RTN(1)="OK"
     203 Q
     204 ;
     205MAILSEND0(LRMSUBJ) ; Send extract back to requestor.
     206 ;
     207 ;D TEST
     208 S GN=$NA(^TMP($J,"C0CMIME"))
     209 K @GN
     210 ;M @GN=G2
     211 S GM(1)="MIME-Version: 1.0"
     212 S GM(2)="Content-Type: multipart/mixed; boudary=""1234567"""
     213 S GM(3)=""
     214 S GM(4)=""
     215 S GM(5)="--1234567"
     216 ;S GM(5)=$$REPEAT^XLFSTR("-",$L(X))
     217 S GM(6)="Content-Type: text/xml; name=""ccr.xml"""
     218 S GM(7)="Content-Transfer-Encoding: base64"
     219 S GM(8)="Content-Disposition: attachment; filename=""ccr.xml"""
     220 ;S GM(6)=$$UUBEGFN^LRSRVR2A("CCR.xml")
     221 S GM(9)=""
     222 S GM(10)="" ; FOR THE END
     223 S GM(11)="--frontier--"
     224 S GM(12)="."
     225 S GM(13)=""
     226 K GBLD
     227 ;D QUEUE^C0CXPATH("GBLD","GM",1,9)
     228 ;D QUEUE^C0CXPATH("GBLD","G2",1,$O(G2(""),-1))
     229 ;D QUEUE^C0CXPATH("GBLD","GM",10,13)
     230 ;D BUILD^C0CXPATH("GBLD",GN)
     231 S GGG=$NA(^GPL("MIME2"))
     232 ;D QUEUE^C0CXPATH("GBLD","GM",1,1)
     233 D QUEUE^C0CXPATH("GBLD",GGG,21,159)
     234 D BUILD^C0CXPATH("GBLD",GN)
     235 K @GN@(0) ; KILL THE LINE COUNT
     236 K LRINSTR,LRTASK,LRTO,XMERR,XMZ
     237 S XQSND="glilly@glilly.net"
     238 ;S XQSND="nanthracite@earthlink.net"
     239 ;S XQSND="dlefevre@orohosp.com"
     240 ;S XQSND="gregwoodhouse@me.com"
     241 ;S XQSND="rick.marshall@vistaexpertise.net"
     242 S LRTO(XQSND)=""
     243 S LRINSTR("ADDR FLAGS")="R"
     244 S LRINSTR("FROM")="CCR_PACKAGE"
     245 S LRMSUBJ="A SAMPLE CCR"
     246 S LRMSUBJ=$E(LRMSUBJ,1,65)
     247 D SENDMSG^XMXAPI(9,LRMSUBJ,GN,.LRTO,.LRINSTR,.LRTASK)
     248 I $G(XMERR)=1 W !,"ERROR SENDING MESSAGE" Q  ;
     249 ;S ^XMB(3.9,LRTASK,1,.1130590,0)="MIME-Version: 1.0"
     250 ;S ^XMB(3.9,LRTASK,1,.1130591,0)="Content-type: multipart/mixed; boundary=000e0cd6ae026c3d4b049e7befe9"
     251 Q
     252 ;
     253MAILSEND2(UDFN,ADDR) ; Send extract back to requestor.
     254 ;
     255 I +$G(UDFN)=0 S UDFN=2 ;
     256 D TEST(UDFN)
     257 S GN=$NA(^TMP($J,"C0CMIME"))
     258 K @GN
     259 ;M @GN=G2
     260 S GM(1)="MIME-Version: 1.0"
     261 S GM(2)="Content-Type: multipart/mixed; boudary=""1234567"""
     262 S GM(3)=""
     263 S GM(4)=""
     264 S GM(5)="--1234567"
     265 ;S GM(5)=$$REPEAT^XLFSTR("-",$L(X))
     266 S GM(6)="Content-Type: text/xml; name=""ccr.xml"""
     267 S GM(7)="Content-Transfer-Encoding: base64"
     268 S GM(8)="Content-Disposition: attachment; filename=""ccr.xml"""
     269 ;S GM(6)=$$UUBEGFN^LRSRVR2A("CCR.xml")
     270 S GM(9)=""
     271 S GM(10)="" ; FOR THE END
     272 S GM(11)="--1234567--"
     273 S GM(12)=""
     274 S GM(13)=""
     275 K GBLD
     276 D QUEUE^C0CXPATH("GBLD","GM",5,9)
     277 D QUEUE^C0CXPATH("GBLD","G2",1,$O(G2(""),-1))
     278 D QUEUE^C0CXPATH("GBLD","GM",10,12)
     279 D BUILD^C0CXPATH("GBLD",GN)
     280 S GGG=$NA(^GPL("MIME2"))
     281 ;D QUEUE^C0CXPATH("GBLD","GM",1,1)
     282 ;D QUEUE^C0CXPATH("GBLD",GGG,21,159)
     283 ;D BUILD^C0CXPATH("GBLD",GN)
     284 K @GN@(0) ; KILL THE LINE COUNT
     285 K LRINSTR,LRTASK,LRTO,XMERR,XMZ
     286 I $G(ADDR)'="" S XQSND=ADDR
     287 E  S XQSND="glilly@glilly.net"
     288 ;S XQSND="nanthracite@earthlink.net"
     289 ;S XQSND="dlefevre@orohosp.com"
     290 ;S XQSND="gregwoodhouse@me.com"
     291 ;S XQSND="rick.marshall@vistaexpertise.net"
     292 S LRTO(XQSND)=""
     293 ;S LRTO("glilly@glilly.net")=""
     294 S LRINSTR("ADDR FLAGS")="R"
     295 S LRINSTR("FROM")="ANTHRACITE.NANCY"
     296 S LRMSUBJ="Sending a CCR with Mailman"
     297 S LRMSUBJ=$E(LRMSUBJ,1,65)
     298 D SENDMSG^XMXAPI(9,LRMSUBJ,GN,.LRTO,.LRINSTR,.LRTASK)
     299 I $G(XMERR)=1 W !,"ERROR SENDING MESSAGE" Q  ;
     300 ;S ^XMB(3.9,LRTASK,1,.1130590,0)="MIME-Version: 1.0"
     301 ;S ^XMB(3.9,LRTASK,1,.1130591,0)="Content-type: multipart/mixed; boundary=000e0cd6ae026c3d4b049e7befe9"
     302 Q
     303 ;
     304SIMPLE ;
     305 S GN(1)="SIMPLE TEST MESSAGE"
     306 K LRINSTR,LRTASK,LRTO,XMERR,XMZ
     307 S XQSND="glilly@glilly.net"
     308 S LRTO(XQSND)=""
     309 S LRINSTR("ADDR FLAGS")="R"
     310 S LRINSTR("FROM")="CCR_PACKAGE"
     311 S LRMSUBJ="A SAMPLE CCR"
     312 S LRMSUBJ=$E(LRMSUBJ,1,65)
     313 D SENDMSG^XMXAPI(9,LRMSUBJ,"GN",.LRTO,.LRINSTR,.LRTASK)
     314 Q
     315CHUNK(OUTXML,INXML,ZSIZE) ; BREAKS INXML INTO ZSIZE BLOCKS
     316 ; INXML IS AN ARRAY PASSED BY NAME OF STRINGS
     317 ; OUTXML IS ALSO PASSED BY NAME
     318 ; IF ZSIZE IS NOT PASSED, 1000 IS USED
     319 I '$D(ZSIZE) S ZSIZE=1000 ; DEFAULT BLOCK SIZE
     320 N ZB,ZI,ZJ,ZK,ZL,ZN
     321 S ZB=ZSIZE-1
     322 S ZN=1
     323 S ZI=0 ; BEGINNING OF INDEX TO INXML
     324 F  S ZI=$O(@INXML@(ZI)) Q:+ZI=0  D  ; FOR EACH STRING IN INXML
     325 . S ZL=$L(@INXML@(ZI)) ; LENGTH OF THE STRING
     326 . F ZJ=1:ZSIZE:ZL D  ;
     327 . . S ZK=$S(ZJ+ZB<ZL:ZJ+ZB,1:ZL) ; END FOR EXTRACT
     328 . . S @OUTXML@(ZN)=$E(@INXML@(ZI),ZJ,ZK) ; PULL OUT THE PIECE
     329 . . S ZN=ZN+1 ; INCREMENT OUT ARRAY INDEX
     330 Q
     331 ;
     332CLEAN(IARY) ; RUNS THROUGH AN ARRAY PASSED BY NAME AND STRIPS OUT $C(13)
     333 ;
     334 N ZI S ZI=0
     335 F  S ZI=$O(@IARY@(ZI)) Q:+ZI=0  D  ;
     336 . S @IARY@(ZI)=$TR(@IARY@(ZI),$C(13)) ;
     337 . I $F(@IARY@(ZI)," <") S @IARY@(ZI)="<"_$P(@IARY@(ZI)," <",2) ; RM BLNKS
     338 Q
     339 ;
Note: See TracChangeset for help on using the changeset viewer.