|
| 1 | +// Bun Snapshot v1, https://bun.sh/docs/test/snapshots |
| 2 | + |
| 3 | +exports[`Profile constrained values captures the generated profile module 1`] = ` |
| 4 | +"// WARNING: This file is autogenerated by @atomic-ehr/codegen. |
| 5 | +// GitHub: https://github.com/atomic-ehr/codegen |
| 6 | +// Any manual changes made to this file may be overwritten. |
| 7 | +
|
| 8 | +import type { CodeableConcept } from "../../hl7-fhir-r4-core/CodeableConcept"; |
| 9 | +import type { Reference } from "../../hl7-fhir-r4-core/Reference"; |
| 10 | +import type { ServiceRequest } from "../../hl7-fhir-r4-core/ServiceRequest"; |
| 11 | +
|
| 12 | +import { |
| 13 | + ensureProfile, |
| 14 | + applyFixedValue, |
| 15 | + validateRequired, |
| 16 | + validateExcluded, |
| 17 | + validateFixedValue, |
| 18 | + validateSliceCardinality, |
| 19 | + validateSliceFields, |
| 20 | + validateEnum, |
| 21 | + validateReference, |
| 22 | + validateChoiceRequired, |
| 23 | + validateChoiceProhibited, |
| 24 | + validateMustSupport, |
| 25 | +} from "../../profile-helpers"; |
| 26 | +
|
| 27 | +export type ConstrainedValuesServiceRequestProfileRaw = { |
| 28 | + status: ("draft" | "active" | "on-hold" | "revoked" | "completed" | "entered-in-error" | "unknown"); |
| 29 | + subject: Reference<"Device" | "Group" | "Location" | "Patient">; |
| 30 | +} |
| 31 | +
|
| 32 | +// CanonicalURL: http://example.test/StructureDefinition/constrained-values-service-request (pkg: example.test.constrainedvalues#0.1.0) |
| 33 | +export class ConstrainedValuesServiceRequestProfile { |
| 34 | + static readonly resourceType = "ServiceRequest"; |
| 35 | + static readonly canonicalUrl = "http://example.test/StructureDefinition/constrained-values-service-request"; |
| 36 | +
|
| 37 | + private resource: ServiceRequest; |
| 38 | +
|
| 39 | + constructor (resource: ServiceRequest) { |
| 40 | + this.resource = resource; |
| 41 | + } |
| 42 | +
|
| 43 | + static from (resource: ServiceRequest) : ConstrainedValuesServiceRequestProfile { |
| 44 | + if (!resource.meta?.profile?.includes(ConstrainedValuesServiceRequestProfile.canonicalUrl)) { |
| 45 | + throw new Error(\`ConstrainedValuesServiceRequestProfile: meta.profile must include \${ConstrainedValuesServiceRequestProfile.canonicalUrl}\`) |
| 46 | + } |
| 47 | + const profile = new ConstrainedValuesServiceRequestProfile(resource); |
| 48 | + const { errors } = profile.validate(); |
| 49 | + if (errors.length > 0) throw new Error(errors.join("; ")) |
| 50 | + return profile; |
| 51 | + } |
| 52 | +
|
| 53 | + static is (resource: unknown) : resource is ServiceRequest { |
| 54 | + if (typeof resource !== "object" || resource === null) return false; |
| 55 | + const r = resource as { resourceType?: string; meta?: { profile?: string[] } }; |
| 56 | + if (r.resourceType !== "ServiceRequest") return false; |
| 57 | + return (r.meta?.profile ?? []).includes(ConstrainedValuesServiceRequestProfile.canonicalUrl); |
| 58 | + } |
| 59 | +
|
| 60 | + static apply (resource: ServiceRequest) : ConstrainedValuesServiceRequestProfile { |
| 61 | + ensureProfile(resource, ConstrainedValuesServiceRequestProfile.canonicalUrl); |
| 62 | + applyFixedValue(resource, "doNotPerform", false); |
| 63 | + applyFixedValue(resource, "category", [{"coding":[{"system":"http://example.test/category","code":"example"}]}]); |
| 64 | + applyFixedValue(resource, "intent", "order"); |
| 65 | + return new ConstrainedValuesServiceRequestProfile(resource); |
| 66 | + } |
| 67 | +
|
| 68 | + static createResource (args: ConstrainedValuesServiceRequestProfileRaw) : ServiceRequest { |
| 69 | + const resource: ServiceRequest = { |
| 70 | + resourceType: "ServiceRequest", |
| 71 | + doNotPerform: false, |
| 72 | + category: [{"coding":[{"system":"http://example.test/category","code":"example"}]}], |
| 73 | + intent: "order", |
| 74 | + status: args.status, |
| 75 | + subject: args.subject, |
| 76 | + meta: { profile: [ConstrainedValuesServiceRequestProfile.canonicalUrl] }, |
| 77 | + } |
| 78 | + return resource; |
| 79 | + } |
| 80 | +
|
| 81 | + static create (args: ConstrainedValuesServiceRequestProfileRaw) : ConstrainedValuesServiceRequestProfile { |
| 82 | + const resource = ConstrainedValuesServiceRequestProfile.createResource(args); |
| 83 | + return ConstrainedValuesServiceRequestProfile.apply(resource); |
| 84 | + } |
| 85 | +
|
| 86 | + toResource () : ServiceRequest { |
| 87 | + return this.resource; |
| 88 | + } |
| 89 | +
|
| 90 | + // Field accessors |
| 91 | + getStatus () : ("draft" | "active" | "on-hold" | "revoked" | "completed" | "entered-in-error" | "unknown") | undefined { |
| 92 | + return this.resource.status as ("draft" | "active" | "on-hold" | "revoked" | "completed" | "entered-in-error" | "unknown") | undefined; |
| 93 | + } |
| 94 | +
|
| 95 | + setStatus (value: ("draft" | "active" | "on-hold" | "revoked" | "completed" | "entered-in-error" | "unknown")) : this { |
| 96 | + Object.assign(this.resource, { status: value }); |
| 97 | + return this; |
| 98 | + } |
| 99 | +
|
| 100 | + getSubject () : Reference<"Device" | "Group" | "Location" | "Patient"> | undefined { |
| 101 | + return this.resource.subject as Reference<"Device" | "Group" | "Location" | "Patient"> | undefined; |
| 102 | + } |
| 103 | +
|
| 104 | + setSubject (value: Reference<"Device" | "Group" | "Location" | "Patient">) : this { |
| 105 | + Object.assign(this.resource, { subject: value }); |
| 106 | + return this; |
| 107 | + } |
| 108 | +
|
| 109 | + getDoNotPerform () : boolean | undefined { |
| 110 | + return this.resource.doNotPerform as boolean | undefined; |
| 111 | + } |
| 112 | +
|
| 113 | + getCategory () : CodeableConcept[] | undefined { |
| 114 | + return this.resource.category as CodeableConcept[] | undefined; |
| 115 | + } |
| 116 | +
|
| 117 | + getIntent () : ("proposal" | "plan" | "directive" | "order" | "original-order" | "reflex-order" | "filler-order" | "instance-order" | "option") | undefined { |
| 118 | + return this.resource.intent as ("proposal" | "plan" | "directive" | "order" | "original-order" | "reflex-order" | "filler-order" | "instance-order" | "option") | undefined; |
| 119 | + } |
| 120 | +
|
| 121 | + // Extensions |
| 122 | + // Slices |
| 123 | + // Validation |
| 124 | + validate(): { errors: string[]; warnings: string[] } { |
| 125 | + const profileName = "ConstrainedValuesServiceRequest" |
| 126 | + const res = this.resource |
| 127 | + return { |
| 128 | + errors: [ |
| 129 | + ...validateFixedValue(res, profileName, "doNotPerform", false), |
| 130 | + ...validateFixedValue(res, profileName, "category", {"coding":[{"system":"http://example.test/category","code":"example"}]}, true), |
| 131 | + ...validateRequired(res, profileName, "intent"), |
| 132 | + ...validateFixedValue(res, profileName, "intent", "order"), |
| 133 | + ...validateEnum(res, profileName, "intent", ["proposal","plan","directive","order","original-order","reflex-order","filler-order","instance-order","option"]), |
| 134 | + ...validateRequired(res, profileName, "status"), |
| 135 | + ...validateRequired(res, profileName, "subject"), |
| 136 | + ], |
| 137 | + warnings: [ |
| 138 | + ...validateMustSupport(res, profileName, "category"), |
| 139 | + ], |
| 140 | + } |
| 141 | + } |
| 142 | +
|
| 143 | +} |
| 144 | +
|
| 145 | +" |
| 146 | +`; |
0 commit comments