예제 #1
0
def home():
    form = forms.TransForm()
    alert = FormError()
    if form.validate_on_submit():
        try:
            message = HL7Message.from_string(form.message.data)
            mapping = HL7Mapping.from_string(form.mapping.data)
            transform = HL7Transform(mapping)
            message_out = transform.execute(message)
            form.message_out.data = message.to_string()
        except APIError as e:
            alert.text = 'Could not read HL7 message. Please check your format.'
            alert.trace = e.args[0]
            alert.error_status = True
        # except (TypeError, IndexError) as e:
        #     alert.text = 'Could not read HL7 message. Please check your format.'
        #     alert.trace = str(e)
        #     alert.error_status = True
        except json.decoder.JSONDecodeError as e:
            alert.text = 'Could not read your mapping scheme. Please check if the JSON format is valid.'
            alert.trace = str(e)
            alert.error_status = True
        except (IndexError, KeyError, RuntimeError) as e:
            alert.text = 'Error occurred during processing.'
            alert.trace = str(e)
            alert.error_status = True
    return render_template("home.html", form=form, alert=alert)
예제 #2
0
 def test_execute(self):
     op = GenerateCurrentDatetime(['MSH.2'], {})
     msg = HL7Message.from_file('hl7_transform/test/test_transform.hl7')
     s = io.StringIO()
     with redirect_stderr(s):  # hides the warning message from output
         res1 = op.execute(msg)
         self.assertIn('deprecated', s.getvalue())
     res2 = op(msg)
     self.assertEqual(res1, res2)
예제 #3
0
def main_cli(args):
    if args.type == 'json':
        mapping = HL7Mapping.from_json(args.mappingfile)
    elif args.type == 'csv':
        mapping = HL7Mapping.from_csv(args.mappingfile)
    else:
        raise TypeError(
            'Unsupported mapping file type. Currently supported are: json, csv.'
        )
    transform = HL7Transform(mapping)
    if args.message:
        message = HL7Message.from_file(args.message)
    else:
        message = HL7Message.new()
    message_transformed = transform(message)
    if args.out is not None:
        with open(args.out, 'w') as f_out:
            f_out.write(message_transformed.to_string())
    else:
        print(message_transformed.to_string())
예제 #4
0
 def setUp(self):
     mapping = HL7Mapping.from_json(
         'hl7_transform/test/test_transform.json')
     # using example message from hl7 library (readthedocs)
     self.message = HL7Message.from_file('hl7_transform/test/test_msg.hl7')
     self.transform = HL7Transform(mapping)
예제 #5
0
 def setUp(self):
     self.message = HL7Message.from_file('hl7_transform/test/test_msg.hl7')
예제 #6
0
 def test_raises(self):
     with self.assertRaises(APIError):
         HL7Message.from_string('MSH|')
예제 #7
0
 def test_generatenumericid(self):
     field = 'NTE.4'
     op = GenerateNumericID([field], {})
     msg = HL7Message.from_file('hl7_transform/test/test_transform.hl7')
     res = op(msg)
     self.assertTrue(0 <= int(res) <= 1e9)
예제 #8
0
 def test_generatealphanumericid(self):
     field = 'NTE.4'
     op = GenerateAplhanumericID([field], {})
     msg = HL7Message.from_file('hl7_transform/test/test_transform.hl7')
     res = op(msg)
     self.assertIsNotNone(res)