en:dev:modules:core:draft
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:dev:modules:core:draft [2015/04/24 22:58] – [Settings API] rename group -> role nerdoc | en:dev:modules:core:draft [2018/07/22 19:19] (current) – move datapacks into own module nerdoc | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | The core module handles everything that is needed for accessing patient' | + | ===== Core Module Draft ===== |
| - | + | ==== Settings API ==== | |
| - | ====== | + | |
| The Core module provides an API for other modules to register their settings (during the module installation routine). | The Core module provides an API for other modules to register their settings (during the module installation routine). | ||
| Settings can have different levels: | Settings can have different levels: | ||
| - | * global | + | * global |
| * client specific (e.g. only client " | * client specific (e.g. only client " | ||
| * role specific (e.g. only doctors) | * role specific (e.g. only doctors) | ||
| Line 12: | Line 11: | ||
| To consider: which setting should have higher priority: user, global or group? permission or deny? | To consider: which setting should have higher priority: user, global or group? permission or deny? | ||
| - | ====== | + | ==== Patients |
| - | possibly in own module? | + | |
| - | ===== ACL system | + | * To manage Patient identities, Gnumed has a [[http:// |
| + | * DOB (date of birth) | ||
| + | * COB (country of birth, 2 character ISO code) | ||
| + | * gender | ||
| + | * DOD (date of death/ | ||
| + | * title | ||
| + | * emergency_contact + link to another person | ||
| + | |||
| + | ==== User management ==== | ||
| + | FIXME in own module? | ||
| + | |||
| + | ==== ACL system ==== | ||
| MedUX must have '' | MedUX must have '' | ||
| * Client A (Practice Dr.Jekyll) | * Client A (Practice Dr.Jekyll) | ||
| Line 29: | Line 38: | ||
| Mind that '' | Mind that '' | ||
| - | It must be possible that single patients (VIP, relatives, etc.) can be " | + | It must be possible that single patients (VIP, relatives, etc.) can be " |
| Fast user switching must be possible, without having to restart the whole application (Fingerprint, | Fast user switching must be possible, without having to restart the whole application (Fingerprint, | ||
| - | Objects should be: '' | + | Objects should be: '' |
| - | ==== Links ==== | + | ==== Plugin permissions |
| + | |||
| + | We could implement a " | ||
| + | Therefore the plugin system must be modified so that plugin hooks are only loaded if the right permissions are granted. | ||
| + | Plugins must *register* new permissions (like " | ||
| + | |||
| + | def initialize(): | ||
| + | register_permission(" | ||
| + | |||
| + | Permissions are defined then in the Interface: | ||
| + | |||
| + | def CustomPluginHook(Interface): | ||
| + | permissions = [" | ||
| + | |||
| + | The permission should be checked automatically by the plugin system, and must not be interferred with custom code during the plugin hook call. If the current user has no grant for a specific permission, the Interface/ | ||
| + | |||
| + | === Links === | ||
| * Role Based Access Control (RBAC): [[http:// | * Role Based Access Control (RBAC): [[http:// | ||
| * Context Based Access Control: [[http:// | * Context Based Access Control: [[http:// | ||
| - | ====== Master data management | + | ==== Master data management ==== |
| MedUX Core should provide easy access to central data that is used widely in the application. | MedUX Core should provide easy access to central data that is used widely in the application. | ||
| Generic master data: | Generic master data: | ||
| * Patients | * Patients | ||
| - | * Doctors (für referrals) | + | * Doctors (for referrals) |
| * Hospitals | * Hospitals | ||
| * Hospital departments | * Hospital departments | ||
| * Laboratories | * Laboratories | ||
| - | * Insurances: GKK, BVA, SVA etc. ([[en: | + | * Insurances: GKK, BVA, SVA etc. ([[en: |
| - | * Insurance groups: employed, self-employed, | + | * Insurance groups: employed, self-employed, |
| * Companies (Pharma, Medical industry contacts for deliveries, etc.) | * Companies (Pharma, Medical industry contacts for deliveries, etc.) | ||
| * (Private persons) | * (Private persons) | ||
| Line 55: | Line 80: | ||
| === Helpers === | === Helpers === | ||
| There should be database tables for auto-suggestions or auto-fill functionality: | There should be database tables for auto-suggestions or auto-fill functionality: | ||
| - | * States | + | * States/Countries |
| - | * Countries | + | * ZIP codes < |
| - | * Cities | + | * Given names -> sex |
| - | * ZIP codes < | + | * sex -> salutation |
| - | * Given names <-> sex | + | |
| - | * sex <-> salutation | + | |
| - | * Languages | + | |
| - | E.g. if a new patient is created, and " | + | E.g.: |
| + | * if a new patient is created, and " | ||
| + | * If " | ||
| + | * State/ | ||
| - | All of these database tables should be updateable | + | All of these database tables should be upgradable |
| - | Considerations: | + | Considerations: |
| - | ====== DataPacks ====== | + | |
| - | Provides a central format for fownloading/ | + | |
| - | E.g. as source for ZIP codes, countries, cities etc. could be taken geonames.org which provides an excellent web api with XML output. | ||
| - | A possible datapack could be e.g.: | ||
| - | Datapack { | ||
| - | uid: „5c87644a-5082-426c-ae4a-39e4a245ecf9“ | ||
| - | label: „zipcodes“ | ||
| - | description: | ||
| - | license: „CC-BY-SA“ | ||
| - | version: „1.0“ | ||
| - | created: „2014-03-02 23:10:24“ | ||
| - | lastUpdated: | ||
| - | resource: „medux.masterdata.zipcodes“ | ||
| - | data: { | ||
| - | {5020, „Salzburg“}, | ||
| - | {8010, „Graz“} | ||
| - | // ... | ||
| - | } | ||
| - | } | ||
| - | The format should be able to handle diffs, so that incremental updates are possible to reduce download and database update time: | + | ==== Audits |
| - | DataPackDiff { | + | |
| - | uid: " | + | |
| - | datapackUid: | + | |
| - | label: „zipcodes update 2014-04“ | + | |
| - | description: | + | |
| - | license: „CC-BY-SA“ | + | |
| - | version: „1.0“ | + | |
| - | created: „2014-04-01 20: | + | |
| - | lastUpdated: | + | |
| - | resource: „medux.masterdata.zipcodes“ | + | |
| - | addedData: { | + | |
| - | {8020, „Graz“} | + | |
| - | } | + | |
| - | changedData: | + | |
| - | deletedData { | + | |
| - | {" | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | Consider: Strings in datapacks should be translateable: | + | |
| - | * separate files per language | + | |
| - | * add .po files | + | |
| - | * add languages in one JSON/XML DataPack | + | |
| - | ====== Audit ====== | + | |
| Every action that any module takes must have an audit trail. The core module should provide a central API for logging actions, and log actions automatically wherever possible. | Every action that any module takes must have an audit trail. The core module should provide a central API for logging actions, and log actions automatically wherever possible. | ||
| - | This could be a simple function like: | + | This could be either implemented as a simple function like: |
| - | medux.core.audit.auditLog(user, | + | |
| + | '' | ||
| A timestamp should be added automatically. | A timestamp should be added automatically. | ||
| - | Considerations: move to own module | + | This should happen on the server. The client (CAVE: open source!) should have no influence on audit trails |
| - | ====== CAVE entries ====== | + | FIXME: Considerations: |
| - | The CAVE entry functionality should be provided by the core module, as it is mandatory for all patients. It must somehow work together with the diagnoses module - this could be done by the diagnoses module itself, as the core module does not know anything about " | + | ==== CAVE entries ==== |
| + | |||
| + | The CAVE entry functionality should be provided by the core module, as it is mandatory for all patients. | ||
| * Allergies | * Allergies | ||
| * Intolerances | * Intolerances | ||
| - | Considerations: | + | There are some data to add to the CAVE objects: |
| - | ====== | + | * Evidence of the data: |
| + | * patient told us he has an allergy | ||
| + | * we have a medical report with a confirmed allergy | ||
| + | * Last updated state (timestamp) | ||
| + | |||
| + | FIXME: | ||
| + | |||
| + | ==== Substance abuse ==== | ||
| + | Another issue to be discussed whether it should be in Core or in [[en: | ||
| + | |||
| + | ===== Tools ===== | ||
| ==== Merge Patients ==== | ==== Merge Patients ==== | ||
| It must be able to merge patients. This functionality must expose a plugin API for other modules that need to merge data as well. | It must be able to merge patients. This functionality must expose a plugin API for other modules that need to merge data as well. | ||
| - | |||
en/dev/modules/core/draft.1429909108.txt.gz · Last modified: 2015/04/24 22:58 by nerdoc