예제 #1
0
class IAssayRequest(BaseModel):
    """Object that will be attached to sample.  It will be the instance object
    that has a workflow that can be tracked in the LIMS.
    """
    assay_name = schema.Choice(
        title=_(u"Assay Name"),
        description=_(u"Assay Name"),
        source=IChipAssayListVocabulary,
        required=True,
    )

    date_ordered = schema.Date(
        title=_(u"Date Ordered"),
        description=_(u"Date Ordered"),
        defaultFactory=currentDate,
        required=True,
    )

    date_resulted = schema.Date(
        title=_(u"Assay Result Date"),
        description=_(u"Assay Result Date"),
        required=False,
    )

    aliquot_evaluated = schema.TextLine(
        title=_(u"Aliquot ID Used For Assay Request"),
        description=_(u"Aliquot ID Used For Assay Request"),
        required=False,
    )

    comment = schema.Text(
        title=_(u"Any Notes or Comments About the Assay Request"),
        description=_(u"Any Notes or Comments About the Assay Request"),
        required=False,
    )
예제 #2
0
def NonZeroConstraint(value):
    """Check that the Int field has a value >0
    """
    try:
        int(value)
    except:
        raise Invalid(_(u"Value must be an integer, not '%s'" % value))
    if value < 1:
        raise Invalid(_(u"Value must be >0, not '%s'" % value))
    return True
예제 #3
0
class IRack(BaseModel):
    """Letters of the alphabet single letter to double letter to triple
    letter, have two types of racks and that determines the number of boxes
    it will hold.  (5x4=20 boxes, or 4x4=16 boxes)
    """

    rack_name = schema.TextLine(
        title=_(u"Rack ID"),
        description=_(u"Rack ID"),
        required=True,
    )

    size = schema.Int(
        title=_(u'Rack Size'),
        description=_(u'Number of boxes rack can hold'),
    )

    freezer = schema.TextLine(
        title=_(u"Freezer"),
        description=_(u"Freezer where rack is stored"),
        required=True,
    )

    remaining_volume = schema.Int(
        title=_(u"Remaining Rack Spaces"),
        description=_(u"Remaining Rack Spaces"),
        required=True,
    )
예제 #4
0
class IAliquot(BaseModel):
    """Common schema fields for all types of Aliquots
    """

    initial_volume = schema.Int(
        title=_(u"Initial Volume"),
        description=_(u"Volume of aliquot in micro liters (uL)"),
        required=True,
    )

    remaining_volume = schema.Int(
        title=_(u"Remaining Volume"),
        description=_(u"Remaining aliquot volume in micro liters (uL)"),
        required=True,
    )
예제 #5
0
class ISample(BaseModel):
    """Common schema fields for all types of Samples
    """

    initial_volume = schema.Int(
        title=_(u"Initial Volume"),
        description=_(u"Volume of sample in micro liters (uL)"),
        required=True,
    )

    remaining_volume = schema.Int(
        title=_(u"Remaining Volume"),
        description=_(u"Remaining sample volume in micro liters (uL)"),
        required=True,
        readonly=True,
    )
예제 #6
0
class BaseModel(model.Schema):
    """This is a base for all schema interfaces presented here. It contains 
    fields that we know will be present on all objects.
    """
    title = schema.TextLine(
        title=_(u"Title"),
        required=False,
        readonly=True,
    )
예제 #7
0
class ITestRequisition(BaseModel):
    """
    """

    sample_id = schema.TextLine(
        title=_(u"Sample ID"),
        required=True,
    )

    patient = schema.Choice(
        title=_(u"Patient"),
        description=_(u""),
        vocabulary=u"immunarray.lims.interfaces.patient.PatientVocabulary",
        required=True,
    )

    repeat_order = schema.Bool(
        title=_(u"Repeat Order"),
        default=False,
        required=False,
    )

    doctor = schema.Choice(
        title=_(u"Doctor"),
        description=_(u""),
        vocabulary=u"immunarray.lims.interfaces.doctor.DoctorVocabulary",
        required=True,
    )
예제 #8
0
class IMedicalHistoryPatient(BaseModel):
    """ Interface for clinical information input given by patient"""
    form.widget(symptoms_choice=CheckBoxFieldWidget)
    clinical_impression = schema.List(
        title=_(u"Clinical Impression"),
        description=_(u"Clinical Impression of the Referring Physicain/"
                      u", Select All That Apply"),
        required=False,
        value_type=schema.Choice(values=[
            _(u"Systemic Lupus Erythematosus (SLE)"),
            _(u"Antiphospholipid Syndrome"),
            _(u"Asthma"),
            _(u"Autoimmune Hepatitis"),
            _(u"Seizures or psychosis"),
            _(u"Hair loss")
        ]),
    )
예제 #9
0
class IAliquotPlate(ISample):
    """Aliquot Plate!
    """
    id = schema.TextLine(
        title=_(u"Aliquot Plate ID"),
        description=_(u"Aliquot Plate ID"),
        defaultFactory=assignPlateID(),
        required=True,
    )
    #date info

    date_added = schema.Date(
        title=_(u"Date Aliquot Plate was added to LIMS"),
        description=_(u"Date Aliquot Platee was added to LIMS"),
        defaultFactory=currentDate,
        required=True,
    )

    added_by = schema.Choice(
        title=_(u"Operator that Added Aliquot Plate to LIMS"),
        description=_(u"Operator that Added Aliquot Plate to LIMS"),
        vocabulary=u"plone.principalsource.Users",
        required=False,
    )

    assay_uid = Attribute("""Assay UID
        Link directly back to the iChipAssay so that the edit form has a copy
        when required.  Also used to link QC aliquots back to the HQC and LQC
        of the selected Assay.
        """)

    assay_name = Attribute("""Assay Name
        For convenience, I'll store the assay_name too, but it should not be used
        for lookup.
        """)

    plates_96_well = Attribute("""Plates
        A map of aliquots to wells on a plate and is stored here as a list
        of dictionaries. The format matches what is excpected by the form,
        which is the same as the data returned when creating a new test run.
        A-H, and 12 wells
        The format of each 96 well plate looks like this:
          {'A01': UID,
           'A02': UID,
           'A03': UID,
           'A04': UID,
           'A05': UID,
           'A06': UID,
           'A07': UID,
           'A08': UID,
           'A09': UID,
           'A10': UID,
           'A11': UID,
           'A12': UID,
           'B01': UID,
           'B02': UID,
           'B03': UID,
           'B04': UID,
           'B05': UID,
           'B06': UID,
           'B07': UID,
           'B08': UID,
           'B09': UID,
           'B10': UID,
           'B11': UID,
           'B12': UID,
           'C01': UID,
           'C02': UID,
           'C03': UID,
           'C04': UID,
           'C05': UID,
           'C06': UID,
           'C07': UID,
           'C08': UID,
           'C09': UID,
           'C10': UID,
           'C11': UID,
           'C12': UID,
           'D01': UID,
           'D02': UID,
           'D03': UID,
           'D04': UID,
           'D05': UID,
           'D06': UID,
           'D07': UID,
           'D08': UID,
           'D09': UID,
           'D10': UID,
           'D11': UID,
           'D12': UID,
           'E01': UID,
           'E02': UID,
           'E03': UID,
           'E04': UID,
           'E05': UID,
           'E06': UID,
           'E07': UID,
           'E08': UID,
           'E09': UID,
           'E10': UID,
           'E11': UID,
           'E12': UID,
           'F01': UID,
           'F02': UID,
           'F03': UID,
           'F04': UID,
           'F05': UID,
           'F06': UID,
           'F07': UID,
           'F08': UID,
           'F09': UID,
           'F10': UID,
           'F11': UID,
           'F12': UID,
           'G01': UID,
           'G02': UID,
           'G03': UID,
           'G04': UID,
           'G05': UID,
           'G06': UID,
           'G07': UID,
           'G08': UID,
           'G09': UID,
           'G10': UID,
           'G11': UID,
           'G12': UID,
           'H01': UID,
           'H02': UID,
           'H03': UID,
           'H04': UID,
           'H05': UID,
           'H06': UID,
           'H07': UID,
           'H08': UID,
           'H09': UID,
           'H10': UID,
           'H11': UID,
           'H12': UID,
           }
        """)
    # source_id_one = schema.TextLine(
    #     title=_(u"Primary QC Source Sample ID"),
    #     description=_(u"Primary QC Source Sample ID"),
    #     required=True,
    # )
    #
    # source_id_two = schema.TextLine(
    #     title=_(u"Secondary QC Source Sample ID"),
    #     description=_(u"Secondary QC Source Sample ID"),
    #     required=False,
    # )
    #
    # source_id_three = schema.TextLine(
    #     title=_(u"Tertiary QC Source Sample ID"),
    #     description=_(u"Tertiary QC Source Sample ID"),
    #     required=False,
    # )

    description = schema.TextLine(
        title=_(u"Description of Aliquot Plate"),
        description=_(u"Description of Aliquot Plate"),
        required=False,
    )

    comment = schema.Text(
        title=_(u"Any Notes or Comments About the QC Sample"),
        description=_(u"Any Notes or Comments About the QC Sample"),
        required=False,
    )
예제 #10
0
class IQCAliquot(IAliquot):
    """QC Sample!
    """

    source_id_one = schema.TextLine(
        title=_(u"Primary QC Source Sample ID"),
        description=_(u"Primary QC Source Sample ID"),
        required=False,
    )

    source_id_two = schema.TextLine(
        title=_(u"Secondary QC Source Sample ID"),
        description=_(u"Secondary QC Source Sample ID"),
        required=False,
    )

    source_id_three = schema.TextLine(
        title=_(u"Tertiary QC Source Sample ID"),
        description=_(u"Tertiary QC Source Sample ID"),
        required=False,
    )

    date_added = schema.Date(
        title=_(u"Date QC Sample was added to LIMS"),
        description=_(u"Date QC Sample was added to LIMS"),
        defaultFactory=currentDate,
        required=True,
    )

    added_by = schema.Choice(
        title=_(u"Operator that Added QC Sample to LIMS"),
        description=_(u"Operator that Added QC Sample to LIMS"),
        vocabulary=u"plone.principalsource.Users",
        required=False,
    )

    consume_date = schema.Date(
        title=_(u"Aliquot Consume Date"),
        description=_(u"Aliquot Consume Date"),
        required=False,
    )

    source = schema.TextLine(
        title=_(u"Source of QC Sample"),
        description=_(u"Source of QC Sample"),
        required=False,
    )

    description = schema.TextLine(
        title=_(u"Description of QC Sample"),
        description=_(u"Description of QC Sample"),
        required=False,
    )

    aliquot_type = schema.Choice(
        title=_(u"Aliquot Type"),
        description=_(u"Aliquot Type"),
        required=True,
        values=[_(u'Bulk'), _(u'Working')],
    )

    fluid_type = schema.Choice(
        title=_(u"QC Fluid Type"),
        description=_(u"QC Fluid Type"),
        values=[_(u"Serum"),
                _(u"Plasma"),
                _(u"CSF"), _(u"Tissue")],
        required=True,
    )

    date_received = schema.Date(
        title=_(u"Date QC Sample was Received"),
        description=_(u"Date QC Sample was Received"),
        required=True,
    )

    comment = schema.Text(
        title=_(u"Any Notes or Comments About the QC Sample"),
        description=_(u"Any Notes or Comments About the QC Sample"),
        required=False,
    )
예제 #11
0
class IRandDSample(ISample):
    """R and D sample!
    """

    department = schema.Choice(
        title=_(u"Department"),
        description=_(u"Department that controls material"),
        values=[_(u"TBI"), _(u"Commercial"), _(u"BrainBox"), _(u"Other")],
        required=False,
    )

    source_id_one = schema.TextLine(
        title=_(u"Primary R&D Source Sample ID"),
        description=_(u"Primary R&D Source Sample ID"),
        required=False,
    )

    source_id_two = schema.TextLine(
        title=_(u"Secondary R&D Source Sample ID"),
        description=_(u"Secondary R&D Source Sample ID"),
        required=False,
    )

    source_id_three = schema.TextLine(
        title=_(u"Tertiary R&D Source Sample ID"),
        description=_(u"Tertiary R&D Source Sample ID"),
        required=False,
    )

    # Unlike Clinical Samples which store this value in "usn" field,
    # RandD/QC samples have a dedicated veracis_id field.
    veracis_id = schema.TextLine(
        title=_(u"R&D Veracis Sample ID"),
        description=_(u"R&D Veracis Sample ID"),
        defaultFactory=assignVeracisId(),
        required=True,
    )

    date_added = schema.Date(
        title=_(u"Date R&D Sample was added to LIMS"),
        description=_(u"Date R&D Sample was added to LIMS"),
        defaultFactory=currentDate,
        required=True,
    )

    added_by = schema.Choice(
        title=_(u"Operator that Added R&D Sample to LIMS"),
        description=_(u"Operator that Added R&D Sample to LIMS"),
        vocabulary=u"plone.principalsource.Users",
        required=False,
    )

    source = schema.TextLine(
        title=_(u"Source of R&D Sample"),
        description=_(u"Source of R&D Sample"),
        required=False,
    )

    pi = schema.TextLine(
        title=_(u"Primary Investigator (PI) of R&D Sample"),
        description=_(u"Primary Investigator (PI) of R&D Sample"),
        required=False,
    )

    description = schema.TextLine(
        title=_(u"Description of R&D Sample"),
        description=_(u"Description of R&D Sample"),
        required=False,
    )

    fluid_type = schema.Choice(
        title=_(u"R&D Fluid Type"),
        description=_(u"R&D Fluid Type"),
        values=[_(u"Serum"), _(u"Plasma"), _(u"CSF"), _(u"Tissue")],
        required=True,
    )

    date_received = schema.Date(
        title=_(u"Date R&D Sample was Received"),
        description=_(u"Date R&D Sample was Received"),
        required=True,
    )

    comment = schema.Text(
        title=_(u"Any Notes or Comments About the R&D Sample"),
        description=_(u"Any Notes or Comments About the R&D Sample"),
        required=False,
    )
예제 #12
0
class IProvider(IPerson):
    """Care provider
    """

    site_ID = schema.Int(
        title=_(u"Site ID"),
        description=_(u"Site ID"),
        required=False,
    )

    npi = schema.TextLine(
        title=_(u"NPI"),
        description=_(u"NPI (unique to each provider)"),
        required=True,
    )

    credentials = schema.Choice(
        title=_(u"Provider Credentials"),
        description=_(u"Provider credentials (M.D.  D.O.)"),
        values=[_(u'MD'), _(u'DO'), _(u'PA-C'), _(u'MD/PhD'), _(u'PhD'),
                _(u'NP'), ],
        required=False,
    )

    tax_id = schema.TextLine(
        title=_(u"Tax ID"),
        description=_(u"Tax ID"),
        required=False,
    )

    pin = schema.TextLine(
        title=_(u"PIN"),
        description=_(u"PIN"),
        required=False,
    )

    upin = schema.TextLine(
        title=_(u"UPIN"),
        description=_(u"UPIN"),
        required=False,
    )

    publishing_preference = schema.Choice(
        title=_(u"Publishing Preference"),
        description=_(u"Providers desired publincation of resutls"),
        values=[_(u'Fax'), _(u'Mail'), _(u'EMR')],
        required=True,
    )

    form.widget(test_report_preference=CheckBoxFieldWidget)
    test_report_preference = schema.List(
        title=_(u"Laboratory Report Preference"),
        description=_(u"Laboratory Report Preference"),
        required=False,
        value_type=schema.Choice(source=TestRunReportsVocabulary),
    )
예제 #13
0
class INCE(BaseModel):
    """General NCE Item to be used to track non conformance events in the lab
    """

    nce_tracking_number = schema.TextLine(
        title=_(u"Tracking Number"),
        description=_(u"Tracking Number"),
        required=False,
    )

    date_of_NCE = schema.Date(
        title=_(u"Date of NCE"),
        description=_(u"Date of NCE"),
        required=True,
    )

    date_of_nce_discovery = schema.Date(
        title=_(u"Date of NCE Discovery"),
        description=_(u"Date of NCE Discovery"),
        required=True,
    )

    reporter = schema.Choice(
        title=_(u"Operator that is Reporting NCE"),
        description=_(u"Operator that is Reporting NCE"),
        vocabulary=u"plone.principalsource.Users",
        required=False,
    )

    position = schema.TextLine(
        title=_(u"Position of Reporter"),
        description=_(u"Position of Reporter"),
        required=False,
    )

    area_of_operation = schema.Choice(
        title=_(u"Area of Operation"),
        description=_(u"Area of Operation"),
        values=[
            _(u'Scanning'),
            _(u'Accessioning'),
            _(u'Test Preparation'),
            _(u'Blocking'),
            _(u'Testing'),
            _(u'Data Analysis')
        ],
        required=False,
    )

    accession_number = schema.TextLine(
        title=_(u"Accession Number or Batch Number"),
        description=_(u"Accession Number or Batch Number"),
        required=False,
    )

    assay = schema.TextLine(
        title=_(u"Assay"),
        description=_(u"Assay"),
        required=False,
    )

    facility = schema.TextLine(
        title=_(u"Facility where NCE Happened"),
        description=_(u"Facility where NCE Happened"),
        required=False,
    )

    current_date_time = schema.Datetime(
        title=_(u"Datetime of NCE"),
        description=_(u"Datetime of NCE"),
        defaultFactory=currentTime,
        required=True,
    )
    category_primary = schema.Choice(
        title=_(u"Category - Primary"),
        description=_(u"Category - Primary"),
        vocabulary='immunarray.lims.vocabularies.nce.PrimaryNCEVocabulary',
        required=False,
    )

    category_secondary = schema.Choice(
        title=_(u"Category - Secondary"),
        description=_(u"Category - Secondary"),
        vocabulary='immunarray.lims.vocabularies.nce.SecondaryNCEVocabulary',
        required=False,
    )

    category_tertiary = schema.Choice(
        title=_(u"Category - Tertiary"),
        description=_(u"Category - Tertiary"),
        vocabulary='immunarray.lims.vocabularies.nce.TertiaryNCEVocabulary',
        required=False,
    )
    risk_score = schema.Choice(
        title=_(u"Risk Score"),
        description=_(u"Risk Score"),
        values=[_(u'Lowest'), _(u'Intermediate'),
                _(u'High')],
        required=False,
    )
    initial_finding = schema.Text(
        title=_(u"Initial Finding"),
        description=_(u"Initial Finding"),
        required=False,
    )

    first_occurrence = schema.Bool(
        title=_(u"First Occurrence"),
        description=_(u"First Occurrence"),
        required=True,
        default=False,
    )

    persons_involved = schema.TextLine(
        title=_(u"Persons Involved"),
        description=_(u"Persons Involved"),
        required=False,
    )

    remedial_action_type = schema.Choice(
        title=_(u"Remedial Action Type"),
        description=_(u"Remedial Action Type"),
        values=[_(u'Corrective'),
                _(u'Preventive'),
                _(u'Process Improve')],
        required=False,
    )

    remedial_action = schema.Text(
        title=_(u"Remedial Action"),
        description=_(u"Remedial Action"),
        required=False,
    )

    is_follow_up_needed = schema.Bool(
        title=_(u"Is Follow Up Needed?"),
        description=_(u"Is Follow Up Needed?"),
        required=True,
        default=False,
    )

    investigation_needed = schema.Bool(
        title=_(u"Investigation Needed"),
        description=_(u"Investigation Needed"),
        required=True,
        default=False,
    )

    Investigation_tracking_number = schema.TextLine(
        title=_(u"Investigation Tracking Number"),
        description=_(u"Investigation Tracking Number"),
        required=False,
    )
    nce_status = schema.Choice(
        title=_(u"Status"),
        description=_(u"Status"),
        values=[_(u'Closed'),
                _(u'In Process'),
                _(u'Non Resolvable')],
        required=False,
    )
    date_closed = schema.Date(
        title=_(u"Date NCE Closed"),
        description=_(u"Date NCE Closed"),
        required=False,
    )
예제 #14
0
class IiChipLot(BaseModel):
    """An iChip Lot that will contain iChip objects.
    """

    lot_id = schema.TextLine(
        title=_(u"iChip Lot ID"),
        description=_(u"Used when naming iChips created in this lot"),
        required=True,
    )

    print_date = schema.Date(
        title=_(u"iChip Lot Print Date"),
        description=_(u"Print Date of iChip Lot"),
        required=True,
    )

    arrival_date = schema.Date(
        title=_(u"iChip Lot Arrival Date"),
        description=_(u"Arrival Date of iChip Lot"),
        required=True,
    )

    ship_date = schema.Date(
        title=_(u"iChip Lot Shipped Date"),
        description=_(u"iChip Lot Shipped Date"),
        required=True,
    )

    ichip_lot_expiration_date = schema.Date(
        title=_(u"iChip Lot Expiration Date"),
        description=_(u"Expiration Date of iChip Lot"),
        required=True,
    )

    nr_ichips = schema.Int(
        title=_(u"Number of iChips"),
        description=_(u"Number of iChips contained in this lot."),
        required=True,
        constraint=NonZeroConstraint,
    )

    # XXX This should be a Text input, same as iChipAssay's framecount
    # and the two should match: refactor ichip.I*ChipsInUSVocabulary
    frames = schema.Choice(
        title=_(u"iChip Frame Layout"),
        description=_(u"iChip Frame Layout"),
        values=[_(u"1"), _(u"3"), _(u"8")],
        required=True,
    )
    # XXX Allow mutiple selections!
    # XXX Need to connect this to iChipAssay.name
    form.widget(intended_assay=CheckBoxFieldWidget)
    intended_assay = schema.List(
        title=_(u"Intended Assay(s)"),
        description=_(u"Intended Assay(s)"),
        required=True,
        value_type=schema.Choice(source=IChipAssayListVocabulary),
    )

    temp_log = NamedFile(
        title=_(u"iChip Lot Travel Temperature Log"),
        description=_(u"Travel Temperature Log of iChip Lot"),
        required=False,
    )

    cofa = NamedFile(
        title=_(u"iChip Certificate of Analysis"),
        description=_(u"Certificate of Analysis of iChip Lot"),
        required=False,
    )

    batch_release = NamedFile(
        title=_(u"iChip Batch Release Document"),
        description=_(u"Batch Release Document of iChip Lot"),
        required=False,
    )

    gal_file = NamedFile(
        title=_(u"Gal File (.gal)"),
        description=_(u"Gal File (.gal)"),
        required=False,
    )

    shipping_box_integrity_maintained = schema.Choice(
        title=_(u"iChip Shipping Box Integrity Maintained"),
        description=_(u"iChip Shipping Box Integrity Maintained"),
        values=[_(u"Yes"), _(u"No")],
        required=True,
    )

    product_container_integrity_maintained = schema.Choice(
        title=_(u"Product Container Integrity Maintained"),
        description=_(u"Product Container Integrity Maintained"),
        values=[_(u"Yes"), _(u"No")],
        required=True,
    )

    other_damage = schema.TextLine(
        title=_(u"Other Damage"),
        description=_(u"Other Damage"),
        required=False,
    )

    temp_on_arrival = schema.Float(
        title=_(u"Temperature of iChips on Arrival"),
        description=_(u"Temperature of iChips on Arrival"),
        required=False,
    )

    temp_on_arrival_acceptable_limit = schema.Choice(
        title=_(u"Temperature of iChips on Arrival Within Acceptable Limit"),
        description=_(
            u"Temperature of iChips on Arrival Within Acceptable Limit"),
        values=[_(u"Yes"), _(u"No")],
        required=True,
    )
class IAssayBillingRequest(BaseModel):
    """Object that will be attached to sample.  It will be the instance object
    that has a workflow that can be tracked in the LIMS.
    """
    assay_name = schema.Choice(title=_(u"Assay to be Billed"),
                               description=_(u"Assay to be Billed"),
                               source=IChipAssayListVocabulary,
                               required=True)

    billing_program = schema.Choice(title=_(u"Billing Program"),
                                    description=_(u"Billing Program"),
                                    source=BillingProgramsVocabulary,
                                    required=True)
    # Need to make content file and title from sampleid and assay name
    sample_id = schema.TextLine(
        title=_(u"Billing Sample ID"),
        description=_(u"Billing Sample ID"),
        required=False,
    )

    date_ordered = schema.Date(
        title=_(u"Date Billing Requste was added to LIMS"),
        description=_(u"Date Billing Requste was added to LIMS"),
        defaultFactory=currentDate,
        required=True,
    )

    date_resulted = schema.Date(
        title=_(u"Assay Billing Resolved Date"),
        description=_(u"Assay Billing Resolved Date"),
        required=False,
    )

    date_billed = schema.Date(
        title=_(u"Assay Billed on Date"),
        description=_(u"Assay Billed on Date"),
        required=False,
    )

    form.widget(diagnosis_code=CheckBoxFieldWidget)
    diagnosis_code = schema.List(
        title=_(u"Diagnosis & ICD-10 Codes"),
        description=_(u"Diagnosis & ICD-10 Codes"),
        required=False,
        value_type=schema.Choice(values=[
            _(u"D89.89"),
            _(u"D89.9"),
            _(u"L93.2"),
            _(u"M32.10"),
            _(u"M35.9"),
            _(u"Other, please specify")
        ]),
    )

    diagnosis_code_other = schema.List(
        title=_(u"Other Diagnosis Code(s)"),
        description=_(u"Other Diagnosis Code(s) Enter one Per Line"),
        missing_value=None,
        required=False,
        value_type=schema.TextLine())

    primary_insurance_name = schema.TextLine(
        title=_(u"Primary Insurance Name"),
        description=_(u"Primary Insurance Name"),
        required=False,
    )

    primary_insurance_payerID = schema.TextLine(
        title=_(u"Primary Insurance Payer ID"),
        description=_(u"Primary Insurance Payer ID"),
        required=False,
    )

    primary_insurance_policy_number = schema.TextLine(
        title=_(u"Primary Insurance Policy Number"),
        description=_(u"Primary Insurance Policy Number"),
        required=False,
    )

    primary_insurance_plan_number = schema.TextLine(
        title=_(u"Primary Insurance Plan Number"),
        description=_(u"Primary Insurance Plan Number"),
        required=False,
    )

    primary_insurance_authorization_precertificate = schema.TextLine(
        title=_(u"Primary Insurance Authorization"),
        description=_(u"Primary Insurance Authorization"),
        required=False,
    )

    primary_insurance_subscriber_name = schema.TextLine(
        title=_(u"Primary Insurance Subscriber Name"),
        description=_(u"Primary Insurance Subscriber Name"),
        required=False,
    )
    """directives.widget(level=RadioFieldWidget)"""
    primary_insurance_relation_to_insured = schema.Choice(
        title=_(u"Primary Insurance Relation to Insured"),
        description=_(u"Primary Insurance Relation to Insured"),
        values=[_(u"Self"), _(u"Spouse"),
                _(u"Child"),
                _(u"Other")],
        required=False,
    )

    primary_insurance_subscriber_DOB = schema.Date(
        title=_(u"Primary Insurance Subscriber DOB"),
        description=_(u"Primary Insurance Subscriber DOB"),
        required=False,
    )

    primary_insurance_effective_date = schema.Date(
        title=_(u"Primary Insurance Effective Date"),
        description=_(u"Primary Insurance Effective Date"),
        required=False,
    )

    primary_insurance_address = schema.TextLine(
        title=_(u"Primary Insurance Address"),
        description=_(u"Primary Insurance Address"),
        required=False,
    )

    primary_city = schema.TextLine(
        title=_(u"Primary Insurance City"),
        description=_(u"Primary Insurance City"),
        required=False,
    )

    primary_state = schema.TextLine(
        title=_(u"Primary Insurance State"),
        description=_(u"Primary Insurance State"),
        required=False,
    )

    primary_insurance_zip_code = schema.TextLine(
        title=_(u"Primary Insurance Zip Code"),
        description=_(u"Primary Insurance Zip Code"),
        required=False,
    )

    secondary_insurance_name = schema.TextLine(
        title=_(u"Secondary Insurance Name"),
        description=_(u"Secondary Insurance Name"),
        required=False,
    )

    secondary_insurance_payerID = schema.TextLine(
        title=_(u"Secondary Insurance Payer ID"),
        description=_(u"Secondary Insurance Payer ID"),
        required=False,
    )

    secondary_insurance_policy_number = schema.TextLine(
        title=_(u"Secondary Insurance Policy Number"),
        description=_(u"Secondary Insurance Policy Number"),
        required=False,
    )

    secondary_insurance_plan_number = schema.TextLine(
        title=_(u"Secondary Insurance Plan Number"),
        description=_(u"Secondary Insurance Plan Number"),
        required=False,
    )

    secondary_insurance_authorization_precertificate = schema.TextLine(
        title=_(u"Secondary Insurance Authorization"),
        description=_(u"Secondary Insurance Authorization"),
        required=False,
    )

    secondary_insurance_subscriber_name = schema.TextLine(
        title=_(u"Secondary Insurance Subscriber Name"),
        description=_(u"Secondary Insurance Subscriber Name"),
        required=False,
    )
    """directives.widget(level=RadioFieldWidget)"""
    secondary_insurance_relation_to_insured = schema.Choice(
        title=_(u"Secondary Insurance Relation to Insured"),
        description=_(u"Secondary Insurance Relation to Insured"),
        values=[_(u"Self"), _(u"Spouse"),
                _(u"Child"),
                _(u"Other")],
        required=False,
    )

    secondary_insurance_subscriber_DOB = schema.Datetime(
        title=_(u"Secondary Insurance Subscriber DOB"),
        description=_(u"Secondary Insurance Subscriber DOB"),
        required=False,
    )

    secondary_insurance_effective_date = schema.Datetime(
        title=_(u"Secondary Insurance Effective Date"),
        description=_(u"Secondary Insurance Effective Date"),
        required=False,
    )

    secondary_insurance_address = schema.TextLine(
        title=_(u"Secondary Insurance Address"),
        description=_(u"Secondary Insurance Address"),
        required=False,
    )

    secondary_city = schema.TextLine(
        title=_(u"Secondary Insurance City"),
        description=_(u"Secondary Insurance City"),
        required=False,
    )

    secondary_state = schema.TextLine(
        title=_(u"Secondary Insurance State"),
        description=_(u"Secondary Insurance State"),
        required=False,
    )

    secondary_insurance_zip_code = schema.TextLine(
        title=_(u"Secondary Insurance Zip Code"),
        description=_(u"Secondary Insurance Zip Code"),
        required=False,
    )

    assignment_of_benefits_patient_name = schema.TextLine(
        title=_(u"Assignment of Benefits Patient Name"),
        description=_(u"Assignment of Benefits Patient Name"),
        required=False,
    )

    release_signed = schema.Bool(
        title=_(u"Release Signed"),
        description=_(u"Release Signed"),
    )

    assignment_of_benefits_signature_date = schema.Date(
        title=_(u"Assignment of Benefits Signature Date"),
        description=_(u"Assignment of Benefits Signature Date"),
        required=False,
        default=datetime.date.today(),
    )

    authorization_signature_patient_name = schema.TextLine(
        title=_(u"Authorization Signature Patient Name"),
        description=_(u"Authorization Signature Patient Name"),
        required=False,
    )

    payment_signed = schema.Bool(
        title=_(u"Payment Signed"),
        description=_(u"Payment Signed"),
    )

    authorization_signature_date = schema.Date(
        title=_(u"Authorization Signature Date"),
        description=_(u"Authorization Signature Date"),
        required=False,
        default=datetime.date.today(),
    )

    comment = schema.Text(
        title=_(u"Any Notes or Comments About the Assay Billing Request"),
        description=_(
            u"Any Notes or Comments About the Assay Billing Request"),
        required=False,
    )
예제 #16
0
class ISite(IOrganisation):
    """ Commercial Site
    """
    therapak_id = schema.TextLine(
        title=_(u"Therapak ID"),
        description=_(u"Therapak ID"),
        default=u'',
        required=False,
    )

    site_name = schema.TextLine(
        title=_(u"Site Name"),
        description=_(u"Site Name"),
        required=True,
    )

    sales_rep = schema.Bool(
        title=_(u"Sales Representative"),
        description=_(u"Site is a Sales Representative"),
        default=False,
    )

    setup_by = schema.TextLine(
        title=_(u"Setup By"),
        description=_(u"Setup By"),
        required=False,
    )

    primary_provider = schema.TextLine(
        title=_(u"Primary Provider"),
        description=_(u"Primary Provider"),
        required=False,
    )

    fax_number = schema.TextLine(
        title=_(u"Fax Number"),
        description=_(u"Fax Number"),
        required=False,
    )

    fax_confirmed = schema.Bool(
        title=_(u"Fax Number Confirmed"),
        description=_(u"Fax Number Confirmed"),
        required=False,
        default=False,
    )

    megapractice_id = schema.TextLine(
        title=_(u"Mega Practice ID"),
        description=_(u"Link multiple sites together"),
        required=False,
    )

    inbound_shipping_method = schema.Choice(
        title=_(u"Inbound Shipping Method"),
        description=_(u"Inbound Shipping Method"),
        values=[(u'FedEx'), (u'UPS')],
        required=False,
    )

    kits_on_site = schema.Int(
        title=_(u"Kits on Site"),
        description=_(u"Kits on Site"),
        default=0,
        required=False,
    )

    free_kits_left = schema.Int(
        title=_(u"Free Kits Left"),
        description=_(u"Free Kits Left"),
        default=0,
        required=False,
    )

    primary_contact = schema.TextLine(
        title=_(u"Primary Site Contact"),
        description=_(u"Primary Site Contact"),
        required=False,
    )

    primary_contact_phone = schema.TextLine(
        title=_(u"Primary Office Contact Phone Number"),
        description=_(u"Primary Office Contact Phone Number"),
        required=False,
    )

    site_notes = schema.Text(
        title=_(u"Site Notes"),
        description=_(u"Site Notes"),
        required=False,
    )
예제 #17
0
class IQCSample(ISample):
    """QC Sample!
    """
    # Unlike Clinical Samples which store this value in "usn" field,
    # RandD/QC samples have a dedicated veracis_id field.
    veracis_id = schema.TextLine(
        title=_(u"QC Veracis Sample ID"),
        description=_(u"QC Veracis Sample ID"),
        defaultFactory=assignVeracisId(),
        required=True,
    )

    source_id_one = schema.TextLine(
        title=_(u"Primary QC Source Sample ID"),
        description=_(u"Primary QC Source Sample ID"),
        required=True,
    )

    source_id_two = schema.TextLine(
        title=_(u"Secondary QC Source Sample ID"),
        description=_(u"Secondary QC Source Sample ID"),
        required=False,
    )

    source_id_three = schema.TextLine(
        title=_(u"Tertiary QC Source Sample ID"),
        description=_(u"Tertiary QC Source Sample ID"),
        required=False,
    )

    date_added = schema.Date(
        title=_(u"Date QC Sample was added to LIMS"),
        description=_(u"Date QC Sample was added to LIMS"),
        defaultFactory=currentDate,
        required=True,
    )

    added_by = schema.Choice(
        title=_(u"Operator that Added QC Sample to LIMS"),
        description=_(u"Operator that Added QC Sample to LIMS"),
        vocabulary=u"plone.principalsource.Users",
        required=False,
    )

    source = schema.TextLine(
        title=_(u"Source of QC Sample"),
        description=_(u"Source of QC Sample"),
        required=False,
    )

    description = schema.TextLine(
        title=_(u"Description of QC Sample"),
        description=_(u"Description of QC Sample"),
        required=False,
    )

    fluid_type = schema.Choice(
        title=_(u"QC Fluid Type"),
        description=_(u"QC Fluid Type"),
        values=[_(u"Serum"),
                _(u"Plasma"),
                _(u"CSF"), _(u"Tissue")],
        required=True,
    )

    date_received = schema.Date(
        title=_(u"Date QC Sample was Received"),
        description=_(u"Date QC Sample was Received"),
        required=True,
    )

    comment = schema.Text(
        title=_(u"Any Notes or Comments About the QC Sample"),
        description=_(u"Any Notes or Comments About the QC Sample"),
        required=False,
    )
예제 #18
0
class ISolution(BaseModel):
    """Base Solution schema fields
    """
    solution_name = schema.TextLine(
        title=_(u"Solution Name"),
        description=_(u"Solution Name"),
        required=True,
    )

    batch_number = schema.TextLine(
        title=_(u"Batch Number"),
        description=_(u"Batch Number"),
        required=True,
    )

    make_date = schema.Date(
        title=_(u"Date Made"),
        description=_(u"Date Made"),
        required=True,
    )

    expiration_date = schema.Date(
        title=_(u"Expiration Date"),
        description=_(u"Expiration Date"),
        required=True,
    )

    initial_amount = Amount(
        title=_(u"Initial amount made"),
        description=_(u"Enter a decimal number"),
        required=True,
    )

    remaining_amount = Amount(
        title=_(u"Amount remaining"),
        description=_(u"You should not need to edit this value"),
    )

    unit = schema.TextLine(
        title=_(u"Unit"),
        description=_("Enter the unit in which the amounts are measured"),
        required=True,
    )

    made_by = schema.Choice(
        title=_(u"Made By"),
        description=_(u"The operator created the material lot"),
        source=UserVocabulary,
        required=True)

    materials_used = schema.Dict(title=_(u"Materials Used"),
                                 key_type=schema.Choice(
                                     title=_(u"Material"),
                                     source=MaterialsVocabulary,
                                     required=False),
                                 value_type=Amount(title=u"Amount Used",
                                                   required=False),
                                 required=False)

    solutions_used = schema.Dict(
        title=_(u"Solution(s) Used"),
        key_type=schema.Choice(title=_(u"Solution"),
                               source=SolutionBatchesForTestRunsVocabulary,
                               required=False),
        value_type=Amount(title=u"Amount Used", required=False),
        required=False)

    viability = schema.Int(
        title=_(u"Solution Viability"),
        description=_(u"Viability of solution in hours. "
                      u"Leave blank if solution does not expire."),
        required=False,
    )

    completed_solution_prep_form = NamedFile(
        title=_(u"Completed Solution Preperation Form"),
        required=False,
    )
예제 #19
0
class ITestRun(IVeracisRunBase):
    # Serum Addition
    serum_time_start = schema.Datetime(
        title=_(u"Start Time of Serum Addition"),
        description=_(u"Start Time of Serum Addition"),
        required=False,
    )

    serum_humidity_start = schema.Float(
        title=_(u"Humidity at Serum Addition Start"),
        description=_(u"Humidity at Serum Addition Start"),
        required=False,
    )

    serum_room_temperature_start = schema.Float(
        title=_(u"Room Temperature at Serum Addition Start"),
        description=_(u"Room Temperature at Serum Addition Start"),
        required=False,
    )

    serum_time_end = schema.Datetime(
        title=_(u"End Time of Serum Addition"),
        description=_(u"End Time of Serum Addition"),
        required=False,
    )

    serum_humidity_end = schema.Float(
        title=_(u"Humidity at Serum Addition End"),
        description=_(u"Humidity at Serum Addition End"),
        required=False,
    )

    serum_room_temperature_end = schema.Float(
        title=_(u"Room Temperature at Serum Addition End"),
        description=_(u"Room Temperature at Serum Addition End"),
        required=False,
    )

    # Choice of lab tech/lab manager
    serum_witness_name = schema.TextLine(
        title=_(u"Witness for Serum Addition"),
        description=_(u"Witness for Serum Addition"),
        required=False,
    )

    serum_witness_date = schema.Date(
        title=_(u"Aliquot Consume Date"),
        description=_(u"Aliquot Consume Date"),
        required=False,
    )

    # Antibody Prep

    # Antibody Addition
    antibody_time_start = schema.Datetime(
        title=_(u"Start Time of Antibody Addition"),
        description=_(u"Start Time of Antibody Addition"),
        required=False,
    )

    antibody_humidity_start = schema.Float(
        title=_(u"Humidity at Antibody Addition Start"),
        description=_(u"Humidity at Antibody Addition Start"),
        required=False,
    )

    antibody_room_temperature_start = schema.Float(
        title=_(u"Room Temperature at Antibody Addition Start"),
        description=_(u"Room Temperature at Antibody Addition Start"),
        required=False,
    )

    antibody_time_end = schema.Datetime(
        title=_(u"End Time of Antibody Addition"),
        description=_(u"End Time of Antibody Addition"),
        required=False,
    )

    antibody_humidity_end = schema.Float(
        title=_(u"Humidity at Antibody Addition End"),
        description=_(u"Humidity at Antibody Addition End"),
        required=False,
    )

    antibody_room_temperature_end = schema.Float(
        title=_(u"Room Temperature at Antibody Addition End"),
        description=_(u"Room Temperature at Antibody Addition End"),
        required=False,
    )

    # Choice of labtech/labmanager
    antibody_witness_name = schema.TextLine(
        title=_(u"Witness for Antibody Addition"),
        description=_(u"Witness for Antibody Addition"),
        required=False,
    )

    antibody_witness_date = schema.Date(
        title=_(u"Aliquot Consume Date"),
        description=_(u"Aliquot Consume Date"),
        required=False,
    )

    assay_uid = Attribute("""Assay UID
    Link directly back to the iChipAssay so that the edit form has a copy
    when required.  Also used to link QC aliquots back to the HQC and LQC
    of the selected Assay.
    """)

    assay_name = Attribute("""Assay Name
    For convenience, I'll store the assay_name too, but it should not be used
    for lookup.
    """)

    plates = Attribute("""Plates
    A map of aliquots/ichips/wells per plate is stored here as a list
    of dictionaries. The format matches what is excpected by the form,
    which is the same as the data returned when creating a new test run.
    
    The format of each plate looks like this:
      {'chip-1_well-1': UID,
       'chip-1_well-X': UID,
       'chip-2_well-1': UID,
       'chip-2_well-X': UID,
       'chip-3_well-1': UID,
       'chip-3_well-X': UID,
       'chip-4_well-1': UID,
       'chip-4_well-X': UID,
       'chip-id-1': UID,
       'chip-id-2': UID,
       'chip-id-3': UID,
       'chip-id-4': UID,
       'comments-ichip-1': '',
       'comments-ichip-2': '',
       'comments-ichip-3': '',
       'comments-ichip-4': '',
       'scan-slot-1': '',
       'scan-slot-2': '',
       'scan-slot-3': '',
       'scan-slot-4': '',
       'comments': ''
       }
    """)

    solutions = Attribute("""Solution batches in use
    Details of all solution batches selected for use in this run, stored
    as a list of lists like this:
    
    [list of solution batch ids]
    
    """)

    ichip_humidity = Attribute("""iChip Humidity
    Humidity is logged before and after each ichip is prepared.
    """)

    import_log = Attribute("""TestRun result import log.
    """)
예제 #20
0
class IiChipAssay(BaseModel):
    """ Interface that will allow for creation of new iChip Assays"""
    name = schema.TextLine(
        title=_(u"iChip Assay"),
        required=True,
    )

    description = schema.TextLine(
        title=_(u"Description"),
        description=_(u"Description"),
        required=False,
    )

    framecount = schema.Int(
        title=_(u"Frame Layout"),
        description=_(u"No Well = 1, Eight Well = 8"),
        required=True,
    )

    number_of_unique_ichips_lots_needed = schema.Int(
        title=_(u"Number of Unique iChip Lots Needed"),
        description=_(u"Number of Unique iChip Lots Needed"),
        required=True,
        default=2,
    )

    number_of_same_lot_replication_needed = schema.Int(
        title=_(u"Same Lot Replication Needed For Samples"),
        description=_(u"Same Lot Replication Needed For Samples"),
        required=True,
        default=2,
    )

    number_of_high_value_controls = schema.Int(
        title=_(u"Number of High/Positive Controls"),
        description=_(u"Number of High/Positive Controls"),
        required=True,
        default=2,
    )

    qc_high_choice = schema.Choice(
        title=_(u"Select High/Positive QC Veracis ID"),
        description=_(u"Select High/Positive QC Veracis ID"),
        source=InUseQCListVocabulary,
        required=False,
    )

    number_of_low_value_controls = schema.Int(
        title=_(u"Number of Low/Negative Controls"),
        description=_(u"Number of Low/Negative Controls"),
        required=True,
        default=1,
    )

    qc_low_choice = schema.Choice(
        title=_(u"Select Low/Negative QC Veracis ID"),
        description=_(u"Select Low/Negative QC Veracis ID"),
        source=InUseQCListVocabulary,
        required=False,
    )

    sample_qc_dilution_factor = schema.Int(
        title=_(u"Material Dilution Factor"),
        description=_(u"Material Dilution Factor"),
        required=True,
        default=75,
    )

    # THere's a vocab for this in vocabs/solutions.  XXX showing Types only.

    # solutions = schema.List(
    #     value_type=schema.Choice(
    #         title=
    #         source=, required=False)

    max_number_of_plates_per_test_run = schema.Int(
        title=_(u"Max Number of Plates per Test Run"),
        description=_(u"Max Number of Plates per Test Run"),
        required=True,
        default=8,
    )

    number_of_working_aliquots_needed = schema.Int(
        title=_(u"Number of Working Aliquots Needed"),
        description=_(u"Number of Working Aliquots Needed"),
        required=True,
        default=1,
    )

    desired_working_aliquot_volume = schema.Int(
        title=_(u"Desired Working Aliquot Volume (uL)"),
        description=_(u"Desired Working Aliquot Volume (uL)"),
        required=True,
        default=12,
    )

    minimum_working_aliquot_volume = schema.Int(
        title=_(u"Minimum Working Aliquot Volume (uL)"),
        description=_(u"Minimum Working Aliquot Volume (uL)"),
        required=True,
        default=8,
    )

    desired_use = schema.Choice(
        title=_(u"iChip Assay Status"),
        description=_(u"iChip Layout"),
        values=[
            _(u"Development"),
            _(u"Commercial"),
        ],
        required=True,
    )
    form.widget(needed_solutions=CheckBoxFieldWidget)
    needed_solutions = schema.List(
        title=_(u"Solutions Needed for Assay"),
        description=_(u"Solutions Needed for Assay"),
        required=False,
        value_type=schema.Choice(source=SolutionsForiChipAssayVocabulary),
    )

    comments = RichText(
        title=_(u"Comments"),
        description=_(u"Comments"),
        required=False,
    )
예제 #21
0
class IBillingProgram(BaseModel):
    """Object that will be billing programs that can be added to the system,
    will be what is used to determin if a billing message needs to be generated,
    cost to patient, and message structure to be sent to third party.
    """
    program_name = schema.TextLine(
        title=_(u"Name of Billing Program"),
        description=_(u"Name of Billing Program"),
        required=False,
    )

    assay_name = schema.Choice(title=_(u"Assay to be Billed"),
                               description=_(u"Assay to be Billed"),
                               source=IChipAssayListVocabulary,
                               required=True)

    cost_of_assay = schema.Float(
        title=_(u"Full Cost of Assay"),
        description=_(u"Full Cost of Assay"),
        required=True,
    )

    max_cost_to_patient = schema.Float(
        title=_(u"Max Cost to Patient"),
        description=_(u"Max Cost to Patient"),
        required=True,
    )

    discount_to_patient = schema.Float(
        title=_(u"Discout to Patient"),
        description=_(u"Discout to Patient"),
        default=0.0,
        required=True,
    )

    allow_balance_bill = schema.Bool(title=_(u"Allow Balance Billing"),
                                     description=_(u"Allow Balance Billing"))
예제 #22
0
class IVeracisRunBase(BaseModel):
    """Object that will be the base of all veracis runs
    """
    run_number = schema.Int(
        title=_(u"Veracis Run Number"),
        description=_(u"Veracis Run Number"),
        required=True,
    )
    run_planner = schema.TextLine(
        title=_(u"Veracis Run Planner"),
        description=_(u"Veracis Run Operator"),
        required=True,
    )
    run_operator = schema.TextLine(
        title=_(u"Veracis Run Operator"),
        description=_(u"Veracis Run Operator"),
        required=True,
    )
    run_date = schema.Date(
        title=_(u"Veracis Test Run Date"),
        description=_(u"Veracis Test Run Date (MM/DD/YYYY)"),
        default=date.today(),
    )
    test_scan_date = schema.Date(
        title=_(u"Veracis Test Scan Date"),
        description=_(u"Veracis Test Scan Date (MM/DD/YYYYY)"),
        default=date.today(),
    )
    pdf_veracis_run = NamedBlobImage(
        title=_(u"PDF Upload of Test Form"),
        description=_(u"PDF Upload of Test Form"),
        required=False,
    )
예제 #23
0
class IiChip(BaseModel):
    """An iChip Lot that will be the container class object
    """

    ichip_id = schema.TextLine(
        title=_(u"iChip ID"),
        required=True,
    )

    ichip_run_date = schema.TextLine(
        title=_(u"iChip Run Date"),
        description=_(u"Run Date of iChip (Read only)"),
        readonly=True,
        required=False,
    )

    # Image name to actual image (zip image file before upload)
    image = schema.Dict(
        key_type=schema.TextLine(
            title=_(u"Image Title (ie Agilent Red)"),
            description=_(u"Image Title (ie Agilent Red)"),
            required=False,
        ),
        value_type=NamedBlobImage(
            title=_(u"iChip Agilent Image"),
            description=_(u"Agilent Image of iChip (.tiff)"),
            required=False),
    )

    # Image extraction name to extraction
    image_extractions = schema.Dict(
        key_type=schema.TextLine(
            title=_(u"Image Extraction Title (ie Agilent Red)"),
            description=_(u"Image Extraction Title (ie Agilent Red)"),
            required=False,
        ),
        value_type=NamedBlobFile(
            title=_(u"iChip Agilent Image Extraction"),
            description=_(u"Agilent Image Extraction of iChip (.tiff)"),
            required=False),
    )

    # update to have vocabulary tied to choices
    storage_location = schema.Choice(
        title=_(u"iChip Storage Location"),
        description=_(u"Storage Location of iChip"),
        values=[_('EQ-76'), _('EQ-Unknown')],
        required=False,
    )

    # well to aliquot ID tested on it
    well_to_aliquot = schema.Dict(
        key_type=schema.TextLine(
            title=_(u"Well ID"),
            description=_(u"Well ID"),
            required=False,
        ),
        value_type=schema.TextLine(
            title=_(u"Aliquot ID"),
            description=_(u"Aliquot ID"),
            required=False,
        ),
    )

    comment = RichText(
        title=_(u"iChip Comment"),
        description=_(u"Comments about iChip"),
        required=False,
    )
예제 #24
0
class ICommercialBox(BaseModel):
    """Boxes can hold either 100 sampels or 81 samples"""
    #tmp_box_number = assignBoxNumber()

    box_number = schema.TextLine(
        title=_(u'R&D Box Number'),
        description=_(u'R&D Box Number'),
        defaultFactory=assignBoxNumber(),
        #default=assignBoxNumber(),
        required=True,
    )

    box_type = schema.Choice(
        title=_(u"Sample Type"),
        description=_(u"Sample Type"),
        values=[_(u"Bulk"), _(u"Working")],
        required=True,
    )

    max_samples = schema.Int(
        title=_(u'Max Number of Samples'),
        description=_(u'Max Number of Samples'),
        default=81,
    )

    remaining_volume = schema.Int(
        title=_(u"Remaining Aliquot Spaces"),
        description=_(u"Remaining Aliquot Spaces"),
        required=True,
    )

    aliquot_dic = schema.Dict(title=_(u'Box Count to Aliquot ID'),
                              required=False,
                              key_type=schema.TextLine(
                                  title=_(u"Box Count"),
                                  description=_(u"Box Count"),
                                  required=False,
                              ),
                              value_type=List(
                                  title=_(u"Aliquot ID, UID"),
                                  description=_(u"Aliquot ID, UID"),
                                  required=False,
                              ))
예제 #25
0
class IClinicalAliquot(IAliquot):
    title = schema.TextLine(
        title=_(u"Aliquot Name"),
        description=_(u"Aliquot Name/ID"),
        required=False,
    )

    sample_id = schema.TextLine(
        title=_(u"Parent ID"),
        description=_(u"Parent ID"),
        required=False,
    )

    aliquot_type = schema.Choice(
        title=_(u"Aliquot Type"),
        description=_(u"Aliquot Type"),
        required=True,
        values=[_(u'Bulk'), _(u'Working')],
    )

    pour_date = schema.Date(
        title=_(u"Aliquot Pour Date"),
        description=_(u"Aliquot Pour Date"),
        required=False,
        default=date.today(),
    )

    consume_date = schema.Date(
        title=_(u"Aliquot Consume Date"),
        description=_(u"Aliquot Consume Date"),
        required=False,
    )

    numeric_result = schema.Float(
        title=_(u"Numeric Result"),
        description=_(u"SLE_key_Score"),
        required=False,
    )

    text_result = schema.TextLine(
        title=_(u"Text Result"),
        description=_(u"SLE_key_Classification"),
        required=False,
    )
예제 #26
0
class IPatient(IPerson):
    """Patient record
    """

    dob = schema.Date(
        title=_(u"Date of Birth"),
        description=_(u"Date of Birth"),
        required=True,
    )

    marital_status = schema.Choice(
        title=_(u"Marital Status"),
        description=_(u"Marital Status"),
        values=[_(u'Single'), _(u'Married'),
                _(u'Other')],
        required=False,
    )

    gender = schema.Choice(
        title=_(u"Gender"),
        description=_(u"Gender"),
        values=[_(u'Male'), _(u'Female'),
                _(u'Other')],
        required=False,
    )

    ssn = schema.TextLine(
        title=_(u"Social Security Number"),
        description=_(u"Social Security Number"),
        required=False,
    )

    medical_record_number = schema.TextLine(
        title=_(u"Medical Record Number"),
        description=_(u"Medical Record Number"),
        required=False,
    )

    ethnicity = schema.Choice(
        title=_(u"Patient Race"),
        description=_(u"Patient Race"),
        values=[
            _(u'African American or Black'),
            _(u'Asian Indian Middle Eastern'),
            _(u'Caucasian'),
            _(u'Hispanic or Latino'),
            _(u'Other')
        ],
        required=False,
    )

    ethnicity_other = schema.TextLine(
        title=_(u"Ethnicity Other"),
        description=_(u"Ethnicity Other"),
        required=False,
    )

    # append to this list to track the sample run on a particular patient

    tested_unique_sample_ids = schema.List(
        title=_(u"List of Unique Sample Numbers"),
        description=_(u"List of Unique Sample Numbers"),
        required=False,
        value_type=schema.TextLine())
예제 #27
0
class ICustomerServiceCall(BaseModel):
    """Interface for Customer Service Call objects CSC
    """
    csc_client = schema.Choice(
        title=_(u"Client"),
        description=_(u"Client"),
        required=True,
        values=[_(u'Quarantined'), _(u'Released')],
    )
    csc_instance = schema.Choice(
        title=_(u"Instance Type"),
        description=_(u"Instance Type"),
        required=True,
        values=[_(u'Quarantined'), _(u'Released')],
    )
    csc_datetime = schema.Datetime(
        title=_(u"Date and Time of Instance"),
        description=_(u"Date and Time of Instance"),
        required=False,
    )
    csc_follow_up_needed = schema.Bool(
        title=_(u"Is Follow Up Needed"),
        description=_(u"Is Follow Up Needed"),
        required=False,
    )
    csc_status = schema.Choice(
        title=_(u"Status of CSI"),
        description=_(u"Status of CSI"),
        required=True,
        values=[_(u'Open'), _(u'Closed'), _(u'Held')],
    )
    csc_details = schema.Text(
        title=_(u"Details of CSI"),
        description=_(u"Details of CSI"),
        required=False,
    )
예제 #28
0
class IClinicalSample(ISample):
    """Sample that will contain all the billing info and high level information
    that is applicable to all aliquots made from this material, location of
    tests ordered on sample
    """
    # Clinical Samples "Veracis ID" is stored here, in USN field.
    usn = schema.TextLine(
        title=_(u"Unique Sample Number"),
        description=_(u"Sample ID from the blood draw kit"),
        required=False,
    )

    # want to index this field
    sample_serial_number = schema.Int(
        title=_(u"Sample Serial Number"),
        description=_(u"Sample Serial Number"),
        required=False,
    )
    """ Want to do an n+1 but allow be edited, should be unique"""

    # list or tuple? JP 3-14-17, let this be blank for remote order
    # option at a later date, need test ordered and status!
    # use this to drive a setup handler that will make the lists of what should
    # be tested! (jp 4-11-17)

    research_consent = schema.Choice(
        title=_(u"Patient Consent to Research"),
        description=_(u"Patient Gives consent to research use"),
        values=[_(u'No'), _(u'Yes')],
        required=True,
    )

    front_end_qa = schema.Choice(
        title=_(u"Front End QA Status"),
        description=_(u"Front End QA Status"),
        required=False,
        values=[_(u"Initial"),
                _(u"Review Pass"),
                _(u"Held"), ],
    )

    sample_ordering_healthcare_provider = schema.TextLine(
        title=_(u"Ordering Healthcare Provider"),
        description=_(u"Ordering Healthcare Provider"),
        required=False,
    )

    sample_ordering_healthcare_provider_signature = schema.Bool(
        title=_(u"Ordering Healthcare Provider Signature Provided"),
        description=_(u"Ordering Healthcare Provider Signature Provided"),
        required=False,
    )

    # directives.widget(primary_healthcare_provider=AutocompleteFieldWidget)
    primary_healthcare_provider = schema.TextLine(
        title=_(u"Primary Healthcare Provider"),
        description=_(u"Primary Healthcare Provider"),
        required=False,
    )
    """directives.widget(level=RadioFieldWidget)"""
    ana_testing = schema.Choice(
        title=_(u"ANA Testing Results"),
        description=_(u"ANA Testing Results"),
        required=True,
        values=[_(u'No Response'),
                _(u'Not Performed'),
                _(u'Negative'),
                _(u'Positive')],
    )

    clinical_impression = schema.Choice(
        title=_(u"Clinical Impression of SLE"),
        description=_(u"Clinical Impression of SLE"),
        required=True,
        values=[_(u'Not Specified'),
                _(u'Uncertain'),
                _(u'Yes'),
                _(u'No')],
    )

    xray_ordered = schema.Bool(
        title=_(u"X-Ray Ordered"),
        description=_(u"X-Ray Ordered"),
        required=False,
    )
    other_test_ordered = schema.TextLine(
        title=_(u"Other Test(s) Ordered"),
        description=_(u"Other Test(s) Ordered Enter One Per Line"),
        required=False,
    )

    """working example of multi choice input jp 1-31-17"""
    form.widget(symptoms_choice=CheckBoxFieldWidget)
    symptoms_choice = schema.List(
        title=_(u"Symptoms"),
        description=_(u"Symptoms, Select All That Apply"),
        required=False,
        value_type=schema.Choice(
            values=[_(u"Rash"),
                    _(u"Mouth Sores"),
                    _(u"Joint Pain"),
                    _(u"Inflammation"),
                    _(u"Seizures or Psychosis"),
                    _(u"Hair Loss")]),
    )

    joint_pain_text = schema.TextLine(
        title=_(u"Joint Pain Specifics"),
        description=_(u"Joint Pain Specifics (Enter One Per Line)"),
        required=False,
    )

    inflammation_text = schema.TextLine(
        title=_(u"Inflammation Specifics"),
        description=_(u"Inflammation Specifics (Enter One Per Line)"),
        required=False,
    )

    other_symptoms_text = schema.TextLine(
        title=_(u"Other Symptom(s)"),
        description=_(u"Other Symptom(s) Enter One Per Line"),
        required=False,
    )

    phlebotomist_name = schema.TextLine(
        title=_(u"Phlebotomist Name"),
        description=_(u"Phlebotomist Name"),
        required=False,
    )

    phlebotomist_signature_provided = schema.Bool(
        title=_(u"Ordering Healthcare Provider Signature Provided"),
        description=_(u"Ordering Healthcare Provider Signature Provided"),
        required=False,
    )

    collection_date = schema.Date(
        title=_(u"Sample Collection Date"),
        description=_(u"Sample Collection Date"),
        required=False,
        default=date.today(),
    )

    received_date = schema.Date(
        title=_(u"Sample Received Date"),
        description=_(u"Sample Received Date"),
        required=False,
        default=date.today(),
    )
예제 #29
0
class IMaterial(BaseModel):
    """Base schema fields common to all Material types.

    To use these fields, create a new Dexterity type and enable the
    IMaterial behaviour for it.
    """

    product_name = schema.TextLine(title=_(u"Product Name"),
                                   description=_(u"Product Name"),
                                   required=True)

    lot_number = schema.TextLine(title=_(u"Lot"),
                                 description=_(u"The lot number"),
                                 required=True)

    bottle_number = schema.Int(
        title=_(u"Bottle Number"),
        description=_(u"Bottle Number"),
        defaultFactory=AssignBottleNumber(),
        required=True,
    )

    vendor = schema.TextLine(
        title=_(u"Vendor"),
        description=_(u"The vendor that supplied the lot"),
        required=True)

    catalog_number = schema.TextLine(
        title=_(u"Catalog Number"),
        description=_(u"The lot's catalog number"),
        required=True)

    arrival_date = schema.Date(
        title=_(u"Arrival Date"),
        description=_(u"The date on which the lot arrived"),
        required=True)

    expiration_date = schema.Date(
        title=_(u"Expiration Date"),
        description=_(u"The date on which the lot expires"),
        required=True)

    coa = NamedBlobImage(title=_(u"Certificate of Analysis"),
                         description=_(u"Certificate of Analysis"),
                         required=False)

    initial_amount = Amount(
        title=_(u"Initial Amount"),
        description=_(u"Enter a decimal number"),
        required=True,
    )

    remaining_amount = Amount(
        title=_(u"Amount Remaining"),
        description=_(u"You should not need to edit this value"),
    )

    unit = schema.TextLine(
        title=_(u"Unit"),
        description=_("Enter the unit in which the amounts are measured"),
        required=True,
    )

    received_by = schema.Choice(
        title=_(u"Received By"),
        description=_(u"The operator that received the material lot"),
        source=LabUsersUserVocabulary,
        required=False  # value will be completed by workflow transition
    )

    opened_by = schema.Choice(
        title=_(u"Opened By"),
        description=_(u"The operator that Opened the material lot"),
        source=LabUsersUserVocabulary,
        required=False  # value will be completed by workflow transition
    )

    purchase_order = schema.TextLine(title=_(u"Purchase Order"),
                                     description=_(u"Purchase Order"),
                                     required=False)

    shipping_tracking_number = schema.TextLine(
        title=_(u"Shipping Tracking Number"),
        description=_(u"Shipping Tracking Number"),
        required=False)

    intended_use = schema.Choice(
        title=_(u"Intended Use"),
        description=_(u"Intended Use"),
        values=[_(u'Commercial'), _(u'Development')],
        required=True,
    )

    meets_raw_material_specifications = schema.Choice(
        title=_(u"Meets Raw Material Specifications"),
        description=_(u"Meets Raw Material Specifications"),
        values=[_(u'Yes'), _(u'No')],
        required=False,
    )

    shipping_box_integrity_maintained = schema.Choice(
        title=_(u"Raw Material Box Integrity Maintained"),
        description=_(u"Raw Material Box Integrity Maintained"),
        values=[_(u"Yes"), _(u"No")],
        required=False,
    )

    product_container_integrity_maintained = schema.Choice(
        title=_(u"Product Container Integrity Maintained"),
        description=_(u"Product Container Integrity Maintained"),
        values=[_(u"Yes"), _(u"No")],
        required=False,
    )

    other_damage = schema.TextLine(
        title=_(u"Other Damage"),
        description=_(u"Other Damage"),
        required=False,
    )

    temp_on_arrival = schema.TextLine(
        title=_(u"Temperature of Raw Material on Arrival"),
        description=_(u"Temperature of Raw Material on Arrival"),
        required=False,
    )

    temp_on_arrival_acceptable_limit = schema.Choice(
        title=_(u"Temperature of Raw Material on Arrival "
                u"Within Acceptable Limit"),
        description=_(u"Temperature of Raw Material on Arrival "
                      u"Within Acceptable Limit"),
        values=[_(u"Yes"), _(u"No")],
        required=False,
    )