Actualización en submódulo surveys-example

main
Juan David 3 months ago
parent e1cf6346fd
commit 9feead6b94

@ -0,0 +1,7 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAuTfFTJ/mBkHnK4Rp3/v5PEuhG/KWmmYxoGmYrHQ22jgAAAKCWvZUolr2V
KAAAAAtzc2gtZWQyNTUxOQAAACAuTfFTJ/mBkHnK4Rp3/v5PEuhG/KWmmYxoGmYrHQ22jg
AAAEDSaavKByFdT9fm5Kd80MLdY/8CPpzHCnpwxI1EO/rlUC5N8VMn+YGQecrhGnf+/k8S
6Eb8paaZjGgaZisdDbaOAAAAGm0xOTEyMDI5OEBtb3JlbGlhLnRlY25tLm14AQID
-----END OPENSSH PRIVATE KEY-----

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC5N8VMn+YGQecrhGnf+/k8S6Eb8paaZjGgaZisdDbaO m19120298@morelia.tecnm.mx

@ -7,46 +7,51 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
F53D0B8F2C366603003BED2B /* ActivitiesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F53D0B8E2C366602003BED2B /* ActivitiesManager.swift */; };
F53D0B952C366620003BED2B /* ActivitiesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F53D0B942C366620003BED2B /* ActivitiesViewController.swift */; };
F562558D2C1A1DF000BF163B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F562558C2C1A1DF000BF163B /* AppDelegate.swift */; }; F562558D2C1A1DF000BF163B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F562558C2C1A1DF000BF163B /* AppDelegate.swift */; };
F562558F2C1A1DF000BF163B /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F562558E2C1A1DF000BF163B /* SceneDelegate.swift */; }; F562558F2C1A1DF000BF163B /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F562558E2C1A1DF000BF163B /* SceneDelegate.swift */; };
F56255912C1A1DF000BF163B /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F56255902C1A1DF000BF163B /* ViewController.swift */; }; F56255912C1A1DF000BF163B /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F56255902C1A1DF000BF163B /* ViewController.swift */; };
F56255942C1A1DF000BF163B /* Base in Resources */ = {isa = PBXBuildFile; fileRef = F56255932C1A1DF000BF163B /* Base */; }; F56255942C1A1DF000BF163B /* Base in Resources */ = {isa = PBXBuildFile; fileRef = F56255932C1A1DF000BF163B /* Base */; };
F56255962C1A1DF200BF163B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F56255952C1A1DF200BF163B /* Assets.xcassets */; }; F56255962C1A1DF200BF163B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F56255952C1A1DF200BF163B /* Assets.xcassets */; };
F56255992C1A1DF200BF163B /* Base in Resources */ = {isa = PBXBuildFile; fileRef = F56255982C1A1DF200BF163B /* Base */; }; F56255992C1A1DF200BF163B /* Base in Resources */ = {isa = PBXBuildFile; fileRef = F56255982C1A1DF200BF163B /* Base */; };
F56255B02C1A1EF900BF163B /* ResearchKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F56255A82C1A1E7E00BF163B /* ResearchKit.framework */; }; F593A87F2C34E223005283D3 /* FormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F593A87E2C34E223005283D3 /* FormViewController.swift */; };
F56255B12C1A1EF900BF163B /* ResearchKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F56255A82C1A1E7E00BF163B /* ResearchKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; F593A8852C34E5F8005283D3 /* ConsentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F593A8842C34E5F8005283D3 /* ConsentViewController.swift */; };
F56255B22C1A1EF900BF163B /* ResearchKitActiveTask.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F56255AE2C1A1E7E00BF163B /* ResearchKitActiveTask.framework */; };
F56255B32C1A1EF900BF163B /* ResearchKitActiveTask.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F56255AE2C1A1E7E00BF163B /* ResearchKitActiveTask.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
F56255B42C1A1EF900BF163B /* ResearchKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F56255AC2C1A1E7E00BF163B /* ResearchKitUI.framework */; };
F56255B52C1A1EF900BF163B /* ResearchKitUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F56255AC2C1A1E7E00BF163B /* ResearchKitUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
F59F9B402C1A303B0083C2E9 /* ConsentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F59F9B3F2C1A303B0083C2E9 /* ConsentManager.swift */; }; F59F9B402C1A303B0083C2E9 /* ConsentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F59F9B3F2C1A303B0083C2E9 /* ConsentManager.swift */; };
F5F577462C2C8F7400FCB852 /* ResearchKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5773E2C2C8D0B00FCB852 /* ResearchKit.framework */; };
F5F577472C2C8F7400FCB852 /* ResearchKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F5F5773E2C2C8D0B00FCB852 /* ResearchKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
F5F577482C2C8F7400FCB852 /* ResearchKitActiveTask.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F577442C2C8D0B00FCB852 /* ResearchKitActiveTask.framework */; };
F5F577492C2C8F7400FCB852 /* ResearchKitActiveTask.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F5F577442C2C8D0B00FCB852 /* ResearchKitActiveTask.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
F5F5774A2C2C8F7400FCB852 /* ResearchKitUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5F577422C2C8D0B00FCB852 /* ResearchKitUI.framework */; };
F5F5774B2C2C8F7400FCB852 /* ResearchKitUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = F5F577422C2C8D0B00FCB852 /* ResearchKitUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
F5F7D6DE2C1C13E80090E8CB /* SurveyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F7D6DD2C1C13E80090E8CB /* SurveyManager.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
F56255A72C1A1E7E00BF163B /* PBXContainerItemProxy */ = { F5F5773D2C2C8D0B00FCB852 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */; containerPortal = F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */;
proxyType = 2; proxyType = 2;
remoteGlobalIDString = B183A5951A8535D100C76870; remoteGlobalIDString = B183A5951A8535D100C76870;
remoteInfo = ResearchKit; remoteInfo = ResearchKit;
}; };
F56255A92C1A1E7E00BF163B /* PBXContainerItemProxy */ = { F5F5773F2C2C8D0B00FCB852 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */; containerPortal = F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */;
proxyType = 2; proxyType = 2;
remoteGlobalIDString = 86CC8E9A1AC09332001CCD89; remoteGlobalIDString = 86CC8E9A1AC09332001CCD89;
remoteInfo = ResearchKitTests; remoteInfo = ResearchKitTests;
}; };
F56255AB2C1A1E7E00BF163B /* PBXContainerItemProxy */ = { F5F577412C2C8D0B00FCB852 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */; containerPortal = F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */;
proxyType = 2; proxyType = 2;
remoteGlobalIDString = CA1C7A5A288B0C68004DAB3A; remoteGlobalIDString = CA1C7A5A288B0C68004DAB3A;
remoteInfo = "ResearchKitUI (iOS)"; remoteInfo = "ResearchKitUI (iOS)";
}; };
F56255AD2C1A1E7E00BF163B /* PBXContainerItemProxy */ = { F5F577432C2C8D0B00FCB852 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy; isa = PBXContainerItemProxy;
containerPortal = F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */; containerPortal = F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */;
proxyType = 2; proxyType = 2;
remoteGlobalIDString = CAD08967289DD747007B2A98; remoteGlobalIDString = CAD08967289DD747007B2A98;
remoteInfo = ResearchKitActiveTask; remoteInfo = ResearchKitActiveTask;
@ -60,9 +65,9 @@
dstPath = ""; dstPath = "";
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
F56255B52C1A1EF900BF163B /* ResearchKitUI.framework in Embed Frameworks */, F5F5774B2C2C8F7400FCB852 /* ResearchKitUI.framework in Embed Frameworks */,
F56255B12C1A1EF900BF163B /* ResearchKit.framework in Embed Frameworks */, F5F577472C2C8F7400FCB852 /* ResearchKit.framework in Embed Frameworks */,
F56255B32C1A1EF900BF163B /* ResearchKitActiveTask.framework in Embed Frameworks */, F5F577492C2C8F7400FCB852 /* ResearchKitActiveTask.framework in Embed Frameworks */,
); );
name = "Embed Frameworks"; name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -70,6 +75,8 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
F53D0B8E2C366602003BED2B /* ActivitiesManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivitiesManager.swift; sourceTree = "<group>"; };
F53D0B942C366620003BED2B /* ActivitiesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivitiesViewController.swift; sourceTree = "<group>"; };
F56255892C1A1DF000BF163B /* surveys-example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "surveys-example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; F56255892C1A1DF000BF163B /* surveys-example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "surveys-example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
F562558C2C1A1DF000BF163B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; F562558C2C1A1DF000BF163B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
F562558E2C1A1DF000BF163B /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; F562558E2C1A1DF000BF163B /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
@ -78,8 +85,11 @@
F56255952C1A1DF200BF163B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; F56255952C1A1DF200BF163B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
F56255982C1A1DF200BF163B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; F56255982C1A1DF200BF163B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
F562559A2C1A1DF200BF163B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; F562559A2C1A1DF200BF163B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ResearchKit.xcodeproj; path = "../../../../Downloads/ResearchKit-main/ResearchKit.xcodeproj"; sourceTree = "<group>"; }; F593A87E2C34E223005283D3 /* FormViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormViewController.swift; sourceTree = "<group>"; };
F593A8842C34E5F8005283D3 /* ConsentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConsentViewController.swift; sourceTree = "<group>"; };
F59F9B3F2C1A303B0083C2E9 /* ConsentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConsentManager.swift; sourceTree = "<group>"; }; F59F9B3F2C1A303B0083C2E9 /* ConsentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConsentManager.swift; sourceTree = "<group>"; };
F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ResearchKit.xcodeproj; path = "../../ResearchKit-main/ResearchKit.xcodeproj"; sourceTree = "<group>"; };
F5F7D6DD2C1C13E80090E8CB /* SurveyManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SurveyManager.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -87,9 +97,9 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
F56255B42C1A1EF900BF163B /* ResearchKitUI.framework in Frameworks */, F5F5774A2C2C8F7400FCB852 /* ResearchKitUI.framework in Frameworks */,
F56255B02C1A1EF900BF163B /* ResearchKit.framework in Frameworks */, F5F577462C2C8F7400FCB852 /* ResearchKit.framework in Frameworks */,
F56255B22C1A1EF900BF163B /* ResearchKitActiveTask.framework in Frameworks */, F5F577482C2C8F7400FCB852 /* ResearchKitActiveTask.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -99,7 +109,7 @@
F56255802C1A1DF000BF163B = { F56255802C1A1DF000BF163B = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */, F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */,
F562558B2C1A1DF000BF163B /* surveys-example */, F562558B2C1A1DF000BF163B /* surveys-example */,
F562558A2C1A1DF000BF163B /* Products */, F562558A2C1A1DF000BF163B /* Products */,
F56255AF2C1A1EF900BF163B /* Frameworks */, F56255AF2C1A1EF900BF163B /* Frameworks */,
@ -118,33 +128,38 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
F562558C2C1A1DF000BF163B /* AppDelegate.swift */, F562558C2C1A1DF000BF163B /* AppDelegate.swift */,
F59F9B3F2C1A303B0083C2E9 /* ConsentManager.swift */,
F562558E2C1A1DF000BF163B /* SceneDelegate.swift */, F562558E2C1A1DF000BF163B /* SceneDelegate.swift */,
F59F9B3F2C1A303B0083C2E9 /* ConsentManager.swift */,
F5F7D6DD2C1C13E80090E8CB /* SurveyManager.swift */,
F53D0B8E2C366602003BED2B /* ActivitiesManager.swift */,
F56255902C1A1DF000BF163B /* ViewController.swift */, F56255902C1A1DF000BF163B /* ViewController.swift */,
F56255922C1A1DF000BF163B /* Main.storyboard */, F593A8842C34E5F8005283D3 /* ConsentViewController.swift */,
F593A87E2C34E223005283D3 /* FormViewController.swift */,
F53D0B942C366620003BED2B /* ActivitiesViewController.swift */,
F56255952C1A1DF200BF163B /* Assets.xcassets */, F56255952C1A1DF200BF163B /* Assets.xcassets */,
F56255922C1A1DF000BF163B /* Main.storyboard */,
F56255972C1A1DF200BF163B /* LaunchScreen.storyboard */, F56255972C1A1DF200BF163B /* LaunchScreen.storyboard */,
F562559A2C1A1DF200BF163B /* Info.plist */, F562559A2C1A1DF200BF163B /* Info.plist */,
); );
path = "surveys-example"; path = "surveys-example";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
F56255A12C1A1E7E00BF163B /* Products */ = { F56255AF2C1A1EF900BF163B /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
F56255A82C1A1E7E00BF163B /* ResearchKit.framework */,
F56255AA2C1A1E7E00BF163B /* ResearchKitTests.xctest */,
F56255AC2C1A1E7E00BF163B /* ResearchKitUI.framework */,
F56255AE2C1A1E7E00BF163B /* ResearchKitActiveTask.framework */,
); );
name = Products; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
F56255AF2C1A1EF900BF163B /* Frameworks */ = { F5F577372C2C8D0B00FCB852 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
F5F5773E2C2C8D0B00FCB852 /* ResearchKit.framework */,
F5F577402C2C8D0B00FCB852 /* ResearchKitTests.xctest */,
F5F577422C2C8D0B00FCB852 /* ResearchKitUI.framework */,
F5F577442C2C8D0B00FCB852 /* ResearchKitActiveTask.framework */,
); );
name = Frameworks; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
/* End PBXGroup section */ /* End PBXGroup section */
@ -196,8 +211,8 @@
projectDirPath = ""; projectDirPath = "";
projectReferences = ( projectReferences = (
{ {
ProductGroup = F56255A12C1A1E7E00BF163B /* Products */; ProductGroup = F5F577372C2C8D0B00FCB852 /* Products */;
ProjectRef = F56255A02C1A1E7E00BF163B /* ResearchKit.xcodeproj */; ProjectRef = F5F577362C2C8D0B00FCB852 /* ResearchKit.xcodeproj */;
}, },
); );
projectRoot = ""; projectRoot = "";
@ -208,32 +223,32 @@
/* End PBXProject section */ /* End PBXProject section */
/* Begin PBXReferenceProxy section */ /* Begin PBXReferenceProxy section */
F56255A82C1A1E7E00BF163B /* ResearchKit.framework */ = { F5F5773E2C2C8D0B00FCB852 /* ResearchKit.framework */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = wrapper.framework; fileType = wrapper.framework;
path = ResearchKit.framework; path = ResearchKit.framework;
remoteRef = F56255A72C1A1E7E00BF163B /* PBXContainerItemProxy */; remoteRef = F5F5773D2C2C8D0B00FCB852 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
F56255AA2C1A1E7E00BF163B /* ResearchKitTests.xctest */ = { F5F577402C2C8D0B00FCB852 /* ResearchKitTests.xctest */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = wrapper.cfbundle; fileType = wrapper.cfbundle;
path = ResearchKitTests.xctest; path = ResearchKitTests.xctest;
remoteRef = F56255A92C1A1E7E00BF163B /* PBXContainerItemProxy */; remoteRef = F5F5773F2C2C8D0B00FCB852 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
F56255AC2C1A1E7E00BF163B /* ResearchKitUI.framework */ = { F5F577422C2C8D0B00FCB852 /* ResearchKitUI.framework */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = wrapper.framework; fileType = wrapper.framework;
path = ResearchKitUI.framework; path = ResearchKitUI.framework;
remoteRef = F56255AB2C1A1E7E00BF163B /* PBXContainerItemProxy */; remoteRef = F5F577412C2C8D0B00FCB852 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
F56255AE2C1A1E7E00BF163B /* ResearchKitActiveTask.framework */ = { F5F577442C2C8D0B00FCB852 /* ResearchKitActiveTask.framework */ = {
isa = PBXReferenceProxy; isa = PBXReferenceProxy;
fileType = wrapper.framework; fileType = wrapper.framework;
path = ResearchKitActiveTask.framework; path = ResearchKitActiveTask.framework;
remoteRef = F56255AD2C1A1E7E00BF163B /* PBXContainerItemProxy */; remoteRef = F5F577432C2C8D0B00FCB852 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR; sourceTree = BUILT_PRODUCTS_DIR;
}; };
/* End PBXReferenceProxy section */ /* End PBXReferenceProxy section */
@ -256,9 +271,14 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
F593A87F2C34E223005283D3 /* FormViewController.swift in Sources */,
F59F9B402C1A303B0083C2E9 /* ConsentManager.swift in Sources */, F59F9B402C1A303B0083C2E9 /* ConsentManager.swift in Sources */,
F53D0B8F2C366603003BED2B /* ActivitiesManager.swift in Sources */,
F593A8852C34E5F8005283D3 /* ConsentViewController.swift in Sources */,
F53D0B952C366620003BED2B /* ActivitiesViewController.swift in Sources */,
F56255912C1A1DF000BF163B /* ViewController.swift in Sources */, F56255912C1A1DF000BF163B /* ViewController.swift in Sources */,
F562558D2C1A1DF000BF163B /* AppDelegate.swift in Sources */, F562558D2C1A1DF000BF163B /* AppDelegate.swift in Sources */,
F5F7D6DE2C1C13E80090E8CB /* SurveyManager.swift in Sources */,
F562558F2C1A1DF000BF163B /* SceneDelegate.swift in Sources */, F562558F2C1A1DF000BF163B /* SceneDelegate.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -337,7 +357,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17.5; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES; LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
@ -394,7 +414,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17.5; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES; LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;

@ -7,7 +7,7 @@
<key>surveys-example.xcscheme_^#shared#^_</key> <key>surveys-example.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>4</integer> <integer>3</integer>
</dict> </dict>
</dict> </dict>
</dict> </dict>

@ -0,0 +1,8 @@
//
// ActivitiesManager.swift
// surveys-example
//
// Created by Juan David López Regalado on 03/07/24.
//
import Foundation

@ -0,0 +1,29 @@
//
// ActivitiesViewController.swift
// surveys-example
//
// Created by Juan David López Regalado on 03/07/24.
//
import UIKit
class ActivitiesViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "deporte.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "form.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "formulario-de-consentimiento-del-donante.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "formuu.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "logo correr.jpg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

@ -1,7 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
@ -11,15 +13,24 @@
<objects> <objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController"> <viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> <subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="logo correr" translatesAutoresizingMaskIntoConstraints="NO" id="23U-Ly-OvV">
<rect key="frame" x="69" y="293" width="255" height="266"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view> </view>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="53" y="375"/> <point key="canvasLocation" x="52.671755725190835" y="374.64788732394368"/>
</scene> </scene>
</scenes> </scenes>
<resources>
<image name="logo correr" width="1181" height="1181"/>
</resources>
</document> </document>

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Gts-2a-IhC">
<device id="retina6_12" orientation="portrait" appearance="light"/> <device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
@ -9,54 +9,216 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<scenes> <scenes>
<!--View Controller--> <!--Consent-->
<scene sceneID="tne-QT-ifu"> <scene sceneID="tne-QT-ifu">
<objects> <objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="surveys_example" customModuleProvider="target" sceneMemberID="viewController"> <viewController id="BYZ-38-t0r" customClass="ConsentViewController" customModule="surveys_example" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/> <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="udU-YT-Wn2"> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EqM-dd-p2T">
<rect key="frame" x="128" y="533" width="137" height="52"/> <rect key="frame" x="110" y="734" width="173" height="56"/>
<fontDescription key="fontDescription" type="system" pointSize="20"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Go to Form"/>
<connections>
<segue destination="Nbl-1x-KIg" kind="show" id="zk4-VI-KQD"/>
</connections>
</button>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="formulario-de-consentimiento-del-donante" translatesAutoresizingMaskIntoConstraints="NO" id="sNk-Nw-wu1">
<rect key="frame" x="69" y="103" width="254" height="332"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ExQ-tt-cSI">
<rect key="frame" x="80" y="468" width="233" height="35"/>
<fontDescription key="fontDescription" type="system" pointSize="25"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Start Survey"/> <state key="normal" title="Start Consent"/>
<buttonConfiguration key="configuration" style="plain" title="Start Survey" titleAlignment="center">
<fontDescription key="titleFontDescription" style="UICTFontTextStyleTitle3"/>
</buttonConfiguration>
<connections> <connections>
<action selector="startSurveyTapped:" destination="BYZ-38-t0r" eventType="touchUpInside" id="0G5-au-7td"/> <action selector="startConsent:" destination="BYZ-38-t0r" eventType="touchUpInside" id="jOk-BA-SAh"/>
</connections> </connections>
</button> </button>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" text="Biomarker analysis study on Apple devices to detect the level of sedentary lifestyle." textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="O9Y-Kh-XQC"> </subviews>
<rect key="frame" x="72" y="146" width="248" height="311"/> <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="sNk-Nw-wu1" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="69" id="Ajb-re-JKq"/>
<constraint firstItem="EqM-dd-p2T" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="110" id="Dac-Uk-awq"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="sNk-Nw-wu1" secondAttribute="trailing" constant="70" id="GVE-5v-Mly"/>
<constraint firstItem="sNk-Nw-wu1" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" id="Oif-jB-T5J"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="EqM-dd-p2T" secondAttribute="trailing" constant="110" id="Q1V-W2-sAf"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="ExQ-tt-cSI" secondAttribute="bottom" constant="315" id="aDr-SR-Ioi"/>
<constraint firstItem="ExQ-tt-cSI" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="80" id="e8p-1w-nej"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="ExQ-tt-cSI" secondAttribute="trailing" constant="80" id="gKD-me-eP8"/>
<constraint firstItem="ExQ-tt-cSI" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="365" id="ldL-Wo-S60"/>
<constraint firstItem="EqM-dd-p2T" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="631" id="ph9-bH-0Fj"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="sNk-Nw-wu1" secondAttribute="bottom" constant="383" id="wTC-kG-dIg"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="EqM-dd-p2T" secondAttribute="bottom" constant="28" id="wrf-d4-Gc4"/>
</constraints>
</view>
<navigationItem key="navigationItem" title="Consent" id="TE4-5w-tjf"/>
<connections>
<outlet property="startForm" destination="EqM-dd-p2T" id="1Cx-hP-Fqf"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2817.5572519083967" y="35.91549295774648"/>
</scene>
<!--Form-->
<scene sceneID="6K3-bR-Alf">
<objects>
<viewController storyboardIdentifier="FormViewController" id="Nbl-1x-KIg" customClass="FormViewController" customModule="surveys_example" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="s4t-Jo-DNc">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="avj-6d-I6H">
<rect key="frame" x="103" y="446" width="187" height="35"/>
<fontDescription key="fontDescription" type="system" pointSize="25"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Start Form"/>
<connections>
<action selector="startForm:" destination="Nbl-1x-KIg" eventType="touchUpInside" id="2x5-yk-PNu"/>
</connections>
</button>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="formuu" translatesAutoresizingMaskIntoConstraints="NO" id="OYQ-tA-ihz">
<rect key="frame" x="68" y="141" width="292" height="240"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yfp-XL-sdj">
<rect key="frame" x="124" y="746" width="166" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="20"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Go to the Activities"/>
<connections>
<segue destination="Wh2-7u-K1r" kind="show" id="Iap-i3-OHc"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="vBK-Y7-R4g"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="vBK-Y7-R4g" firstAttribute="trailing" secondItem="OYQ-tA-ihz" secondAttribute="trailing" constant="33" id="8oD-3e-JV7"/>
<constraint firstItem="avj-6d-I6H" firstAttribute="top" secondItem="vBK-Y7-R4g" secondAttribute="top" constant="343" id="LCV-KX-bhw"/>
<constraint firstItem="OYQ-tA-ihz" firstAttribute="top" secondItem="vBK-Y7-R4g" secondAttribute="top" constant="38" id="Lcx-Uj-Hku"/>
<constraint firstItem="OYQ-tA-ihz" firstAttribute="leading" secondItem="vBK-Y7-R4g" secondAttribute="leading" constant="68" id="VkU-f0-YJx"/>
<constraint firstItem="vBK-Y7-R4g" firstAttribute="trailing" secondItem="avj-6d-I6H" secondAttribute="trailing" constant="103" id="YKK-X5-O6W"/>
<constraint firstItem="avj-6d-I6H" firstAttribute="leading" secondItem="vBK-Y7-R4g" secondAttribute="leading" constant="103" id="aZH-AM-mlY"/>
<constraint firstItem="vBK-Y7-R4g" firstAttribute="bottom" secondItem="OYQ-tA-ihz" secondAttribute="bottom" constant="437" id="ufG-nF-A4c"/>
<constraint firstItem="vBK-Y7-R4g" firstAttribute="bottom" secondItem="avj-6d-I6H" secondAttribute="bottom" constant="337" id="x1k-3m-fS8"/>
</constraints>
</view>
<navigationItem key="navigationItem" title="Form" id="atc-wa-Dj0"/>
<connections>
<outlet property="startActivities" destination="yfp-XL-sdj" id="FcZ-3s-coy"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="rFd-gj-aw5" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3541.2213740458014" y="35.91549295774648"/>
</scene>
<!--View Controller-->
<scene sceneID="rMD-3s-dMs">
<objects>
<viewController id="wfR-Os-UWF" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="6jb-bl-57P">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="pcie-logo" translatesAutoresizingMaskIntoConstraints="NO" id="jV5-Zs-y7v">
<rect key="frame" x="53" y="422" width="287" height="194"/>
</imageView>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" text="Biomarker analysis study on Apple devices to detect the level of sedentary lifestyle." textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="O9Y-Kh-XQC">
<rect key="frame" x="72" y="103" width="249" height="311"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/>
<color key="textColor" systemColor="labelColor"/> <color key="textColor" systemColor="labelColor"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="36"/> <fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="38"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/> <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView> </textView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="pcie-logo" translatesAutoresizingMaskIntoConstraints="NO" id="jV5-Zs-y7v"> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UlK-nx-jGM">
<rect key="frame" x="97" y="690" width="198" height="111"/> <rect key="frame" x="80" y="660" width="233" height="36"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <fontDescription key="fontDescription" type="system" pointSize="25"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="I want to help"/>
<connections>
<segue destination="BYZ-38-t0r" kind="show" id="VhU-Q1-XFr"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="aOH-kI-E6O"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="aOH-kI-E6O" firstAttribute="trailing" secondItem="jV5-Zs-y7v" secondAttribute="trailing" constant="53" id="4BV-Ml-7uc"/>
<constraint firstItem="jV5-Zs-y7v" firstAttribute="leading" secondItem="aOH-kI-E6O" secondAttribute="leading" constant="53" id="7F9-tv-ZIL"/>
<constraint firstItem="O9Y-Kh-XQC" firstAttribute="top" secondItem="aOH-kI-E6O" secondAttribute="top" id="8mm-Nl-Nkr"/>
<constraint firstItem="aOH-kI-E6O" firstAttribute="bottom" secondItem="UlK-nx-jGM" secondAttribute="bottom" constant="122" id="CCx-xm-oLv"/>
<constraint firstItem="aOH-kI-E6O" firstAttribute="bottom" secondItem="O9Y-Kh-XQC" secondAttribute="bottom" constant="404" id="SWK-HH-xgS"/>
<constraint firstItem="aOH-kI-E6O" firstAttribute="trailing" secondItem="UlK-nx-jGM" secondAttribute="trailing" constant="80" id="VqZ-Wj-iaR"/>
<constraint firstItem="UlK-nx-jGM" firstAttribute="top" secondItem="aOH-kI-E6O" secondAttribute="top" constant="557" id="aUO-eC-A0E"/>
<constraint firstItem="jV5-Zs-y7v" firstAttribute="top" secondItem="aOH-kI-E6O" secondAttribute="top" constant="319" id="ab6-2t-0jy"/>
<constraint firstItem="O9Y-Kh-XQC" firstAttribute="leading" secondItem="aOH-kI-E6O" secondAttribute="leading" constant="72" id="dNP-fg-7Ue"/>
<constraint firstItem="UlK-nx-jGM" firstAttribute="leading" secondItem="aOH-kI-E6O" secondAttribute="leading" constant="80" id="et8-rn-L4E"/>
<constraint firstItem="aOH-kI-E6O" firstAttribute="trailing" secondItem="O9Y-Kh-XQC" secondAttribute="trailing" constant="72" id="j8x-jf-QU8"/>
<constraint firstItem="aOH-kI-E6O" firstAttribute="bottom" secondItem="jV5-Zs-y7v" secondAttribute="bottom" constant="202" id="tRY-Sy-qF8"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="Nrd-by-PYZ"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="vbo-Zh-zJm" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2081.679389312977" y="35.91549295774648"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="yz0-Y9-enD">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="Gts-2a-IhC" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" id="KI5-ta-Ufb">
<rect key="frame" x="0.0" y="59" width="393" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="wfR-Os-UWF" kind="relationship" relationship="rootViewController" id="bFu-hQ-jc4"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yMd-rH-BgS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1341" y="36"/>
</scene>
<!--Activities-->
<scene sceneID="E5F-3o-ows">
<objects>
<viewController id="Wh2-7u-K1r" customClass="ActivitiesViewController" customModule="surveys_example" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="TEP-DU-Uby">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="deporte" translatesAutoresizingMaskIntoConstraints="NO" id="Un0-wR-vfc">
<rect key="frame" x="46" y="138" width="301" height="267"/>
</imageView> </imageView>
</subviews> </subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> <viewLayoutGuide key="safeArea" id="Y8v-Yr-Xdo"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints> <constraints>
<constraint firstItem="udU-YT-Wn2" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="474" id="4Lv-uj-sfs"/> <constraint firstItem="Y8v-Yr-Xdo" firstAttribute="trailing" secondItem="Un0-wR-vfc" secondAttribute="trailing" constant="46" id="4aP-fy-hbd"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="udU-YT-Wn2" secondAttribute="trailing" constant="128" id="KxA-OY-V2k"/> <constraint firstItem="Un0-wR-vfc" firstAttribute="top" secondItem="Y8v-Yr-Xdo" secondAttribute="top" constant="35" id="Kbh-zg-wxW"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="udU-YT-Wn2" secondAttribute="bottom" constant="233" id="q22-wR-4RZ"/> <constraint firstItem="Un0-wR-vfc" firstAttribute="leading" secondItem="Y8v-Yr-Xdo" secondAttribute="leading" constant="46" id="Mu5-xN-Jtb"/>
<constraint firstItem="udU-YT-Wn2" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="128" id="sa7-Jh-KZz"/> <constraint firstItem="Y8v-Yr-Xdo" firstAttribute="bottom" secondItem="Un0-wR-vfc" secondAttribute="bottom" constant="413" id="oLp-I0-xTb"/>
</constraints> </constraints>
</view> </view>
<navigationItem key="navigationItem" title="Activities" id="hgw-1Q-Qh9"/>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="xYD-VM-M5o" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="55.725190839694655" y="3.5211267605633805"/> <point key="canvasLocation" x="4319.8473282442746" y="35.91549295774648"/>
</scene> </scene>
</scenes> </scenes>
<resources> <resources>
<image name="deporte" width="512" height="512"/>
<image name="formulario-de-consentimiento-del-donante" width="512" height="512"/>
<image name="formuu" width="512" height="512"/>
<image name="pcie-logo" width="3766" height="1429"/> <image name="pcie-logo" width="3766" height="1429"/>
<systemColor name="labelColor"> <systemColor name="labelColor">
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>

@ -67,8 +67,8 @@ class ConsentManager{
webViewStep.showSignatureAfterContent = true webViewStep.showSignatureAfterContent = true
let task = ORKOrderedTask(identifier: "ConsentTask", steps: [welcomeStep, beforeYouJoin, webViewStep, /*other steps*/])
let task = ORKOrderedTask(identifier: "ConsentTask", steps: [welcomeStep, beforeYouJoin, webViewStep /*other steps*/])
return task return task

@ -0,0 +1,47 @@
//
// ConsentViewController.swift
// surveys-example
//
// Created by Juan David López Regalado on 02/07/24.
//
import UIKit
import ResearchKit
import ResearchKitUI
class ConsentViewController: UIViewController, ORKTaskViewControllerDelegate {
@IBOutlet weak var startForm: UIButton!
var consentCompleted = false
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
startForm.isEnabled = false // Inicialmente deshabilitamos el botón
}
@IBAction func startConsent(_ sender: Any) {
let consentTask = ConsentManager.shared.createConsentTask()
let taskViewController = ORKTaskViewController(task: consentTask, taskRun: nil)
taskViewController.delegate = self
present(taskViewController, animated: true, completion: nil)
}
func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskFinishReason, error: Error?) {
taskViewController.dismiss(animated: true, completion: nil)
if reason == .completed {
consentCompleted = true
startForm.isEnabled = true // Habilitamos el botón si el consentimiento se completó correctamente
} else {
consentCompleted = false
startForm.isEnabled = false // Mantenemos el botón deshabilitado si no se completó el consentimiento
}
}
}

@ -0,0 +1,47 @@
//
// FormViewController.swift
// surveys-example
//
// Created by Juan David López Regalado on 02/07/24.
//
import UIKit
import ResearchKit
import ResearchKitUI
class FormViewController: UIViewController, ORKTaskViewControllerDelegate {
@IBOutlet weak var startActivities: UIButton!
var formCompleted = false // Variable que controla si el consentimiento se ha completado
override func viewDidLoad() {
super.viewDidLoad()
startActivities.isEnabled = false // Inicialmente deshabilitamos el botón
// Do any additional setup after loading the view.
}
@IBAction func startForm(_ sender: Any) {
let taskViewController = ORKTaskViewController(task: SurveyManager.shared.createSurveyTask(), taskRun: nil)
taskViewController.delegate = self
present(taskViewController, animated: true, completion: nil)
}
func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskFinishReason, error: (any Error)?) {
taskViewController.dismiss(animated: true, completion: nil)
if reason == .completed {
formCompleted = true
startActivities.isEnabled = true // Habilitamos el botón si el consentimiento se completó correctamente
} else {
formCompleted = false
startActivities.isEnabled = false // Mantenemos el botón deshabilitado si no se completó el consentimiento
}
}
}

@ -0,0 +1,25 @@
//
// PDFManager.swift
// surveys-example
//
// Created by Juan David López Regalado on 27/06/24.
//
import Foundation
import ResearchKit
guard let stepResult = taskViewController.result.result(forIdentifier: "WebViewStepIdentifier") as? ORKStepResult else {
return
}
if let webViewStepResult = stepResult.results?.first as? ORKWebViewStepResult, let html = webViewStepResult.htmlWithSignature {
let htmlFormatter = ORKHTMLPDFWriter()
htmlFormatter.writePDF(fromHTML: html) { data, error in
let pdfURL = FileManager.default.temporaryDirectory
.appendingPathComponent("consentTask")
.appendingPathExtension("pdf")
try? data.write(to: pdfURL)
}
}

@ -0,0 +1,366 @@
//
// Tasks.swift
// surveys-example
//
// Created by Juan David López Regalado on 14/06/24.
//
import Foundation
import ResearchKit
class SurveyManager {
static let shared = SurveyManager()
func createSurveyTask() -> ORKTask {
// Agradecimiento y explicaciojn
let thankUJoin = ORKInstructionStep(identifier: "thankUJoin")
thankUJoin.title = "Thank You!"
thankUJoin.iconImage = UIImage(systemName: "heart.fill")
thankUJoin.detailText = "Thanks For Join Us, I Would Appreciate It If You Answered The Next Questions as Honestly as Possible, remember That Your Data is Private, it will not be Shared with Anyone Else and Will Only be Used for the Proposed Study."
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Ficha de identificacion
let personalInfoStepTitle = "Personal Information"
let personalInfoStep = ORKInstructionStep(identifier: "personalInfoStep")
personalInfoStep.title = personalInfoStepTitle
personalInfoStep.text = "Here you will find questions about your personal data"
personalInfoStep.image = UIImage(systemName: "person.fill")
// Nombre
let textQuestionStepTitle = "Name"
let textAnswerFormat = ORKTextAnswerFormat(maximumLength: 30)
textAnswerFormat.multipleLines = false
let textQuestionStep = ORKQuestionStep(identifier: "textName", title: textQuestionStepTitle, question: "What is your name?", answer: textAnswerFormat)
// Sexo
let multiGenderChoice = "Sex"
let gendChoices = [
ORKTextChoice(text: "Male", value: "male" as NSString),
ORKTextChoice(text: "Female", value: "female" as NSString),
ORKTextChoice(text: "I prefer not to say", value: "Inf" as NSString)]
let genderChoiceFormat = ORKTextChoiceAnswerFormat(style: .singleChoice, textChoices: gendChoices)
let multiGenderQuestionStep = ORKQuestionStep(identifier: "multiGenderQuestionStep", title: multiGenderChoice,question: "What is your Sex?", answer: genderChoiceFormat)
// Fecha de nacimiento
let dobStepTitle = "Date of Birth"
let dobAnswerFormat = ORKDateAnswerFormat(style: .date)
let dobStep = ORKQuestionStep(identifier: "dobStep", title: dobStepTitle, question: "When were you born?", answer: dobAnswerFormat)
// Peso
let weighQuestion = ORKFormItem(sectionTitle: "What is your weight?")
let weightQuestionFormItem = ORKFormItem(identifier: "weightQuestionForm", text: nil, answerFormat: ORKAnswerFormat.weightAnswerFormat())
weightQuestionFormItem.placeholder = "Tap here"
let weighForm = ORKFormStep(identifier: "WeightQuestionIde", title: "Weigh", text: " ")
weighForm.formItems = [weighQuestion, weightQuestionFormItem]
// Estatura
let heightQuestion = ORKFormItem(sectionTitle: "What is your height?")
let heightQuestionFormItem = ORKFormItem(identifier: "weightQuestionForm", text: nil, answerFormat: ORKAnswerFormat.heightAnswerFormat())
heightQuestionFormItem.placeholder = "Tap here"
let heightForm = ORKFormStep(identifier: "HeightQuestionIde", title: "Height", text: " ")
heightForm.formItems = [heightQuestion, heightQuestionFormItem]
// Residencia
let residenceChoice = "Reside"
let residenceChoices = [
ORKTextChoice(text: "Urban", value: "urban" as NSString),
ORKTextChoice(text: "Sub-urban", value: "suburban" as NSString),
ORKTextChoice(text: "Rural", value: "Rural" as NSString)]
let residenceChoiceFormat = ORKTextChoiceAnswerFormat(style: .singleChoice, textChoices: residenceChoices)
let residenceQuestionStep = ORKQuestionStep(identifier: "residenceStep", title: residenceChoice,question: "Where do you Reside?", answer: residenceChoiceFormat)
// Pregunta de ocupación
let occupationQuestionTitle = "Occupation"
let occupationChoices = [
ORKTextChoice(text: "Student", value: "student" as NSString),
ORKTextChoice(text: "Employed", value: "employed" as NSString),
ORKTextChoice(text: "Self-Employed", value: "self_employed" as NSString),
ORKTextChoice(text: "Unemployed", value: "unemployed" as NSString),
ORKTextChoice(text: "Retired", value: "retired" as NSString),
ORKTextChoice(text: "Homemaker", value: "homemaker" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString)
]
let occupationChoiceFormat = ORKValuePickerAnswerFormat(textChoices: occupationChoices)
let occupationQuestionStep = ORKQuestionStep(identifier: "occupationQuestionStep", title: occupationQuestionTitle, question: "What is your occupation?", answer: occupationChoiceFormat)
// Pregunta adicional para especificar detalles de ocupación
_ = "Please specify your occupation:"
let specifyOccupationAnswerFormat = ORKTextAnswerFormat(maximumLength: 100)
specifyOccupationAnswerFormat.multipleLines = true // Permitir múltiples líneas para detalles extensos
// Añadir la pregunta adicional después de la pregunta de ocupación
let occupationFormStep = ORKFormStep(identifier: "OccupationFormStep", title: "Occupation", text: "Select your occupation and specify details if necessary.")
occupationFormStep.formItems = [
ORKFormItem(identifier: "OccupationFormItem", text: nil, answerFormat: occupationChoiceFormat),
ORKFormItem(identifier: "SpecifyOccupationDetailsFormItem", text: nil, answerFormat: specifyOccupationAnswerFormat)
]
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-
// Heredo Familiares
let hereditaryInfoStepTitle = "Hereditary Family History"
let hereditaryInfoStep = ORKInstructionStep(identifier: "hereditaryInfoStep")
hereditaryInfoStep.title = hereditaryInfoStepTitle
hereditaryInfoStep.text = "Here you will find questions about your family, and their diseases"
hereditaryInfoStep.image = UIImage(systemName: "person.3.fill")
// Patologías hereditarias
let patologyChoice = "Pathologies"
let patologyChoices = [
ORKTextChoice(text: "Diabetes", value: "diabetes" as NSString),
ORKTextChoice(text: "Heart Disease", value: "heartDisease" as NSString),
ORKTextChoice(text: "Hypertension", value: "hypertension" as NSString),
ORKTextChoice(text: "Cancer", value: "cancer" as NSString),
ORKTextChoice(text: "Asthma", value: "asthma" as NSString)]
let patologyChoiceFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: patologyChoices)
let patologyQuestionStep = ORKQuestionStep(identifier: "patologyStep", title: patologyChoice, question: "Select only the pathologies that your close relatives such as father, mother, grandfather or grandmother have or had.", answer: patologyChoiceFormat)
// Patologías mentales hereditarias
let mentalPatologyChoice = "Mental Pathologies"
let mentalPatologyChoices = [
ORKTextChoice(text: "Bipolarity", value: "bipolarity" as NSString),
ORKTextChoice(text: "Autism", value: "autism" as NSString),
ORKTextChoice(text: "Depression", value: "depression" as NSString),
ORKTextChoice(text: "ADHD", value: "adhd" as NSString),
ORKTextChoice(text: "Anxiety", value: "anxiety" as NSString)]
let mentalPatologyChoiceFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: mentalPatologyChoices)
let mentalPatologyQuestionStep = ORKQuestionStep(identifier: "mentalPatologyStep", title: mentalPatologyChoice, question: "Select only the mental pathologies that your close relatives such as father, mother, grandfather or grandmother have or had.", answer: mentalPatologyChoiceFormat)
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Antecedentes personales patológicos
let persInfoStepTitle = "Pathological personal history"
let persInfoStep = ORKInstructionStep(identifier: "persInfoStep")
persInfoStep.title = persInfoStepTitle
persInfoStep.text = "In this part you will find questions about the diseases you suffered or suffer from."
persInfoStep.image = UIImage(systemName: "person.crop.circle")
// Enfermedades propias
let diseasesChoice = "Diseases"
let diseasesChoices = [
ORKTextChoice(text: "Diabetes", value: "diabetes" as NSString),
ORKTextChoice(text: "Heart Disease", value: "heartDisease" as NSString),
ORKTextChoice(text: "Hypertension", value: "hypertension" as NSString),
ORKTextChoice(text: "Cancer", value: "cancer" as NSString),
ORKTextChoice(text: "Asthma", value: "asthma" as NSString),
ORKTextChoice(text: "Hepatitis", value: "hepatitis" as NSString),
ORKTextChoice(text: "Covid", value: "covid" as NSString),
ORKTextChoice(text: "Tuberculosis", value: "tuberculosis" as NSString),
ORKTextChoice(text: "AIDS", value: "aids" as NSString),
ORKTextChoice(text: "Bipolarity", value: "bipolarity" as NSString),
ORKTextChoice(text: "Autism", value: "autism" as NSString),
ORKTextChoice(text: "Depression", value: "depression" as NSString),
ORKTextChoice(text: "ADHD", value: "adhd" as NSString),
ORKTextChoice(text: "Anxiety", value: "anxiety" as NSString)]
let diseasesChoiceFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: diseasesChoices)
let diseasesQuestionStep = ORKQuestionStep(identifier: "diseasesStep", title: diseasesChoice, question: "Select the diseases you have had or suffer from.", answer: diseasesChoiceFormat)
// Vacunacion
let vaccinationQuestionTitle = "Vaccination"
let vaccinationChoices = [
ORKTextChoice(text: "Yes", value: "never" as NSString),
ORKTextChoice(text: "No", value: "little" as NSString),
ORKTextChoice(text: "I don't remember ", value: "moderate" as NSString),]
let vaccinationChoiceFormat = ORKValuePickerAnswerFormat(textChoices: vaccinationChoices)
let vaccinationQuestionStep = ORKQuestionStep(identifier: "vaccinationQuestionStep", title: vaccinationQuestionTitle, question: "Do you have your complete vaccination schedule?", answer: vaccinationChoiceFormat)
// Bebedor alcohol
let alcoholQuestionTitle = "Alcohol drinker"
let alcoholChoices = [
ORKTextChoice(text: "No Drinks Alcohol", value: "nodrink" as NSString),
ORKTextChoice(text: "Social Drinker", value: "social" as NSString),
ORKTextChoice(text: "Occasional Drinker ", value: "occasional" as NSString),
ORKTextChoice(text: "Dependent Drinker", value: "dependent" as NSString),]
let alcoholChoiceFormat = ORKValuePickerAnswerFormat(textChoices: alcoholChoices)
let alcoholQuestionStep = ORKQuestionStep(identifier: "alcoholQuestionStep", title: alcoholQuestionTitle, question: "What kind of drinker are you?", answer: alcoholChoiceFormat)
// fumador tabaco
let smokeQuestionTitle = "Tobacco Smoker"
let smokeChoices = [
ORKTextChoice(text: "No Smoker", value: "nosmoke" as NSString),
ORKTextChoice(text: "Social Smoker", value: "socialsmoke" as NSString),
ORKTextChoice(text: "Occasional Smoker ", value: "occasionalsmoke" as NSString),
ORKTextChoice(text: "Dependent Smoker", value: "dependentsmoke" as NSString),]
let smokeChoiceFormat = ORKValuePickerAnswerFormat(textChoices: smokeChoices)
let smokeQuestionStep = ORKQuestionStep(identifier: "smokeQuestionStep", title: smokeQuestionTitle, question: "What kind of smoker are you?", answer: smokeChoiceFormat)
// drogas
let drugsPatologyChoice = "Drugs"
let drugsPatologyChoices = [
ORKTextChoice(text: "I do not consume drugs", value: "nodrugs" as NSString),
ORKTextChoice(text: "Marihuana", value: "marihuana" as NSString),
ORKTextChoice(text: "Cocaine", value: "cocaine" as NSString),
ORKTextChoice(text: "MDMA (Ectasty)", value: "mdma" as NSString),
ORKTextChoice(text: "Heroine", value: "heroine" as NSString),
ORKTextChoice(text: "Methamphetamine", value: "metha" as NSString),
ORKTextChoice(text: "LSD", value: "lsd" as NSString),
ORKTextChoice(text: "Hallucinogenic Mushrooms", value: "mushrooms" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString),]
let drugsPatologyChoiceFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: drugsPatologyChoices)
let drugsPatologyQuestionStep = ORKQuestionStep(identifier: "drugsPatologyStep", title: drugsPatologyChoice, question: "Select the drug or drugs you consume", answer: drugsPatologyChoiceFormat)
let frecuencyDrugsQuestionTitle = "Frequency of Drug Use"
let frecuencyDrugsChoices = [
ORKTextChoice(text: "Never", value: "never" as NSString),
ORKTextChoice(text: "A little", value: "little" as NSString),
ORKTextChoice(text: "Moderate", value: "moderate" as NSString),
ORKTextChoice(text: "A lot", value: "lot" as NSString),]
let frecuencyDrugsChoiceFormat = ORKValuePickerAnswerFormat(textChoices: frecuencyDrugsChoices)
let frecuencyDrugsQuestionStep = ORKQuestionStep(identifier: "frecuencyDrugsQuestionStep", title: frecuencyDrugsQuestionTitle, question: "How often do you use drugs?", answer: frecuencyDrugsChoiceFormat)
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Antecedentes no patológicos
let noPersInfoStepTitle = "Non-pathological history"
let noPersInfoStep = ORKInstructionStep(identifier: "moPersInfoStep")
noPersInfoStep.title = noPersInfoStepTitle
noPersInfoStep.text = "In this section, you'll find questions about your non-pathological backgrounds, such as your daily activities and personal habits."
noPersInfoStep.image = UIImage(systemName: "book.fill")
// pregunta de actividad física en escala de likert
let scaleQuestionStepTitle = "Physical activity"
let scaleAnswerFormat = ORKScaleAnswerFormat(maximumValue: 10, minimumValue: 0, defaultValue: 5, step: 1)
let scaleQuestionStep = ORKQuestionStep(identifier: "scaleQuestionStep", title: scaleQuestionStepTitle,question: "How active are you?", answer: scaleAnswerFormat)
// Tipo de actividad fisica que realizas.
let multiChoiceQuestionStepTitle = "What types of physical activities do you do?"
let textChoices = [
ORKTextChoice(text: "Walking", value: "walking" as NSString),
ORKTextChoice(text: "Running", value: "running" as NSString),
ORKTextChoice(text: "Swimming", value: "swimming" as NSString),
ORKTextChoice(text: "Cycling", value: "cycling" as NSString),
ORKTextChoice(text: "Soccer", value: "soccer" as NSString),
ORKTextChoice(text: "Basketball", value: "basketball" as NSString),
ORKTextChoice(text: "Tennis", value: "tennis" as NSString),
ORKTextChoice(text: "Baseball", value: "baseball" as NSString),
ORKTextChoice(text: "Golf", value: "golf" as NSString),
ORKTextChoice(text: "Athletics", value: "athletic" as NSString),
ORKTextChoice(text: "Football", value: "football" as NSString),
ORKTextChoice(text: "Martial Arts", value: "martialarts" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString),
]
let multiChoiceAnswerFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: textChoices)
let multiChoiceQuestionStep = ORKQuestionStep(identifier: "multiChoiceQuestionStep", title: multiChoiceQuestionStepTitle, question: "Select the activities you do regularly", answer: multiChoiceAnswerFormat)
// hobbies
let hobbieQuestionStepTitle = "What types of physical activities do you do?"
let hobbietextChoices = [
ORKTextChoice(text: "Reading", value: "reading" as NSString),
ORKTextChoice(text: "Watching movies and series", value: "watchingmovies" as NSString),
ORKTextChoice(text: "Video Gaming", value: "gaming" as NSString),
ORKTextChoice(text: "Cooking and baking", value: "cooking" as NSString),
ORKTextChoice(text: "Traveling", value: "traveling" as NSString),
ORKTextChoice(text: "Gardening", value: "gardening" as NSString),
ORKTextChoice(text: "Arts", value: "arts" as NSString),
ORKTextChoice(text: "Music", value: "music" as NSString),
ORKTextChoice(text: "Photography", value: "photography" as NSString),
ORKTextChoice(text: "Writing", value: "writing" as NSString),
ORKTextChoice(text: "Dancing", value: "dancing" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString),
]
let hobbieAnswerFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: hobbietextChoices)
let hobbieQuestionStep = ORKQuestionStep(identifier: "hobbieQuestionStep", title: hobbieQuestionStepTitle, question: "Select the activities you do regularly", answer: hobbieAnswerFormat)
// level of study
let studyQuestionTitle = "Level of study"
let studyChoices = [
ORKTextChoice(text: "Elementary School", value: "elementary" as NSString),
ORKTextChoice(text: "Middle School", value: "middle" as NSString),
ORKTextChoice(text: "High School", value: "high" as NSString),
ORKTextChoice(text: "Bachelor's Degree", value: "bachelor" as NSString),
ORKTextChoice(text: "Master's Degree", value: "master" as NSString),
ORKTextChoice(text: "Doctorate", value: "doctorate" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString),
]
let studyChoiceFormat = ORKValuePickerAnswerFormat(textChoices: studyChoices)
let studyQuestionStep = ORKQuestionStep(identifier: "studyQuestionStep", title: studyQuestionTitle, question: "What is your level of study?", answer: studyChoiceFormat)
// transporte
let transportationQuestionTitle = "Transportation"
let transportationChoices = [
ORKTextChoice(text: "Telecommuting (remote work)", value: "telecommuting" as NSString),
ORKTextChoice(text: "Car", value: "car" as NSString),
ORKTextChoice(text: "Public Transport (bus, subway, tram, train)", value: "publictransport" as NSString),
ORKTextChoice(text: "Bicycle", value: "bicycle" as NSString),
ORKTextChoice(text: "Motorcycle", value: "motorcycle" as NSString),
ORKTextChoice(text: "Walking", value: "walking" as NSString),
ORKTextChoice(text: "Electric Scooter", value: "electricscooter" as NSString),
ORKTextChoice(text: "Skateboard", value: "skateboard" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString),
]
let transportationChoiceFormat = ORKValuePickerAnswerFormat(textChoices: transportationChoices)
let transportationQuestionStep = ORKQuestionStep(identifier: "transportationQuestionStep", title: transportationQuestionTitle, question: "What is the means of transportation you use from home to work or school?", answer: transportationChoiceFormat)
//Alimentación
let foodQuestionTitle = "Alimentation"
let foodChoices = [
ORKTextChoice(text: "Good", value: "good" as NSString),
ORKTextChoice(text: "Average", value: "average" as NSString),
ORKTextChoice(text: "Poor", value: "poor" as NSString),]
let foodChoiceFormat = ORKValuePickerAnswerFormat(textChoices: foodChoices)
let foodQuestionStep = ORKQuestionStep(identifier: "foodQuestionStep", title: foodQuestionTitle, question: "How would you describe your quality and quantity of food?", answer: foodChoiceFormat)
// cuantas veces comes
let alimentationQuestionStepTitle = "Alimentation"
let alimentationAnswerFormat = ORKScaleAnswerFormat(maximumValue: 10, minimumValue: 0, defaultValue: 3, step: 1)
let alimentationQuestionStep = ORKQuestionStep(identifier: "alimentationQuestionStep", title: alimentationQuestionStepTitle,question: "How many meals do you have a day?", answer: alimentationAnswerFormat)
// tipo de alimento
let typeFoodChoice = "Types of food"
let typeFoodChoices = [
ORKTextChoice(text: "Chicken", value: "chicken" as NSString),
ORKTextChoice(text: "Beef", value: "beef" as NSString),
ORKTextChoice(text: "Pork", value: "pork" as NSString),
ORKTextChoice(text: "Seafood", value: "seafood" as NSString),
ORKTextChoice(text: "Fruits/Vegetables", value: "fruitsvegetables" as NSString),
ORKTextChoice(text: "Other", value: "other" as NSString)
]
let typeFoodChoiceFormat = ORKTextChoiceAnswerFormat(style: .multipleChoice, textChoices: typeFoodChoices)
let typeFoodQuestionStep = ORKQuestionStep(identifier: "typeFoodStep", title: typeFoodChoice, question: "SWhat type of food do you eat?", answer: typeFoodChoiceFormat)
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Mostrar las preguntas
return ORKOrderedTask(identifier: "SurveyTask", steps: [thankUJoin, personalInfoStep, textQuestionStep, multiGenderQuestionStep, dobStep, weighForm, heightForm, residenceQuestionStep, occupationQuestionStep, occupationFormStep, hereditaryInfoStep, patologyQuestionStep, mentalPatologyQuestionStep, persInfoStep, diseasesQuestionStep, vaccinationQuestionStep, alcoholQuestionStep, smokeQuestionStep, drugsPatologyQuestionStep, frecuencyDrugsQuestionStep,noPersInfoStep, scaleQuestionStep, multiChoiceQuestionStep, hobbieQuestionStep, studyQuestionStep, transportationQuestionStep, foodQuestionStep, alimentationQuestionStep, typeFoodQuestionStep])
}
}

@ -5,11 +5,10 @@
// Created by Juan David López Regalado on 12/06/24. // Created by Juan David López Regalado on 12/06/24.
// //
import UIKit import UIKit
import ResearchKit
import ResearchKitUI
class ViewController: UIViewController, ORKTaskViewControllerDelegate { class ViewController: UIViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
@ -17,19 +16,4 @@ class ViewController: UIViewController, ORKTaskViewControllerDelegate {
} }
@IBAction func startSurveyTapped(_ sender: Any) {
let consentTask = ConsentManager.shared.createConsentTask()
let taskViewController = ORKTaskViewController(task: consentTask, taskRun: nil)
taskViewController.delegate = self
present(taskViewController,animated: true, completion: nil)
}
func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskFinishReason, error: (any Error)?) {
taskViewController.dismiss(animated: true, completion: nil)
}
} }

Loading…
Cancel
Save