[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 | }
|
---|