Beispiel #1
0
 ReferenceField(
     'Preparator',
     vocabulary='getLabContacts',
     allowed_types=('LabContact', ),
     relationship='LabContactInstrumentCertificatePreparator',
     widget=ReferenceWidget(
         checkbox_bound=0,
         label=_("Prepared by"),
         description=_(
             "The person at the supplier who prepared the certificate"),
         size=30,
         base_query={'is_active': True},
         showOn=True,
         colModel=[{
             'columnName': 'UID',
             'hidden': True
         }, {
             'columnName': 'JobTitle',
             'width': '20',
             'label': _('Job Title')
         }, {
             'columnName': 'Title',
             'width': '80',
             'label': _('Name')
         }],
     ),
 ),
 ReferenceField(
     'Validator',
     vocabulary='getLabContacts',
     allowed_types=('LabContact', ),
Beispiel #2
0
     ),
 ),
 ReferenceField(
     'SampleType',
     required=1,
     vocabulary_display_path_bound=sys.maxsize,
     allowed_types=('SampleType', ),
     relationship='SampleSampleType',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(
         label=_("Sample Type"),
         render_own_label=True,
         visible=False,
         catalog_name='bika_setup_catalog',
         base_query={'is_active': True},
         showOn=True,
     ),
 ),
 ComputedField(
     'SampleTypeTitle',
     expression=
     "here.getSampleType() and here.getSampleType().Title() or ''",
     widget=ComputedWidget(visible=False, ),
 ),
 ReferenceField(
     'SamplePoint',
     vocabulary_display_path_bound=sys.maxsize,
     allowed_types=('SamplePoint', ),
     relationship='SampleSamplePoint',
Beispiel #3
0
             )),
 ReferenceField(
     'Client',
     required=0,
     allowed_types=('Client', ),
     relationship='BatchClient',
     widget=ReferenceWidget(
         label=_("Client"),
         size=30,
         visible=True,
         base_query={'inactive_state': 'active'},
         showOn=True,
         colModel=[{
             'columnName': 'UID',
             'hidden': True
         }, {
             'columnName': 'Title',
             'width': '60',
             'label': _('Title')
         }, {
             'columnName': 'ClientID',
             'width': '20',
             'label': _('Client ID')
         }],
     ),
 ),
 StringField('ClientBatchID',
             searchable=True,
             required=0,
             widget=StringWidget(label=_("Client Batch ID"))),
 DateTimeField(
Beispiel #4
0
class BatchSchemaExtender(object):
    adapts(IBatch)
    implements(IOrderableSchemaExtender, IBrowserLayerAwareExtender)
    layer = INalLimsLayer
    security = ClassSecurityInfo()

    fields = [
        ExtDateTimeField(
            "SDGDate",
            required=True,
            widget=DateTimeWidget(
                label="Date Received",
                description="The Date the Sample Delivery Group was received by the lab.",
                show_time=False,
                datepicker_nofuture=1,
            )
        ),

        ExtStringField(
            'SDGTime',
            required=True,
            widget=StringWidget(
                label=_("Time Received"),
                description=_("The Time the Sample Delivery Group was received by the lab."),
            ),
        ),

        ExtStringField(
            'ReportContact',
            widget=StringWidget(
                label=_("Report Contact"),
                description=_("Optional field. Used if there is a secondary client the results are being tested for."),
            ),
        ),

        ExtReferenceField(
            'ProjectContact',
            required=True,
            default_method='getContactUIDForUser',
            allowed_types=('Contact',),
            referenceClass=HoldingReference,
            relationship="SDGProjectContact",
            mode="rw",
            widget=ReferenceWidget(
                label=_("Project Contact"),
                size=20,
                helper_js=("bika_widgets/referencewidget.js",
                           "++resource++bika.lims.js/contact.js"),
                description=_("The main contact for the project"),
                catalog_name="portal_catalog",
                base_query={"is_active": True,
                            "sort_limit": 50,
                            "sort_on": "sortable_title",
                            "sort_order": "ascending"},
                showOn=True,
                popup_width='400px',
                colModel=[
                    {'columnName': 'Fullname', 'width': '50',
                     'label': _('Name')},
                    {'columnName': 'EmailAddress', 'width': '50',
                     'label': _('Email Address')},
                ],
                ui_item='Fullname',
            ),
        ),

        ExtReferenceField(
            'SamplerContact',
            required=True,
            default_method='getContactUIDForUser',
            allowed_types=('Contact',),
            referenceClass=HoldingReference,
            relationship="SDGSamplerContact",
            mode="rw",
            widget=ReferenceWidget(
                label=_("Sampled By"),
                size=20,
                helper_js=("bika_widgets/referencewidget.js",
                           "++resource++bika.lims.js/contact.js"),
                description=_("The person who performed the sampling method."),
                catalog_name="portal_catalog",
                base_query={"is_active": True,
                            "sort_limit": 50,
                            "sort_on": "sortable_title",
                            "sort_order": "ascending"},
                showOn=True,
                popup_width='400px',
                colModel=[
                    {'columnName': 'Fullname', 'width': '50',
                     'label': _('Name')},
                    {'columnName': 'EmailAddress', 'width': '50',
                     'label': _('Email Address')},
                ],
                ui_item='Fullname',
            ),
        ),
        ExtFileField(
            'COC',
            widget=FileWidget(
                label="Chain Of Custody",
                description="Select a printed COC to attach.",
                visible=False,
            )
        ),
    ]

#Custom function for Contact Fields
    security.declarePublic('getContactUIDForUser')
    security.declarePublic('getCurrentDate')

    def getContactUIDForUser(self):
        """get the UID of the contact associated with the authenticated user
        """
        mt = getToolByName(self, 'portal_membership')
        user = mt.getAuthenticatedMember()
        user_id = user.getUserName()
        pc = getToolByName(self, 'portal_catalog')
        r = pc(portal_type='Contact',
               getUsername=user_id)
        if len(r) == 1:
            return r[0].UID

    def __init__(self, context):
        self.context = context

    def getOrder(self, schematas):
        return schematas

    def getFields(self):
        return self.fields
Beispiel #5
0
class AnalysisRequestSchemaExtender(object):
    adapts(IAnalysisRequest)
    implements(IOrderableSchemaExtender)

    fields = [
        ExtReferenceField(
            'Doctor',
            allowed_types=('Doctor', ),
            referenceClass=HoldingReference,
            relationship='AnalysisRequestDoctor',
            widget=ReferenceWidget(
                label=_('Doctor'),
                size=20,
                render_own_label=True,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'edit',
                    'header_table': 'visible',
                    'secondary': 'disabled'
                },
                catalog_name='portal_catalog',
                base_query={'inactive_state': 'active'},
                showOn=True,
            ),
        ),
        ExtComputedField(
            'DoctorUID',
            expression=
            'context.getDoctor() and context.getDoctor().UID() or None',
            widget=ComputedWidget(visible=False, ),
        ),
        ExtReferenceField(
            'Patient',
            required=1,
            allowed_types=('Patient', ),
            referenceClass=HoldingReference,
            relationship='AnalysisRequestPatient',
            read_permission=hpermissions.ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ReferenceWidget(
                label=_('Patient'),
                size=20,
                render_own_label=True,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'edit',
                    'secondary': 'disabled'
                },
                catalog_name='bika_patient_catalog',
                base_query={'inactive_state': 'active'},
                showOn=True,
            ),
        ),
        ExtComputedField(
            'PatientID',
            expression=
            "context.Schema()['Patient'].get(context).getPatientID() if context.Schema()['Patient'].get(context) else None",
            mode="r",
            read_permission=hpermissions.ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ComputedWidget(visible=True, ),
        ),
        ExtComputedField(
            'PatientUID',
            expression=
            "context.Schema()['Patient'].get(context).UID() if context.Schema()['Patient'].get(context) else None",
            widget=ComputedWidget(visible=False, ),
        ),
        BooleanField(
            'PanicEmailAlertToClientSent',
            default=False,
            widget=BooleanWidget(visible={
                'edit': 'invisible',
                'view': 'invisible',
                'add': 'invisible'
            }, ),
        ),
        ExtStringField(
            'ClientPatientID',
            searchable=True,
            required=0,
            read_permission=hpermissions.ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ReferenceWidget(
                label=_("Client Patient ID"),
                size=20,
                colModel=[
                    {
                        'columnName': 'id',
                        'width': '20',
                        'label': _('Patient ID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'ClientPatientID',
                        'width': '20',
                        'label': _('Client PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '60',
                        'label': _('Fullname'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'UID',
                        'hidden': True
                    },
                ],
                ui_item='ClientPatientID',
                search_query='',
                discard_empty=('ClientPatientID', ),
                search_fields=('ClientPatientID', ),
                portal_types=('Patient', ),
                render_own_label=True,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'edit',
                },
                catalog_name='bika_patient_catalog',
                base_query={'inactive_state': 'active'},
                showOn=True,
            ),
        ),
    ]

    def getOrder(self, schematas):
        default = schematas['default']
        default.remove('Patient')
        default.remove('Doctor')
        default.remove('ClientPatientID')
        default.insert(default.index('Template'), 'ClientPatientID')
        default.insert(default.index('Template'), 'Patient')
        default.insert(default.index('Template'), 'Doctor')
        schematas['default'] = default
        return schematas

    def __init__(self, context):
        self.context = context

    def getFields(self):
        return self.fields
Beispiel #6
0
class BatchSchemaExtender(object):
    adapts(IBatch)
    implements(IOrderableSchemaExtender)

    fields = [
        # ExtComputedField('ClientID',
        #     expression="context.Schema()['Client'].get(context) and context.Schema()['Client'].get(context).ID() or None",
        # ),
        # ExtComputedField('ClientUID',
        #     expression="context.Schema()['Client'].get(context) and context.Schema()['Client'].get(context).UID() or None",
        # ),
        # ExtComputedField('ClientTitle',
        #     expression="context.Schema()['Client'].get(context) and context.Schema()['Client'].get(context).Title() or None",
        # ),
        ExtReferenceField(
            'Doctor',
            required=1,
            multiValued=0,
            allowed_types=('Doctor', ),
            referenceClass=HoldingReference,
            relationship='BatchDoctor',
            widget=ReferenceWidget(
                label=_("Doctor"),
                description="",
                render_own_label=False,
                visible={
                    'edit': 'visible',
                    'view': 'visible'
                },
                base_query={'inactive_state': 'active'},
                catalog_name='portal_catalog',
                showOn=True,
                colModel=[
                    {
                        'columnName': 'DoctorID',
                        'width': '20',
                        'label': _('Doctor ID')
                    },
                    {
                        'columnName': 'Title',
                        'width': '80',
                        'label': _('Full Name')
                    },
                ],
                add_button={
                    'visible': True,
                    'url': 'doctors/portal_factory/Doctor/new/edit',
                    'return_fields': ['Firstname', 'Surname'],
                    'js_controllers': [
                        '#doctor-base-edit',
                    ],
                    'overlay_handler': 'HealthDoctorOverlayHandler',
                },
                edit_button={
                    'visible': True,
                    # url with the root to create/edit a object.
                    'url': 'doctors/portal_factory/Doctor',
                    'return_fields': ['Firstname', 'Surname'],
                    'js_controllers': [
                        '#doctor-base-edit',
                    ],
                    'overlay_handler': 'HealthDoctorOverlayHandler',
                }),
        ),
        # ExtComputedField('DoctorID',
        #     expression="context.Schema()['Doctor'].get(context) and context.Schema()['Doctor'].get(context).ID() or None",
        # ),
        # ExtComputedField('DoctorUID',
        #     expression="context.Schema()['Doctor'].get(context) and context.Schema()['Doctor'].get(context).UID() or None",
        # ),
        # ExtComputedField('DoctorTitle',
        #     expression="context.Schema()['Doctor'].get(context) and context.Schema()['Doctor'].get(context).Title() or None",
        # ),
        ExtReferenceField(
            'Patient',
            required=1,
            multiValued=0,
            allowed_types=('Patient', ),
            referenceClass=HoldingReference,
            relationship='BatchPatient',
            widget=ReferenceWidget(
                label=_("Patient"),
                description="",
                render_own_label=False,
                visible={
                    'edit': 'visible',
                    'view': 'visible'
                },
                base_query={'inactive_state': 'active'},
                catalog_name='bika_patient_catalog',
                showOn=True,
                colModel=[{
                    'columnName': 'getPatientID',
                    'width': '20',
                    'label': _('Patient ID')
                }, {
                    'columnName': 'Title',
                    'width': '40',
                    'label': _('Full Name')
                }, {
                    'columnName': 'PatientIdentifiers',
                    'width': '40',
                    'label': _('Additional Identifiers')
                }],
                add_button={
                    'visible': True,
                    'url': 'patients/portal_factory/Patient/new/edit',
                    'return_fields': ['Firstname', 'Surname'],
                    'js_controllers': [
                        '#patient-base-edit',
                    ],
                    'overlay_handler': 'HealthPatientOverlayHandler',
                },
                edit_button={
                    'visible': True,
                    # url with the root to create/edit a object.
                    'url': 'patients/portal_factory/Patient',
                    'return_fields': ['Firstname', 'Surname'],
                    'js_controllers': [
                        '#patient-base-edit',
                    ],
                    'overlay_handler': 'HealthPatientOverlayHandler',
                }),
        ),
        # ExtComputedField('PatientID',
        #     expression="context.Schema()['Patient'].get(context) and context.Schema()['Patient'].get(context).ID() or None",
        # ),
        # ExtComputedField('PatientUID',
        #     expression="context.Schema()['Patient'].get(context) and context.Schema()['Patient'].get(context).UID() or None",
        # ),
        # ExtComputedField('PatientTitle',
        #     expression="context.Schema()['Patient'].get(context) and context.Schema()['Patient'].get(context).Title() or None",
        # ),
        ExtDateTimeField(
            'OnsetDate',
            widget=DateTimeWidget(label=_('Onset Date'), ),
        ),
        ExtStringField(
            'PatientBirthDate',
            widget=StringWidget(visible=False, ),
        ),
        ExtRecordsField(
            'PatientAgeAtCaseOnsetDate',
            widget=SplittedDateWidget(
                label=_('Patient Age at Case Onset Date'), ),
        ),
        ExtBooleanField(
            'OnsetDateEstimated',
            default=False,
            widget=BooleanWidget(label=_("Onset Date Estimated"), ),
        ),
        ExtRecordsField(
            'ProvisionalDiagnosis',
            type='provisionaldiagnosis',
            subfields=('Code', 'Title', 'Description', 'Onset'),
            # Temporary fix: https://github.com/bikalabs/bika.health/issues/89
            #required_subfields=('Title'),
            subfield_sizes={
                'Code': 7,
                'Title': 20,
                'Description': 35,
                'Onset': 10
            },
            subfield_labels={
                'Code': _('Code'),
                'Title': _('Provisional diagnosis'),
                'Description': _('Description'),
                'Onset': _('Onset')
            },
            subfield_types={'Onset': 'datepicker_nofuture'},
            widget=RecordsWidget(
                label='Provisional diagnosis',
                combogrid_options={
                    'Title': {
                        'colModel': [{
                            'columnName': 'Code',
                            'width': '10',
                            'label': _('Code')
                        }, {
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Title')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _('Description')
                        }],
                        'url':
                        'getsymptomsbytitle',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                    'Code': {
                        'colModel': [{
                            'columnName': 'Code',
                            'width': '10',
                            'label': _('Code')
                        }, {
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Title')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _('Description')
                        }],
                        'url':
                        'getsymptomsbycode',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                    'Description': {
                        'colModel': [{
                            'columnName': 'Code',
                            'width': '10',
                            'label': _('Code')
                        }, {
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Title')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _('Description')
                        }],
                        'url':
                        'getsymptomsbydesc',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                },
            ),
        ),
        ExtTextField(
            'AdditionalNotes',
            default_content_type='text/plain',
            allowable_content_types=('text/plain', ),
            default_output_type="text/plain",
            widget=TextAreaWidget(label=_('Additional notes'), ),
        ),
        ExtLinesField(
            'CaseStatus',
            vocabulary=getCaseStatus(),
            widget=MultiSelectionWidget(format='checkbox',
                                        label=_("Case status")),
        ),
        ExtLinesField(
            'CaseOutcome',
            vocabulary=getCaseOutcome(),
            widget=MultiSelectionWidget(format='checkbox',
                                        label=_("Case outcome")),
        ),
        ExtRecordsField(
            'Symptoms',
            type='symptoms',
            subfields=('UID', 'Title', 'Description', 'Severity'),
            widget=CaseSymptomsWidget(label='Symptoms', ),
        ),
        ExtRecordsField(
            'AetiologicAgents',
            type='aetiologicagents',
            subfields=('Title', 'Description', 'Subtype'),
            subfield_sizes={
                'Title': 15,
                'Description': 25,
                'Subtype': 10
            },
            subfield_labels={
                'Title': _('Aetiologic agent'),
                'Description': _b('Description'),
                'Subtype': _('Subtype')
            },
            # Temporary fix: https://github.com/bikalabs/bika.health/issues/89
            # required_subfields=('Title'),
            widget=RecordsWidget(
                label='Aetiologic agents',
                combogrid_options={
                    'Title': {
                        'colModel': [{
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Aetiologic agent')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _b('Description')
                        }, {
                            'columnName': 'Subtype',
                            'width': '30',
                            'label': _('Subtype')
                        }],
                        'url':
                        'getaetiologicagents',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                },
            ),
        ),
        ExtIntegerField(
            'HoursFasting',
            required=0,
            widget=IntegerWidget(label=_('Hours fasting'), ),
        ),
        ExtRecordsField(
            'PatientCondition',
            widget=CasePatientConditionWidget(label='Patient condition', ),
        ),
        ExtRecordsField(
            'MenstrualStatus',
            widget=CaseMenstrualStatusWidget(label='Menstrual status', ),
        ),
        ExtRecordsField(
            'BasalBodyTemperature',
            widget=CaseBasalBodyTempWidget(label='Basal body temperature', ),
        ),
        ExtStringField(
            'ClientPatientID',
            searchable=True,
            required=0,
            widget=ReferenceWidget(
                label=_b("Client Patient ID"),
                size=12,
                colModel=[
                    {
                        'columnName': 'id',
                        'width': '20',
                        'label': _('Patient ID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'ClientPatientID',
                        'width': '20',
                        'label': _('Client PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '60',
                        'label': _('Fullname'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'UID',
                        'hidden': True
                    },
                ],
                ui_item='ClientPatientID',
                search_query='',
                discard_empty=('ClientPatientID', ),
                search_fields=('ClientPatientID', ),
                portal_types=('Patient', ),
                render_own_label=False,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'visible'
                },
                catalog_name='bika_patient_catalog',
                base_query={'inactive_state': 'active'},
                showOn=True,
            ),
        ),
    ]

    def __init__(self, context):
        self.context = context

    def getOrder(self, schematas):
        schematas['default'] = [
            'id',
            'title',
            'description',
            'BatchID',
            'ClientPatientID',
            'Patient',
            # 'PatientID',
            # 'PatientUID',
            # 'PatientTitle',
            'Client',
            # 'ClientID',
            # 'ClientUID',
            # 'ClientTitle',
            'ClientBatchID',
            'Doctor',
            # 'DoctorID',
            # 'DoctorUID',
            # 'DoctorTitle',
            'BatchDate',
            'OnsetDate',
            'PatientAgeAtCaseOnsetDate',
            'OnsetDateEstimated',
            'HoursFasting',
            'PatientCondition',
            'BasalBodyTemperature',
            'MenstrualStatus',
            'Symptoms',
            'ProvisionalDiagnosis',
            'CaseStatus',
            'CaseOutcome',
            'AetiologicAgents',
            'AdditionalNotes',
            'Remarks',
            'PatientBirthDate',
            'BatchLabels',
            'InheritedObjects',
            'InheritedObjectsUI',
        ]
        return schematas

    def getFields(self):
        return self.fields
Beispiel #7
0
from bika.lims.content.bikaschema import BikaSchema
from bika.lims.content.bikaschema import BikaFolderSchema
from bika.lims import bikaMessageFactory as _

schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema((
    ReferenceField(
        'InstrumentType',
        vocabulary='getInstrumentTypes',
        allowed_types=('InstrumentType', ),
        relationship='InstrumentInstrumentType',
        required=1,
        widget=ReferenceWidget(
            label=_("Instrument type"),
            showOn=True,
            catalog_name='bika_setup_catalog',
            base_query={
                "is_active": True,
                "sort_on": "sortable_title",
                "sort_order": "ascending",
            },
        ),
    ),
    ReferenceField(
        'Manufacturer',
        allowed_types=('Manufacturer', ),
        relationship='InstrumentManufacturer',
        required=1,
        widget=ReferenceWidget(
            label=_("Manufacturer"),
            showOn=True,
            catalog_name='bika_setup_catalog',
            base_query={
Beispiel #8
0
 ## accessors and mutators below to get/set a string value
 ## (the Title of the object), but still store a normal Reference.
 ## Form autocomplete widgets can then work with the Titles.
 ReferenceField('SamplePoint',
     vocabulary_display_path_bound = sys.maxint,
     allowed_types = ('SamplePoint',),
     relationship = 'ARTemplateSamplePoint',
     referenceClass = HoldingReference,
     accessor = 'getSamplePoint',
     edit_accessor = 'getSamplePoint',
     mutator = 'setSamplePoint',
     widget=ReferenceWidget(
         label = _("Sample Point"),
         description = _("Location where sample was taken"),
         visible={'edit': 'visible', 'view': 'visible', 'add': 'visible',
                  'secondary': 'invisible'},
         catalog_name='bika_setup_catalog',
         base_query={'inactive_state': 'active'},
         showOn=True,
     ),
 ),
 ComputedField(
     "SamplePointUID",
     expression="context.Schema()['SamplePoint'].get(context) and context.Schema()['SamplePoint'].get(context).UID() or ''",
     widget=ComputedWidget(
         visible=False,
     ),
 ),
 ReferenceField('SampleType',
     vocabulary_display_path_bound = sys.maxint,
     allowed_types = ('SampleType',),
Beispiel #9
0
             },
         },
         render_own_label=True,
     ),
 ),
 ReferenceField(
     'LinkedSample',
     vocabulary_display_path_bound=sys.maxsize,
     multiValue=1,
     allowed_types=('Sample', ),
     relationship='SampleSample',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(label=_("Linked Sample"), ),
 ),
 ReferenceField(
     'SampleType',
     required=1,
     vocabulary_display_path_bound=sys.maxsize,
     allowed_types=('SampleType', ),
     relationship='SampleSampleType',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(
         label=_("Sample Type"),
         render_own_label=True,
         visible={
Beispiel #10
0
class AnalysisRequestSchemaExtender(object):
    adapts(IAnalysisRequest)
    implements(IOrderableSchemaExtender)

    def __init__(self, context):
        self.context = context

    fields = [
        ExtReferenceField(
            'Doctor',
            allowed_types=('Doctor', ),
            referenceClass=HoldingReference,
            relationship='AnalysisRequestDoctor',
            widget=ReferenceWidget(
                label=_('Doctor'),
                size=20,
                render_own_label=True,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'edit',
                    'header_table': 'visible',
                    'secondary': 'disabled'
                },
                catalog_name='portal_catalog',
                base_query={'inactive_state': 'active'},
                showOn=True,
                add_button={
                    'visible': True,
                    'url': 'doctors/portal_factory/Doctor/new/edit',
                    'return_fields': ['Firstname', 'Surname'],
                }),
        ),
        ExtComputedField(
            'DoctorUID',
            # It looks like recursive, but we must pass through the Schema to obtain data. In this way we allow to LIMS obtain it.
            expression="context._getDoctorUID()",
            widget=ComputedWidget(visible=False, ),
        ),
        ExtReferenceField(
            'Patient',
            required=1,
            allowed_types=('Patient', ),
            referenceClass=HoldingReference,
            relationship='AnalysisRequestPatient',
            read_permission=ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ReferenceWidget(
                label=_('Patient'),
                size=20,
                render_own_label=True,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'edit',
                    'secondary': 'disabled'
                },
                catalog_name='bikahealth_catalog_patient_listing',
                base_query={'inactive_state': 'active'},
                colModel=[
                    {
                        'columnName': 'Title',
                        'width': '30',
                        'label': _('Title'),
                        'align': 'left'
                    },
                    # UID is required in colModel
                    {
                        'columnName': 'UID',
                        'hidden': True
                    },
                ],
                showOn=True,
                add_button={
                    'visible': True,
                    'url': 'patients/portal_factory/Patient/new/edit',
                    'return_fields': ['Firstname', 'Surname'],
                    'js_controllers': [
                        '#patient-base-edit',
                    ],
                    'overlay_handler': 'HealthPatientOverlayHandler',
                }),
        ),
        ExtComputedField(
            'PatientID',
            expression=
            "context.Schema()['Patient'].get(context).getPatientID() if context.Schema()['Patient'].get(context) else None",
            mode="r",
            read_permission=ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ComputedWidget(visible=True, ),
        ),
        ExtComputedField(
            'PatientUID',
            expression="here._getPatientUID()",
            widget=ComputedWidget(visible=False, ),
        ),
        BooleanField(
            'PanicEmailAlertToClientSent',
            default=False,
            widget=BooleanWidget(visible={
                'edit': 'invisible',
                'view': 'invisible',
                'add': 'invisible'
            }, ),
        ),
        ExtStringField(
            'ClientPatientID',
            searchable=True,
            required=1,
            read_permission=ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ReferenceWidget(
                label=_("Client Patient ID"),
                size=20,
                colModel=[
                    {
                        'columnName': 'id',
                        'width': '20',
                        'label': _('Patient ID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'getClientPatientID',
                        'width': '20',
                        'label': _('Client PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '60',
                        'label': _('Fullname'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'UID',
                        'hidden': True
                    },
                ],
                ui_item='getClientPatientID',
                search_query='',
                discard_empty=('ClientPatientID', ),
                search_fields=('ClientPatientID', ),
                portal_types=('Patient', ),
                render_own_label=True,
                visible={
                    'edit': 'visible',
                    'view': 'visible',
                    'add': 'edit',
                },
                catalog_name='bikahealth_catalog_patient_listing',
                base_query={'inactive_state': 'active'},
                showOn=True,
            ),
        ),
    ]

    def getOrder(self, schematas):
        default = schematas['default']
        default.remove('Patient')
        default.remove('Doctor')
        default.remove('ClientPatientID')
        default.insert(default.index('Template'), 'ClientPatientID')
        default.insert(default.index('Template'), 'Patient')
        default.insert(default.index('Template'), 'Doctor')
        schematas['default'] = default
        return schematas

    def getFields(self):
        return self.fields
Beispiel #11
0
            "reports."),
        label=_("Comments")),
)

Department = ReferenceField(
    "Department",
    required=1,
    allowed_types=("Department",),
    relationship="AnalysisCategoryDepartment",
    referenceClass=HoldingReference,
    widget=ReferenceWidget(
        label=_("Department"),
        description=_("The laboratory department"),
        showOn=True,
        catalog_name=SETUP_CATALOG,
        base_query={
            "is_active": True,
            "sort_on": "sortable_title",
            "sort_order": "ascending"
        },
    )
)

SortKey = FloatField(
    "SortKey",
    validators=("SortKeyValidator",),
    widget=DecimalWidget(
        label=_("Sort Key"),
        description=_(
            "Float value from 0.0 - 1000.0 indicating the sort order. "
            "Duplicate values are ordered alphabetically."),
Beispiel #12
0
     allowed_types=('Client', ),
     relationship='PatientClient',
     widget=ReferenceWidget(
         label=_("Client"),
         size=30,
         catalog_name="portal_catalog",
         base_query={
             "is_active": True,
             "sort_limit": 30,
             "sort_on": "sortable_title",
             "sort_order": "ascending"
         },
         colModel=[{
             "columnName": "Title",
             "label": _("Title"),
             "width": "30",
             "align": "left"
         }, {
             "columnName": "getProvince",
             "label": _("Province"),
             "width": "30",
             "align": "left"
         }, {
             "columnName": "getDistrict",
             "label": _("District"),
             "width": "30",
             "align": "left"
         }],
         showOn=True,
     ),
 ),
 ComputedField(
Beispiel #13
0
class BatchSchemaExtender(object):
    adapts(IBatch)
    implements(IOrderableSchemaExtender)

    fields = [
        ExtReferenceField(
            'Doctor',
            required=1,
            multiValued=0,
            allowed_types=('Doctor', ),
            referenceClass=HoldingReference,
            relationship='BatchDoctor',
            widget=ReferenceWidget(
                label=_("Doctor"),
                description="",
                render_own_label=False,
                visible={
                    'edit': 'visible',
                    'view': 'visible'
                },
                base_query={'is_active': True},
                catalog_name='portal_catalog',
                showOn=True,
                colModel=[
                    {
                        'columnName': 'DoctorID',
                        'width': '20',
                        'label': _('Doctor ID')
                    },
                    {
                        'columnName': 'Title',
                        'width': '80',
                        'label': _('Full Name')
                    },
                ],
            ),
        ),
        ExtReferenceField(
            'Patient',
            required=1,
            multiValued=0,
            allowed_types=('Patient', ),
            referenceClass=HoldingReference,
            relationship='BatchPatient',
            widget=ReferenceWidget(
                label=_("Patient"),
                description="",
                render_own_label=False,
                visible={
                    'edit': 'visible',
                    'view': 'visible'
                },
                catalog_name='bikahealth_catalog_patient_listing',
                search_fields=('listing_searchable_text', ),
                base_query={
                    'is_active': True,
                    'sort_limit': 50,
                    'sort_on': 'getPatientID',
                    'sort_order': 'ascending'
                },
                colModel=[
                    {
                        'columnName': "getPatientID",
                        'width': '30',
                        'label': _('PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': "getClientPatientID",
                        'width': '30',
                        'label': _('CPID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '30',
                        'label': _('Title'),
                        'align': 'left'
                    },
                ],
                showOn=True,
            ),
        ),
        ExtDateTimeField(
            'OnsetDate',
            required=1,
            widget=DateTimeWidget(label=_('Onset Date'), ),
        ),
        ExtRecordsField(
            'PatientAgeAtCaseOnsetDate',
            widget=SplittedDateWidget(
                label=_('Patient Age at Case Onset Date'), ),
        ),
        ExtBooleanField(
            'OnsetDateEstimated',
            default=False,
            widget=BooleanWidget(label=_("Onset Date Estimated"), ),
        ),
        ExtRecordsField(
            'ProvisionalDiagnosis',
            type='provisionaldiagnosis',
            subfields=('Code', 'Title', 'Description', 'Onset'),
            # Temporary fix: https://github.com/bikalabs/bika.health/issues/89
            #required_subfields=('Title'),
            subfield_sizes={
                'Code': 7,
                'Title': 20,
                'Description': 35,
                'Onset': 10
            },
            subfield_labels={
                'Code': _('Code'),
                'Title': _('Provisional diagnosis'),
                'Description': _('Description'),
                'Onset': _('Onset')
            },
            subfield_types={'Onset': 'datepicker_nofuture'},
            widget=RecordsWidget(
                label='Provisional diagnosis',
                combogrid_options={
                    'Title': {
                        'colModel': [{
                            'columnName': 'Code',
                            'width': '10',
                            'label': _('Code')
                        }, {
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Title')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _('Description')
                        }],
                        'url':
                        'getsymptomsbytitle',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                    'Code': {
                        'colModel': [{
                            'columnName': 'Code',
                            'width': '10',
                            'label': _('Code')
                        }, {
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Title')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _('Description')
                        }],
                        'url':
                        'getsymptomsbycode',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                    'Description': {
                        'colModel': [{
                            'columnName': 'Code',
                            'width': '10',
                            'label': _('Code')
                        }, {
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Title')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _('Description')
                        }],
                        'url':
                        'getsymptomsbydesc',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                },
            ),
        ),
        ExtTextField(
            'AdditionalNotes',
            default_content_type='text/plain',
            allowable_content_types=('text/plain', ),
            default_output_type="text/plain",
            widget=TextAreaWidget(label=_('Additional notes'), ),
        ),
        ExtLinesField(
            'CaseStatus',
            vocabulary=getCaseStatus(),
            widget=MultiSelectionWidget(format='checkbox',
                                        label=_("Case status")),
        ),
        ExtLinesField(
            'CaseOutcome',
            vocabulary=getCaseOutcome(),
            widget=MultiSelectionWidget(format='checkbox',
                                        label=_("Case outcome")),
        ),
        ExtRecordsField(
            'Symptoms',
            type='symptoms',
            subfields=('UID', 'Title', 'Description', 'Severity'),
            widget=CaseSymptomsWidget(label='Symptoms', ),
        ),
        ExtRecordsField(
            'AetiologicAgents',
            type='aetiologicagents',
            subfields=('Title', 'Description', 'Subtype'),
            subfield_sizes={
                'Title': 15,
                'Description': 25,
                'Subtype': 10
            },
            subfield_labels={
                'Title': _('Aetiologic agent'),
                'Description': _b('Description'),
                'Subtype': _('Subtype')
            },
            # Temporary fix: https://github.com/bikalabs/bika.health/issues/89
            # required_subfields=('Title'),
            widget=RecordsWidget(
                label='Aetiologic agents',
                combogrid_options={
                    'Title': {
                        'colModel': [{
                            'columnName': 'Title',
                            'width': '30',
                            'label': _('Aetiologic agent')
                        }, {
                            'columnName': 'Description',
                            'width': '60',
                            'label': _b('Description')
                        }, {
                            'columnName': 'Subtype',
                            'width': '30',
                            'label': _('Subtype')
                        }],
                        'url':
                        'getaetiologicagents',
                        'showOn':
                        True,
                        'width':
                        "650px",
                    },
                },
            ),
        ),
        ExtIntegerField(
            'HoursFasting',
            required=0,
            widget=IntegerWidget(label=_('Hours fasting'), ),
        ),
        ExtRecordsField(
            'PatientCondition',
            widget=CasePatientConditionWidget(label='Patient condition', ),
        ),
        ExtRecordsField(
            'MenstrualStatus',
            widget=CaseMenstrualStatusWidget(label='Menstrual status', ),
        ),
        ExtRecordsField(
            'BasalBodyTemperature',
            widget=CaseBasalBodyTempWidget(label='Basal body temperature', ),
        ),
        ExtStringField(
            'ClientPatientID',
            required=0,
            widget=ReferenceWidget(
                label=_b("Client Patient ID"),
                size=20,
                visible={
                    'edit': 'invisible',
                    'view': 'visible',
                    'add': 'edit'
                },
                catalog_name='bikahealth_catalog_patient_listing',
                portal_types=('Patient', ),
                search_fields=('getClientPatientID', ),
                base_query={
                    'is_active': True,
                    'sort_limit': 50,
                    'sort_on': 'getClientPatientID',
                    'sort_order': 'ascending'
                },
                force_all=False,
                colModel=[
                    {
                        'columnName': "getPatientID",
                        'width': '30',
                        'label': _('PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': "getClientPatientID",
                        'width': '30',
                        'label': _('CPID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '30',
                        'label': _('Fullname'),
                        'align': 'left'
                    },
                    # UID is required in colModel
                    {
                        'columnName': 'UID',
                        'hidden': True
                    },
                ],
                ui_item="getClientPatientID",
                showOn=False,
            ),
        ),
    ]

    def __init__(self, context):
        self.context = context

    def getOrder(self, schematas):
        schematas['default'] = [
            'id',
            'title',
            'description',
            'BatchID',
            'Client',
            'ClientBatchID',
            'ClientPatientID',
            'Patient',
            'Doctor',
            'BatchDate',
            'OnsetDate',
            'OnsetDateEstimated',
            'PatientAgeAtCaseOnsetDate',
            'HoursFasting',
            'PatientCondition',
            'BasalBodyTemperature',
            'MenstrualStatus',
            'Symptoms',
            'ProvisionalDiagnosis',
            'CaseStatus',
            'CaseOutcome',
            'AetiologicAgents',
            'AdditionalNotes',
            'Remarks',
            'BatchLabels',
        ]
        return schematas

    def getFields(self):
        return self.fields
Beispiel #14
0
     multiValued=True,
     allowed_types=("AnalysisRequest",),
     relationship="ARReportAnalysisRequest",
     widget=ReferenceWidget(
         label=_("Contained Analysis Requests"),
         render_own_label=False,
         size=20,
         description=_("Referenced Analysis Requests in the PDF"),
         visible={
             "edit": "visible",
             "view": "visible",
             "add": "edit",
         },
         catalog_name="bika_catalog_analysisrequest_listing",
         base_query={},
         showOn=True,
         colModel=[
             {
                 "columnName": "UID",
                 "hidden": True,
             }, {
                 "columnName": "Title",
                 "label": "Title"
             }, {
                 "columnName": "ClientTitle",
                 "label": "Client"
             },
         ],
     ),
 ),
 RecordField(
     "Metadata",
Beispiel #15
0
from bika.lims.interfaces import IDepartment

Manager = ReferenceField(
    'Manager',
    required=1,
    allowed_types=('LabContact',),
    referenceClass=HoldingReference,
    relationship="DepartmentLabContact",
    widget=ReferenceWidget(
        label=_("Manager"),
        description=_(
            "Select a manager from the available personnel configured under "
            "the 'lab contacts' setup item. Departmental managers are "
            "referenced on analysis results reports containing analyses by "
            "their department."),
        showOn=True,
        catalog_name=SETUP_CATALOG,
        base_query=dict(
            is_active=True,
            sort_on="sortable_title",
            sort_order="ascending",
        ),
    ),
)

schema = BikaSchema.copy() + Schema((
    Manager,
))

schema['description'].widget.visible = True
schema['description'].schemata = 'default'
Beispiel #16
0
     widget=StringWidget(
         size=60,
         label=_("Lab URL"),
         description=_("The Laboratory's web address"),
     ),
 ),
 UIDReferenceField("Supervisor",
                   required=0,
                   allowed_types=("LabContact", ),
                   write_permission=ManageBika,
                   widget=ReferenceWidget(
                       label=_("Supervisor"),
                       description=_("Supervisor of the Lab"),
                       showOn=True,
                       catalog_name=SETUP_CATALOG,
                       base_query=dict(
                           is_active=True,
                           sort_on="sortable_title",
                           sort_order="ascending",
                       ),
                   )),
 IntegerField(
     "Confidence",
     schemata="Accreditation",
     widget=IntegerWidget(
         label=_("Confidence Level %"),
         description=_("This value is reported at the bottom of all "
                       "published results"),
     ),
 ),
 BooleanField(
Beispiel #17
0
         },
     ),
 ),
 ReferenceField(
     "DefaultCategories",
     schemata="Preferences",
     required=0,
     multiValued=1,
     allowed_types=("AnalysisCategory", ),
     relationship="ClientDefaultCategories",
     widget=ReferenceWidget(
         label=_("Default categories"),
         description=_(
             "Always expand the selected categories in client views"),
         showOn=True,
         catalog_name=SETUP_CATALOG,
         base_query=dict(
             is_active=True,
             sort_on="sortable_title",
             sort_order="ascending",
         ),
     ),
 ),
 ReferenceField(
     "RestrictedCategories",
     schemata="Preferences",
     required=0,
     multiValued=1,
     validators=("restrictedcategoriesvalidator", ),
     allowed_types=("AnalysisCategory", ),
     relationship="ClientRestrictedCategories",
     widget=ReferenceWidget(
Beispiel #18
0
                  'disposed':          {'view': 'visible', 'edit': 'invisible'},
                  },
         render_own_label=True,
     ),
 ),
 ReferenceField('LinkedSample',
     vocabulary_display_path_bound=sys.maxsize,
     multiValue=1,
     allowed_types=('Sample',),
     relationship='SampleSample',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(
         label=_("Linked Sample"),
     ),
 ),
 ReferenceField('SampleType',
     required=1,
     vocabulary_display_path_bound=sys.maxsize,
     allowed_types=('SampleType',),
     relationship='SampleSampleType',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(
         label=_("Sample Type"),
         render_own_label=True,
         visible={'edit': 'visible',
Beispiel #19
0
     relationship='DoctorClient',
     required=1,
     widget=ReferenceWidget(
         label=_("Client"),
         size=30,
         catalog_name="portal_catalog",
         base_query={
             "is_active": True,
             "sort_limit": 30,
             "sort_on": "sortable_title",
             "sort_order": "ascending"
         },
         colModel=[{
             "columnName": "Title",
             "label": _("Title"),
             "width": "30",
             "align": "left"
         }, {
             "columnName": "getProvince",
             "label": _("Province"),
             "width": "30",
             "align": "left"
         }, {
             "columnName": "getDistrict",
             "label": _("District"),
             "width": "30",
             "align": "left"
         }],
         showOn=True,
     ),
 ),
 ComputedField(
Beispiel #20
0
class AnalysisRequestSchemaExtender(object):
    adapts(IAnalysisRequest)
    implements(IOrderableSchemaExtender)

    def __init__(self, context):
        self.context = context

    fields = [
        ExtReferenceField(
            'Doctor',
            allowed_types=('Doctor', ),
            referenceClass=HoldingReference,
            relationship='AnalysisRequestDoctor',
            widget=ReferenceWidget(
                label=_('Doctor'),
                size=20,
                render_own_label=True,
                visible={
                    'add': 'edit',
                    'secondary': 'disabled'
                },
                catalog_name='portal_catalog',
                base_query={
                    'is_active': True,
                },
                minLength=3,
                showOn=True,
                add_button={
                    'visible': True,
                    'url': 'doctors/portal_factory/Doctor/new/edit',
                    'return_fields': ['Firstname', 'Surname'],
                }),
        ),
        ExtReferenceField(
            'Patient',
            required=1,
            allowed_types=('Patient', ),
            referenceClass=HoldingReference,
            relationship='AnalysisRequestPatient',
            read_permission=ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ReferenceWidget(
                label=_('Patient'),
                size=20,
                render_own_label=True,
                visible={
                    'add': 'edit',
                    'secondary': 'disabled'
                },
                catalog_name='bikahealth_catalog_patient_listing',
                search_fields=('listing_searchable_text', ),
                base_query={
                    'is_active': True,
                    'sort_limit': 50,
                    'sort_on': 'getPatientID',
                    'sort_order': 'ascending'
                },
                colModel=[
                    {
                        'columnName': "getPatientID",
                        'width': '30',
                        'label': _('PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': "getClientPatientID",
                        'width': '30',
                        'label': _('CPID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '30',
                        'label': _('Fullname'),
                        'align': 'left'
                    },
                ],
                minLength=3,
                showOn=True,
                add_button={
                    'visible': True,
                    'url': 'patients/portal_factory/Patient/new/edit',
                    'return_fields': ['Firstname', 'Surname'],
                    'js_controllers': [
                        '#patient-base-edit',
                    ],
                    'overlay_handler': 'HealthPatientOverlayHandler',
                }),
        ),
        ExtBooleanField(
            'PanicEmailAlertToClientSent',
            default=False,
            widget=BooleanWidget(visible={
                'edit': 'invisible',
                'view': 'invisible',
                'add': 'invisible'
            }, ),
        ),
        ExtStringField(
            'ClientPatientID',
            searchable=True,
            required=0,
            read_permission=ViewPatients,
            write_permission=permissions.ModifyPortalContent,
            widget=ReferenceWidget(
                label=_("Client Patient ID"),
                size=20,
                render_own_label=True,
                visible={
                    'add': 'edit',
                    'secondary': 'disabled'
                },
                catalog_name='bikahealth_catalog_patient_listing',
                portal_types=('Patient', ),
                search_field='getClientPatientID',
                base_query={
                    'is_active': True,
                    'sort_limit': 50,
                    'sort_on': 'getClientPatientID',
                    'sort_order': 'ascending'
                },
                colModel=[
                    {
                        'columnName': "getPatientID",
                        'width': '30',
                        'label': _('PID'),
                        'align': 'left'
                    },
                    {
                        'columnName': "getClientPatientID",
                        'width': '30',
                        'label': _('CPID'),
                        'align': 'left'
                    },
                    {
                        'columnName': 'Title',
                        'width': '30',
                        'label': _('Fullname'),
                        'align': 'left'
                    },
                ],
                ui_item="getClientPatientID",
                minLength=3,
                showOn=True,
            ),
        ),
    ]

    def getOrder(self, schematas):
        default = schematas['default']
        default.remove('Patient')
        default.remove('Doctor')
        default.remove('ClientPatientID')
        default.insert(default.index('Template'), 'ClientPatientID')
        default.insert(default.index('Template'), 'Patient')
        default.insert(default.index('Template'), 'Doctor')
        schematas['default'] = default
        return schematas

    def getFields(self):
        return self.fields
Beispiel #21
0
             'view': 'visible'
         },
         render_own_label=True,
     ),
 ),
 ReferenceField(
     'LinkedSample',
     vocabulary_display_path_bound=sys.maxsize,
     multiValue=1,
     allowed_types=('Sample', ),
     relationship='SampleSample',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(label=_("Linked Sample"), ),
 ),
 ReferenceField(
     'SampleType',
     required=1,
     vocabulary_display_path_bound=sys.maxsize,
     allowed_types=('SampleType', ),
     relationship='SampleSampleType',
     referenceClass=HoldingReference,
     mode="rw",
     read_permission=permissions.View,
     write_permission=permissions.ModifyPortalContent,
     widget=ReferenceWidget(
         label=_("Sample Type"),
         render_own_label=True,
         visible={
Beispiel #22
0
 ReferenceField(
     "SamplePoint",
     vocabulary_display_path_bound=sys.maxint,
     allowed_types=("SamplePoint", ),
     relationship="ARTemplateSamplePoint",
     referenceClass=HoldingReference,
     accessor="getSamplePoint",
     edit_accessor="getSamplePoint",
     mutator="setSamplePoint",
     widget=ReferenceWidget(
         label=_("Sample Point"),
         description=_("Location where sample is collected"),
         visible={
             "edit": "visible",
             "view": "visible",
             "add": "visible",
             "secondary": "invisible",
         },
         catalog_name="bika_setup_catalog",
         base_query={"is_active": True},
         showOn=True,
     ),
 ),
 ComputedField(
     "SamplePointUID",
     expression=
     "context.Schema()['SamplePoint'].get(context) and context.Schema()['SamplePoint'].get(context).UID() or ''",
     widget=ComputedWidget(visible=False, ),
 ),
 ReferenceField(
     "SampleType",
Beispiel #23
0
from bika.lims.config import PROJECTNAME
from bika.lims.content.bikaschema import BikaSchema
from bika.lims.content.clientawaremixin import ClientAwareMixin
from bika.lims.content.sampletype import SampleTypeAwareMixin
from bika.lims.interfaces import IAnalysisSpec
from bika.lims.interfaces import IDeactivable

schema = Schema((
    UIDReferenceField(
        'SampleType',
        allowed_types=('SampleType', ),
        required=1,
        widget=ReferenceWidget(
            label=_("Sample Type"),
            showOn=True,
            catalog_name=SETUP_CATALOG,
            base_query=dict(is_active=True,
                            sort_on="sortable_title",
                            sort_order="ascending"),
        ),
    ),
    UIDReferenceField(
        'DynamicAnalysisSpec',
        allowed_types=('DynamicAnalysisSpec', ),
        required=0,
        widget=ReferenceWidget(
            label=_("Dynamic Analysis Specification"),
            showOn=True,
            catalog_name=SETUP_CATALOG,
            base_query=dict(sort_on="sortable_title", sort_order="ascending"),
        ),
    ),
Beispiel #24
0
 ),
 ReferenceField(
     'Worker',
     vocabulary='getLabContacts',
     allowed_types=('LabContact', ),
     relationship='LabContactInstrumentValidation',
     widget=ReferenceWidget(
         checkbox_bound=0,
         label=_("Performed by"),
         description=_("The person at the supplier who performed the task"),
         size=30,
         base_query={'inactive_state': 'active'},
         showOn=True,
         colModel=[{
             'columnName': 'UID',
             'hidden': True
         }, {
             'columnName': 'JobTitle',
             'width': '20',
             'label': _('Job Title')
         }, {
             'columnName': 'Title',
             'width': '80',
             'label': _('Name')
         }],
     ),
 ),
 StringField('ReportID',
             widget=StringWidget(
                 label=_("Report ID"),
                 description=_("Report identification number"),
             )),
Beispiel #25
0
class ClientSchemaExtender(object):
    adapts(IClient)
    implements(IOrderableSchemaExtender, IBrowserLayerAwareExtender)
    layer = INalLimsLayer

    fields = [
        ExtStringField("MBGGrowerNumber",
                       schemata="Grower Info",
                       required=False,
                       widget=StringWidget(
                           label="MBG Grower Number",
                           description="",
                       )),
        ExtStringField("TBGrowerNumber",
                       schemata="Grower Info",
                       required=False,
                       widget=StringWidget(
                           label="True Blue Grower Number",
                           description="",
                       )),
        ExtReferenceField(
            'GrowerList',
            schemata="Grower Info",
            multiValued=1,
            relationship="ClientDistributor",
            allowed_types=('Client', ),
            mode="rw",
            widget=ReferenceWidget(
                label=_("List of Client Growers"),
                description=_("A list of associated Growers for Consultants."),
                size=20,
                catalog_name="portal_catalog",
                base_query={
                    "is_active": True,
                    "sort_limit": 30,
                    "sort_on": "sortable_title",
                    "sort_order": "ascending"
                },
                showOn=True,
                popup_width='400px',
                colModel=[
                    {
                        'columnName': 'Name',
                        'width': '50',
                        'label': _('Name')
                    },
                    {
                        'columnName': 'ClientID',
                        'width': '50',
                        'label': _('Email Address')
                    },
                ],
                ui_item='Name',
            ),
        ),
    ]

    def __init__(self, context):
        self.context = context

    def getOrder(self, schematas):
        return schematas

    def getFields(self):
        return self.fields