1. Converting HRS’ OASIS Schedule Output to Google Calendar

    2011-05-10

    The Heart Rhythm Society uses a system called OASIS for online schedule planning. I wanted to put the output into google calendar, but they only output it in formats that were not compatible with Google Calendar. However, one of those formats is CSV, and it’s not too hard to process with perl, so I made a little converter.

    Caveats: It was designed to work with this year’s OASIS, it discards some data, it may be full of bugs, etc. It was hacked out in less than an hour until it did its job sufficiently well, then left as it was.

    That said, it worked great for me. Also, it puts all posters from a given session in the event description of a single session item. Here it is:


    #!/usr/bin/env perl

    use strict;

    unless (@ARGV == 1){
    print "Usage: convert_itinerary.pl <input filename>";
    }

    open(INPUT, "<$ARGV[0]") || die "Failed to read file $ARGV[0]: $!\n";
    chomp(my @input = <INPUT>);
    close(INPUT);

    my $line = 0;

    shift(@input);

    print "\"Subject\",\"Start Date\",\"Start time\",\"End Date\",\"End Time\",\"Description\",\"Location\"\n";

    my %psessions = {};

    foreach my $line (@input){
    my @tmp = split(/,/, $line);

    my $subject = '';
    my $description = '';
    my $location = '';

    for(my $i=0; $i<=12; $i++){
    $tmp[$i] =~ s/"//g;
    $tmp[$i] =~ s/^\s+//g;
    $tmp[$i] =~ s/\s+$//g;
    }

    # Use session time if no presentation time given
    if($tmp[5] == ''){
    $tmp[5] = $tmp[3];
    $tmp[6] = $tmp[4];
    }

    # Split times and dates
    $tmp[5] =~ /([0-9]+\/[0-9]+\/[0-9]+)\s+([0-9]+:[0-9]+\s+[AP]M)/;
    my $stime = $2;
    my $sdate = $1;

    $tmp[6] =~ /([0-9]+\/[0-9]+\/[0-9]+)\s+([0-9]+:[0-9]+\s+[AP]M)/;
    my $etime = $2;
    my $edate = $1;

    # Posters
    if ($tmp[11] =~ /^Poster Session$/){
    my $pskey = "$tmp[7]";
    if(!defined($psessions{$pskey})){
    print STDERR "Found poster session $pskey\n";
    $psessions{$pskey} = {};
    $psessions{$pskey}{'subject'} = $tmp[8];
    $psessions{$pskey}{'stime'} = $stime;
    $psessions{$pskey}{'sdate'} = $sdate;
    $psessions{$pskey}{'etime'} = $etime;
    $psessions{$pskey}{'edate'} = $edate;
    $psessions{$pskey}{'location'} = $tmp[9];
    }
    if(!defined($psessions{$pskey}{'description'})){
    $psessions{$pskey}{'description'} = '';
    }
    $psessions{$pskey}{'description'} .= "$tmp[0] - $tmp[12] by $tmp[1] $tmp[2]\r";
    }else{
    $subject = "$tmp[7] - $tmp[8] - $tmp[12]";
    $description = "by $tmp[1] $tmp[2]";
    $location = "$tmp[9]";
    print "\"$subject\",\"$sdate\",\"$stime\",\"$edate\",\"$etime\",\"$description\",\"$location\"\n";
    }
    }

    # print poster sessions
    my @subkeys = qw(subject sdate stime edate etime description);

    foreach my $key ( keys %psessions ){
    my $sep = '","';
    print '"';
    foreach my $subkey (@subkeys){
    print $psessions{$key}{$subkey}.$sep;
    }
    print $psessions{$key}{'location'}.'"'."\n";
    }

  2. Hearty Friday – Larger Printed Heart

    2011-04-29

    image

    image

    I scaled up the rabbit heart a bit and flattened the base. It prints much more nicely now.

  3. UCSD Rabbit Heart – Printed on a RepRap

    2011-04-27

    image

    image

    image

    This is a model I have seen on my computer screen over and over since 2002. Now I can print it and hold it in my hand! Look for me at HRS next week if you want one.

    Here’s a video of it printing:

  4. The Heart Rhythm Podcast Without iTunes

    2011-03-16

    The Heart Rhythm Society has an interesting podcast, wherein the author of an article in each issue is interviewed, often by Dr. Doug Zipes. I tried to sign up for it here, but it only gives directions for subscribing with iTunes. I don’t care for iTunes these days, so I went about finding the real RSS feed for the podcast.

    If you want it, here it is:

    http://podcasts.elsevierhealth.com/HRTHM/hrthm_rss.xml

    Hopefully the webmaster at HRS will wise up and post this link as well. Enjoy!

  5. Cool story on ablation outside of treatment guidelines

    2009-11-21

    I read Dr.Wes’ blog to get better insight into the professional lives and needs of clinical cardiologists and EPs. This week, Dr.Wes posted an excerpt from and commented on this interesting account of ablation in a baby. I’ll repeat the excerpt because it’s worth showing:

    All of the planned means of tackling Stellan’s SVT today during his ablation failed initially. Heart block was induced each and every time from each and every angle they tried to ablate. Dr. A and his team were left with little choice but to ablate Stellan’s AV node in order to get rid of his accessory pathway. But before they did, one of Dr. A’s colleagues threw out a wild idea.

    “Let’s try to go through his aorta.”

    Not in the plan. Not even in the possible or hypothetical plans. Not considered safe or feasible or wise on a 10 kilo baby. But with few options left before destroying Stellan’s node, they decided to risk it.

    To be honest, I’m glad I didn’t know about it at the time.

    So from his groin, they threaded the catheter up into his aorta, down into his atrium and through his valve toward his ventricle. From that angle, even though Dr. A said they were in the exact same spot as they’d tried ablating earlier, there was a money shot. He tried cryoablation. It started to zap his SVT with no heart block. So he tried a little more cryo. Again, no heart block.

    So Dr. A pulled out the big dog. The radio frequency ablation catheter. His ultimate goal was to get 2 to 3 seconds of ablating done, even if it destroyed his node.

    1 second. 2 seconds. 3, 4, 5.

    From that angle, through the aorta, Stellan’s AV node remained untouched.

    Unbelievably, Dr. A was able to crank up the wattage and ablate Stellan’s extra pathway for one solid minute before declaring his pathway dead on arrival.

    And his AV node is as happy as the day is long.

    Dr.Wes aptly notes that this sort of thing does not meet with the idealized always-follow-the-guidelines-or-else strategy being espoused by Washington of late. On the one hand, I’m all for evidence-based medicine and adhering to known best practices. On the other, this is a clear example of the variability that occurs from patient to patient, and the importance of experience and skill on the part of physicians enabling them to know when to bend or break the guidelines. Bravo.