| [1024] | 1 | #!/usr/bin/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 | } | 
|---|