Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validator is not finding reference to CodeableConcepts #69

Open
jorgealarco opened this issue Mar 20, 2023 · 1 comment
Open

Validator is not finding reference to CodeableConcepts #69

jorgealarco opened this issue Mar 20, 2023 · 1 comment

Comments

@jorgealarco
Copy link

jorgealarco commented Mar 20, 2023

Hi,

I am using the validator to create a bunch of unit tests for conformance with the UK Core IG. I am trying the custom loading for the StructureDefinitions, CodeSystems and ValueSets of the FHIR R4 plus the corresponding resources of the UK Core IG.

Despite of having loaded all the resources, I am still getting warnings when validating the resource. I decided to custom load the FHIR R4 resources instead of using the pre-loaded data of the ParseConformance constructor in case there was an issue with the default data. I made sure the ValueSets are loaded before the StructureDefinitions as well, but I am still getting:

{
        location: 'Patient.contact[0].relationship[0]',
        resourceId: 'UKCore-Patient-RichardSmith-Example',
        severity: 'warning',
        message: 'Code "Personal" (https://fhir.hl7.org.uk/CodeSystem/UKCore-AdditionalPersonRelationshipRole) not found in value set'
      },
      {
        location: 'Patient.communication[0].language',
        resourceId: 'UKCore-Patient-RichardSmith-Example',
        severity: 'warning',
        message: 'Code "en" (https://fhir.hl7.org.uk/CodeSystem/UKCore-HumanLanguage) not found in value set'
      }

I wonder if this is related to the UK Core StructureDefinitions, as they don't contain a snapshot field. I am trying to create it using the fhir.generateSnapshot() function on the bundle. However, when doing this, I get the following error: Cannot find base definition "http://hl7.org/fhir/StructureDefinition/Extension" in bundle or core FHIR specification.

Could you please help me identifying why I am still getting the warnings on the validation of the resource? This is code I came up with:

// Generate bundles
const fhirValueSetBundle = SnapshotGenerator.createBundle.apply(this, fhirValueSets);
const fhirStructureDefinitionBundle = SnapshotGenerator.createBundle.apply(
  this,
  fhirStructureDefinitions,
);
const ukCoreValueSetBundle = SnapshotGenerator.createBundle.apply(this, ukCoreValueSets);
const ukCoreStructureDefinitionBundle = SnapshotGenerator.createBundle.apply(
  this,
  ukCoreStructureDefinitions,
);

// Parse all bundles into the conformance checker
const parser = new ParseConformance(false, Versions.R4);
parser.parseBundle(fhirValueSetBundle);
parser.parseBundle(ukCoreValueSetBundle);
parser.parseBundle(fhirStructureDefinitionBundle);
parser.parseBundle(ukCoreStructureDefinitionBundle);

const fhir = new Fhir(parser);
// fhir.generateSnapshot(ukCoreStructureDefinitionBundle);

const results = fhir.validate(ukCorePatientExample);
console.log(results);
expect(results.valid).toBe(true);

PS: Additionally, I believe there is an issue with the package exports, as I had to manually expose the SnapShotGenerator in the index.js file.

Many thanks.

@mintusah25
Copy link

mintusah25 commented Nov 23, 2023

Hi, I am also getting the same issue as mentioned by @jorgealarco
I tried to validate Observation resource[https://build.fhir.org/observation-example-f001-glucose.json.html] as below. I used valuesets.json and other json files from: https://build.fhir.org/downloads.html as mentioned in readme.

// Read the content of the 'observation.json' file which contains json from above mentioned url
var observation = fs.readFileSync('./observation.json').toString();

async function main() {
    // Get the data for new value sets, types, and resources from definitions.json
    let newValueSets = JSON.parse(
        fs
            .readFileSync('/definitions.json/valuesets.json')
            .toString()
    );
    let newTypes = JSON.parse(
        fs
            .readFileSync('/definitions.json/profiles-types.json')
            .toString()
    );
    let newResources = JSON.parse(
        fs
            .readFileSync('/definitions.json/profiles-resources.json')
            .toString()
    );

    // Create a parser instance with R4 FHIR version and load new definitions
    let parser = new ParseConformance(true, FhirVersions.R4);
    parser.parseBundle(newValueSets);
    parser.parseBundle(newTypes);
    parser.parseBundle(newResources);

    // Create a Fhir instance using the parser
    const v = new Fhir(parser);

    // Validate the observation data using the Fhir instance
    const result = v.validate(JSON.parse(observation));

    // Output the validation result to the console
    console.log('result', result);
}

// Call the main function to execute the logic
main();

Output:

result {
  valid: true,
  messages: [
    {
      location: 'Observation.code',
      resourceId: 'f001',
      severity: 'info',
      message: 'Value set "http://hl7.org/fhir/ValueSet/observation-codes" could not be found.'
    },
    {
      location: 'Observation.code',
      resourceId: 'f001',
      severity: 'warning',
      message: 'Code "15074-8" (http://loinc.org) not found in value set'
    },
    {
      location: 'Observation.interpretation[0]',
      resourceId: 'f001',
      severity: 'info',
      message: 'Value set "http://hl7.org/fhir/ValueSet/observation-interpretation" could not be found.'
    },
    {
      location: 'Observation.interpretation[0]',
      resourceId: 'f001',
      severity: 'warning',
      message: 'Code "H" (http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation) not found in value set'
    }
  ]
}

Since http://hl7.org/fhir/ValueSet/observation-codes is present in valuesets.json file downloaded from FHIR, I am getting this issue.
On some investigation, found that this valueset has some dependent valuesets present in: compose>include of object(refer valuesets.json file), and these valuesets are not present as provided by FHIR.

Is this logic actually required? As I am getting this issue for multiple number of valuesets and each having multiple dependencies.

Also any idea why getting error: message: 'Code "15074-8" (http://loinc.org) not found in value set' ? As this is a valid code, refer: https://loinc.org/15074-8#:~:text=LOINC%2015074%2D8%20Glucose%20%5BMoles%2Fvolume%5D%20in%20Blood

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants