Giter Site home page Giter Site logo

easipro-clinic-pghd-ios's Introduction

EASI-PRO Clinic App

A Clinic app for Patient Generated Health Data including patient-reported outcomes (PROs), adaptive questionnaires, sensor based activity data

EASI-PRO Clinic is a standalone practitioner used iPad(iOS) app designed for use in the hospitals and clinics. It is built on the SMART on FHIR open specification and powered by the SMART Markers framework to dispatch PGHD requests to patients through the health care context. Built using Swift for iOS.

PGHD Requests

The app relies on the SMART Markers framework's Request protocol to dispatch a FHIR ServiceRequest embedded with the relevant PGHD instrument metadata– (reference to a FHIR Questionnaire or a ontological code identifying the instrument/data type). The list of available surveys are fetched from the linked FHIR server. Additionally, the PROMIS CAT surveys are pulled from its adaptive service provider via its FHIR API.

Functionality

  1. Practitioners login to their SMART enabled health system.
  2. Fetch all available PGHD Instruments from the FHIR server.
  3. Dispatch requests for the selected instrument; optionally associated with a schedule.
  4. Optionally, PGHD sessions can be administered right on the tablet device.

Configuration

  1. You will need Xcode version 11.3 and Swift 5.0 and a FHIR Server endpoints and optionally their SMART credentials.
  2. Clone repository: $ git clone --recursive https://github.com/smartmarkers/easipro-clinic-pghd-ios
  3. Make sure SMARTMarkers and its submodules are downloaded
  4. Add SMARTMarkers.xcodeproj, ResearchKit.xcodeproj, SMART.xcodeproj to the application's project workspace
  5. Compile ResearchKit and SMARTMarkers.xcodeproj
  6. Go to Project Settings -> General Tab and add the three frameworks and HealthKit to the Frameworks, Libraries, and Embedded Content.
  7. Build and run the app

You will need a SMART on FHIR endpoint to get started

extension FHIRManager {

    /**
     SMART Sandbox Credentials take from Config.xcconfig via App's
     - REPLACE Settings or create a new Client for other FHIR Servers
     */
    class func SMARTSandbox() -> FHIRManager {

        let infoDict = Bundle.main.infoDictionary!
        guard var baseURI = infoDict["FHIR_BASE_URL"] as? String else {
            fatalError("Need FHIR Endpoint")
        }
        if !baseURI.hasPrefix("http") {
            baseURI = "https://" + baseURI
        }

        let settings = [
            "client_name"   : "easipro-clinic",
            "client_id"     : "easipro-clinic-id",
            "redirect"      : "smartmarkers-home://smartcallback",
            "scope"         : "openid profile user/*.* launch"
        ]
        let smart_baseURL = URL(string: baseURI)!
        let client = Client(baseURL: smart_baseURL, settings: settings)
        client.authProperties.granularity = .tokenOnly

        //Initalize PROMIS FHIR server client with base uri, id, secret
        let promis = PROMISClient(..)
        return FHIRManager(main: client, promis: promis)
    }
}

  /*
  Initialize FHIRManager
  Can be done in AppDelegate
  */

lazy var fhir: FHIRManager! = {
        return FHIRManager.SMARTSandbox()
    }()


// Catch callback for SMART authorization
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

        if fhir.main.awaitingAuthCallback {
            return fhir.main.didRedirect(to: url)
        }

        return false
    }

SMART Markers

This app was built on top of the SMART Markers framework but with its own custom interface and user experience designed specifically for PROMIS instruments and has now expanded to include various instruments enabled by the framework. ResearchKit and SwiftSMART are used as its submodules.

easipro-clinic-pghd-ios's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

ressamaldebylh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.