Source code for fhirpack.extraction.sample
import json
from typing import Union
from fhirpy.lib import SyncFHIRResource
from fhirpy.lib import SyncFHIRReference
[docs]class BaseExtractorMixin:
[docs] def getSampleExtractionMethod(
self,
input: Union[
list[str],
list[SyncFHIRReference],
list[SyncFHIRResource],
] = None,
params: dict = None,
ignoreFrame: bool = False,
):
searchActive = False if searchParams is None else True
searchParams = {} if searchParams is None else searchParams
params = {} if params is None else params
input = [] if input is None else input
result = []
# TODO prepare your context here
if len(input):
# TODO your code for data coming in as arguments
input = self.castOperand(input, SyncFHIRReference, "replace")
result = self.getResources(input, resourceType="replace", raw=True)
elif self.isFrame and not ignoreFrame:
# TODO your code for data coming in as a frame
if self.resourceTypeIs("Patient"):
input = self.data
result = input.apply(
lambda x: self.searchResources(
searchParams=dict(searchParams, **{"replace": x.id}),
resourceType="replace",
raw=True,
)
)
result = result.values
elif self.resourceTypeIs("replace"):
input = self.data.values
result = self.getResources(input, resourceType="replace", raw=True)
else:
raise NotImplementedError
elif searchActive:
# TODO your code for searches
result = self.searchResources(
searchParams=searchParams, resourceType="replace", raw=True
)
else:
raise NotImplementedError
result = self.prepareOutput(input)
return result