export function and code clean up

v2.0
Steve Nyemba 11 months ago
parent 3fc6778802
commit 3975643686

@ -19,6 +19,7 @@ Usage :
# from healthcareio import server
# from healthcareio import export
import healthcareio.x12 as x12
from healthcareio.x12 import publish, plugins
import healthcareio.params as params
# from healthcareio import server

@ -1,31 +1,36 @@
""""
This module is designed to perform exports to a relational data stores
__doc__ = """"
This module is designed to perform exports to a relational data stores, We have 2 methods to infer structure possible :
1. learn structure from the data
2. use template: fast, but may not generalize
Note that the There are two possible methods to perform relational exports
"""
import transport
from transport import providers
import healthcareio.x12.plugins
# import transport
# from transport import providers
# # from healthcareio.x12 import plugins, util
# print ('hello world')
# class Mode :
# TEMPLATE,LEARN = [0,1]
# def build ():
# pass
# class Template :
# """
# This class is intended to generate a set of SQL Instructions to to create the tables
# """
# @staticmethod
# def build (**_args):
# """
# This function will build SQL statements to create a table (perhaps not needed)
# :plugins loaded plugins
# :x12 837|835 file types
# """
# _plugins=_args['plugins']
# _x12 = _args['x12']
# _template = util.template(plugins=_plugins)[_x12]
# _primaryKey = util.getPrimaryKey(plugins=_plugins,x12=_x12)
# _tables = []
# for _item in _template :
# if _primaryKey not in _item :
# _item[_primaryKey] = ''
# _tables.append(_item)
# return _tables
#
# We start by loading all the plugins
def primary_key (**_args) :
_plugins = _args['plugins']
for key in _plugins :
# _lpointers =
def init (**_args):
if 'path' in _args :
_path = _args['path']
_plugins,_parents = healthcareio.x12.plugins.instance(path=_path)
else:
_plugins,_parents = healthcareio.x12.plugins.instance()
for key in _plugins :
_lpointers = _plugins[key]
_foreign = {}
_table = {}
for _pointer in _lpointers :
_meta = _pointer.meta
if 'map' in _meta :
_attr = list(_meta['map'].values())
if 'field' in _meta :
_name = _meta['field']
_foreign[_name] = _attr

@ -19,13 +19,13 @@ class BasicParser (Process) :
super().__init__()
self._plugins = _args['plugins']
self._parents = _args['parents']
self._files = _args['files']
self._files = _args['files']
self._store = _args['store']
def apply(self,**_args):
_content = _args['content']
_filetype = _args['x12']
_doc = _args['document'] #{}
_content = _args['content']
_filetype = _args['x12']
_doc = _args['document'] #{}
_documentHandler = x12.util.document.Builder(plugins = self._plugins,parents=self._parents)
try:
@ -116,30 +116,30 @@ class X12Parser(BasicParser):
_writer.close()
def instance (**_args):
"""
:path
"""
# _files = x12.util.Files.get(_args['file'])
# def instance (**_args):
# """
# :path
# """
# # _files = x12.util.Files.get(_args['file'])
# #
# # We can split these files (multi-processing)
# #
# _jobCount = 1 if 'jobs' not in _args else int (_args['jobs'])
# _files = np.array_split(_files,_jobCount)
# PATH = os.sep.join([os.environ['HOME'],'.healthcareio','config.json'])
# if 'config' in _args :
# PATH = _args['config']
# f = open(PATH)
# _config = json.loads(f.read())
# f.close()
# jobs = []
# for _batch in _files :
# pthread = Parser(files=_batch,config=_config)
# pthread.start()
# jobs.append(pthread)
# time.sleep(1)
pass
# # #
# # # We can split these files (multi-processing)
# # #
# # _jobCount = 1 if 'jobs' not in _args else int (_args['jobs'])
# # _files = np.array_split(_files,_jobCount)
# # PATH = os.sep.join([os.environ['HOME'],'.healthcareio','config.json'])
# # if 'config' in _args :
# # PATH = _args['config']
# # f = open(PATH)
# # _config = json.loads(f.read())
# # f.close()
# # jobs = []
# # for _batch in _files :
# # pthread = Parser(files=_batch,config=_config)
# # pthread.start()
# # jobs.append(pthread)
# # time.sleep(1)
# pass
# class parser (Process) :

@ -92,7 +92,7 @@ def DMG (**_args):
# return {'patient':_info}
pass
@parser(element='DTP', x12='837', field='date',map={3:['to','from']})
@parser(element='DTP', x12='837', field='date',map={3:['end_date','start_date']})
def DTP (**_args):
"""
Expected Element DTP
@ -131,11 +131,7 @@ def CLM (**_args):
pass
# @parser(element='REF', field='ref',map={2:'id'})
def REF (**_args):
# print (_args)
_columns = ['identifier','qualifier','']
# _CODE_INDEX = 1 # -- according to x12 standard
# _map = {_CODE_INDEX:{'EA':'patient','EI':'provider','6R':'','D9':''}}
# return self.parse(_columns,[2],**_args)
pass
@parser(element='HI',x12='837',container='diagnosis',map={1:'code',2:'type'})
def HI (**_args):

@ -102,6 +102,24 @@ def template(**_args) :
else:
_object[_x12] = merge(_object[_x12],_info)
return _object
def getPrimaryKey(**_args):
"""
:plugins plugins that are loaded
:x12 837|835
"""
_plugins=_args['plugins']
_pointer = x12.plugins.filter(elements=['CLM'],plugins=_plugins)
_keys = {}
for _element in ['CLM','CLP'] :
_pointer = x12.plugins.filter(elements=[_element],plugins=_plugins)
if not _pointer :
continue
_pointer = list(_pointer.values())[0]
_meta = _pointer[_element].meta
_name = _meta['map'][1] if 'map' in _meta else _meta['columns'][0]
_id = '837' if _element == 'CLM' else '835'
_keys[_id] = _name
return _keys[_args['x12']]
# def template(**_args) :
# """
# This function generates an object template to be used in object assignment and export functionalities

Loading…
Cancel
Save