示例#1
0
  def testExpandValueSet_withIntensionalValueSet_makesExpectedCalls(
      self, mock_expand_extensional_value_set):
    mock_expand_extensional_value_set.return_value = None

    expanded_value_set = value_set_pb2.ValueSet()
    codes = [
        value_set_pb2.ValueSet.Expansion.Contains(
            system=datatypes_pb2.Uri(value='include-system-1'),
            version=datatypes_pb2.String(value='include-version-1'),
            code=datatypes_pb2.Code(value='code-1-2'),
        ),
        value_set_pb2.ValueSet.Expansion.Contains(
            system=datatypes_pb2.Uri(value='include-system-2'),
            version=datatypes_pb2.String(value='include-version-2'),
            code=datatypes_pb2.Code(value='code-2-1'),
        ),
    ]
    expanded_value_set.expansion.contains.extend(codes)

    mock_client = unittest.mock.MagicMock(
        spec=terminology_service_client.TerminologyServiceClient)
    mock_client.expand_value_set.return_value = expanded_value_set

    value_set = value_set_pb2.ValueSet()
    result = value_sets.expand_value_set(value_set, mock_client)
    self.assertCountEqual(result.expansion.contains, codes)
示例#2
0
  def testValueSetExpansionForExtensionalSets_withExtensionalSet_expandsCodes(
      self):
    value_set = value_set_pb2.ValueSet()

    # Add an include set with three codes.
    include_1 = value_set.compose.include.add()
    include_1.version.value = 'include-version-1'
    include_1.system.value = 'include-system-1'

    code_1_1 = include_1.concept.add()
    code_1_1.code.value = 'code-1-1'

    code_1_2 = include_1.concept.add()
    code_1_2.code.value = 'code-1-2'

    code_1_3 = include_1.concept.add()
    code_1_3.code.value = 'code-1-3'

    # Add an include set with one code.
    include_2 = value_set.compose.include.add()
    include_2.version.value = 'include-version-2'
    include_2.system.value = 'include-system-2'

    code_2_1 = include_2.concept.add()
    code_2_1.code.value = 'code-2-1'

    # Add a copy of code_1_3 to the exclude set.
    exclude = value_set.compose.exclude.add()
    exclude.version.value = 'include-version-1'
    exclude.system.value = 'include-system-1'
    exclude_code = exclude.concept.add()
    exclude_code.code.value = 'code-1-3'

    result = value_sets._expand_extensional_value_set(value_set)
    expected = [
        value_set_pb2.ValueSet.Expansion.Contains(
            system=datatypes_pb2.Uri(value='include-system-1'),
            version=datatypes_pb2.String(value='include-version-1'),
            code=datatypes_pb2.Code(value='code-1-1'),
        ),
        value_set_pb2.ValueSet.Expansion.Contains(
            system=datatypes_pb2.Uri(value='include-system-1'),
            version=datatypes_pb2.String(value='include-version-1'),
            code=datatypes_pb2.Code(value='code-1-2'),
        ),
        value_set_pb2.ValueSet.Expansion.Contains(
            system=datatypes_pb2.Uri(value='include-system-2'),
            version=datatypes_pb2.String(value='include-version-2'),
            code=datatypes_pb2.Code(value='code-2-1'),
        ),
    ]
    self.assertCountEqual(result.expansion.contains, expected)
示例#3
0
 def testCopyCode_fromGenericToTyped(self):
     """Tests copy_code from a typed to a generic Code."""
     typed_code = patient_pb2.Patient.GenderCode()
     generic_code = datatypes_pb2.Code(value='female')
     codes.copy_code(generic_code, typed_code)
     self.assertEqual(codes_pb2.AdministrativeGenderCode.FEMALE,
                      typed_code.value)
示例#4
0
 def testCopyCode_fromTypedToGeneric(self):
     """Tests copy_code from a generic to typed Code."""
     typed_code = patient_pb2.Patient.GenderCode(
         value=codes_pb2.AdministrativeGenderCode.FEMALE)
     generic_code = datatypes_pb2.Code()
     codes.copy_code(typed_code, generic_code)
     self.assertEqual('female', generic_code.value)
示例#5
0
 def testGetStructureDefinitionUrl_withFhirType_returnsValue(self):
   """Test get_structure_definition_url functionality on FHIR types."""
   boolean = datatypes_pb2.Boolean()
   boolean_descriptor_proto = self._descriptor_proto_for_descriptor(
       boolean.DESCRIPTOR)
   code = datatypes_pb2.Code()
   code_descriptor_proto = self._descriptor_proto_for_descriptor(
       code.DESCRIPTOR)
   patient = patient_pb2.Patient()
   patient_descriptor_proto = self._descriptor_proto_for_descriptor(
       patient.DESCRIPTOR)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(boolean),
       _BOOLEAN_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(boolean.DESCRIPTOR),
       _BOOLEAN_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(code),
       _CODE_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(patient),
       _PATIENT_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(patient.DESCRIPTOR),
       _PATIENT_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(boolean_descriptor_proto),
       _BOOLEAN_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(code_descriptor_proto),
       _CODE_STRUCTURE_DEFINITION_URL)
   self.assertEqual(
       annotation_utils.get_structure_definition_url(patient_descriptor_proto),
       _PATIENT_STRUCTURE_DEFINITION_URL)
示例#6
0
 def testGetValueRegexForPrimitiveType_withPrimitive_returnsValue(self):
   """Test get_value_regex_for_primitive_type functionality on primitives."""
   boolean = datatypes_pb2.Boolean()
   boolean_descriptor_proto = self._descriptor_proto_for_descriptor(
       boolean.DESCRIPTOR)
   code = datatypes_pb2.Code()
   code_descriptor_proto = self._descriptor_proto_for_descriptor(
       code.DESCRIPTOR)
   self.assertEqual(
       annotation_utils.get_value_regex_for_primitive_type(boolean),
       _BOOLEAN_VALUE_REGEX)
   self.assertEqual(
       annotation_utils.get_value_regex_for_primitive_type(boolean.DESCRIPTOR),
       _BOOLEAN_VALUE_REGEX)
   self.assertEqual(
       annotation_utils.get_value_regex_for_primitive_type(code),
       _CODE_VALUE_REGEX)
   self.assertEqual(
       annotation_utils.get_value_regex_for_primitive_type(code.DESCRIPTOR),
       _CODE_VALUE_REGEX)
   self.assertEqual(
       annotation_utils.get_value_regex_for_primitive_type(
           boolean_descriptor_proto), _BOOLEAN_VALUE_REGEX)
   self.assertEqual(
       annotation_utils.get_value_regex_for_primitive_type(
           code_descriptor_proto), _CODE_VALUE_REGEX)
示例#7
0
  def testGetFixedCodingSystem_withInvalidMessage_returnsNone(self):
    """Test get_fixed_coding_system functionality with no annotation present."""
    boolean = datatypes_pb2.Boolean()
    self.assertIsNone(annotation_utils.get_fixed_coding_system(boolean))

    code = datatypes_pb2.Code()
    self.assertIsNone(annotation_utils.get_fixed_coding_system(code))
示例#8
0
 def testIsPrimitiveType_withPrimitives_returnsTrue(self):
     """Test is_primitive_type functionality on primitive input."""
     boolean = datatypes_pb2.Boolean()
     code = datatypes_pb2.Code()
     self.assertTrue(annotation_utils.is_primitive_type(boolean))
     self.assertTrue(annotation_utils.is_primitive_type(boolean.DESCRIPTOR))
     self.assertTrue(annotation_utils.is_primitive_type(code))
     self.assertTrue(annotation_utils.is_primitive_type(code.DESCRIPTOR))
示例#9
0
 def testIsResource_withPrimitives_returnsFalse(self):
     """Test is_resource functionality on primitive input."""
     boolean = datatypes_pb2.Boolean()
     code = datatypes_pb2.Code()
     self.assertFalse(annotation_utils.is_resource(boolean))
     self.assertFalse(annotation_utils.is_resource(boolean.DESCRIPTOR))
     self.assertFalse(annotation_utils.is_resource(code))
     self.assertFalse(annotation_utils.is_resource(code.DESCRIPTOR))
示例#10
0
 def testIsReference_withInvalidReferenceType_returnsFalse(self):
     """Test is_reference functionality on invalid input."""
     boolean = datatypes_pb2.Boolean()
     code = datatypes_pb2.Code()
     self.assertFalse(annotation_utils.is_reference(boolean))
     self.assertFalse(annotation_utils.is_reference(boolean.DESCRIPTOR))
     self.assertFalse(annotation_utils.is_reference(code))
     self.assertFalse(annotation_utils.is_reference(code.DESCRIPTOR))
示例#11
0
 def testCopyCode_fromGenericToGeneric(self):
     """Tests copy_code form a generic to a generic Code."""
     source = datatypes_pb2.Code(value='female')
     target = datatypes_pb2.Code()
     codes.copy_code(source, target)
     self.assertEqual('female', target.value)
示例#12
0
 def testGetCodeAsString_withStringValueType(self):
     """Tests get_code_as_string with a string value-field type."""
     code = datatypes_pb2.Code(value='foo')
     self.assertEqual('foo', codes.get_code_as_string(code))
示例#13
0
 def testGetFhirValuesetUrl_withGenericCode_returnsNone(self):
   """Tests get_fhir_valueset_url with a generic instance of Code."""
   self.assertIsNone(
       annotation_utils.get_fhir_valueset_url(datatypes_pb2.Code()))
示例#14
0
 def testIsTypeOrProfileOfCode_withCode_returnsTrue(self):
     """Tests that is_type_or_profile_of_code returns True for a base Code."""
     self.assertTrue(
         fhir_types.is_type_or_profile_of_code(datatypes_pb2.Code()))
示例#15
0
 def testIsProfileOfCode_withCode_returnsFalse(self):
     """Tests that is_profile_of_code returns False for a base Code."""
     self.assertFalse(fhir_types.is_profile_of_code(datatypes_pb2.Code()))
示例#16
0
 def testIsCode_withCode_returnsTrue(self):
     """Tests that is_code returns True when given a Code."""
     self.assertTrue(fhir_types.is_code(datatypes_pb2.Code()))