Every procedure carries the formFillingEnabled org setting AND the formGenV2TemplatingFlow
flag, then a resource gate: canAccessFormTemplate for reads that name a form,
canEditFormTemplate for writes, the narrower canDeleteFormTemplate for delete. list, createUploadTarget and create name no existing
form, so ctx.user scopes them. testFill reads a PATIENT's chart, so it carries
canAccessPatient rather than a template gate. detectWithExtend and getExtendDetection are
both EDIT-gated: they are one action, and the run is vendor state only its starter should read.
Every procedure carries the
formFillingEnabledorg setting AND theformGenV2TemplatingFlowflag, then a resource gate:canAccessFormTemplatefor reads that name a form,canEditFormTemplatefor writes, the narrowercanDeleteFormTemplatefordelete.list,createUploadTargetandcreatename no existing form, soctx.userscopes them.testFillreads a PATIENT's chart, so it carriescanAccessPatientrather than a template gate.detectWithExtendandgetExtendDetectionare both EDIT-gated: they are one action, and the run is vendor state only its starter should read.