{"id":22155913,"url":"https://github.com/citiususc/servando-core","last_synced_at":"2026-03-11T03:31:08.776Z","repository":{"id":14129941,"uuid":"16835267","full_name":"citiususc/servando-core","owner":"citiususc","description":"Servando core modules and data model","archived":false,"fork":false,"pushed_at":"2014-02-17T16:09:32.000Z","size":1131,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-10T03:04:01.160Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/citiususc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-14T11:19:47.000Z","updated_at":"2017-11-19T04:49:02.000Z","dependencies_parsed_at":"2022-09-23T19:32:11.613Z","dependency_job_id":null,"html_url":"https://github.com/citiususc/servando-core","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/citiususc/servando-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fservando-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fservando-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fservando-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fservando-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/citiususc","download_url":"https://codeload.github.com/citiususc/servando-core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fservando-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30369379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"online","status_checked_at":"2026-03-11T02:00:07.027Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-02T02:33:03.725Z","updated_at":"2026-03-11T03:31:08.737Z","avatar_url":"https://github.com/citiususc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Servando logo](http://proxectos.citius.usc.es/servando/wp-content/images/servando_platform_logo.png)\n\nThis repository contains the core modules and APIs provided by the Servando Platform for developing new services.\n\nDeveloping services\n---------------------\nThe Servando Platform allows the development of different kinds of services, from simple therapy reminders to the monitoring of complex physiological parameters and biosignals, all integrated under a single, simple user interface.\nEach service can use different components of the API depending on their specific needs, so below are shown the main developing tasks that are common in the service development process:\n\n### Create a gradle android module\nAlthough this is not a mandatory requirement, it is recommended to keep each service as a separate module.\n\n### Implement the service interface\nThe main and only requirement when creating a service is the implementation of the [`IPlatformService`](src/main/src/es/usc/citius/servando/android/models/services/IPlatformService.java) interface, where the service provides an identifier, the list of actions it can perform, and a way to create executions of those actions.\nAlthough a service has no an user interface itself, an icon and a name to use in some menus can be provided by the service by extending the [`Iconnable`](src/main/src/es/usc/citius/servando/android/ui/Iconnable.java) API class.\n\n#### Accessing storage\nServando offers an easy way of managing files under the platform working directory. Services that implement the [`StorageAvailableService`](src/main/src/es/usc/citius/servando/android/models/services/StorageAvailableService.java) interface are able to get an [`ServiceStorageHelper`](src/main/src/es/usc/citius/servando/android/services/ServiceStorageHelper.java) that can be used to create and access files under its own folder on the external storage.\n\n#### Communicating with the server\nIn the same way, services wishing to send information to the server over the given communications module, must implement the [`CommunicableService`](src/main/src/es/usc/citius/servando/android/communications/CommunicableService.java) interface. This allows the service to get an [`ObjectTransporter`](src/main/src/es/usc/citius/servando/android/communications/ObjectTransporter.java) they can use to directly send Java objects to the corresponding service endpoint on the server side.\nThe communications module is based on WS and the information is transmitted as XML, so classes to send must be properly annotated with [SimpleXML](http://simple.sourceforge.net/), the framework used to provide XML serialization.\n\n### Providing medical actions\nAs seen before, each service can provide a list of supported medical actions implementing the `IPlatformService` interface. This actions are commonly tasks that must be performed at a certain time, periodically, etc., and that can require user interaction to complete it. Due to this, there are to related concepts that need to be fully understood before continuing:\n\n* A medical action ([`MedicalAction`](src/main/src/es/usc/citius/servando/android/models/protocol/MedicalAction.java) class) models a task susceptible of being executed. They have general properties like an id, a name, a description, etc.\n* A medical action execution ([`MedicalActionExecution`](src/main/src/es/usc/citius/servando/android/models/protocol/MedicalActionExecution.java) class) represents a concrete execution of a medical action at a given moment.\n\nIf we think for example in a service of questionnaires that provides a medical action for doing tests, an user could be performing two different tests at the same time, and each of them would be a different medical action execution.\nGiven the variety of actions that could potentially be implemented, each service is responsible of creating the medical action executions when requested by the platform.\n\n#### Providing an UI\nActions that need user interaction must extend the [`Iconnable`](src/main/src/es/usc/citius/servando/android/ui/Iconnable.java) interface, and provide a name, an icon, and a [`ActionExecutionViewFactory`](src/main/src/es/usc/citius/servando/android/ui/ActionExecutionViewFactory.java) that will be used by the platform to create the action view at the appropriate time.\nTha platform provides the [`ServiceFragmentView`](src/main/src/es/usc/citius/servando/android/ui/ServiceFragmentView.java) class that can be extended to create the view of an specific medical action. From this class the developers have access to the ongoing medical action execution, can interact with it, and finish it when the user performs the required tasks.\n\n\u003e For security reasons, only the class implementing the service can access resources like an `ObjectTrasporter` or a `ServiceStorageHelper`, so it is service responsibility to give their medical actions access to this objects when they need it.\n\u003e An easy way of doing this is through a singleton that holds references to this components, which are initially set up by the service itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcitiususc%2Fservando-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcitiususc%2Fservando-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcitiususc%2Fservando-core/lists"}