Пример #1
0
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)
Пример #2
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)
Пример #4
0
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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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,
                                 )
Пример #12
0
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'])
Пример #13
0
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,
    )
Пример #14
0
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
Пример #15
0
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
Пример #16
0
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)
Пример #17
0
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)
Пример #18
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)
Пример #19
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)
Пример #20
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)
Пример #21
0
def ProviderAdded(instance, event):
    """A new material has been created!
    """
    instance.manage_permission(AddProvider, [], 0)
    disallow_default_contenttypes(instance)
Пример #22
0
def SiteAdded(instance, event):
    """A new material has been created!
    """
    instance.manage_permission(AddSite, [], 0)
    disallow_default_contenttypes(instance)
Пример #23
0
    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
Пример #24
0
    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
Пример #25
0
def MaterialModified(instance, event):
    """A new material has been created!
    """
    instance.manage_permission(AddMaterial, [], 0)
    disallow_default_contenttypes(instance)
Пример #26
0
def MaterialModified(instance, event):
    """A new material has been created!
    """
    instance.manage_permission(AddMaterial, [], 0)
    disallow_default_contenttypes(instance)
Пример #27
0
def SolutionModified(instance, event):
    """A new solution has been created!
    """
    instance.manage_permission(AddSolution, [], 0)
    disallow_default_contenttypes(instance)
    UpdateSourceMaterials(instance, event)
Пример #28
0
def SolutionModified(instance, event):
    """A new solution has been created!
    """
    instance.manage_permission(AddSolution, [], 0)
    disallow_default_contenttypes(instance)
    UpdateSourceMaterials(instance, event)
Пример #29
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)