def make_executive(portal): if 'executive' in portal: return ex1 = create(portal, 'Folder', 'executive', 'Executive') ex2 = create(ex1, 'Folder', 'reports', 'Reports') disallow_default_contenttypes(ex1) disallow_default_contenttypes(ex2) ex1.setLayout('folder_contents') ex2.setLayout('folder_contents') ex1.manage_permission(AddLIMSRoot, [], 0) ex1.manage_permission(permissions.AddFolder, [], 0) ex1.manage_permission(View, ['LabManager', 'Executive'], 0) ex1.manage_permission(AccessContentsInformation, ['LabManager', 'Executive'], 0) ex1.manage_permission(ListFolderContents, ['LabManager', 'Executive'], 0) ex1.manage_permission(ModifyPortalContent, ['LabManager', 'Executive'], 0) ex2.manage_permission(AddLIMSRoot, [], 0) ex2.manage_permission(permissions.AddFolder, [], 0) ex2.manage_permission(View, ['LabManager', 'Executive'], 0) ex2.manage_permission(AccessContentsInformation, ['LabManager', 'Executive'], 0) ex2.manage_permission(ListFolderContents, ['LabManager', 'Executive'], 0) ex2.manage_permission(ModifyPortalContent, ['LabManager', 'Executive'], 0)
def create_structure(lims): for x in [ [lims, 'Folder', 'sites', 'Sites', ISites], [lims, 'Folder', 'samples', 'Samples', ISamples], [lims, 'Folder', 'materials', 'Materials', IMaterials], [lims, 'Folder', 'solutions', 'Solutions', ISolutions], [lims, 'Folder', 'ichiplots', 'iChip Lots', IiChipLots], [lims, 'Folder', 'testruns', 'Test Runs', ITestRuns], [lims, 'Folder', 'nce', 'Non Conformance Events', INonConformanceEvents], [lims, 'Folder', 'inventory', 'Inventory', IInventory], [lims, 'Folder', 'patients', 'Patients', IPatients], [lims, 'Folder', 'providers', 'Providers', IProviders], [lims, 'Folder', 'ichipassay', 'iChip Assays', IiChipAssays], [lims, 'Folder', 'configuration', 'Configuration', IConfiguration], ]: obj = create(container=x[0], type=x[1], id=x[2], title=x[3]) obj.setLayout('folder_contents') disallow_default_contenttypes(obj) alsoProvides(obj, x[4]) # Create configuration after other stuff, so that it's at the bottom of nav configuration = lims.configuration for x in [ [configuration, 'Folder', 'aliquoting', 'Aliquoting'], [configuration, 'Folder', 'departments', 'Departments'], [configuration, 'Folder', 'contacts', 'Contacts'], [configuration, 'Folder', 'samplepoints', 'Sample Points'], [configuration, 'Folder', 'sampletypes', 'Sample Types'], [configuration, 'Folder', 'analysisservices', 'Analysis Services'], [configuration, 'Folder', 'calculations', 'Calculations'], ]: instance = create(container=x[0], type=x[1], id=x[2], title=x[3]) instance.setLayout('folder_contents') disallow_default_contenttypes(instance)
def AssayBillingRequest(assaybillingrequest, event): """A new assay billing request been created! """ assaybillingrequest.manage_permission(delete_objects, [], 0) assaybillingrequest.manage_permission(AddNCE, ['LabManager', 'LabClerk','BillingExec'], 0) # Don't allow assay request to be nested in each other! assaybillingrequest.manage_permission(AddAssayRequest, [], 0) assaybillingrequest.manage_permission(AddClinicalAliquot, [], 0) assaybillingrequest.manage_permission(AddAssayBillingRequest, [], 0) disallow_default_contenttypes(assaybillingrequest)
def RandDAliquotAdded(randdaliquot, event): randdaliquot.manage_permission(AddRandDAliquot, ['Manager', 'LabManager', 'LabClerk', 'Owner','RandDLabClerk', 'RandDLabManager'], 0) # Don't allow samples to be nested in each other! randdaliquot.manage_permission(AddClinicalSample, [], 0) randdaliquot.manage_permission(AddRandDSample, [], 0) randdaliquot.manage_permission(AddQCSample, [], 0) # Don't allow other aliquots to be added (only R&D Aliquots should be added) randdaliquot.manage_permission(AddClinicalAliquot, [], 0) randdaliquot.manage_permission(AddQCAliquot, [], 0) randdaliquot.manage_permission(permissions.AddImage, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(randdaliquot)
def AssayBillingRequest(assaybillingrequest, event): """A new assay billing request been created! """ assaybillingrequest.manage_permission(delete_objects, [], 0) assaybillingrequest.manage_permission( AddNCE, ['LabManager', 'LabClerk', 'BillingExec'], 0) # Don't allow assay request to be nested in each other! assaybillingrequest.manage_permission(AddAssayRequest, [], 0) assaybillingrequest.manage_permission(AddClinicalAliquot, [], 0) assaybillingrequest.manage_permission(AddAssayBillingRequest, [], 0) disallow_default_contenttypes(assaybillingrequest)
def QCSampleAdded(qcsample, event): qcsample.manage_permission(AddQCAliquot, ['LabManager', 'LabClerk'], 0) qcsample.manage_permission(AddAssayRequest, ['LabManager', 'LabClerk'], 0) qcsample.manage_permission(AddNCE, ['LabManager', 'LabClerk'], 0) # Don't allow samples to be nested in each other! qcsample.manage_permission(AddRandDSample, [], 0) qcsample.manage_permission(AddQCSample, [], 0) qcsample.manage_permission(AddClinicalSample, [], 0) # Don't allow other aliquots to be added (only QC Aliquots should be added) qcsample.manage_permission(AddClinicalAliquot, [], 0) qcsample.manage_permission(AddRandDAliquot, [], 0) qcsample.manage_permission(permissions.AddImage, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(qcsample)
def ClinicalAliquotAdded(clinicalaliquot, event): """A new Clinical Sample has been created! """ clinicalaliquot.manage_permission(delete_objects, [], 0) clinicalaliquot.manage_permission(AddClinicalAliquot, ['Manager', 'LabManager', 'LabClerk', 'Owner'], 0) # Don't allow samples to be nested in each other! clinicalaliquot.manage_permission(AddQCSample, [], 0) clinicalaliquot.manage_permission(AddRandDSample, [], 0) clinicalaliquot.manage_permission(AddClinicalSample, [], 0) # Don't allow other aliquots to be added (only R&D Aliquots should be added) clinicalaliquot.manage_permission(AddRandDAliquot, [], 0) clinicalaliquot.manage_permission(AddQCAliquot, [], 0) clinicalaliquot.manage_permission(permissions.AddImage, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(clinicalaliquot)
def RandDAliquotAdded(randdaliquot, event): randdaliquot.manage_permission(AddRandDAliquot, [ 'Manager', 'LabManager', 'LabClerk', 'Owner', 'RandDLabClerk', 'RandDLabManager' ], 0) # Don't allow samples to be nested in each other! randdaliquot.manage_permission(AddClinicalSample, [], 0) randdaliquot.manage_permission(AddRandDSample, [], 0) randdaliquot.manage_permission(AddQCSample, [], 0) # Don't allow other aliquots to be added (only R&D Aliquots should be added) randdaliquot.manage_permission(AddClinicalAliquot, [], 0) randdaliquot.manage_permission(AddQCAliquot, [], 0) randdaliquot.manage_permission(permissions.AddImage, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(randdaliquot)
def ClinicalSampleAdded(clinicalsample, event): """A new Clinical Sample has been created! """ clinicalsample.manage_permission(AddClinicalAliquot, ['LabManager', 'LabClerk'], 0) clinicalsample.manage_permission(AddAssayRequest, ['LabManager', 'LabClerk'], 0) clinicalsample.manage_permission(AddNCE, ['LabManager', 'LabClerk'], 0) # Don't allow samples to be nested in each other! clinicalsample.manage_permission(AddQCSample, [], 0) clinicalsample.manage_permission(AddRandDSample, [], 0) clinicalsample.manage_permission(AddClinicalSample, [], 0) # Don't allow other aliquots to be added (only R&D Aliquots should be added) clinicalsample.manage_permission(AddRandDAliquot, [], 0) clinicalsample.manage_permission(AddQCAliquot, [], 0) clinicalsample.manage_permission(permissions.AddImage, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(clinicalsample)
def ClinicalAliquotAdded(clinicalaliquot, event): """A new Clinical Sample has been created! """ clinicalaliquot.manage_permission(delete_objects, [], 0) clinicalaliquot.manage_permission( AddClinicalAliquot, ['Manager', 'LabManager', 'LabClerk', 'Owner'], 0) # Don't allow samples to be nested in each other! clinicalaliquot.manage_permission(AddQCSample, [], 0) clinicalaliquot.manage_permission(AddRandDSample, [], 0) clinicalaliquot.manage_permission(AddClinicalSample, [], 0) # Don't allow other aliquots to be added (only R&D Aliquots should be added) clinicalaliquot.manage_permission(AddRandDAliquot, [], 0) clinicalaliquot.manage_permission(AddQCAliquot, [], 0) clinicalaliquot.manage_permission(permissions.AddImage, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(clinicalaliquot)
def MakePatient(self, pt, dob, marital_status, gender, ssn, mrn, consent_acquired, ethnicity): #set permission for new patient record pt.manage_permission( AddPatient, ['Manager', 'LabManager', 'LabClerk', 'Owner'], 0) disallow_default_contenttypes(pt) patient = api.content.create(container=pt, type = 'Patient', dob = dob, marital_status = marital_status, gender = gender, ssn = ssn, medical_record_number = mrn, research_consent = consent_acquired, race = ethnicity, )
def CommercialBoxAdded(instance, event): """A new commercial box has been created """ # Permit Aliquots to be added here instance.manage_permission(AddAliquot, [], 0) # Prevent adding box in a box instance.manage_permission(AddCommercialBox, [], 0) instance.manage_permission(AddRandDBox, [], 0) instance.manage_permission(AddQCBox, [], 0) disallow_default_contenttypes(instance) # name box instance.setTitle( "%s - %s - %s" % (instance.box_number, instance.box_type, instance.Type())) # reindex for title to work instance.reindexObject(idxs=['Title', 'sortable_title', 'title'])
def MakePatient(self, pt, dob, marital_status, gender, ssn, mrn, consent_acquired, ethnicity): #set permission for new patient record pt.manage_permission(AddPatient, ['Manager', 'LabManager', 'LabClerk', 'Owner'], 0) disallow_default_contenttypes(pt) patient = api.content.create( container=pt, type='Patient', dob=dob, marital_status=marital_status, gender=gender, ssn=ssn, medical_record_number=mrn, research_consent=consent_acquired, race=ethnicity, )
def iChipLotAdded(instance, event): """iChipLot has been added, some configuration and permissions to set on the new folder """ # Set default permissions for a new ichiplot instance.manage_permission(delete_objects, [], 0) instance.manage_permission(AddiChip, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(instance) # I want to create X amount of iChips from form value. for x in range(1, instance.nr_ichips + 1): ichip = create(container=instance, title="{0}_{1:03d}".format(instance.title, x), type='iChip', ichip_id="{0}_{1:03d}".format(instance.title, x)) # Configure each ichip to reflect the parent's settings ichip.frames = instance.frames
def iChipLotAdded(instance, event): """iChipLot has been added, some configuration and permissions to set on the new folder """ # Set default permissions for a new ichiplot instance.manage_permission(delete_objects, [], 0) instance.manage_permission(AddiChip, ['LabManager', 'LabClerk'], 0) disallow_default_contenttypes(instance) # I want to create X amount of iChips from form value. for x in range(1, instance.nr_ichips + 1): ichip = create(container=instance, title = "{0}_{1:03d}".format(instance.title, x), type='iChip', ichip_id="{0}_{1:03d}".format(instance.title, x)) # Configure each ichip to reflect the parent's settings ichip.frames = instance.frames
def RackAdded(instance, event): """A new Rack has been created! """ # Permit Commercial Boxes to be added here # @formatter:off instance.manage_permission(AddCommercialBox, ['Manager', 'LabManager', 'LabClerk', 'Owner'], 0) instance.manage_permission( AddRandDBox, ['Manager', 'LabManager', 'RandDLabClerk', 'RandDLabManager', 'Owner'], 0) instance.manage_permission( AddQCBox, ['Manager', 'LabManager', 'RandDLabClerk', 'RandDLabManager', 'Owner'], 0) # @formatter:on # Prevent adding Rack in a rack! instance.manage_permission(AddRack, [], 0) disallow_default_contenttypes(instance)
def make_executive(portal): if 'executive' in portal: return ex1 = create(portal, 'Folder', 'executive', 'Executive') ex2 = create(ex1, 'Folder', 'reports', 'Reports') disallow_default_contenttypes(ex1) disallow_default_contenttypes(ex2) ex1.setLayout('folder_contents') ex2.setLayout('folder_contents') ex1.manage_permission(AddLIMSRoot, [], 0) ex1.manage_permission( permissions.AddFolder, [], 0) ex1.manage_permission( View, ['LabManager', 'Executive'], 0) ex1.manage_permission( AccessContentsInformation, ['LabManager', 'Executive'], 0) ex1.manage_permission( ListFolderContents, ['LabManager', 'Executive'], 0) ex1.manage_permission( ModifyPortalContent, ['LabManager', 'Executive'], 0) ex2.manage_permission(AddLIMSRoot, [], 0) ex2.manage_permission( permissions.AddFolder, [], 0) ex2.manage_permission( View, ['LabManager', 'Executive'], 0) ex2.manage_permission( AccessContentsInformation, ['LabManager', 'Executive'], 0) ex2.manage_permission( ListFolderContents, ['LabManager', 'Executive'], 0) ex2.manage_permission( ModifyPortalContent, ['LabManager', 'Executive'], 0)
def make_billing(portal): if 'billing' in portal: return b1 = create(portal, 'Folder', 'billing', 'Billing') b2 = create(b1, 'Folder', 'assaybillingrequests', 'Assay Billing Requests') b3 = create(b1, 'Folder', 'billingProgram_workflow', 'Billing Programs') disallow_default_contenttypes(b1) disallow_default_contenttypes(b2) disallow_default_contenttypes(b3) b1.setLayout('folder_contents') b2.setLayout('folder_contents') b3.setLayout('folder_contents') # @formatter:off b1.manage_permission(AddLIMSRoot, [], 0) b1.manage_permission(permissions.AddFolder, [], 0) b1.manage_permission(View, ['LabManager', 'BillingExec'], 0) b1.manage_permission(AccessContentsInformation, ['LabManager', 'BillingExec'], 0) b1.manage_permission(ListFolderContents, ['LabManager', 'BillingExec'], 0) b1.manage_permission(AddAssayBillingRequest, ['LabManager', 'BillingExec'], 0) b1.manage_permission(ModifyPortalContent, ['LabManager', 'BillingExec'], 0) b1.manage_permission(AddAssayBillingRequest, [], 0) b1.manage_permission(AddBillingProgram, [], 0) b1.manage_permission(AddAliquotPlate, [], 0) b2.manage_permission(AddLIMSRoot, [], 0) b2.manage_permission(permissions.AddFolder, [], 0) b2.manage_permission(View, ['LabManager', 'BillingExec'], 0) b2.manage_permission(AccessContentsInformation, ['LabManager', 'BillingExec'], 0) b2.manage_permission(ListFolderContents, ['LabManager', 'BillingExec'], 0) b2.manage_permission(ModifyPortalContent, ['LabManager', 'BillingExec'], 0) b2.manage_permission(AddAssayBillingRequest, ['LabManager', 'BillingExec'], 0) b2.manage_permission(AddBillingProgram, [], 0) b2.manage_permission(AddAliquotPlate, [], 0) b2.manage_permission(AddLIMSRoot, [], 0) b3.manage_permission(permissions.AddFolder, [], 0) b3.manage_permission(View, ['LabManager', 'BillingExec'], 0) b3.manage_permission(AccessContentsInformation, ['LabManager', 'BillingExec'], 0) b3.manage_permission(ListFolderContents, ['LabManager', 'BillingExec'], 0) b3.manage_permission(AddBillingProgram, ['LabManager', 'BillingExec'], 0) b3.manage_permission(ModifyPortalContent, ['LabManager', 'BillingExec'], 0) b3.manage_permission(AddAssayBillingRequest, [], 0) b3.manage_permission(AddAliquotPlate, [], 0)
def make_billing(portal): if 'billing' in portal: return b1 = create(portal, 'Folder', 'billing', 'Billing') b2 = create(b1, 'Folder', 'assaybillingrequests', 'Assay Billing Requests') b3 = create(b1, 'Folder', 'billingProgram_workflow', 'Billing Programs') disallow_default_contenttypes(b1) disallow_default_contenttypes(b2) disallow_default_contenttypes(b3) b1.setLayout('folder_contents') b2.setLayout('folder_contents') b3.setLayout('folder_contents') # @formatter:off b1.manage_permission(AddLIMSRoot, [], 0) b1.manage_permission(permissions.AddFolder, [], 0) b1.manage_permission(View, ['LabManager', 'BillingExec'], 0) b1.manage_permission(AccessContentsInformation, ['LabManager', 'BillingExec'], 0) b1.manage_permission(ListFolderContents, ['LabManager', 'BillingExec'], 0) b1.manage_permission(AddAssayBillingRequest, ['LabManager', 'BillingExec'], 0) b1.manage_permission(ModifyPortalContent, ['LabManager', 'BillingExec'], 0) b1.manage_permission(AddAssayBillingRequest,[],0) b1.manage_permission(AddBillingProgram,[],0) b1.manage_permission(AddAliquotPlate,[],0) b2.manage_permission(AddLIMSRoot, [], 0) b2.manage_permission(permissions.AddFolder, [], 0) b2.manage_permission(View, ['LabManager', 'BillingExec'], 0) b2.manage_permission(AccessContentsInformation, ['LabManager', 'BillingExec'], 0) b2.manage_permission(ListFolderContents, ['LabManager', 'BillingExec'], 0) b2.manage_permission(ModifyPortalContent, ['LabManager', 'BillingExec'], 0) b2.manage_permission(AddAssayBillingRequest, ['LabManager', 'BillingExec'], 0) b2.manage_permission(AddBillingProgram,[],0) b2.manage_permission(AddAliquotPlate,[],0) b2.manage_permission(AddLIMSRoot, [], 0) b3.manage_permission(permissions.AddFolder, [], 0) b3.manage_permission(View, ['LabManager', 'BillingExec'], 0) b3.manage_permission(AccessContentsInformation, ['LabManager', 'BillingExec'], 0) b3.manage_permission(ListFolderContents, ['LabManager', 'BillingExec'], 0) b3.manage_permission(AddBillingProgram, ['LabManager', 'BillingExec'], 0) b3.manage_permission(ModifyPortalContent, ['LabManager', 'BillingExec'], 0) b3.manage_permission(AddAssayBillingRequest, [],0) b3.manage_permission(AddAliquotPlate,[],0)
def make_customer_service(portal): if 'customerservice' in portal: return cs1 = create(portal, 'Folder', 'customerservice', 'Customer Service') cs2 = create(cs1, 'Folder', 'customercalls', 'Customer Calls') cs3 = create(cs1, 'Folder', 'providercalls', 'Provider Calls') disallow_default_contenttypes(cs1) disallow_default_contenttypes(cs2) disallow_default_contenttypes(cs3) cs1.setLayout('folder_contents') cs2.setLayout('folder_contents') cs3.setLayout('folder_contents') # @formatter:off cs1.manage_permission(AddLIMSRoot, [], 0) cs1.manage_permission(permissions.AddFolder, [], 0) cs1.manage_permission(View, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission(AccessContentsInformation, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission(ListFolderContents, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission(AddAssayBillingRequest, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission(ModifyPortalContent, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission(AddLIMSRoot, [], 0) cs2.manage_permission(permissions.AddFolder, [], 0) cs2.manage_permission(View, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission(AccessContentsInformation, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission(ListFolderContents, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission(AddCustomerServiceCall, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission(ModifyPortalContent, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission(AddLIMSRoot, [], 0) cs3.manage_permission(permissions.AddFolder, [], 0) cs3.manage_permission(View, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission(AccessContentsInformation, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission(ListFolderContents, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission(AddBillingProgram, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission(ModifyPortalContent, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0)
def ProviderAdded(instance, event): """A new material has been created! """ instance.manage_permission(AddProvider, [], 0) disallow_default_contenttypes(instance)
def SiteAdded(instance, event): """A new material has been created! """ instance.manage_permission(AddSite, [], 0) disallow_default_contenttypes(instance)
def make_clinical_sample( self, usn_from_form, consent_acquired, ana_testing, clin_rash, clin_seiz_psych, clin_mouth_sores, clin_hair_loss, clin_joint_pain, clin_inflam, clin_other, clin_other_specify, diag_D89_89, diag_M32_10, diag_D89_9, diag_M35_9, diag_L93_2, diag_other, diag_other_specify, provider_nip_clean, provider_signed, draw_location, draw_tel, phlebotomist_name, draw_signed, collection_date, shipment_date, test_other_specify, clinical_impression, ordering_provider_name, site_id, assay_selection, other_clinical_symptoms, other_inflam, other_joint_pain): """Make a clinical sample via api, set serial number Need to add option for assay choice at a later date """ # logical test order passed via end user # assign serial number for sample sn = api.content.find(context=api.portal.get(), portal_type='ClinicalSample') all_sn = [] # list of all serial numbers sn_uid = [s.UID for s in sn] for i in sn_uid: value = api.content.get(UID=i) all_sn.append(value.sample_serial_number) if len(all_sn) == 0: serial_number = 10000 else: serial_number = max(all_sn) + 1 symptoms_choice = [] if clin_rash is not None: symptoms_choice.append(unicode(clin_rash, "utf-8")) if clin_seiz_psych is not None: symptoms_choice.append(unicode(clin_seiz_psych, "utf-8")) if clin_mouth_sores is not None: symptoms_choice.append(unicode(clin_mouth_sores, "utf-8")) if clin_hair_loss is not None: symptoms_choice.append(unicode(clin_hair_loss, "utf-8")) if clin_joint_pain is not None: symptoms_choice.append(unicode(clin_joint_pain, "utf-8")) if clin_inflam is not None: symptoms_choice.append(unicode(clin_inflam, "utf-8")) if clin_other is not None: symptoms_choice.append(unicode(clin_other, "utf-8")) # datetime.datetime.strptime diagnosis_code = [] if diag_D89_89 is not None: diagnosis_code.append(unicode(diag_D89_89, "utf-8")) if diag_M32_10 is not None: diagnosis_code.append(unicode(diag_M32_10, "utf-8")) if diag_D89_9 is not None: diagnosis_code.append(unicode(diag_D89_9, "utf-8")) if diag_M35_9 is not None: diagnosis_code.append(unicode(diag_M35_9, "utf-8")) if diag_L93_2 is not None: diagnosis_code.append(unicode(diag_L93_2, "utf-8")) if diag_other is not None: diagnosis_code.append(unicode(diag_other, "utf-8")) try: py_collection_date = \ datetime.datetime.strptime(collection_date, "%Y-%m-%d").date() except: py_collection_date = None try: py_shipment_date = \ datetime.datetime.strptime(shipment_date, "%Y-%m-%d").date() except: py_shipment_date = None # need to split clin_other_specify on ', ' # if clin_other_specify != "": # Get primary health care provider from site! site_objects = api.content.find(context=api.portal.get(), portal_type='Site') site_uids = [i.UID for i in site_objects] primary_provider = "null" for j in site_uids: site = api.content.get(UID=j) if site_id == str(site.title): primary_provider = site.primary_provider # set permission for clinical sample cs = api.portal.get() sample = cs['lims']['samples'] disallow_default_contenttypes(sample) clinical_sample = api.content.create( container=sample, type='ClinicalSample', id=usn_from_form, usn=usn_from_form, safe_id=True, sample_serial_number=serial_number, research_consent=consent_acquired, sample_ordering_healthcare_provider=ordering_provider_name, sample_ordering_healthcare_provider_signature=provider_signed, primary_healthcare_provider=primary_provider, ana_testing=ana_testing, clinical_impression=clinical_impression, other_test_ordered=test_other_specify, symptoms_choice=symptoms_choice, symptoms_text=clin_other_specify, phlebotomist_name=phlebotomist_name, phlebotomist_signature_provided=draw_signed, collection_date=py_collection_date, received_date=py_shipment_date, joint_pain_text=other_joint_pain, inflammation_text=other_inflam, other_symptoms_text=other_clinical_symptoms, ) clinical_sample_uid = clinical_sample.UID() # Creates Assay Request Object on Sample Creation, on for each assay # selected! for a in assay_selection: assay_request = api.content.create( container=clinical_sample, type='AssayRequest', title=a, assay_name=a) transition(assay_request, to_state='to_be_tested') # add billing program from rec to object billing_request = api.content.create( container=assay_request, type='AssayBillingRequest', title=usn_from_form, safe_id=True, assay_name=a, sample_id=usn_from_form, diagnosis_code=diagnosis_code, diagnosis_code_other=diag_other_specify) return clinical_sample_uid
def make_clinical_sample( self, usn_from_form, consent_acquired, ana_testing, clin_rash, clin_seiz_psych, clin_mouth_sores, clin_hair_loss, clin_joint_pain, clin_inflam, clin_other, clin_other_specify, diag_D89_89, diag_M32_10, diag_D89_9, diag_M35_9, diag_L93_2, diag_other, diag_other_specify, provider_nip_clean, provider_signed, draw_location, draw_tel, phlebotomist_name, draw_signed, collection_date, shipment_date, test_other_specify, clinical_impression, ordering_provider_name, site_id, assay_selection, other_clinical_symptoms, other_inflam, other_joint_pain): """Make a clinical sample via api, set serial number Need to add option for assay choice at a later date """ # logical test order passed via end user # assign serial number for sample sn = api.content.find(context=api.portal.get(), portal_type='ClinicalSample') all_sn = [] # list of all serial numbers sn_uid = [s.UID for s in sn] for i in sn_uid: value = api.content.get(UID=i) all_sn.append(value.sample_serial_number) if len(all_sn) == 0: serial_number = 10000 else: serial_number = max(all_sn) + 1 symptoms_choice = [] if clin_rash is not None: symptoms_choice.append(unicode(clin_rash, "utf-8")) if clin_seiz_psych is not None: symptoms_choice.append(unicode(clin_seiz_psych, "utf-8")) if clin_mouth_sores is not None: symptoms_choice.append(unicode(clin_mouth_sores, "utf-8")) if clin_hair_loss is not None: symptoms_choice.append(unicode(clin_hair_loss, "utf-8")) if clin_joint_pain is not None: symptoms_choice.append(unicode(clin_joint_pain, "utf-8")) if clin_inflam is not None: symptoms_choice.append(unicode(clin_inflam, "utf-8")) if clin_other is not None: symptoms_choice.append(unicode(clin_other, "utf-8")) # datetime.datetime.strptime diagnosis_code = [] if diag_D89_89 is not None: diagnosis_code.append(unicode(diag_D89_89, "utf-8")) if diag_M32_10 is not None: diagnosis_code.append(unicode(diag_M32_10, "utf-8")) if diag_D89_9 is not None: diagnosis_code.append(unicode(diag_D89_9, "utf-8")) if diag_M35_9 is not None: diagnosis_code.append(unicode(diag_M35_9, "utf-8")) if diag_L93_2 is not None: diagnosis_code.append(unicode(diag_L93_2, "utf-8")) if diag_other is not None: diagnosis_code.append(unicode(diag_other, "utf-8")) try: py_collection_date = \ datetime.datetime.strptime(collection_date, "%Y-%m-%d").date() except: py_collection_date = None try: py_shipment_date = \ datetime.datetime.strptime(shipment_date, "%Y-%m-%d").date() except: py_shipment_date = None # need to split clin_other_specify on ', ' # if clin_other_specify != "": # Get primary health care provider from site! site_objects = api.content.find(context=api.portal.get(), portal_type='Site') site_uids = [i.UID for i in site_objects] primary_provider = "null" for j in site_uids: site = api.content.get(UID=j) if site_id == str(site.title): primary_provider = site.primary_provider # set permission for clinical sample cs = api.portal.get() sample = cs['lims']['samples'] disallow_default_contenttypes(sample) clinical_sample = api.content.create( container=sample, type='ClinicalSample', id=usn_from_form, usn=usn_from_form, safe_id=True, sample_serial_number=serial_number, research_consent=consent_acquired, sample_ordering_healthcare_provider=ordering_provider_name, sample_ordering_healthcare_provider_signature=provider_signed, primary_healthcare_provider=primary_provider, ana_testing=ana_testing, clinical_impression=clinical_impression, other_test_ordered=test_other_specify, symptoms_choice=symptoms_choice, symptoms_text=clin_other_specify, phlebotomist_name=phlebotomist_name, phlebotomist_signature_provided=draw_signed, collection_date=py_collection_date, received_date=py_shipment_date, joint_pain_text=other_joint_pain, inflammation_text=other_inflam, other_symptoms_text=other_clinical_symptoms, ) clinical_sample_uid = clinical_sample.UID() # Creates Assay Request Object on Sample Creation, on for each assay # selected! for a in assay_selection: assay_request = api.content.create(container=clinical_sample, type='AssayRequest', title=a, assay_name=a) transition(assay_request, to_state='to_be_tested') # add billing program from rec to object billing_request = api.content.create( container=assay_request, type='AssayBillingRequest', title=usn_from_form, safe_id=True, assay_name=a, sample_id=usn_from_form, diagnosis_code=diagnosis_code, diagnosis_code_other=diag_other_specify) return clinical_sample_uid
def MaterialModified(instance, event): """A new material has been created! """ instance.manage_permission(AddMaterial, [], 0) disallow_default_contenttypes(instance)
def MaterialModified(instance, event): """A new material has been created! """ instance.manage_permission(AddMaterial, [], 0) disallow_default_contenttypes(instance)
def SolutionModified(instance, event): """A new solution has been created! """ instance.manage_permission(AddSolution, [], 0) disallow_default_contenttypes(instance) UpdateSourceMaterials(instance, event)
def SolutionModified(instance, event): """A new solution has been created! """ instance.manage_permission(AddSolution, [], 0) disallow_default_contenttypes(instance) UpdateSourceMaterials(instance, event)
def make_customer_service(portal): if 'customerservice' in portal: return cs1 = create(portal, 'Folder', 'customerservice', 'Customer Service') cs2 = create(cs1, 'Folder', 'customercalls', 'Customer Calls') cs3 = create(cs1, 'Folder', 'providercalls', 'Provider Calls') disallow_default_contenttypes(cs1) disallow_default_contenttypes(cs2) disallow_default_contenttypes(cs3) cs1.setLayout('folder_contents') cs2.setLayout('folder_contents') cs3.setLayout('folder_contents') # @formatter:off cs1.manage_permission(AddLIMSRoot, [], 0) cs1.manage_permission(permissions.AddFolder, [], 0) cs1.manage_permission( View, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission( AccessContentsInformation, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission( ListFolderContents, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission( AddAssayBillingRequest, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs1.manage_permission( ModifyPortalContent, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission(AddLIMSRoot, [], 0) cs2.manage_permission(permissions.AddFolder, [], 0) cs2.manage_permission( View, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission( AccessContentsInformation, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission( ListFolderContents, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission( AddCustomerServiceCall, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs2.manage_permission( ModifyPortalContent, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission(AddLIMSRoot, [], 0) cs3.manage_permission(permissions.AddFolder, [], 0) cs3.manage_permission( View, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission( AccessContentsInformation, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission( ListFolderContents, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission( AddBillingProgram, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0) cs3.manage_permission( ModifyPortalContent, ['LabManager', 'LabClerk', 'SalesRep', 'BillingExec'], 0)