# getCompanyPortfolio

**Identifier:** `vidal_getCompanyPortfolio`

**Provider:** [VIDAL France](https://kirha.com/providers/vidal.md)

Retrieve the medicinal-product portfolios of one or more French laboratories at PRODUCT grain (AMM, suited to pharmacovigilance and regulatory) or PACKAGE grain (CIP, suited to dispensation and supply). Accepts an array of company URIs so a parent group like Sanofi (multiple legal entities returned by searchCompanies) is read in one call. Output URIs feed getDrugDetails, getDrugInteractions, getDrugDocuments, analyzePrescription.

## Run it with the CLI

```bash
kirha tools run vidal_getCompanyPortfolio \
  --input '{
    "companyUris": [
      "<companyUris>"
    ]
  }'
```

`--input` takes a JSON object that matches the input schema. Pass `--input -` to read it from stdin.

## Call it over HTTP

```bash
curl https://api.kirha.com/tools/v1/execute \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: **********' \
  --data '{
  "tool_name": "vidal_getCompanyPortfolio",
  "input": {
    "companyUris": [
      "<companyUris>"
    ]
  }
}'
```

Replace the stars with an API key from https://app.kirha.com/api-keys.

## Input schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "companyUris": {
      "description": "From searchCompanies.uris[]. Pass every legal entity of a parent group at once for full coverage.",
      "items": {
        "pattern": "^vidal:\\/\\/company\\/[A-Za-z0-9_-]+$",
        "type": "string"
      },
      "maxItems": 20,
      "minItems": 1,
      "type": "array"
    },
    "limitPerCompany": {
      "default": 150,
      "description": "Max items per company. The call also stops at 150 items in total.",
      "maximum": 500,
      "minimum": 1,
      "type": "number"
    },
    "marketStatus": {
      "default": "MARKETED",
      "description": "MARKETED (default) = AVAILABLE + NEW, the currently marketed portfolio; AVAILABLE alone drops newly marketed items. ANY drops the filter and includes withdrawn products, needed for historical PV review or recall investigations.",
      "enum": [
        "MARKETED",
        "NEW",
        "AVAILABLE",
        "DELETED",
        "DELETED_ONEYEAR",
        "PHARMACO",
        "PHARMACO_ONEYEAR",
        "ANY"
      ],
      "type": "string"
    },
    "offsetPerCompany": {
      "default": 0,
      "description": "Items to skip per company, from a previous nextOffset. Pagination is per-URI, not across companies.",
      "maximum": 2000,
      "minimum": 0,
      "type": "number"
    },
    "scope": {
      "default": "product",
      "description": "product = AMM-level (one entry per spécialité, default); package = CIP-level (one entry per boîte).",
      "enum": [
        "product",
        "package"
      ],
      "type": "string"
    }
  },
  "required": [
    "companyUris"
  ],
  "type": "object"
}
```

## Output schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "allUris": {
      "description": "Flattened deduplicated drug URIs of the items actually returned. Feed into getDrugDetails, getDrugInteractions, getDrugDocuments, analyzePrescription.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "context": {
      "type": "string"
    },
    "marketStatus": {
      "enum": [
        "MARKETED",
        "NEW",
        "AVAILABLE",
        "DELETED",
        "DELETED_ONEYEAR",
        "PHARMACO",
        "PHARMACO_ONEYEAR",
        "ANY"
      ],
      "type": "string"
    },
    "portfolios": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "companyUri": {
            "type": "string"
          },
          "hasMore": {
            "description": "True when totalFound exceeds what items[] carries.",
            "type": "boolean"
          },
          "items": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "activePrinciples": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "ammType": {
                  "type": "string"
                },
                "cip13": {
                  "description": "Code Identification de Présentation, 13-digit EAN barcode of the boîte. Links to wholesaler/dispensation data (Open Medic, IQVIA). Populated when scope=package.",
                  "type": "string"
                },
                "cip7": {
                  "description": "Legacy 7-digit CIP for the same presentation as cip13. Populated when scope=package.",
                  "type": "string"
                },
                "cis": {
                  "description": "Code Identifiant de Spécialité (8 digits, ANSM). Canonical key for the AMM/product; links to ANSM eRapport pharmacovigilance data. Populated when scope=product.",
                  "type": "string"
                },
                "dispensationPlace": {
                  "type": "string"
                },
                "marketStatus": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "uri": {
                  "type": "string"
                }
              },
              "required": [
                "uri",
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "nextOffset": {
            "description": "Pass as offsetPerCompany to continue this company.",
            "type": "number"
          },
          "returned": {
            "description": "Items carried in items[] for this company.",
            "type": "number"
          },
          "totalFound": {
            "description": "Total matches on the server for this company after the marketStatus filter.",
            "type": "number"
          }
        },
        "required": [
          "companyUri",
          "items",
          "returned",
          "totalFound",
          "hasMore"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "scope": {
      "enum": [
        "product",
        "package"
      ],
      "type": "string"
    },
    "totalProductsAcrossCompanies": {
      "description": "Sum of totalFound across all queried companies. Useful to size a parent group's footprint.",
      "type": "number"
    }
  },
  "required": [
    "context",
    "scope",
    "marketStatus",
    "portfolios",
    "allUris",
    "totalProductsAcrossCompanies"
  ],
  "type": "object"
}
```

## Related tools

Other VIDAL France tools that this tool refers to, or that refer to it.

- [`analyzePrescription`](https://kirha.com/providers/vidal/analyzePrescription.md)
- [`getDrugDocuments`](https://kirha.com/providers/vidal/getDrugDocuments.md)
- [`getDrugDetails`](https://kirha.com/providers/vidal/getDrugDetails.md)
- [`getDrugInteractions`](https://kirha.com/providers/vidal/getDrugInteractions.md)
- [`searchCompanies`](https://kirha.com/providers/vidal/searchCompanies.md)

-----

[All VIDAL France tools](https://kirha.com/providers/vidal.md) · [< Back to tools list](https://kirha.com/tools.md)