Source code for fhirpack.extraction.list
import json
from typing import Union
from fhirpy.lib import SyncFHIRResource
from fhirpy.lib import SyncFHIRReference
import fhirpack.utils as utils
import fhirpack.extraction.base as base
[docs]class ExtractorListMixin(base.BaseExtractorMixin):
[docs] def getLists(
self,
input: Union[
list[str],
list[SyncFHIRReference],
list[SyncFHIRResource],
] = None,
searchParams: dict = 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 = []
if len(input):
input = self.castOperand(input, SyncFHIRReference, "List")
result = self.getResources(input, resourceType="List", raw=True)
elif self.isFrame and not ignoreFrame:
utils.validateFrame(self)
if self.resourceTypeIs("Patient"):
input = self.data
result = input.apply(
lambda x: self.searchResources(
searchParams=dict(searchParams, **{}),
resourceType="List",
raw=True,
)
)
result = result.values
elif self.resourceTypeIs("List"):
input = self.data.values
result = self.getResources(input, resourceType="List", raw=True)
else:
raise NotImplementedError
elif searchActive:
result = self.searchResources(
searchParams=searchParams, resourceType="List", raw=True
)
else:
raise NotImplementedError
result = self.prepareOutput(result, "List")
return result