| [1024] | 1 | #!perl -w
|
|---|
| 2 | #this program converts a csv file of patient data to wikitext format
|
|---|
| 3 | #
|
|---|
| 4 | #this software is copyright George Lilly 2010 and is available as GPL
|
|---|
| 5 | #its home is https://trac.opensourcevista.net/browser/hData/trunk/test-patients
|
|---|
| 6 | #
|
|---|
| 7 | #purpose: convert csv file to wikitext
|
|---|
| 8 | #Second part of a chain of conversions which will create
|
|---|
| 9 | #hData versions of the test patients. Also generate wiki-formatted versions
|
|---|
| 10 | #to put on VistAPedia.
|
|---|
| 11 | #
|
|---|
| 12 | my($intbl) = "none";
|
|---|
| 13 | sub endtbl {
|
|---|
| 14 | print "\|\}\n";
|
|---|
| 15 | }
|
|---|
| 16 | sub dotr {
|
|---|
| 17 | print "\|----\n";
|
|---|
| 18 | }
|
|---|
| 19 | sub doetr {
|
|---|
| 20 | print "\|----\n";
|
|---|
| 21 | }
|
|---|
| 22 | sub spancol {
|
|---|
| 23 | my $tit = shift ;
|
|---|
| 24 | my $cols = shift;
|
|---|
| 25 | print "\{\| border=\"1\"\|\n";
|
|---|
| 26 | print "\!colspan=\"$cols\"\|$tit\n";
|
|---|
| 27 | }
|
|---|
| 28 | sub docol {
|
|---|
| 29 | my $tit = shift ;
|
|---|
| 30 | print "\!scope\=\"col\"\|$tit\n";
|
|---|
| 31 | }
|
|---|
| 32 | sub dorow {
|
|---|
| 33 | my $tit = shift ;
|
|---|
| 34 | print "\|$tit\n";
|
|---|
| 35 | }
|
|---|
| 36 |
|
|---|
| 37 |
|
|---|
| 38 | while(<STDIN>)
|
|---|
| 39 | {
|
|---|
| 40 | my($line) = $_;
|
|---|
| 41 | chomp($line);
|
|---|
| 42 | $line =~ s/ $//g;
|
|---|
| 43 | if (($line =~ m/^Patient/)&&($line !~ m/Summary/)) {
|
|---|
| 44 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 45 | spancol("Patient",6);
|
|---|
| 46 | # print "$line\n";
|
|---|
| 47 | $intbl = "Patient";
|
|---|
| 48 | }
|
|---|
| 49 | elsif (($intbl =~ "Patient")&&($line =~ m/^Name/)) {
|
|---|
| 50 | dotr;
|
|---|
| 51 | $_ = $line;
|
|---|
| 52 | push @cols, split(/\|/);
|
|---|
| 53 | docol($_) for @cols ;
|
|---|
| 54 | doetr;
|
|---|
| 55 | @cols = ();
|
|---|
| 56 | }
|
|---|
| 57 | elsif ($line =~ m/^Problem List/) {
|
|---|
| 58 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 59 | spancol("Problem List",6);
|
|---|
| 60 | # print "$line\n";
|
|---|
| 61 | $intbl = "Problem List";
|
|---|
| 62 | }
|
|---|
| 63 | elsif (($intbl =~ "Problem List")&&($line =~ m/^Type/)) {
|
|---|
| 64 | dotr;
|
|---|
| 65 | $_ = $line;
|
|---|
| 66 | push @cols, split(/\|/);
|
|---|
| 67 | docol($_) for @cols ;
|
|---|
| 68 | doetr;
|
|---|
| 69 | @cols = ();
|
|---|
| 70 | }
|
|---|
| 71 | elsif ($line =~ m/^Medication List/) {
|
|---|
| 72 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 73 | spancol("Medication List",10);
|
|---|
| 74 | # print "$line\n";
|
|---|
| 75 | $intbl = "Medication List";
|
|---|
| 76 | }
|
|---|
| 77 | elsif (($intbl =~ "Medication List")&&($line =~ m/^RxNorm/)) {
|
|---|
| 78 | dotr;
|
|---|
| 79 | $_ = $line;
|
|---|
| 80 | push @cols, split(/\|/);
|
|---|
| 81 | docol($_) for @cols ;
|
|---|
| 82 | doetr;
|
|---|
| 83 | @cols = ();
|
|---|
| 84 | }
|
|---|
| 85 | elsif ($line =~ m/^Medication Allergy List/) {
|
|---|
| 86 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 87 | spancol("Medication Allergy List",5);
|
|---|
| 88 | # print "$line\n";
|
|---|
| 89 | $intbl = "Medication Allergy List";
|
|---|
| 90 | }
|
|---|
| 91 | elsif (($intbl =~ "Medication Allergy List")&&($line =~ m/^Type/)) {
|
|---|
| 92 | dotr;
|
|---|
| 93 | $_ = $line;
|
|---|
| 94 | push @cols, split(/\|/);
|
|---|
| 95 | docol($_) for @cols ;
|
|---|
| 96 | doetr;
|
|---|
| 97 | @cols = ();
|
|---|
| 98 | }
|
|---|
| 99 | elsif ($line =~ m/^Diagnostic Test Results/) {
|
|---|
| 100 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 101 | spancol("Diagnostic Test Results",5);
|
|---|
| 102 | # print "$line\n";
|
|---|
| 103 | $intbl = "Diagnostic Test Results";
|
|---|
| 104 | }
|
|---|
| 105 | elsif (($intbl =~ "Diagnostic Test Results")&&($line =~ m/^Type/)) {
|
|---|
| 106 | dotr;
|
|---|
| 107 | $_ = $line;
|
|---|
| 108 | push @cols, split(/\|/);
|
|---|
| 109 | docol($_) for @cols ;
|
|---|
| 110 | doetr;
|
|---|
| 111 | @cols = ();
|
|---|
| 112 | }
|
|---|
| 113 | elsif ($line =~ m/^Procedure List/) {
|
|---|
| 114 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 115 | spancol("Procedure List",5);
|
|---|
| 116 | # print "$line\n";
|
|---|
| 117 | $intbl = "Procedure List";
|
|---|
| 118 | }
|
|---|
| 119 | elsif (($intbl =~ "Procedure List")&&($line =~ m/^Type/)) {
|
|---|
| 120 | dotr;
|
|---|
| 121 | $_ = $line;
|
|---|
| 122 | push @cols, split(/\|/);
|
|---|
| 123 | docol($_) for @cols ;
|
|---|
| 124 | doetr;
|
|---|
| 125 | @cols = ();
|
|---|
| 126 | }
|
|---|
| 127 | elsif (($intbl !~ "none")&&($line =~ m/\|/)) {
|
|---|
| 128 | $_ = $line;
|
|---|
| 129 | push @rows, split(/\|/);
|
|---|
| 130 | dorow($_) for @rows ;
|
|---|
| 131 | doetr;
|
|---|
| 132 | @rows = ();
|
|---|
| 133 | }
|
|---|
| 134 | else {
|
|---|
| 135 | if ($intbl !~ "none") { endtbl; }
|
|---|
| 136 | print "$line\n";
|
|---|
| 137 | $intbl = "none";
|
|---|
| 138 | }
|
|---|
| 139 | }
|
|---|