remits.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import numpy as np
  2. from .. import parser
  3. @parser(element='ISA',x12='835',field='header', map={6:'submitter_id',8:'receiver_id',9:'date',10:'time'})
  4. def ISA(**_args):
  5. """
  6. :row raw {x12} row
  7. :data parsed data
  8. :meta elements containing map {index:field_name}
  9. """
  10. # print (_args['data'])
  11. pass
  12. @parser(element='ST',x12='835', field='ISA', map={1:'x12',2:'control_number'})
  13. def ST(**_args):
  14. """
  15. :row raw {x12} row
  16. :data parsed data
  17. :meta elements containing map {index:field_name}
  18. """
  19. pass
  20. @parser (element='BPR',x12='835',map={2:'transaction_amount',3:'transaction_type',4:'method',6:'depository'})
  21. def BPR (**_args):
  22. pass
  23. @parser(element='CLP',x12='835',
  24. map={1:'claim_id',2:'status',3:'charge_amount',4:'payment_amount',5:'patient_amount',7:'claim_control_number',8:'bill_type',10:'patient_status',11:'drg_code'})
  25. def CLP (**_args):
  26. _data = _args['data']
  27. for _id in ['charge_amount','payment_amount','patient_amount']:
  28. _data[_id] = np.float64(_data[_id])
  29. return _data
  30. pass
  31. @parser (element='PER',x12='835',field="billing_provider",map={2:'name',4:'phone_number'})
  32. def PER (**_args):
  33. pass
  34. @parser(element='N1',x12='835',anchor={'PE':'billing_provider','PR':'payer'},map={2:'address_line_1',4:'id'})
  35. def N1(**_args):
  36. pass
  37. @parser(element='DTM',x12='835',container='dates',map={1:'type',2:'date'})
  38. def DTM(**_args):
  39. pass
  40. @parser(element='PLB',x12='835',container='provider', map={1:'id',2:'adjustment_fiscal_year',-1:'adjustment_amount'})
  41. def PLB(**_args):
  42. pass
  43. @parser(element='CAS',x12='835',container='adjustments',map={2:'reason',3:'amount',4:'quantity'})
  44. def CAS(**_args):
  45. pass
  46. @parser(element='SVC',x12='835',container='procedures',map={1:['code','type'],2:'charge_amount',3:'paid_amount',7:'submitted_units',4:'revenue_code',5:'paid_units_of_service'})
  47. def SVC (**_args):
  48. _data = _args['data']
  49. _data['type'] = _data['type'].split('|')[0]
  50. _data['code'] = _data['code'].split('|')[1]
  51. _data['charge_amount'] = np.float64(_data['charge_amount'])
  52. _data['paid_amount'] = np.float64(_data['paid_amount'])
  53. return _data
  54. pass
  55. @parser(element='N1',x12='835',anchor={'PR':'provider'},map={1:'name'})
  56. def N1(**_args):
  57. pass
  58. @parser(element='N3',x12='835',parent='N1',map={1:'address_line_1'})
  59. def N3(**_args):
  60. pass
  61. @parser(element='N4',x12='835',parent='N1',map={1:'city',2:'state',3:'zipcode'})
  62. def N4(**_args):
  63. pass
  64. @parser (element='AMT',x12='835',container='amounts', map={2:'amount',1:'type'})
  65. def AMT (**_args):
  66. _data = _args['data']
  67. _map = {'B6':'AMOUNT_ALLOWED','AU':'AMOUNT_COVERED','F5':'PATIENT_PAID'}
  68. if _data['type'] in _map :
  69. _data['type'] = _map[_data['type']]
  70. _data['amount'] = np.float64(_data['amount'])
  71. return _data