🚑 critical changes before deployment
Co-authored-by: Sindre Kjelsrud <kjelsrudsindre@gmail.com>
This commit is contained in:
parent
c1721e5e8e
commit
055fce482a
9 changed files with 24 additions and 17 deletions
|
@ -54,6 +54,7 @@ func SetupDb() {
|
||||||
alder TEXT NOT NULL,
|
alder TEXT NOT NULL,
|
||||||
utdanningsgrad TEXT NOT NULL,
|
utdanningsgrad TEXT NOT NULL,
|
||||||
helsepersonell BOOL NOT NULL,
|
helsepersonell BOOL NOT NULL,
|
||||||
|
harlisens BOOL NOT NULL,
|
||||||
kjønn TEXT NOT NULL,
|
kjønn TEXT NOT NULL,
|
||||||
svartfør BOOL NOT NULL,
|
svartfør BOOL NOT NULL,
|
||||||
fylke TEXT NOT NULL,
|
fylke TEXT NOT NULL,
|
||||||
|
|
|
@ -53,7 +53,7 @@ func GetUserQuestions(respondentID int) ([]UserQuestions, error) {
|
||||||
FROM Spørsmålsvar ss
|
FROM Spørsmålsvar ss
|
||||||
LEFT JOIN SvarVurdering sv ON ss.svarID = sv.svarID
|
LEFT JOIN SvarVurdering sv ON ss.svarID = sv.svarID
|
||||||
GROUP BY ss.spørsmålID
|
GROUP BY ss.spørsmålID
|
||||||
HAVING COUNT(sv.vurderingID) < 10
|
HAVING COUNT(sv.vurderingID) < 3
|
||||||
) AS subquery ON s.spørsmålID = subquery.spørsmålID
|
) AS subquery ON s.spørsmålID = subquery.spørsmålID
|
||||||
WHERE subquery.spørsmålID IS NOT NULL
|
WHERE subquery.spørsmålID IS NOT NULL
|
||||||
LIMIT 5
|
LIMIT 5
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
)
|
)
|
||||||
|
|
||||||
func InsertUserData(age string, education string, healthcarepersonell bool, gender string, answeredbefore bool, county string, submitdate string) (int, error) {
|
func InsertUserData(age string, education string, healthcarepersonell bool, islicensed bool, gender string, answeredbefore bool, county string, submitdate string) (int, error) {
|
||||||
// Connection string
|
// Connection string
|
||||||
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
|
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
|
||||||
"password=%s dbname=%s sslmode=disable",
|
"password=%s dbname=%s sslmode=disable",
|
||||||
|
@ -28,8 +28,8 @@ func InsertUserData(age string, education string, healthcarepersonell bool, gend
|
||||||
}
|
}
|
||||||
|
|
||||||
insertStatement := `
|
insertStatement := `
|
||||||
INSERT INTO Respondent (alder, utdanningsgrad, helsepersonell, kjønn, svartfør, fylke, dato)
|
INSERT INTO Respondent (alder, utdanningsgrad, helsepersonell, harlisens, kjønn, svartfør, fylke, dato)
|
||||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
||||||
RETURNING respondentID
|
RETURNING respondentID
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ func InsertUserData(age string, education string, healthcarepersonell bool, gend
|
||||||
defer stmt.Close()
|
defer stmt.Close()
|
||||||
|
|
||||||
var respondentID int
|
var respondentID int
|
||||||
err = stmt.QueryRow(age, education, healthcarepersonell, gender, answeredbefore, county, submitdate).Scan(&respondentID)
|
err = stmt.QueryRow(age, education, healthcarepersonell, islicensed, gender, answeredbefore, county, submitdate).Scan(&respondentID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error inserting userdata: %v\n", err)
|
log.Fatalf("Error inserting userdata: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ type UserformData struct {
|
||||||
Age string `json:"age"`
|
Age string `json:"age"`
|
||||||
Education string `json:"education"`
|
Education string `json:"education"`
|
||||||
HealthcarePersonnel bool `json:"healthcare_personnel"`
|
HealthcarePersonnel bool `json:"healthcare_personnel"`
|
||||||
|
IsLicensed bool `json:"is_licensed"`
|
||||||
Gender string `json:"gender"`
|
Gender string `json:"gender"`
|
||||||
AnsweredBefore bool `json:"answered_before"`
|
AnsweredBefore bool `json:"answered_before"`
|
||||||
County string `json:"county"`
|
County string `json:"county"`
|
||||||
|
@ -35,7 +36,7 @@ type Evaluation struct {
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
//router.Use(cors.Default())
|
// router.Use(cors.Default())
|
||||||
|
|
||||||
router.GET("/hello", func(c *gin.Context) {
|
router.GET("/hello", func(c *gin.Context) {
|
||||||
c.JSON(http.StatusOK, gin.H{"hello":"world"})
|
c.JSON(http.StatusOK, gin.H{"hello":"world"})
|
||||||
|
@ -51,7 +52,7 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Capture both the ID and error returned from InsertData
|
// Capture both the ID and error returned from InsertData
|
||||||
respondentId, err := db.InsertUserData(requestBody.Age, requestBody.Education, requestBody.HealthcarePersonnel, requestBody.Gender, requestBody.AnsweredBefore, requestBody.County, requestBody.SubmitDate)
|
respondentId, err := db.InsertUserData(requestBody.Age, requestBody.Education, requestBody.HealthcarePersonnel, requestBody.IsLicensed, requestBody.Gender, requestBody.AnsweredBefore, requestBody.County, requestBody.SubmitDate)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Print(err)
|
fmt.Print(err)
|
||||||
|
@ -148,6 +149,6 @@ func main() {
|
||||||
})
|
})
|
||||||
|
|
||||||
// Run the server on port 8080
|
// Run the server on port 8080
|
||||||
//db.SetupDb()
|
// db.SetupDb()
|
||||||
router.Run(":8080")
|
router.Run(":8080")
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ export const postUserformData = async (
|
||||||
age: string,
|
age: string,
|
||||||
education: string,
|
education: string,
|
||||||
healthcare_personnel: string,
|
healthcare_personnel: string,
|
||||||
|
is_licensed: string,
|
||||||
gender: string,
|
gender: string,
|
||||||
has_answered_before: string,
|
has_answered_before: string,
|
||||||
county: string,
|
county: string,
|
||||||
|
@ -13,6 +14,7 @@ export const postUserformData = async (
|
||||||
): Promise<postUserformDataReponse> => {
|
): Promise<postUserformDataReponse> => {
|
||||||
let url = "https://helseundersokelsen.online/submituserform";
|
let url = "https://helseundersokelsen.online/submituserform";
|
||||||
let personnel = healthcare_personnel == "Ja" ? true : false;
|
let personnel = healthcare_personnel == "Ja" ? true : false;
|
||||||
|
let licensed = is_licensed == "Ja" ? true : false;
|
||||||
let answered_before = has_answered_before == "Ja" ? true : false;
|
let answered_before = has_answered_before == "Ja" ? true : false;
|
||||||
|
|
||||||
const response = fetch(url, {
|
const response = fetch(url, {
|
||||||
|
@ -21,6 +23,7 @@ export const postUserformData = async (
|
||||||
age: age,
|
age: age,
|
||||||
education: education,
|
education: education,
|
||||||
healthcare_personnel: personnel,
|
healthcare_personnel: personnel,
|
||||||
|
is_licensed: licensed,
|
||||||
gender: gender,
|
gender: gender,
|
||||||
answered_before: answered_before,
|
answered_before: answered_before,
|
||||||
county: county,
|
county: county,
|
||||||
|
|
|
@ -76,8 +76,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col justify-start items-center gap-6">
|
<div class="flex flex-col justify-start items-center gap-6">
|
||||||
<UserFormInput formData={knowledge} on:update={(e) => {knowledge = e.detail; handleFormUpdate()}} inputType="radio" label="Kunnskap" options={["Veldig dårlig", "Dårlig", "Nøytral", "Bra", "Veldig bra"]}/>
|
<UserFormInput formData={knowledge} on:update={(e) => {knowledge = e.detail; handleFormUpdate()}} inputType="radio" label="Kunnskap" options={["Veldig dårlig", "Dårlig", "Nøytral", "Bra", "Veldig bra", "Vet ikke"]}/>
|
||||||
<UserFormInput formData={empathy} on:update={(e) => {empathy = e.detail; handleFormUpdate()}} inputType="radio" label="Empati" options={["Veldig dårlig", "Dårlig", "Nøytral", "Bra", "Veldig bra"]}/>
|
<UserFormInput formData={empathy} on:update={(e) => {empathy = e.detail; handleFormUpdate()}} inputType="radio" label="Empati" options={["Veldig dårlig", "Dårlig", "Nøytral", "Bra", "Veldig bra"]}/>
|
||||||
<UserFormInput formData={helpfulness} on:update={(e) => {helpfulness = e.detail; handleFormUpdate()}} inputType="radio" label="Hjelpsomhet" options={["Veldig dårlig", "Dårlig", "Nøytral", "Bra", "Veldig bra", "Vet ikke"]}/>
|
<UserFormInput formData={helpfulness} on:update={(e) => {helpfulness = e.detail; handleFormUpdate()}} inputType="radio" label="Hjelpsomhet" options={["Veldig dårlig", "Dårlig", "Nøytral", "Bra", "Veldig bra"]}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -6,14 +6,14 @@
|
||||||
<div class="flex flex-col w-11/12 md:w-3/5 gap-2 md:gap-4">
|
<div class="flex flex-col w-11/12 md:w-3/5 gap-2 md:gap-4">
|
||||||
<h1 class="text-5xl md:text-7xl text-primary font-bold pb-2">Helseveileder</h1>
|
<h1 class="text-5xl md:text-7xl text-primary font-bold pb-2">Helseveileder</h1>
|
||||||
<p>Vi utfører en undersøkelse om kunstig intelligens (AI) i medisin. Vi ønsker å forstå hvordan AI kan fungere som en copilot for leger og pasienter.</p>
|
<p>Vi utfører en undersøkelse om kunstig intelligens (AI) i medisin. Vi ønsker å forstå hvordan AI kan fungere som en copilot for leger og pasienter.</p>
|
||||||
<p>Undersøkelsen er helt anonym.</p>
|
<p>Undersøkelsen er helt anonym. Spørsmålene er helserettet innenfor et spekter av kategorier. Det er mulig å gå videre til neste spørsmål, hvis man er ukomfortabel med spørsmålet eller ikke ønsker å vurdere et spørsmål.</p>
|
||||||
<ul>
|
<ul>
|
||||||
<p class="mb-4">I denne undersøkelsen vil vi at du skal vurdere empati, kunnskap og hjelpsomhet i ulike svar på medisinske spørsmål.</p>
|
<p class="mb-4">I denne undersøkelsen vil vi at du skal vurdere empati, kunnskap og hjelpsomhet i ulike svar på medisinske spørsmål.</p>
|
||||||
<li><strong>Empati:</strong> Evnen til å oppdage og erkjenne andres følelser og tanker.</li>
|
<li><strong>Empati:</strong> Evnen til å oppdage og erkjenne andres følelser og tanker.</li>
|
||||||
<li><strong>Kunnskap:</strong> Nøyaktighet og relevans av den medisinske informasjonen gitt.</li>
|
<li><strong>Kunnskap:</strong> Nøyaktighet og relevans av den medisinske informasjonen gitt.</li>
|
||||||
<li><strong>Hjelpsomhet:</strong> Evnen til å gi nyttig og praktisk råd eller støtte.</li>
|
<li><strong>Hjelpsomhet:</strong> Evnen til å gi nyttig og praktisk råd eller støtte.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-center items-center md:w-2/5 mt-8 md:mt-0">
|
<div class="flex justify-center items-center md:w-2/5 mt-8 md:mt-0">
|
||||||
<a href="/userform">
|
<a href="/userform">
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
All informasjon du gir vil bli lagret anonymt. Dette betyr at svarene du gir ikke vil kunne spores tilbake til deg.
|
All informasjon du gir vil bli lagret anonymt. Dette betyr at svarene du gir ikke vil kunne spores tilbake til deg.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Vi registrerer alder i kohorter (10-20, 21-30, 31-40 osv.), utdanningsnivå, om du er helsepersonell (ja/nei), og kjønn. Dette er for å få en overordnet forståelse av deltakerne i studien. Vi spør ikke om personidentifiserbare opplysninger som navn, fødselsdato, personnummer, e-postadresse, telefonnummer eller geografiske data.
|
Vi registrerer alder i kohorter (10-20, 21-30, 31-40 osv.), kjønn, høyeste fullførte utdanningsgrad og om du er lege eller medisinstudent med lisens, om du er helsepersonell (ja/nei), og kjønn. Dette er for å få en overordnet forståelse av deltakerne i studien. Vi spør ikke om personidentifiserbare opplysninger som navn, fødselsdato, personnummer, e-postadresse, telefonnummer eller geografiske data.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
let age: string = "18-20"
|
let age: string = "18-20"
|
||||||
let education: string = "PhD"
|
let education: string = "PhD"
|
||||||
let healthcare_personnel: string = "Ja"
|
let healthcare_personnel: string = "Ja"
|
||||||
|
let is_licensed: string = "Nei"
|
||||||
let gender: string = "Mann"
|
let gender: string = "Mann"
|
||||||
let has_answered_before: string = "Nei"
|
let has_answered_before: string = "Nei"
|
||||||
let county: string = "Vestland"
|
let county: string = "Vestland"
|
||||||
|
@ -21,7 +22,7 @@
|
||||||
|
|
||||||
const submitDate = new Date().toISOString()
|
const submitDate = new Date().toISOString()
|
||||||
|
|
||||||
const response = await postUserformData(age, education, healthcare_personnel, gender, has_answered_before, county, submitDate)
|
const response = await postUserformData(age, education, healthcare_personnel, is_licensed, gender, has_answered_before, county, submitDate)
|
||||||
const userQuestions = await getUserQuestions(response.respondentID)
|
const userQuestions = await getUserQuestions(response.respondentID)
|
||||||
|
|
||||||
goto("form/0")
|
goto("form/0")
|
||||||
|
@ -35,14 +36,15 @@
|
||||||
<div class="flex flex-col md:flex-row h-full md:h-4/5 gap-6">
|
<div class="flex flex-col md:flex-row h-full md:h-4/5 gap-6">
|
||||||
<div class="flex flex-col justify-center w-full md:w-2/4 gap-4 md:px-32 ">
|
<div class="flex flex-col justify-center w-full md:w-2/4 gap-4 md:px-32 ">
|
||||||
<h1 class="text-3xl text-primary font-bold">Deltakerinformasjon</h1>
|
<h1 class="text-3xl text-primary font-bold">Deltakerinformasjon</h1>
|
||||||
<p>Til undersøkelsen trenger vi opplysninger om din aldersgruppe, utdanningsgrad, kjønn og bekreftelse på at du er helsepersonell.</p>
|
<p>Til undersøkelsen ønsker vi opplysninger om din aldersgruppe, om du er student eller jobber innen helse, hva din høyeste fullførte utdanningsgrad er og om du er lege eller medisinstudent med lisens.</p>
|
||||||
<p>Vi vil igjen minne om at denne undersøkelsen er helt anonym. Se <a href="/personvern"class="text-primary font-bold">Personvern</a> for mer informasjon.</p>
|
<p>Vi vil igjen minne om at denne undersøkelsen er helt anonym. Se <a href="/personvern"class="text-primary font-bold">Personvern</a> for mer informasjon.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col gap-6 justify-start items-center md:w-2/4">
|
<div class="flex flex-col gap-6 justify-start items-center md:w-2/4">
|
||||||
<UserFormInput formData={age} on:update={(e) => age = e.detail} inputType="radio" label="Alder" options={["18-20", "20-30", "30-40", "40-50", "50-60"]}/>
|
<UserFormInput formData={age} on:update={(e) => age = e.detail} inputType="radio" label="Alder" options={["18-20", "20-30", "30-40", "40-50", "50-60"]}/>
|
||||||
<UserFormInput formData={education} on:update={(e) => education = e.detail} inputType="select" label="Utdanningsgrad" options={["PhD", "Master", "Fagbrev", "Bachelor"]}/>
|
|
||||||
<UserFormInput formData={county} on:update={(e) => county = e.detail} inputType="select" label="Fylke" options={["Vestland", "Rogaland", "Møre og Romsdal", "Oslo", "Viken", "Nordland", "Trøndelag", "Innlandet", "Troms og Finnmark", "Vestfold og Telemark", "Agder"]}/>
|
<UserFormInput formData={county} on:update={(e) => county = e.detail} inputType="select" label="Fylke" options={["Vestland", "Rogaland", "Møre og Romsdal", "Oslo", "Viken", "Nordland", "Trøndelag", "Innlandet", "Troms og Finnmark", "Vestfold og Telemark", "Agder"]}/>
|
||||||
<UserFormInput formData={healthcare_personnel} on:update={(e) => healthcare_personnel = e.detail} inputType="radio" label="Helsepersonell" options={["Ja", "Nei"]}/>
|
<UserFormInput formData={education} on:update={(e) => education = e.detail} inputType="select" label="Utdanningsgrad" options={["VGS", "Bachelor", "Master", "PhD"]}/>
|
||||||
|
<UserFormInput formData={healthcare_personnel} on:update={(e) => healthcare_personnel = e.detail} inputType="radio" label="Jobber/studerer du innen helse?" options={["Ja", "Nei"]}/>
|
||||||
|
<UserFormInput formData={is_licensed} on:update={(e) => is_licensed = e.detail} inputType="radio" label="Er du lege eller medisinstudent med lisens?" options={["Ja", "Nei"]}/>
|
||||||
<UserFormInput formData={gender} on:update={(e) => gender = e.detail} inputType="radio" label="Kjønn" options={["Mann", "Kvinne", "Annet"]}/>
|
<UserFormInput formData={gender} on:update={(e) => gender = e.detail} inputType="radio" label="Kjønn" options={["Mann", "Kvinne", "Annet"]}/>
|
||||||
<UserFormInput formData={has_answered_before} on:update={(e) => has_answered_before = e.detail} inputType="radio" label="Jeg har svart på denne undersøkelsen tidligere" options={["Ja", "Nei"]}/>
|
<UserFormInput formData={has_answered_before} on:update={(e) => has_answered_before = e.detail} inputType="radio" label="Jeg har svart på denne undersøkelsen tidligere" options={["Ja", "Nei"]}/>
|
||||||
</div>
|
</div>
|
||||||
|
|
Reference in a new issue