Skip to content

Releases: cph-cachet/carp.core-kotlin

Version 1.0.0-alpha.28.2 (hotfix)

Version 1.0.0-alpha.28.1 (hotfix)

05 Feb 10:59
Compare
Choose a tag to compare

Version 1.0.0-alpha.29

28 Jan 10:50
7a7ee88
Compare
Choose a tag to compare
Pre-release

This is an intermediate release with no difference in behavior for any of the application services. The primary reason for this release is to allow incorporating some big architectural changes.

  • An EventBus has been introduced to handle integration events across application services. (ApplicationServiceEventBus)
  • Some domain objects in the studies subsystem and how they are stored in repositories has changed.

However, there is an incomplete new StudyService.remove endpoint, but for now this does not propagate removal to the deployment subsystem. Therefore using it is not yet recommended. In a next release this will also remove all associated deployments to the study in the deployment subsystem as expected.

Studies

  • StudyService and ParticipantService use the event bus so that the StudyRepository is no longer a dependency for ParticipantService. (#221)
  • Participations are no longer stored in Study (and thus StudyRepository), but moved to a new Recruitment aggregate root stored in ParticipantRepository.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.28

17 Dec 12:19
3b87cdb
Compare
Choose a tag to compare
Pre-release

This release primarily includes support to store data related to participants in study deployments.

Dependency upgrades:

  • Kotlin 1.4.21
  • kotlinx.serialization 1.0.1

Common

New features

  • A StudyProtocol now contains expectedParticipantData which describes the 'profile' Data participants or researchers need to fill out for participants in a study (ParticipantAttributes). Both standardized typesafe data and custom data can be requested; DefaultParticipantAttribute and CustomParticipantAttribute respectively.
  • To facilitate front-end development, developers do not need to be aware about concrete Data classes when uploading or retrieving participant data. An abstraction is introduced for requested user input which specifies a representation format and constraints (InputElement). Using this abstraction input elements can be rendered (e.g., Text and SelectOne), regardless of whether these are standardized input types or custom types defined by the researcher.
  • Default InputDataTypes are registered in a InputDataTypeList. The default one for CARP is CarpInputDataTypes. This list needs to be passed to helper functions on ParticipantAttribute to perform data validation and to convert input data to Data classes for upload and vice versa.

Changes

  • InvalidConfigurationError has been removed and should be replaced with default IllegalArgumentException.

Deployment

ParticipationService:

  • Added getParticipantData and getParticipantDataList which returns ParticipantData.
  • Added setParticipantData to set a single InputDataType in a deployment to specified Data.

Studies

ParticipantService:

  • ParticipantGroupStatus which is returned by various endpoints (e.g., getParticipantGroupStatusList) now contains participant data.
  • Added setParticipantGroupData to set data for a deployed participant group. This simply redirects to setParticipantData in the deployment subsystem's ParticipationService.

Protocols

  • Expected exceptions in StudyProtocolRepository changed slightly (e.g., getBy returns null when not found rather than an exception). Added InMemoryStudyProtocolRepository as an example implementation and tests are fully updated in StudyProtocolRepositoryTest.

ProtocolService:

  • Renamed update to addVersion.
  • Added updateParticipantDataConfiguration which allows updating the expected participant data for a specific protocol version.
  • Endpoints specifying a specific protocol now take a StudyProtocol.Id comprised of a owner UUID and protocol name. ProtocolOwner no longer needs to be passed.
  • getAllFor should return an empty list rather than IllegalArgumentException when no protocols for the specified owner are found.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.27

11 Nov 08:24
Compare
Choose a tag to compare
Pre-release

This release primarily contains non-functional changes, in preparation for new functional changes to come. Upgrading to this release will prepare you to more easily upgrade to alpha.28 next.

Studies subsystem changes:

  • Added ParticipantService.getParticipant. (6f99ed5)

Deployment subsystem change:

  • Split off ParticipationService from DeploymentService and ParticipationRepository from DeploymentRepository. (#197)

Common:

  • EmailAddress and TimeSpan are now serialized as primitive strings, not JSON objects.
  • DateTime is now serialized as a string in ISO 8601 UTC format, and no longer as a long representing milliseconds.

Client subsystem:

  • Bugfix: remainingDevicesToRegister returned in the study runtime status RegisteringDevices could change when calling tryDeployment. Now it is immutable.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.26

03 Nov 14:04
74e4775
Compare
Choose a tag to compare
Pre-release

Protocols subsystem:

  • Bugfix: not all device and registration types could be serialized since some weren't registered for polymorphic serialization.

Studies subsystem:

  • Split off ParticipantService from StudyService and ParticipantRepository from StudyRepository. (#192)

Test subsystem:

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.25

30 Oct 08:42
fad8ef5
Compare
Choose a tag to compare
Pre-release

Protocol subsystem change:

  • Added ProtocolFactoryService as a new service which will create study protocols from templates. The first factory method added now is createCustomProtocol which can be used to create a study protocol which has its own way of describing study protocols that deviates from the CARP core study protocol model. This is an optional service which does not need to be implemented; protocols can be created as usual through the protocols API. (#187)

Client subsystem change:

  • ClientManager.stopStudy() added to stop a study deployment from the client. (#188)

Common:

  • Bugfix: DateTime could't be serialized in formats other than JSON. (092d439)

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.24

22 Oct 21:17
Compare
Choose a tag to compare
Pre-release

Client subsystem changes:

  • Old DataCollector renamed to DataListener. DataListener is the central abstraction used by the client to subscribe and unsubscribe to data streams on the local device as well as connected devices.
  • Added DeviceDataCollector and ConnectedDeviceDataCollector which are created/injected through DeviceDataCollectorFactory. This is the entry point for developers to add integrations for sensors. (#177)
  • StudyRuntimeStatus is now a state machine with states: NotReadyForDeployment, RegisteringDevices, and Deployed. When deployment has been received the state contains DeviceRegistrationStatus for the master device and each of the connected devices.
  • remainingDevicesToRegister is now persisted in StudyRuntimeSnapshot.
  • It is now verified whether connected devices are supported during deployment, whether they are used or not. Before deployment would succeed if no measures were ever sent to the unsupported connected device. (35175c2)
  • ClientManager.getConnectedDeviceManager() can be used to retrieve a ConnectedDeviceManager which once a device has been registered (as exposed by DeviceRegistrationStatus) can be used to access device status, but will not expose subscription to data streams which will remain internal to ClientManager.
  • Bugfix: ClientManager.tryDeployment now returns Deployed when a study was already deployed previously (returned false indicating deployment failed in the past).

Deployment subsystem change:

  • Bugfix: loading StudyDeploymentSnapshot which contained more than one device registration history failed. (#180).

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.23

15 Oct 14:49
6def9be
Compare
Choose a tag to compare
Pre-release

Updated dependencies:

  • kotlinx.serialization to 1.0.0
    • The collection initializers for JS which were previously used have been removed. The new TS declarations now require ListSerializer, MapSerializer, and SetSerializer initializer functions rather than the old get_list, get_set, and get_map. (bea4dd6)

Protocols subsystem changes:

  • Added new device registration: BLESerialNumberDeviceRegistration and MACAddressDeviceRegistration.
  • Added new device descriptor: BLEHeartRateSensor (using MACAddressDeviceRegistration). (#166)

Common:

  • Added new data types: Acceleration, RRInterval, and SensorSkinContact, used by BLEHeartRateSensor.
  • Bugfix: UUID.stringRepresentation was case sensitive. Made it case sensitive (lower case needed) and added a parse method to make initialization less strict (allowing upper case).

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.22

07 Oct 15:15
f4758d0
Compare
Choose a tag to compare
Pre-release
  • Introduction of Data and refactoring of DataType.
    • DataType and CARP DataType instances were moved to carp.common (d8f3dc8).
    • DataType can now be initialized using fromFullyQualifiedName (cdfd47d).
    • First Data types to hold actual data: FreeFormText, ECG, Geolocation, and HeartRate.
    • Better disambiguation between DataTypeSamplingScheme and DataType, as part of which the protocols.domain.data namespace was renamed to protocols.domain.sampling and all sampling schemes were suffixed with SamplingScheme (444680b).
  • Upgraded to kotlinx.serialization 1.0.0-RC2.
    • JetBrains changed the artifact name in this release, from kotlinx-serialization-core to kotlinx-serialization-json which you need to update in your dependencies.
    • Correspondingly, the kotlinx.serialization TypeScript declarations have been split into two modules: functions to get_list_, get_set_, and get_map_ serializers remain in core, but to get access to Json you now need to include the new json module. (56eff90)
    • kotlinx.serialization now sets encodeDefaults in Json configuration to false by default. This is incompatible with the current implementation of UnknownPolymorphicSerializer, so in case you want to use this you need to make sure to set encodeDefaults to true (#169). Or, simply use CARP's createDefaultJSON method which has this set to true by default.

Protocols subsystem changes:

  • DeviceDescriptor now contains supportedDataTypes which is used in StudyProtocol to warn when the protocol contains triggers containing a measure with an unexpected DataType for the target device (not listed in supportedDataTypes). This warning is returned as UnexpectedMeasuresWarning when calling StudyProtocol.getDeploymentIssues().

Client subsystem changes:

  • Introduced a DataCollector interface in StudyRuntime which will become the central point to collect requested data. For now it checks whether data collection for requested data types for a specific MasterDeviceDeployment is supported (baec73d).

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp