My blog
WHO-FIC Content Model explained

WHO-FIC Content Model explained

How are WHO-FIC entities modeled?

Published on by Anton Vasetenkov

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;

Thanks for stopping by my digital playground! If you want to say hi, you can reach out to me on LinkedIn or via email. I'm always keen to chat and connect.

If you really-really like my work, you can support me by buying me a coffee.