MedicationRequests

Approve (provider with Dispense permission + the primary-provider flag). For Rx this authors the Prescription, routes it, and creates the request's own quote estimate with its Pending line (one estimate per request).

Changed on
post/medication-requests/{id}/approve

Request

Path parameters

idstring required

Request body

useRefillboolean nullable

Renewal approval mode (design §7). True = "use a refill": increments RefillsUsed on the prior Rx and reuses it — no new legal record, no SIG. False/absent on a renewal = "new prescription" (the normal create path, keeping the renewal link). 409 when the prior Rx is inactive, expired, exhausted, or DEA Schedule II.

providerIdstring nullable

Prescribing DVM. Defaults to the approving caller.

inventoryItemIdstring nullable

Resolves a free-text capture to a real item (required if capture had none).

fulfillmentMethodstring nullable
pharmacyIdstring nullable
dosagestring nullable
frequencystring nullable
durationstring nullable
instructionsstring nullable

SIG — required for Rx approval.

refillsPrnboolean nullable

PRN ("as needed") refills: unlimited fills until the Rx expires (ITE-1596).

validUntilstring date nullable

Rx expiration override. Null = the regional default validity window.

medicationExpirationDatestring date nullable

Medication expiration printed on the label when no dispensed lot supplies one.

medicationCategorystring nullable
notesstring nullable
estimateIdstring nullable

Escape hatch from one-estimate-per-request: put the billable line on this existing live estimate instead of a fresh standalone draft (e.g. adding a med to an estimate about to be presented, or the visit's estimate).

createNewEstimateboolean

True = put the line on a fresh estimate for this request even though the capturer chose one (string? MedicationRequestDto.TargetEstimateId). Without it, an approval with no string? ApproveMedicationRequestDto.EstimateId uses the capturer's choice (ITE-1713).

isCascadeboolean nullable
cascadeReasonstring nullable
antimicrobialUseTypestring nullable
antimicrobialJustificationstring nullable
clinicalAssessmentPerformedboolean nullable
physicalExamPerformedboolean nullable
physicalExamJustificationstring nullable
withdrawalPeriodstring nullable

Response

OK

idstring
patientIdstring
patientNamestring nullable
clientIdstring nullable
inventoryItemIdstring nullable
medicationNamestring nullable
freeTextMedicationstring nullable
notesstring nullable
sourcestring
isOtcboolean
isControlledboolean

Whether the linked inventory item carries any DEA/controlled-substance signal. Mirrors the approval gate's own controlled test (RxGovernanceService.IsControlledItem): a controlled item always needs a primary provider to approve or deny, whatever RxGovernanceSettings says. False for an unresolved free-text request — there is no item to judge yet, so read it together with InventoryItemId.

fulfillmentMethodstring nullable
statusstring
billingStatestring

Derived: none | quoted | quote_removed | unbilled | invoiced | paid. "unbilled" is the "Ready to bill" worklist predicate.

requestedByIdstring nullable
requestedByNamestring nullable
requestedAtstring date-time
approvedByIdstring nullable
approvedByNamestring nullable
approvedAtstring date-time nullable
deniedByIdstring nullable
deniedAtstring date-time nullable
denialReasonstring nullable
cancelledByIdstring nullable
cancelledAtstring date-time nullable
cancelReasonstring nullable
dispensedAtstring date-time nullable
prescriptionIdstring nullable
prescriptionItemIdstring nullable
estimateIdstring nullable
estimateLineItemIdstring nullable
targetEstimateIdstring nullable

The estimate chosen at capture for the line approval will create (ITE-1713). string? MedicationRequestDto.EstimateId is where the line actually is, once it exists.

targetEstimateNumberstring nullable
targetEstimateIsVisitboolean

True when string? MedicationRequestDto.TargetEstimateId is a visit's (appointment's) estimate.

targetEstimateIsOpenboolean

False when string? MedicationRequestDto.TargetEstimateId has been invoiced or declined since capture: approval will put the line on a fresh estimate instead, so it is not a usable choice.

invoiceIdstring nullable
renewalOfPrescriptionIdstring nullable
suggestedProviderIdstring nullable
suggestedDosagestring nullable
suggestedFrequencystring nullable
suggestedDurationstring nullable
suggestedInstructionsstring nullable
createdAtstring date-time
updatedAtstring date-time

Changes

    • info

      added the new optional request property (media type: application/json)

    • info

      added the new optional request property (media type: text/json)

    • info

      added the new optional request property (media type: application/*+json)

    • info

      added the new optional request property (media type: application/json)

    • info

      added the new optional request property (media type: text/json)

    • info

      added the new optional request property (media type: application/*+json)

    • info

      added the new optional request property (media type: application/json)

    • info

      added the new optional request property (media type: text/json)

    • info

      added the new optional request property (media type: application/*+json)

    • info

      added the new optional request property (media type: application/json)

    • info

      added the new optional request property (media type: text/json)

    • info

      added the new optional request property (media type: application/*+json)

    • info

      added the optional property ///// to the response with the status (media type: text/plain)

    • info

      added the optional property ///// to the response with the status (media type: application/json)

    • info

      added the optional property ///// to the response with the status (media type: text/json)

    • info

      added the optional property to the response with the status (media type: text/plain)

    • info

      added the optional property to the response with the status (media type: application/json)

    • info

      added the optional property to the response with the status (media type: text/json)

    • info

      added the optional property to the response with the status (media type: text/plain)

    • info

      added the optional property to the response with the status (media type: application/json)

    • info

      added the optional property to the response with the status (media type: text/json)

    • info

      added the optional property to the response with the status (media type: text/plain)

    • info

      added the optional property to the response with the status (media type: application/json)

    • info

      added the optional property to the response with the status (media type: text/json)

    • info

      added the optional property to the response with the status (media type: text/plain)

    • info

      added the optional property to the response with the status (media type: application/json)

    • info

      added the optional property to the response with the status (media type: text/json)

    • info

      added the optional property to the response with the status (media type: text/plain)

    • info

      added the optional property to the response with the status (media type: application/json)

    • info

      added the optional property to the response with the status (media type: text/json)