@@ -444,6 +444,8 @@ class TestCodedConcept(unittest.TestCase):
444444 def setUp (self ):
445445 super ().setUp ()
446446 self ._value = '373098007'
447+ self ._long_code_value = 'some_code_value_longer_than_sixteen_chars'
448+ self ._urn_code_value = 'https://browser.ihtsdotools.org/?perspective=full&conceptId1=373098007&edition=MAIN/SNOMEDCT-US/2023-03-01&release=&languages=en'
447449 self ._meaning = 'Mean Value of population'
448450 self ._scheme_designator = 'SCT'
449451
@@ -506,6 +508,81 @@ def test_construction_args_optional(self):
506508 assert c .CodeMeaning == self ._meaning
507509 assert c .CodingSchemeVersion == version
508510
511+ def test_long_code_value (self ):
512+ version = 'v1.0'
513+ c = CodedConcept (
514+ self ._long_code_value ,
515+ self ._scheme_designator ,
516+ self ._meaning ,
517+ version ,
518+ )
519+ assert c .value == self ._long_code_value
520+ assert c .scheme_designator == self ._scheme_designator
521+ assert c .meaning == self ._meaning
522+ assert c .scheme_version == version
523+ assert c .LongCodeValue == self ._long_code_value
524+ assert not hasattr (c , 'CodeValue' )
525+ assert c .CodingSchemeDesignator == self ._scheme_designator
526+ assert c .CodeMeaning == self ._meaning
527+ assert c .CodingSchemeVersion == version
528+
529+ def test_urn_code_value (self ):
530+ version = 'v1.0'
531+ c = CodedConcept (
532+ self ._urn_code_value ,
533+ self ._scheme_designator ,
534+ self ._meaning ,
535+ version ,
536+ )
537+ assert c .value == self ._urn_code_value
538+ assert c .scheme_designator == self ._scheme_designator
539+ assert c .meaning == self ._meaning
540+ assert c .scheme_version == version
541+ assert c .URNCodeValue == self ._urn_code_value
542+ assert not hasattr (c , 'CodeValue' )
543+ assert c .CodingSchemeDesignator == self ._scheme_designator
544+ assert c .CodeMeaning == self ._meaning
545+ assert c .CodingSchemeVersion == version
546+
547+ def test_from_dataset (self ):
548+ ds = Dataset ()
549+ ds .CodeValue = self ._value
550+ ds .CodeMeaning = self ._meaning
551+ ds .CodingSchemeDesignator = self ._scheme_designator
552+ c = CodedConcept .from_dataset (ds )
553+ assert c .value == self ._value
554+ assert c .scheme_designator == self ._scheme_designator
555+ assert c .meaning == self ._meaning
556+
557+ def test_from_dataset_long_value (self ):
558+ ds = Dataset ()
559+ ds .LongCodeValue = self ._long_code_value
560+ ds .CodeMeaning = self ._meaning
561+ ds .CodingSchemeDesignator = self ._scheme_designator
562+ c = CodedConcept .from_dataset (ds )
563+ assert c .value == self ._long_code_value
564+ assert c .scheme_designator == self ._scheme_designator
565+ assert c .meaning == self ._meaning
566+
567+ def test_from_dataset_urn_value (self ):
568+ ds = Dataset ()
569+ ds .URNCodeValue = self ._urn_code_value
570+ ds .CodeMeaning = self ._meaning
571+ ds .CodingSchemeDesignator = self ._scheme_designator
572+ c = CodedConcept .from_dataset (ds )
573+ assert c .value == self ._urn_code_value
574+ assert c .scheme_designator == self ._scheme_designator
575+ assert c .meaning == self ._meaning
576+
577+ def test_from_dataset_multiple_value (self ):
578+ ds = Dataset ()
579+ ds .CodeValue = self ._value
580+ ds .URNCodeValue = self ._urn_code_value # two code values, invalid
581+ ds .CodeMeaning = self ._meaning
582+ ds .CodingSchemeDesignator = self ._scheme_designator
583+ with pytest .raises (AttributeError ):
584+ CodedConcept .from_dataset (ds )
585+
509586 def test_equal (self ):
510587 c1 = CodedConcept (self ._value , self ._scheme_designator , self ._meaning )
511588 c2 = CodedConcept (self ._value , self ._scheme_designator , self ._meaning )
0 commit comments