New version of CardinalKit based on the Swift Package Manager and a modularized architecture.

Overview

CardinalKit

Open-source framework for rapid development of modern, interoperable digital health applications.

Contributing

Contributions to this project are welcome. Please make sure to read the contribution guidelines and the contributor covenant code of conduct first.

License

This project is licensed under the MIT License. See Licenses for more information.

Comments
  • Communication Standard

    Communication Standard

    Communication Standard

    :recycle: Current situation & Problem

    Different digital health applications need to store and use digital health data in different data formats. CardinalKit needs to be flexible in the type of data format that application developers want to use.

    :bulb: Proposed solution

    We establish a generic constraint on the CardinalKit type that defines the type of Standard used. Configuration elements need to be associated with the standard using an associatedtype constraint.

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 2
  • Scheduler

    Scheduler

    Scheduler

    :recycle: Current situation & Problem

    Applications require the scheduling to Tasks that are can be used for internal mechanisms and tasks that are represented to users at a well defined schedule.

    :bulb: Proposed solution

    The Scheduler module allows the creation of Tasks that are adhering to a fixed schedule. Tasks can be marked as complete and the Scheduler module can be used to retrieve all currently uncompleted tasks.

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Onboarding Module

    Onboarding Module

    Onboarding Module

    :recycle: Current situation & Problem

    Applications often use an onboarding flow that allows users to get familiar with the application.

    :bulb: Proposed solution

    The OnboardingView and the related SequentialOnboardingView views enable the generation of reusable flexible onboarding flows.

    OnboardingView SequentialOnboardingView First Step SequentialOnboardingView Final Step

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Views Module

    Views Module

    Views Module

    :recycle: Current situation & Problem

    Different modules will rely on reusable views and SwiftUI mechanisms to establish a foundation for interaction with applications and building module-specific functionality.

    :bulb: Proposed solution

    The Views module provides a common standard view library for commonly used views shared across different modules.

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Consent View

    Consent View

    Consent View

    :recycle: Current situation & Problem

    Research Studies require to obtain consent of participating in the study from study participants.

    :bulb: Proposed solution

    The ConsentView allows the display of markdown-based documents that can be signed using a family and given name and a hand drawn signature.

    Consent View

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Add Contacts Views

    Add Contacts Views

    Add Contacts Views

    :recycle: Current situation & Problem

    Digital application developers and research studies want to display contact information for study participants and users in their application.

    :bulb: Proposed solution

    The ContactView and ContactsList allow developers to easily build and populate contact views in their mobile applications.

    Screenshot 2022-12-13 at 10 30 26 AM

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Data Storage Providers

    Data Storage Providers

    Data Storage Providers

    :recycle: Current situation & Problem

    A Standard is the hub for data within a CardinalKit application. After a Standards collects data, it requires mechanisms to forward that data to elements such as data storage providers.

    :bulb: Proposed solution

    The DataStorageProvider protocol allows the generation and usage of data storage providers consuming data from Standards in CardinalKit.

    private actor DataStorageExample<ComponentStandard: Standard>: DataStorageProvider {
         typealias Adapter = any EncodableAdapter<ComponentStandard.BaseType, String>
    
    
         let adapter: Adapter
    
    
         init(adapter: Adapter) {
             self.adapter = adapter
         }
    
         init() {
             self.adapter = IdentityEncodableAdapter()
         }
    
    
         func process(_ element: DataChange<ComponentStandard.BaseType>) async throws {
             switch element {
             case let .addition(element):
                 async let transformedElement = adapter.transform(element: element)
                 let data = try await JSONEncoder().encode(transformedElement)
                 // E.g., Handle the data upload here ...
             case let .removal(id):
                 async let stringId = transform(id, using: adapter)
                 // E.g., Send out a delete network request here ...
             }
         }
    
    
         private func transform(
             _ id: ComponentStandard.BaseType.ID,
             using adapter: some EncodableAdapter<ComponentStandard.BaseType, String>
         ) async -> String {
             await adapter.transform(id: id)
         }
    }
    

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • FHIR Standard

    FHIR Standard

    FHIR Standard

    :recycle: Current situation & Problem

    The CardinalKit modularized architecture is standard-driven but independent of a specific standard. We start instantiated this modularized architecture using the HL7 FHIR standard. The FHIR standard will be used to communicate FHIR-based resources between different parts of the application.

    :bulb: Proposed solution

    The FHIR standard uses FHIR Resources as the base type and ResourceProxy as a communication point with local storage and data storage providers. It provides convenience methods to simplify the creation of FHIR based CardinalKit applications and modules.

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Fix HealthKit Tests

    Fix HealthKit Tests

    Fix HealthKit Tests

    :recycle: Current situation & Problem

    The HealthKit test are currently skipped as the interaction with the Health app in the GitHub Actions simulator.

    :bulb: Proposed solution

    The timeout is increased for many interactions and the overall reliability of the tests is improved with additional checks.

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • User Profile View

    User Profile View

    User Profile View

    :bulb: Proposed solution

    The UserProfileView allows developers to add an account-related view to display a user image or user name in a circular image.

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Account Module - Sign Up

    Account Module - Sign Up

    Account Module - Sign Up

    :recycle: Current situation & Problem

    Developers of mobile applications typically need to implement a sign up functionality for different Account services, including a username/email and password-based login.

    :bulb: Proposed solution

    This PR adds the Account module's sign up functionality that induces components to handle sign-up views that enable reusability across different applications.

    Sign up screen Sign up with username screen Sign up with email screen Sign up with email screen filled out

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
  • Firebase Module

    Firebase Module

    Firebase Module

    :recycle: Current situation & Problem

    Describe the current situation (if possible, with an exemplary (or real) code snippet and/or where this is used) Please link any open issue that is addressed with this PR

    :bulb: Proposed solution

    Describe the solution and how this affects the project and internal structure

    :gear: Release Notes

    Add a summary of the feature and possible migration guides if this is a breaking change so this section can be added to the release notes. Include code snippets that provide examples of the feature implemented if it appends or changes the public interface.

    :heavy_plus_sign: Additional Information

    Provide some additional information if possible

    Related PRs

    Reference the related PRs

    Testing

    Are there tests included? If yes, which situations are tested, and which corner cases are missing?

    Reviewer Nudging

    Where should the reviewer start? Where is a good entry point?

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 0
  • Documentation Improvements

    Documentation Improvements

    Documentation Improvements

    :recycle: Current situation & Problem

    We want to make sure that all developers have a good experience learning about CardinalKit from source code documentation and articles.

    :bulb: Proposed solution

    We will create multiple DocC articles and use DocC to structure the documentation so it features code examples and narrative explanations on how to get started with CardinalKit and use different modules. We rely on different DocC features:

    Code of Conduct & Contributing Guidelines

    By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

    opened by PSchmiedmayer 1
Owner
Stanford Biodesign for Digital Health
Stanford Biodesign for Digital Health
Proof concept of modularized app with SwiftPackages built over MVI + Combine + SwiftUI in a single repo

PKDex-iOS Proof concept of modularized app with SwiftPackages built over MVI + Combine + SwiftUI in a single repo Introduction This project is a proof

Miguel Angel Zapata 13 Nov 22, 2022
iOS (swift) version of skydove's Pokedex application. Based on MVVM architecture.

Pokedex - Swift iOS (swift) version of skydove's android application, check it out. Based on MVVM architecture. It was written in memory of Ferhat, wh

Mert 2 Dec 4, 2022
ReleaseNotesKit - a brand new, elegant, and extremely simple way to present the recent version’s release notes to your users

ReleaseNotesKit This is ReleaseNotesKit, a brand new, elegant, and extremely simple way to present the recent version’s release notes to your users. R

Swapnanil Dhol 22 Jun 30, 2022
Unidirectional reactive architecture using new Apple Combine framework

Unidirectional Reactive Architecture. This is a Combine implemetation of ReactiveFeedback and RxFeedback

null 687 Nov 25, 2022
Version of PopcornTime app for iOS based on libtorrent and MobileVLCKit.

PopcornTime for iOS Version of PopcornTime app for iOS based on libtorrent and MobileVLCKit. There is still a lot of work to do, but in most cases it

Danylo Kostyshyn 193 Nov 28, 2022
Best architecture for SwiftUI + CombineBest architecture for SwiftUI + Combine

Best architecture for SwiftUI + Combine The content of the presentation: First of the proposed architectures - MVP + C Second of the proposed architec

Kyrylo Triskalo 3 Sep 1, 2022
Mvi Architecture for SwiftUI Apps. MVI is a unidirectional data flow architecture.

Mvi-SwiftUI If you like to read this on Medium , you can find it here MVI Architecture for SwiftUI Apps MVI Architecture Model-View-Intent (MVI) is a

null 12 Dec 7, 2022
An unofficial version of the Sandwiches app and pre-built materials similar to those used in the Introduction to SwiftUI session video from WWDC20

Unofficial Sandwiches The WWDC20 Session Introduction to SwiftUI provides a tutorial-like walk-through of building a list-detail SwiftUI app from scra

James Dempsey 94 Feb 11, 2022
iOS version of emitron

emitron (iOS) emitron is the code name for the raywenderlich.com app. This repo contains the code for the iOS version of the app. Contributing To cont

razeware 331 Dec 2, 2022
Recreating a fully functional version of iOS 4 in SwiftUI.

Updates: Version 1.0 is currently available ?? While I work on fixing an issue in Xcode 12.5+ with LazyVGrid, I recommend you build using Xcode 12.4 a

null 2.9k Jan 4, 2023
A weather app developed in React Native. It is the React Native version of SwiftWeather.

ReactNativeWeather A weather app developed in React Native. It is the React Native version of SwiftWeather How to run the app Install react-native If

Jake Lin 22 Jun 7, 2022
Native and encrypted password manager for iOS and macOS.

Open Sesame Native and encrypted password manager for iOS and macOS. What is it? OpenSesame is a free and powerful password manager that lets you mana

OpenSesame 431 Dec 28, 2022
Mahmoud-Abdelwahab 5 Nov 23, 2022
FSNotes is modern notes manager for macOS and iOS.

FSNotes FSNotes is modern notes manager for macOS and iOS. macOS app Key features Markdown-first. Also supports any plaintext and RTF files. Fast and

null 5.3k Dec 29, 2022
Github repo search with using mvvm-c and clean architecture and using combine swift

GitSearchWithMVVM-C-CleanArchitecture Github repo search with using mvvm-c and clean architecture and using combine swift. Content Overview How To Run

Muhammad Qasim Majeed 1 Mar 16, 2022
DEVOTE In this SwiftUI tutorial, we will develop a task manager iOS application with Core Data integration.

DEVOTE In this SwiftUI tutorial, we will develop a task manager iOS application with Core Data integration. This is not a project with a boring user interface. This iOS and iPadOS application provides a personal touch and feel.

Noye Samuel 1 Dec 21, 2021
Clip is a simple clipboard manager for iOS

Clip Clip is a clipboard manager for iOS that can monitor your clipboard indefinitely in the background — no jailbreak required. Clip is a simple clip

Riley Testut 297 Dec 27, 2022
Basic Todo list application built using the new SwiftUI framework and Core Data

Dub Dub Do - A sample TODO List Application in SwiftUI Updated for Xcode 11.5 This is a basic app that lets you create a list of todos, mark them as i

Stephen McMillan 67 Sep 28, 2022
The purpose of this app is to list all of the schools in New Jersey and assign ratings to chosen schools.

My First iOS App Introduction This is my first iOS App from my CSSE337 Enterprise Mobile Apps class for college. Here was the objective of the assignm

null 0 Dec 27, 2021