def test_format(self): name_field = DataField.objects.get_by_natural_key( 'tests', 'title', 'name') salary_field = DataField.objects.get_by_natural_key( 'tests', 'title', 'salary') boss_field = DataField.objects.get_by_natural_key( 'tests', 'title', 'boss') concept = DataConcept(name='Title') concept.save() DataConceptField(concept=concept, field=name_field, order=1).save() DataConceptField(concept=concept, field=salary_field, order=2).save() DataConceptField(concept=concept, field=boss_field, order=3).save() values = ['CEO', 100000, True] self.assertEqual( concept.format(values), OrderedDict([(u'name', u'CEO'), (u'salary', 100000), (u'boss', True)])) self.assertEqual(concept._formatter_cache[0], None) from avocado.formatters import Formatter, registry as formatters class HtmlFormatter(Formatter): def to_html(self, values, **context): fvalues = self(values, preferred_formats=['string']) return OrderedDict({ 'profile': '<span>' + '</span><span>'.join(fvalues.values()) + '</span>' }) to_html.process_multiple = True formatters.register(HtmlFormatter, 'HTML') concept.formatter_name = 'HTML' self.assertEqual( concept.format(values, preferred_formats=['html']), OrderedDict([ ('profile', u'<span>CEO</span><span>100000</span><span>True</span>') ]))
def test_format(self): name_field = DataField.objects.get_by_natural_key('models', 'title', 'name') salary_field = DataField.objects.get_by_natural_key('models', 'title', 'salary') boss_field = DataField.objects.get_by_natural_key('models', 'title', 'boss') concept = DataConcept(name='Title') concept.save() DataConceptField(concept=concept, field=name_field, order=1).save() DataConceptField(concept=concept, field=salary_field, order=2).save() DataConceptField(concept=concept, field=boss_field, order=3).save() values = ['CEO', 100000, True] self.assertEqual(concept.format(values), OrderedDict([ (u'name', u'CEO'), (u'salary', 100000), (u'boss', True) ])) self.assertEqual(concept._formatter_cache[0], None) from avocado.formatters import Formatter, registry as formatters class HtmlFormatter(Formatter): def to_html(self, values, **context): fvalues = self(values, preferred_formats=['string']) return OrderedDict({ 'profile': '<span>' + '</span><span>'.join(fvalues.values()) + '</span>' }) to_html.process_multiple = True formatters.register(HtmlFormatter, 'HTML') concept.formatter_name = 'HTML' self.assertEqual(concept.format(values, preferred_formats=['html']), OrderedDict([ ('profile', u'<span>CEO</span><span>100000</span><span>True</span>') ]))
def to_html(self, values, **context): from avocado.models import DataField test_names = ['plan','pro_adhere'] html_str = "" for name in test_names: if getattr(values, name) != None and getattr(values, name) != 'NONE': data_field = DataField.objects.get_by_natural_key('openmrs', 'pcpdetails', name) html_str += "<tr><td>{0}</td><td>{1}</td></tr>".format(data_field, getattr(values, name)) if html_str != "": return "<table class='table table-striped'>{0}</table>".format(html_str) return "" class MRNFormatter(Formatter): def to_html(self, value, **context): url = reverse('patient-detail', kwargs={'mrn': value}) return '<a href="{0}">{1}</a>'.format(url, value) registry.register(AgeFormatter, 'Age') registry.register(GenderFormatter, 'Gender') registry.register(EncounterAgeFormatter, 'EncounterAge') registry.register(CbcPanelFormatter, 'CbcPanel') registry.register(Chem7PanelFormatter, 'Chem7') registry.register(MiscPanelFormatter, 'MiscLab') registry.register(SystemsFormatter, 'SystemsReview') registry.register(HIVDetailFormatter, 'HIVDetail') registry.register(TBDetailFormatter, 'TBDetail') registry.register(PCPDetailFormatter, 'PCPDetail') registry.register(MRNFormatter, 'MRN')
except Pathogenicity.DoesNotExist: return 'n/a' return pathogenicity.name class AssessmentCategory(HTMLFormatter): def to_html(self, value, **context): from .models import AssessmentCategory try: category = AssessmentCategory.objects.get(pk=value) except AssessmentCategory.DoesNotExist: return '<span class="muted">n/a</span>' return category.name def to_excel(self, value, **context): from .models import AssessmentCategory try: category = AssessmentCategory.objects.get(pk=value) except AssessmentCategory.DoesNotExist: return 'n/a' return category.name formatters.register(Pathogenicity, 'Pathogenicity') formatters.register(AssessmentCategory, 'Assessment Category')
href=href, label=values['symbol']) to_html.process_multiple = True def to_excel(self, values, **context): if values['symbol']: href = self.href.format(values['symbol']) return '=HYPERLINK("{href}", "{label}")'.format( href=href, label=values['symbol']) to_excel.process_multiple = True class RefSeqTranscript(HTMLFormatter): href = 'http://www.ncbi.nlm.nih.gov/nuccore/{}' def to_html(self, value, **context): if value: href = self.href.format(value) return '<a target=_blank href="{href}">{label}</a>'.format( href=href, label=value) def to_excel(self, value, **context): if value: href = self.href.format(value) return '=HYPERLINK("{href}", "{label}")'.format( href=href, label=value) formatters.register(HGNCGene, 'HGNC Gene') formatters.register(NCBIGene, 'NCBI Gene') formatters.register(RefSeqTranscript, 'RefSeq Transcript')
from avocado.formatters import registry from serrano.formatters import HTMLFormatter class VaccineFormatter(HTMLFormatter): def to_html(self, values, **context): print values status = values['status'] name = values['name'] if status == 'PREVIOUS IMMUNIZATIONS ADMINISTERED': status = "(PREVIOUSLY ADMINISTERED)" return "<strong>" + name + "</strong> " + "<span class='text-info'>" + status + "</span></br>" elif status == "IMMUNIZATIONS ORDERED": status = "(ORDERED)" return "<strong>" + name + "</strong> " + "<span class='text-warning'>" + status + "</span></br>" return "<h5>" + name + " " + status + "</h5>" to_html.process_multiple = True registry.register(VaccineFormatter, 'Vaccine')
from avocado.formatters import registry as formatters from serrano.formatters import HTMLFormatter class FowardSlashDelimited(HTMLFormatter): delimiter = ' / ' class CommaSeparated(HTMLFormatter): delimiter = ', ' formatters.register(HTMLFormatter, 'HTML') formatters.register(FowardSlashDelimited, 'Forward-slash Delimited') formatters.register(CommaSeparated, 'Comma-separated')
to_csv = to_excel class PolyPhen2Formatter(HTMLFormatter): alt_keys = ('PolyPhen2 Score', 'PolyPhen2 Prediction') def _get_values(self, value): from .models import PolyPhen2 return value, PolyPhen2.get_prediction(value) def to_html(self, value, **context): if value is None: return self.html_map[value] score, prediction = self._get_values(value) return '{0} <span class=muted>({1})</span>'.format(prediction, score) def to_excel(self, value, **context): score, prediction = self._get_values(value) return OrderedDict(zip(self.alt_keys, [score, prediction])) to_csv = to_excel formatters.register(GenomicCoordinate, 'Genomic Coordinate') formatters.register(dbSNP, 'dbSNP') formatters.register(VariantEffect, 'Variant Effect') formatters.register(AlleleFrequency, 'Allele Frequency') formatters.register(SiftFormatter, 'Sift') formatters.register(PolyPhen2Formatter, 'PolyPhen2')
to_csv = to_excel class PolyPhen2Formatter(HTMLFormatter): alt_keys = ('PolyPhen2 Score', 'PolyPhen2 Prediction') def _get_values(self, value): from vdw.variants.models import PolyPhen2 return value, PolyPhen2.get_prediction(value) def to_html(self, value, **context): if value is None: return self.html_map[value] score, prediction = self._get_values(value) return '{0} <span class=muted>({1})</span>'.format(prediction, score) def to_excel(self, value, **context): score, prediction = self._get_values(value) return OrderedDict(zip(self.alt_keys, [score, prediction])) to_csv = to_excel formatters.register(GenomicCoordinate, 'Genomic Coordinate') formatters.register(dbSNP, 'dbSNP') formatters.register(VariantEffect, 'Variant Effect') formatters.register(AlleleFrequency, 'Allele Frequency') formatters.register(SiftFormatter, 'Sift') formatters.register(PolyPhen2Formatter, 'PolyPhen2')
distinct = True class OtherMedConditionFormatter(SubjectAggregationFormatter): model = OtherMedCondition field = 'other_med_condition' distinct = True class LimsIDFormatter(SubjectAggregationFormatter): model = NautilusSubject field = 'sample_subject_id' distinct = True registry.register(PathologyReportFormatter, 'PathologyReportFormatter') registry.register(OperativeReportFormatter, 'OperativeReportFormatter') registry.register(AgeDescAggregationFormatter, 'AgeDescAggregationFormatter') registry.register(AgeAtDiagAggregationFormatter, 'AgeAtDiagAggregationFormatter') registry.register(AgeYmdAggregationFormatter, 'AgeYmdAggregationFormatter') registry.register(PatientSummaryFormatter, 'PatientSummaryFormatter') registry.register(LinkAggFormatter, 'LinkAggFormatter') registry.register(AliquotAggFormatter, 'AliqAggFormatter') registry.register(TumorLocFormatter, 'TumorLocFormatter') registry.register(OtherMedConditionFormatter, 'OtherMedConditionFormatter') registry.register(PathDiagFormatter, 'PathDiagFormatter') registry.register(RaceFormatter, 'RaceFormatter') registry.register(MolecularTestsDoneFormatter, 'MolecularTestsDoneFormatter') registry.register(DiagnosisTypeListFormatter, 'DiagnosisTypeListFormatter') registry.register(CancerPredispositionFormatter, 'CancerPredispositionFormatter') registry.register(RelapseNumberFormatter, 'RelapseNumberFormatter')
for c in cohorts: output.append((c.name, variants.get(c.pk, 0), c.count)) return output def to_html(self, value, **context): variants = self._get_cohort_variants(value, **context) html = ['<ul class=unstyled>'] for name, af, count in variants: html.append('<li><small>{0}</small> {1}% <span class=muted>({2})' '</span></li>'.format(name, str(af * 100), count)) html.append('</ul>') return ''.join(html) def to_excel(self, value, **context): variants = self._get_cohort_variants(value, **context) output = OrderedDict() for name, af, count in variants: key = '{0} Cohort Allele Freq ({1} samples)'.format(name, count) output[key] = af return output to_csv = to_excel formatters.register(AlamutFormatter, 'Alamut Query Link') formatters.register(SampleFormatter, 'Sample') formatters.register(ReadDepthFormatter, 'Read Depth') formatters.register(CohortsFormatter, 'Cohorts')
test_names = ["plan", "pro_adhere"] html_str = "" for name in test_names: if values[name] != None and values[name] != "NONE": data_field = DataField.objects.get_by_natural_key("openmrs", "pcpdetails", name) html_str += "<tr><td>{0}</td><td>{1}</td></tr>".format(data_field, values[name]) if html_str != "": return "<table class='table table-striped'>{0}</table>".format(html_str) return "" to_html.process_multiple = True class MRNFormatter(HTMLFormatter): def to_html(self, value, **context): url = reverse("patient-detail", kwargs={"mrn": value}) return '<a href="{0}">{1}</a>'.format(url, value) registry.register(AgeFormatter, "Age") registry.register(GenderFormatter, "Gender") registry.register(EncounterAgeFormatter, "EncounterAge") registry.register(CbcPanelFormatter, "CbcPanel") registry.register(Chem7PanelFormatter, "Chem7") registry.register(MiscPanelFormatter, "MiscLab") registry.register(SystemsFormatter, "SystemsReview") registry.register(HIVDetailFormatter, "HIVDetail") registry.register(TBDetailFormatter, "TBDetail") registry.register(PCPDetailFormatter, "PCPDetail") registry.register(MRNFormatter, "MRN")
from avocado.formatters import Formatter, process_multiple, registry class HTMLFormatter(Formatter): delimiter = u' ' html_map = { None: '<em>n/a</em>' } @process_multiple def to_html(self, values, **context): toks = [] for value in values.values(): # Check the html_map first if value in self.html_map: tok = self.html_map[value] # Ignore NoneTypes elif value is None: continue # Prettify floats elif type(value) is float: tok = filters.floatformat(value) else: tok = unicode(value) toks.append(tok) return self.delimiter.join(toks) registry.register(HTMLFormatter, default=True)
for name in test_names: if getattr(values, name) != None and getattr(values, name) != 'NONE': data_field = DataField.objects.get_by_natural_key( 'openmrs', 'pcpdetails', name) html_str += "<tr><td>{0}</td><td>{1}</td></tr>".format( data_field, getattr(values, name)) if html_str != "": return "<table class='table table-striped'>{0}</table>".format( html_str) return "" class MRNFormatter(Formatter): def to_html(self, value, **context): url = reverse('patient-detail', kwargs={'mrn': value}) return '<a href="{0}">{1}</a>'.format(url, value) registry.register(AgeFormatter, 'Age') registry.register(GenderFormatter, 'Gender') registry.register(EncounterAgeFormatter, 'EncounterAge') registry.register(CbcPanelFormatter, 'CbcPanel') registry.register(Chem7PanelFormatter, 'Chem7') registry.register(MiscPanelFormatter, 'MiscLab') registry.register(SystemsFormatter, 'SystemsReview') registry.register(HIVDetailFormatter, 'HIVDetail') registry.register(TBDetailFormatter, 'TBDetail') registry.register(PCPDetailFormatter, 'PCPDetail') registry.register(MRNFormatter, 'MRN')
pathogenicity = Pathogenicity.objects.get(pk=value) except Pathogenicity.DoesNotExist: return 'n/a' return pathogenicity.name class AssessmentCategory(HTMLFormatter): def to_html(self, value, **context): from vdw.assessments.models import AssessmentCategory try: category = AssessmentCategory.objects.get(pk=value) except AssessmentCategory.DoesNotExist: return '<span class="muted">n/a</span>' return category.name def to_excel(self, value, **context): from vdw.assessments.models import AssessmentCategory try: category = AssessmentCategory.objects.get(pk=value) except AssessmentCategory.DoesNotExist: return 'n/a' return category.name formatters.register(Pathogenicity, 'Pathogenicity') formatters.register(AssessmentCategory, 'Assessment Category')
to_csv = to_excel class PolyPhen2Formatter(HTMLFormatter): alt_keys = ("PolyPhen2 Score", "PolyPhen2 Prediction") def _get_values(self, value): from vdw.variants.models import PolyPhen2 return value, PolyPhen2.get_prediction(value) def to_html(self, value, **context): if value is None: return self.html_map[value] score, prediction = self._get_values(value) return "{0} <span class=muted>({1})</span>".format(prediction, score) def to_excel(self, value, **context): score, prediction = self._get_values(value) return OrderedDict(zip(self.alt_keys, [score, prediction])) to_csv = to_excel formatters.register(GenomicCoordinate, "Genomic Coordinate") formatters.register(dbSNP, "dbSNP") formatters.register(VariantEffect, "Variant Effect") formatters.register(AlleleFrequency, "Allele Frequency") formatters.register(SiftFormatter, "Sift") formatters.register(PolyPhen2Formatter, "PolyPhen2")