> ## Documentation Index
> Fetch the complete documentation index at: https://docs.drugs.locusmedical.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# B20. Réécriture d'une ligne

> Réécriture en DC (R-LAP 63), remplacement par un générique ou un biosimilaire du même groupe (R-LAP 67), remplacement proposé par un SAM (R-LAP 99), posologie convertie dans les unités du nouveau produit (A7).



## OpenAPI

````yaml /openapi.json post /v1/transformations
openapi: 3.1.0
info:
  title: Locus Drugs, API LAP v1
  description: >-
    API de la base médicamenteuse Locus Drugs : surface A (référentiel, agrément
    HAS, charte de qualité des BdM v3) et surface B (contrôles de prescription,
    dispositif médical).


    Spécifiée en salle blanche, à partir des seuls documents publics de la HAS
    (référentiel LAP ambulatoire v2021.02, charte v3, dossier d'agrément,
    structuration de la posologie) et du décret n° 2019-856. Aucune
    documentation d'éditeur de base tiers n'a été consultée.


    Chaque route déclare les critères qu'elle couvre dans `x-criteres`. Chaque
    réponse porte l'édition de la base dans `X-Locus-Drugs-Edition` ;
    `?edition=` rejoue une édition passée.
  contact:
    name: Locus
    url: https://locusmedical.fr/
  version: 1.0.0
servers:
  - url: https://drugs.locusmedical.fr
    description: Locus Drugs
security:
  - editeur: []
    abonne: []
paths:
  /v1/transformations:
    post:
      tags:
        - B. Contrôles (dispositif médical)
      summary: B20. Réécriture d'une ligne
      description: >-
        Réécriture en DC (R-LAP 63), remplacement par un générique ou un
        biosimilaire du même groupe (R-LAP 67), remplacement proposé par un SAM
        (R-LAP 99), posologie convertie dans les unités du nouveau produit (A7).
      operationId: transformations_v1_transformations_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransformationRequete'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransformationReponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    TransformationRequete:
      properties:
        ligne:
          $ref: '#/components/schemas/LignePrescription'
        type:
          type: string
          enum:
            - dc
            - biosimilaire
            - sam
            - generique
          title: Type
        sam:
          anyOf:
            - type: string
            - type: 'null'
          title: Sam
        produit_cible:
          anyOf:
            - $ref: '#/components/schemas/RefProduit'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - ligne
        - type
      title: TransformationRequete
    TransformationReponse:
      properties:
        edition:
          $ref: '#/components/schemas/Edition'
        possible:
          type: boolean
          title: Possible
        motif:
          anyOf:
            - type: string
            - type: 'null'
          title: Motif
        ligne:
          anyOf:
            - $ref: '#/components/schemas/LignePrescription'
            - type: 'null'
        libelle_ordonnance:
          anyOf:
            - type: string
            - type: 'null'
          title: Libelle Ordonnance
        conversions_appliquees:
          items:
            $ref: '#/components/schemas/Conversion'
          type: array
          title: Conversions Appliquees
          default: []
      additionalProperties: false
      type: object
      required:
        - edition
        - possible
      title: TransformationReponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    LignePrescription:
      properties:
        ligne:
          type: integer
          minimum: 1
          title: Ligne
        produits:
          items:
            $ref: '#/components/schemas/RefProduit'
          type: array
          minItems: 1
          title: Produits
          description: >-
            Plusieurs médicaments administrés ensemble, même voie, même site :
            une seule ligne (R-LAP 47).
        posologie:
          anyOf:
            - $ref: '#/components/schemas/PosologieStructuree'
            - type: 'null'
        duree_jours:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Duree Jours
        voie:
          anyOf:
            - type: string
            - type: 'null'
          title: Voie
        ald:
          type: boolean
          title: Ald
          default: false
        chronique:
          type: boolean
          title: Chronique
          default: false
        renouvellements:
          type: integer
          maximum: 11
          minimum: 0
          title: Renouvellements
          default: 0
        motif:
          anyOf:
            - type: string
              maxLength: 300
            - type: 'null'
          title: Motif
          description: Jamais imprimé (R-LAP 49).
        commentaire:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Commentaire
          description: Imprimé (R-LAP 48).
        site_administration:
          anyOf:
            - type: string
            - type: 'null'
          title: Site Administration
        hors_amm:
          type: boolean
          title: Hors Amm
          default: false
      additionalProperties: false
      type: object
      required:
        - ligne
        - produits
      title: LignePrescription
    RefProduit:
      properties:
        cis:
          anyOf:
            - type: string
              pattern: ^\d{8}$
              description: Code CIS (ANSM), 8 chiffres.
            - type: 'null'
          title: Cis
        dc:
          anyOf:
            - type: string
              pattern: ^dc:[a-z0-9][a-z0-9\-_.]*$
            - type: 'null'
          title: Dc
      additionalProperties: false
      type: object
      title: RefProduit
      description: >-
        Une référence de produit : CIS ou médicament virtuel (exactement l'un
        des deux).
    Edition:
      properties:
        id:
          type: string
          title: Id
          description: Identifiant d'édition, « 2026.10.2 » ; monotone.
        date:
          type: string
          format: date
          title: Date
        hors_cycle:
          type: boolean
          title: Hors Cycle
          description: Publication hors cycle pour une information urgente (CH 9).
          default: false
        motif:
          anyOf:
            - type: string
            - type: 'null'
          title: Motif
      additionalProperties: false
      type: object
      required:
        - id
        - date
      title: Edition
      description: 'Une édition de la base : identifiant et date (CH 11, R-LAP 111).'
    Conversion:
      properties:
        de:
          type: string
          maxLength: 40
          minLength: 1
          title: De
          description: 'Unité UCUM (CH 18) : mg, g, ug, mL, {comprime}, {gelule}, [iU]…'
        vers:
          type: string
          maxLength: 40
          minLength: 1
          title: Vers
          description: 'Unité UCUM (CH 18) : mg, g, ug, mL, {comprime}, {gelule}, [iU]…'
        facteur:
          type: number
          title: Facteur
          description: 1 `de` = facteur `vers`.
        substance:
          anyOf:
            - type: string
            - type: 'null'
          title: Substance
      additionalProperties: false
      type: object
      required:
        - de
        - vers
        - facteur
      title: Conversion
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    PosologieStructuree:
      properties:
        sequences:
          items:
            $ref: '#/components/schemas/Sequence'
          type: array
          minItems: 1
          title: Sequences
        alternance:
          type: boolean
          title: Alternance
          description: >-
            Vrai : les séquences se répètent en boucle (jour 1, jour 2, jour 1…)
            au lieu de se succéder (R-LAP 56).
          default: false
        voie:
          anyOf:
            - type: string
            - type: 'null'
          title: Voie
        duree_totale_jours:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Duree Totale Jours
          description: Durée totale du traitement ; dérivée des séquences si absente.
        commentaire:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Commentaire
          description: Imprimé sur l'ordonnance (R-LAP 48).
      additionalProperties: false
      type: object
      required:
        - sequences
      title: PosologieStructuree
      description: >-
        Le format POSO : séquences successives (paliers) ou alternées (jours
        pairs/impairs), chacune faite de prises.
    Sequence:
      properties:
        duree:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: 'null'
          title: Duree
          description: Durée du palier ; nulle pour la séquence finale sans terme.
        unite_duree:
          type: string
          enum:
            - min
            - h
            - j
            - sem
            - mois
          title: Unite Duree
          default: j
        prises:
          items:
            $ref: '#/components/schemas/Prise'
          type: array
          minItems: 1
          title: Prises
        si_besoin:
          type: boolean
          title: Si Besoin
          default: false
        max_par_24h:
          anyOf:
            - $ref: '#/components/schemas/Quantite'
            - type: 'null'
          description: 'Si besoin : la quantité maximale par 24 h (POSO).'
        condition:
          anyOf:
            - type: string
            - type: 'null'
          title: Condition
          description: « si douleur », « si température > 38,5 °C ».
      additionalProperties: false
      type: object
      required:
        - prises
      title: Sequence
      description: >-
        Un palier (R-LAP 55) ou un jour d'alternance (R-LAP 56) : des prises
        pendant une durée.
    Prise:
      properties:
        quantite:
          type: number
          exclusiveMinimum: 0
          title: Quantite
        unite:
          type: string
          maxLength: 40
          minLength: 1
          title: Unite
          description: 'Unité UCUM (CH 18) : mg, g, ug, mL, {comprime}, {gelule}, [iU]…'
        moments:
          items:
            type: string
            enum:
              - matin
              - midi
              - apres_midi
              - soir
              - coucher
              - nuit
              - avant_repas
              - pendant_repas
              - apres_repas
              - a_jeun
          type: array
          title: Moments
          description: >-
            Quantités différentes selon le moment (R-LAP 51) : une prise par
            moment.
          default: []
        frequence:
          anyOf:
            - $ref: '#/components/schemas/Frequence'
            - type: 'null'
          description: Sinon une fréquence explicite.
        intervalle_min_h:
          anyOf:
            - type: number
            - type: 'null'
          title: Intervalle Min H
          description: >-
            Espacement minimal entre deux prises, en heures (R-LAP 52 : de 5 min
            à 12 mois).
        heure:
          anyOf:
            - type: string
              pattern: ^\d{2}:\d{2}$
            - type: 'null'
          title: Heure
      additionalProperties: false
      type: object
      required:
        - quantite
        - unite
      title: Prise
      description: >-
        Une prise : quantité, unité, et son moment ou sa fréquence (R-LAP 50 à
        52).
    Quantite:
      properties:
        valeur:
          type: number
          title: Valeur
        unite:
          type: string
          maxLength: 40
          minLength: 1
          title: Unite
          description: 'Unité UCUM (CH 18) : mg, g, ug, mL, {comprime}, {gelule}, [iU]…'
      additionalProperties: false
      type: object
      required:
        - valeur
        - unite
      title: Quantite
    Frequence:
      properties:
        nombre:
          type: integer
          minimum: 1
          title: Nombre
        nombre_max:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Nombre Max
          description: >-
            « 1 à 2 fois par jour » : nombre=1, nombre_max=2. Les contrôles
            raisonnent sur le plus haut.
        periode:
          type: number
          exclusiveMinimum: 0
          title: Periode
          default: 1
        unite_periode:
          type: string
          enum:
            - min
            - h
            - j
            - sem
            - mois
          title: Unite Periode
          default: j
      additionalProperties: false
      type: object
      required:
        - nombre
      title: Frequence
      description: >-
        « 3 fois par jour » : nombre=3, periode=1, unite_periode=j. « tous les 3
        jours » : nombre=1, periode=3, unite_periode=j.
  securitySchemes:
    editeur:
      type: apiKey
      in: header
      name: X-Locus-Editeur
      description: Clé d'éditeur de LGC, remise par Locus à la signature du contrat.
    abonne:
      type: apiKey
      in: header
      name: X-Locus-Abonne
      description: >-
        Identifiant de l'abonné (le médecin) chez l'éditeur, par exemple
        rpps:10001234567.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.