Skip to content

Commit 931398d

Browse files
Update datacapture/src/commonMain/kotlin/dev/ohs/fhir/datacapture/extraction/definition/DefinitionExtractResourceRegistry.kt
Co-authored-by: Fikri Milano <fikrimilano1@gmail.com>
1 parent ff50cf0 commit 931398d

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

datacapture/src/commonMain/kotlin/dev/ohs/fhir/datacapture/extraction/definition/DefinitionExtractResourceRegistry.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,24 @@ import kotlinx.serialization.descriptors.SerialDescriptor
169169
* Keeping descriptor lookup in one place lets definition-based extraction work for every resource
170170
* type registered by the model library.
171171
*/
172+
import dev.ohs.fhir.model.r4.Resource
173+
import kotlinx.serialization.descriptors.SerialDescriptor
174+
172175
internal object DefinitionExtractResourceRegistry {
176+
private val descriptorsByType: Map<String, SerialDescriptor> by lazy {
177+
val resourceDescriptor = Resource.serializer().descriptor
178+
val union = resourceDescriptor.getElementDescriptor(resourceDescriptor.getElementIndex("value"))
179+
(0 until union.elementsCount).associate { index ->
180+
union.getElementName(index) to union.getElementDescriptor(index)
181+
}
182+
}
183+
184+
internal val supportedResourceTypes: Set<String>
185+
get() = descriptorsByType.keys
186+
187+
internal fun descriptorFor(resourceType: String): SerialDescriptor? =
188+
descriptorsByType[resourceType]
189+
}
173190
internal val supportedResourceTypes: Set<String> =
174191
setOf(
175192
"Account",

0 commit comments

Comments
 (0)