예제 #1
0
파일: tests.py 프로젝트: hassanNS/avocado
    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>')
            ]))
예제 #2
0
파일: tests.py 프로젝트: leipzig/avocado
    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>')
            ]))
예제 #3
0
    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')
예제 #4
0
        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')
예제 #5
0
                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')
예제 #6
0
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')
예제 #7
0
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')
예제 #8
0
    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')
예제 #9
0
    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')
예제 #11
0
        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')
예제 #12
0
        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")
예제 #13
0
파일: formatters.py 프로젝트: rv816/serrano
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)
예제 #14
0
        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')
예제 #15
0
            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')
예제 #16
0
        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')
예제 #17
0
    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")