Source code for fhirpath.storage

# _*_ coding: utf-8 _*_
from collections import defaultdict
from datetime import datetime
from typing import Optional

from zope.interface import implementer

from .enums import FHIR_VERSION
from .interfaces import IStorage
from .types import EMPTY_VALUE

__author__ = "Md Nazrul Islam <email2nazrul@gmail.com>"


[docs]@implementer(IStorage) class MemoryStorage(defaultdict): """ """ _last_updated: Optional[datetime] _write_locked: Optional[bool] _read_locked: Optional[bool]
[docs] def get(self, item, default=EMPTY_VALUE): """ """ try: return self[item] except KeyError: if default is EMPTY_VALUE: raise return default
[docs] def insert(self, item, value): """ """ self[item] = value
[docs] def delete(self, item): """ """ del self[item]
[docs] def exists(self, item): """ """ return item in self
[docs] def empty(self): """ """ return len(self) == 0
[docs] def total(self): """ """ return len(self)
FHIR_RESOURCE_CLASS_STORAGE: MemoryStorage = MemoryStorage() PATH_INFO_STORAGE: MemoryStorage = MemoryStorage() SEARCH_PARAMETERS_STORAGE: MemoryStorage = MemoryStorage() FHIR_RESOURCE_SPEC_STORAGE: MemoryStorage = MemoryStorage() releases = set([member.name for member in FHIR_VERSION if member.name != "DEFAULT"]) for release in releases: if not PATH_INFO_STORAGE.exists(release): PATH_INFO_STORAGE.insert(release, MemoryStorage()) if not FHIR_RESOURCE_CLASS_STORAGE.exists(release): FHIR_RESOURCE_CLASS_STORAGE.insert(release, MemoryStorage()) if not SEARCH_PARAMETERS_STORAGE.exists(release): SEARCH_PARAMETERS_STORAGE.insert(release, MemoryStorage()) if not FHIR_RESOURCE_SPEC_STORAGE.exists(release): FHIR_RESOURCE_SPEC_STORAGE.insert(release, MemoryStorage()) del releases