@@ -444,6 +444,12 @@ 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 = (
449+ 'https://browser.ihtsdotools.org/?perspective=full&conceptId1='
450+ '373098007&edition=MAIN/SNOMEDCT-US/2023-03-01&release=&languages='
451+ 'en'
452+ )
447453 self ._meaning = 'Mean Value of population'
448454 self ._scheme_designator = 'SCT'
449455
@@ -506,6 +512,81 @@ def test_construction_args_optional(self):
506512 assert c .CodeMeaning == self ._meaning
507513 assert c .CodingSchemeVersion == version
508514
515+ def test_long_code_value (self ):
516+ version = 'v1.0'
517+ c = CodedConcept (
518+ self ._long_code_value ,
519+ self ._scheme_designator ,
520+ self ._meaning ,
521+ version ,
522+ )
523+ assert c .value == self ._long_code_value
524+ assert c .scheme_designator == self ._scheme_designator
525+ assert c .meaning == self ._meaning
526+ assert c .scheme_version == version
527+ assert c .LongCodeValue == self ._long_code_value
528+ assert not hasattr (c , 'CodeValue' )
529+ assert c .CodingSchemeDesignator == self ._scheme_designator
530+ assert c .CodeMeaning == self ._meaning
531+ assert c .CodingSchemeVersion == version
532+
533+ def test_urn_code_value (self ):
534+ version = 'v1.0'
535+ c = CodedConcept (
536+ self ._urn_code_value ,
537+ self ._scheme_designator ,
538+ self ._meaning ,
539+ version ,
540+ )
541+ assert c .value == self ._urn_code_value
542+ assert c .scheme_designator == self ._scheme_designator
543+ assert c .meaning == self ._meaning
544+ assert c .scheme_version == version
545+ assert c .URNCodeValue == self ._urn_code_value
546+ assert not hasattr (c , 'CodeValue' )
547+ assert c .CodingSchemeDesignator == self ._scheme_designator
548+ assert c .CodeMeaning == self ._meaning
549+ assert c .CodingSchemeVersion == version
550+
551+ def test_from_dataset (self ):
552+ ds = Dataset ()
553+ ds .CodeValue = self ._value
554+ ds .CodeMeaning = self ._meaning
555+ ds .CodingSchemeDesignator = self ._scheme_designator
556+ c = CodedConcept .from_dataset (ds )
557+ assert c .value == self ._value
558+ assert c .scheme_designator == self ._scheme_designator
559+ assert c .meaning == self ._meaning
560+
561+ def test_from_dataset_long_value (self ):
562+ ds = Dataset ()
563+ ds .LongCodeValue = self ._long_code_value
564+ ds .CodeMeaning = self ._meaning
565+ ds .CodingSchemeDesignator = self ._scheme_designator
566+ c = CodedConcept .from_dataset (ds )
567+ assert c .value == self ._long_code_value
568+ assert c .scheme_designator == self ._scheme_designator
569+ assert c .meaning == self ._meaning
570+
571+ def test_from_dataset_urn_value (self ):
572+ ds = Dataset ()
573+ ds .URNCodeValue = self ._urn_code_value
574+ ds .CodeMeaning = self ._meaning
575+ ds .CodingSchemeDesignator = self ._scheme_designator
576+ c = CodedConcept .from_dataset (ds )
577+ assert c .value == self ._urn_code_value
578+ assert c .scheme_designator == self ._scheme_designator
579+ assert c .meaning == self ._meaning
580+
581+ def test_from_dataset_multiple_value (self ):
582+ ds = Dataset ()
583+ ds .CodeValue = self ._value
584+ ds .URNCodeValue = self ._urn_code_value # two code values, invalid
585+ ds .CodeMeaning = self ._meaning
586+ ds .CodingSchemeDesignator = self ._scheme_designator
587+ with pytest .raises (AttributeError ):
588+ CodedConcept .from_dataset (ds )
589+
509590 def test_equal (self ):
510591 c1 = CodedConcept (self ._value , self ._scheme_designator , self ._meaning )
511592 c2 = CodedConcept (self ._value , self ._scheme_designator , self ._meaning )
0 commit comments