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, )
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
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, )
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, )
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, )
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, )
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, )
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") ]), )
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, )
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, )
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, )
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), )
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, )
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, )
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, )
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, )
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, )
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. """)
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, )
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"))
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, )
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, )
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, ))
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, )
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())
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, )
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(), )
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, )