Python TigerShark для ответа 271 EDI - PullRequest
0 голосов
/ 19 марта 2020

Мне нужно проанализировать документы x12 для моего приложения, и после тестирования нескольких библиотек я обнаружил, что TigerShark - лучший вариант. Вот пример моего текущего кода:

    parsed = M271_5010_X279_A1.parsed_271.unmarshall(x12.strip())
    f =  F271_5010(parsed)


    print("\nSubscriber")
    for fSubscriber in f.subscribers:

        for fRequestValidation in fSubscriber.personal_information.request_validations:

            raise Exception('%s, %s' % (fRequestValidation.reject_reason[1], fRequestValidation.follow_up_action_code[1]))


        print('\n', fSubscriber.eligibility_or_benefit_information)

        for fEligibilityOrBenefitInformation in fSubscriber.eligibility_or_benefit_information:

            print('1', fEligibilityOrBenefitInformation.coverage_information.information_type)
            print('2', fEligibilityOrBenefitInformation.coverage_information.coverage_level)
            print('3', fEligibilityOrBenefitInformation.coverage_information.service_type)
            print('4', fEligibilityOrBenefitInformation.coverage_information.insurance_type)
            print('5', fEligibilityOrBenefitInformation.coverage_information.description)
            print('6', fEligibilityOrBenefitInformation.coverage_information.time_period_type)
            print('7', fEligibilityOrBenefitInformation.coverage_information.benefit_amount)
            print('8', fEligibilityOrBenefitInformation.coverage_information.benefit_percent)
            print('9', fEligibilityOrBenefitInformation.coverage_information.quantity_type)
            print('10', fEligibilityOrBenefitInformation.coverage_information.quantity)
            print('11', fEligibilityOrBenefitInformation.coverage_information.authorization_or_certification)
            print('12', fEligibilityOrBenefitInformation.coverage_information.in_plan_network)
            print('13', fEligibilityOrBenefitInformation.coverage_information.both_in_out_network)

            print('14', fEligibilityOrBenefitInformation.coverage_information.ada_code)
            # print('15', fEligibilityOrBenefitInformation.coverage_information.cpt_code)
            # print('16', fEligibilityOrBenefitInformation.coverage_information.hcpcs_code)
            # print('17', fEligibilityOrBenefitInformation.coverage_information.icd_9_cm_code)
            # print('18', fEligibilityOrBenefitInformation.coverage_information.ndc_code)
            # print('19', fEligibilityOrBenefitInformation.coverage_information.zz_code)

Однако, когда я пытаюсь получить доступ к любому из составных полей в объекте 271 eligibility_or_benefit_information, я сталкиваюсь с этой проблемой:

...
  File "services/edi/__init__.py", line 1961, in _eligibilityRequest
    X12Dental.parseX12(None, '271')
  File "services/edi/X12Dental.py", line 1411, in parseX12
    print('14', fEligibilityOrBenefitInformation.coverage_information.ada_code)
  File "tigershark/facade/__init__.py", line 1018, in __get__
    segList = instance.segList(self.segment)
AttributeError: 'EligibilityOrBenefitInformation' object has no attribute 'segList'

В другие фасады (835 и 837), которые используют CompositeAccess, классы наследуют X12LoopBridge вместо X12SegmentBridge, что имеет смысл, потому что X12SegmentBridge не имеет segList, но когда я попытался наследовать X12LoopBridge вместо всех элементов, просто возвращаем None. Я знаю, что это старая библиотека, и она не обновлялась годами, но если у кого-то есть опыт работы с ней, я бы хотел здесь помочь!

...