HomeProjectsBlogContact
Made with ❤️ by Anton Vasetenkov
WHO-FIC Content Model explained
Mar 3, 2023

WHO-FIC Content Model explained

How are WHO-FIC entities modeled?

The basic unit of the WHO-FIC classification is an entity—a concept with a unique identifier such as Tuberculosis (2072728114). Entities are grouped into poly-hierarchies in the Foundation or hierarchies (tree structures) in linearizations.

Below is the WHO-FIC Content Model represented using TypeScript types.

// The basic building block of the Foundation.
type FoundationEntity = {

    // Entity identifier.
    id: number;

    // A name that represents the entity, and which labels the entity in a meaningful and unambiguous way.
    titles: LanguageSpecificText[];

    // An unambiguous title that does not assume context. Its purpose is to uniquely designate an entity and to clarify
    // meaning rather than present a commonly used or natural phrase.
    fullySpecifiedNames: LanguageSpecificText[];

    // A short characterisation (maximum of 100 words) of the entity that states things that are always true about a
    // disease or condition and necessary to understand the scope of the rubric. 
    shortDescriptions: LanguageSpecificText[];

    // An optional text field that may contain any additional information and more context for the entity. For ICD, this
    // might contain characteristics of the diseases or conditions included in the entity.
    additionalInformations: LanguageSpecificText[];
    
    // A list of entities that are the direct parents of the entity (first-level ancestors or superclasses).
    parents: Entity[];
    
    // A list of direct child entities (first-level descendants or subclasses).
    children: Entity[];
    
    // A language term that has a similar meaning to the entity and it is also used to denote the entity.
    synonyms: LanguageSpecificText[];

    // A language term that has a narrower meaning than the entity, but it can still be used to refer to the entity for
    // coding purposes.
    narrowerTerms: LanguageSpecificText[];

    // Exemplary terms or phrases that are synonymous with the title of the entity or terms representing more specific
    // conditions.
    inclusions: (LanguageSpecificText | Entity)[];

    // Entities that might be thought to be children of a given entity but, because they occur elsewhere in the
    // classification, must be excluded from appearing under it.
    exclusions: Entity[];
    
    // A flag that encodes whether an entity that was previously released, is now obsolete and should not be used for
    // coding.
    obsolete?: boolean;
};


// Language specific text.
type LanguageSpecificText = {
    // Language code for the string.
    language: string;

    // Label in the given language.
    value: string;
};