예제 #1
0
    def test_assign_value_traversal(self):
        segment_str = 'PID|1||123-456-789^^^HOSPITAL^MR||SURNAME^NAME^A|||M|||1111 SOMEWHERE STREET^^SOMEWHERE^^^USA||555-555-2004~444-333-222|||M\r'

        m1 = Message('OML_O33')
        m2 = Message('OML_O33')
        m1.pid.value = segment_str
        m2.pid.value = segment_str
        self.assertEqual(m1.to_er7(), m2.to_er7())
예제 #2
0
 def ack(self, resp_type='AA'):
     """
     Build ACK response for incoming message.
     :type resp_type: str
     :param resp_type: 'AA' for ACK, 'AR' for Reject, 'AE' for Application Error
     :rtype: HL7apy.core.Message
     :return: ACK ('AA') or NAK ('AE', 'AR') message
     """
     resp_types = ('AA', 'AR', 'AE')
     if resp_type not in resp_types:
         raise ValueError(
             "Invalid ACK type. Expected one of: {}".format(resp_types))
     resp = Message('ACK', version='2.5.1')
     resp.msh.msh_3 = 'LIS'
     resp.msh.msh_4 = 'LIS Facility'
     resp.msh.msh_5 = self.msg.msh.msh_3
     resp.msh.msh_6 = Config.LABNAME
     resp.msh.msh_9 = 'ACK^R22^ACK'
     resp.msh.msh_10 = self.run_info.msg_guid
     resp.msh.msh_11 = 'P'
     resp.msh.msh_12 = '2.5.1'
     resp.msh.msh_18 = 'UNICODE UTF-8'
     resp.msh.msh_21 = 'LAB-29^IHE'
     resp.add_segment('MSA')
     resp.msa.msa_1 = resp_type
     resp.msa.msa_2 = self.run_info.msg_guid
     if resp_type != 'AA':
         pass
     end_resp = add_mllp_frame(resp.to_er7())
     assert isinstance(end_resp, bytes)
     return end_resp
예제 #3
0
 def test_assign_value_unknown_message(self):
     msg = _get_test_msg()
     a = Message()
     parsed_a = parse_message(msg, validation_level=VALIDATION_LEVEL.QUIET)
     a.value = msg
     self.assertEqual(a.name, 'OML_O33')
     self.assertEqual(a.to_er7(), parsed_a.to_er7())
예제 #4
0
    def test_msg_to_string_empty(self):
        """
        It tests the to_er7 message for an empty message
        """
        from datetime import datetime

        msg = Message('RSP_K11')
        self.assertRegexpMatches(msg.to_er7(), 'MSH|^~\\&|||||d+|||||2.5')
예제 #5
0
    def test_msg_to_string_empty(self):
        """
        It tests the to_er7 message for an empty message
        """
        from datetime import datetime

        msg = Message('RSP_K11')
        self.assertEqual(msg.to_er7(), 'MSH|^~\\&|||||%s|||||2.5' %datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')
)
예제 #6
0
    def test_assign_value(self):
        msg = _get_test_msg()
        a = Message('OML_O33', validation_level=VALIDATION_LEVEL.QUIET)
        parsed_a = parse_message(msg, validation_level=VALIDATION_LEVEL.QUIET)
        a.value = msg
        self.assertEqual(a.to_er7(), parsed_a.to_er7())

        b = Message('OML_O33', validation_level=VALIDATION_LEVEL.STRICT)
        b.value = msg
        parsed_b = parse_message(msg, validation_level=VALIDATION_LEVEL.STRICT)
        self.assertEqual(b.to_er7(), parsed_b.to_er7())
        self.assertEqual(b.children.indexes.keys(), parsed_b.children.indexes.keys())

        c = Message('ADT_A01', validation_level=VALIDATION_LEVEL.QUIET)
        with self.assertRaises(OperationNotAllowed):
            c.value = msg

        msg = msg.replace('^', 'x')
        with self.assertRaises(OperationNotAllowed):
            a.value = msg

        c = Message('OML_O33', version='2.6')
        with self.assertRaises(OperationNotAllowed):
            c.value = msg
예제 #7
0
 def test_assign_value_traversal(self):
     m1 = Message('OML_O33')
     m2 = Message('OML_O33')
     m1.oml_o33_specimen.value = self.oml_o33_specimen
     m2.oml_o33_specimen = self.oml_o33_specimen
     self.assertEqual(m1.to_er7(), m2.to_er7())