Мне нужно проанализировать документы 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. Я знаю, что это старая библиотека, и она не обновлялась годами, но если у кого-то есть опыт работы с ней, я бы хотел здесь помочь!