From 65494de94d3f5afbb3c3213c0ee9beb650358f7e Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Mon, 27 Nov 2023 15:22:25 +0000 Subject: [PATCH 01/15] starting work on youth services adds youth services to GICs script adds dropdown and form item for choosing services --- app/forms/GICs.json | 2 +- app/forms/input_form.py | 2 ++ app/scripts/gics.py | 6 +++--- app/templates/index.html | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/forms/GICs.json b/app/forms/GICs.json index a53769c..6d9946a 100644 --- a/app/forms/GICs.json +++ b/app/forms/GICs.json @@ -1 +1 @@ -{"GICs": [["Wales", "Welsh Gender Service - Cardiff - Wait time (months): 12-13"], ["Scotland", "Edinburgh Chalmers Centre - Wait time (months): 23"], ["England", "Nottingham Centre for Transgender Health - Wait time (months): 23"], ["Scotland", "Grampian - Wait time (months): 24"], ["Scotland", "Inverness Highland Sexual Health - Wait time (months): 29"], ["England", "Leeds and York Partnership Trust - Wait time (months): 53"], ["England", "Northants Northamptonshire Healthcare Trust - Wait time (months): 53"], ["Scotland", "Glasgow Sandyford - Wait time (months): 55"], ["Northern Ireland", "Belfast Brackenburn Clinic - Wait time (months): 59"], ["England", "London Tavistock and Portman Trust - Wait time (months): 60"], ["England", "Sheffield Porterbrook Clinic - Wait time (months): 62"], ["England", "Exeter Devon Partnership Trust - Wait time (months): 87"]]} \ No newline at end of file +{"GICs": [["Wales", "Welsh Gender Service - Cardiff - Wait time (months): 12-13"], ["Scotland", "Edinburgh Chalmers Centre - Wait time (months): 23"], ["England", "Nottingham Centre for Transgender Health - Wait time (months): 23"], ["Northern Ireland", "Belfast KOI - Wait time (months): 24"], ["Scotland", "Grampian - Wait time (months): 24"], ["Scotland", "Inverness Highland Sexual Health - Wait time (months): 29"], ["Scotland", "Glasgow Youth Sandyford - Wait time (months): 42"], ["England", "Leeds and York Partnership Trust - Wait time (months): 53"], ["England", "Northants Northamptonshire Healthcare Trust - Wait time (months): 53"], ["Scotland", "Glasgow Sandyford - Wait time (months): 55"], ["Northern Ireland", "Belfast Brackenburn Clinic - Wait time (months): 59"], ["England", "London Tavistock and Portman Trust - Wait time (months): 60"], ["England", "Sheffield Porterbrook Clinic - Wait time (months): 62"], ["England", "Exeter Devon Partnership Trust - Wait time (months): 87"], ["England", "The Northern Hub - Wait time (months): Opening in 2024"], ["England", "The Southern Hub - Wait time (months): Opening in 2024"]]} \ No newline at end of file diff --git a/app/forms/input_form.py b/app/forms/input_form.py index 78f24e2..30e43a8 100644 --- a/app/forms/input_form.py +++ b/app/forms/input_form.py @@ -27,6 +27,8 @@ class InputForm(FlaskForm): countries = SelectField("Country", choices=['Choose...','England', 'Northern Ireland', 'Scotland', 'Wales'], validators=[ DataRequired(), AnyOf(['England', 'Northern Ireland', 'Scotland', 'Wales'], message="Please select a country")]) + services = SelectField("Services", choices=['Choose...','Adult', 'Youth'], validators=[ + DataRequired(), AnyOf(['Adult', 'Youth'], message="Please select adult or youth services")]) self_med = BooleanField("I am self medicating") self_med_likely = BooleanField("I am likely to start self medicating") no_self_med = BooleanField("I am not currently or likely to start self medicating") diff --git a/app/scripts/gics.py b/app/scripts/gics.py index bd3e09c..ef23379 100644 --- a/app/scripts/gics.py +++ b/app/scripts/gics.py @@ -73,9 +73,9 @@ async def on_ready(): if "Not accepting new patients" not in to_be_seen: options.append((country, f"{service} - Wait time (months): {to_be_seen}" if pd.notna(to_be_seen) else "Unknown")) -# Filter out under 18 services -youth_services = ["GIDS", "KOI", "Youth", "Hub"] -options = [gic for gic in options if all(service not in gic[1] for service in youth_services)] +# # Filter out under 18 services +# youth_services = ["GIDS", "KOI", "Youth", "Hub"] +# options = [gic for gic in options if all(service not in gic[1] for service in youth_services)] # Filter services not taking referrals from GP/self invalid_services = ["London TransPlus"] diff --git a/app/templates/index.html b/app/templates/index.html index 856e903..f2b4d3b 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -53,6 +53,20 @@

Template info

+
+
+ {{ form.services.label(for='form.services.name', name='service', class='form-label') }} Required + {% if form.services.errors|length > 0 %} {{ form.services(class='form-select is-invalid', id='services')}} + {% else %} {{ form.services(class='form-select', id='services')}} + {% endif %} +
+ {% for error in form.services.errors %} + {{error}} + {% endfor %} +
+
+

Documents held

From 30afbf8b2d858589691f6abfcd5ed2d2c542756e Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Thu, 28 Mar 2024 15:22:15 +0000 Subject: [PATCH 02/15] youth changes progress Changes: - Updates GIC options for youth services - service dropdown now filters relevant GIC options based on selections --- app/forms/GICs.json | 2 +- app/forms/input_form.py | 6 ++-- app/scripts/gics.py | 24 +++++++++----- app/static/js/transinformed.js | 50 +++++++++++++++++++++++++----- app/static/js/transinformed.min.js | 2 +- app/templates/base.html | 2 +- 6 files changed, 65 insertions(+), 21 deletions(-) diff --git a/app/forms/GICs.json b/app/forms/GICs.json index a5555eb..f82584a 100644 --- a/app/forms/GICs.json +++ b/app/forms/GICs.json @@ -1 +1 @@ -{"GICs": [["Wales", "Welsh Gender Service - Cardiff - Wait time (months): 15"], ["Scotland", "Edinburgh Chalmers Centre - Wait time (months): 23"], ["England", "Nottingham Centre for Transgender Health - Wait time (months): 23"], ["Scotland", "Grampian - Wait time (months): 24"], ["Scotland", "Inverness Highland Sexual Health - Wait time (months): 29"], ["England", "Northants Northamptonshire Healthcare Trust - Wait time (months): 53"], ["Scotland", "Glasgow Sandyford - Wait time (months): 55"], ["England", "Leeds and York Partnership Trust - Wait time (months): 57"], ["Northern Ireland", "Belfast Brackenburn Clinic - Wait time (months): 59"], ["England", "London Tavistock and Portman Trust - Wait time (months): 60"], ["England", "Sheffield Porterbrook Clinic - Wait time (months): 62"], ["England", "Exeter Devon Partnership Trust - Wait time (months): 87"]]} +{"GICs": [["Y-England", "National Referral Support Service - Wait time: 5 years"], ["Y-Wales", "National Referral Support Service - Wait time: 5 years"], ["Wales", "Welsh Gender Service - Cardiff - Wait time (months): 15"], ["Scotland", "Edinburgh Chalmers Centre - Wait time (months): 23"], ["England", "Nottingham Centre for Transgender Health - Wait time (months): 23"], ["Y-Northern Ireland", "Belfast KOI - Wait time (months): 24"], ["Scotland", "Grampian - Wait time (months): 24"], ["Scotland", "Inverness Highland Sexual Health - Wait time (months): 29"], ["Y-Scotland", "Glasgow Youth Sandyford - Wait time (months): 42"], ["England", "Northants Northamptonshire Healthcare Trust - Wait time (months): 53"], ["Scotland", "Glasgow Sandyford - Wait time (months): 55"], ["England", "Leeds and York Partnership Trust - Wait time (months): 57"], ["Northern Ireland", "Belfast Brackenburn Clinic - Wait time (months): 59"], ["England", "London Tavistock and Portman Trust - Wait time (months): 60"], ["England", "Sheffield Porterbrook Clinic - Wait time (months): 62"], ["England", "Exeter Devon Partnership Trust - Wait time (months): 87"]]} \ No newline at end of file diff --git a/app/forms/input_form.py b/app/forms/input_form.py index 30e43a8..389f5dc 100644 --- a/app/forms/input_form.py +++ b/app/forms/input_form.py @@ -14,7 +14,7 @@ gic_options = [(country, clinic.replace('nan', 'Unknown')) for country, clinic in gic_options] # change NaN's to Unknown -gic_options.insert(0,("0", "Select a country to see GICs")) +gic_options.insert(0,("0", "Select a country and service to see GICs")) gic_options.insert(1,("1", "I don't have a preferred clinic")) # import options for Private HRT providers @@ -27,8 +27,8 @@ class InputForm(FlaskForm): countries = SelectField("Country", choices=['Choose...','England', 'Northern Ireland', 'Scotland', 'Wales'], validators=[ DataRequired(), AnyOf(['England', 'Northern Ireland', 'Scotland', 'Wales'], message="Please select a country")]) - services = SelectField("Services", choices=['Choose...','Adult', 'Youth'], validators=[ - DataRequired(), AnyOf(['Adult', 'Youth'], message="Please select adult or youth services")]) + services = SelectField("Services", choices=['Choose...','Adult (17+)', 'Youth (≤16)'], validators=[ + DataRequired(), AnyOf(['Adult (17+)', 'Youth (≤16)'], message="Please select adult or youth services")]) self_med = BooleanField("I am self medicating") self_med_likely = BooleanField("I am likely to start self medicating") no_self_med = BooleanField("I am not currently or likely to start self medicating") diff --git a/app/scripts/gics.py b/app/scripts/gics.py index 244503f..b3ceb7d 100644 --- a/app/scripts/gics.py +++ b/app/scripts/gics.py @@ -35,7 +35,10 @@ async def on_ready(): df['Service'] = df['Service'].map(lambda x: x[:-len("more info")]) df['Service'] = df['Service'].map(lambda x: x.strip()) - +# get youth wait times for England and Wales +youth_table = pd.read_html(url, match="Longest wait") +youth_df = youth_table[0] +youth_times = youth_df["Longest wait"][0] # Map names to full names name_mappings = { "Belfast": "Belfast Brackenburn Clinic", @@ -59,7 +62,8 @@ async def on_ready(): country = "" service = row['Service'] to_be_seen = row['To beseen(in months)'] - + youth_services = ["GIDS", "KOI", "Youth", "Hub"] + # Determine the country based on the service name if "Belfast" in service: country = "Northern Ireland" @@ -69,21 +73,27 @@ async def on_ready(): country = "Scotland" else: country = "England" + + # Determine if youth service + for identifier in youth_services: + if identifier in service: + country = "Y-" + country if "Not accepting new patients" not in str(to_be_seen): options.append((country, f"{service} - Wait time (months): {to_be_seen}" if pd.notna(to_be_seen) else f"{service} - Wait time (months): Unknown")) -# # Filter out under 18 services -# youth_services = ["GIDS", "KOI", "Youth", "Hub"] -# options = [gic for gic in options if all(service not in gic[1] for service in youth_services)] -# Filter services not taking referrals from GP/self -invalid_services = ["London TransPlus"] + +# Filter services not taking new referrals from GP/self +invalid_services = ["London TransPlus", "The Northern Hub", "The Southern Hub"] options = [gic for gic in options if all(service not in gic[1] for service in invalid_services)] # filter out < > from options options = [(country, re.sub(r'<|>', '', option)) for country, option in options] +# Add NRSS or the very concise name: NATIONAL REFERRAL SUPPORT SERVICE FOR THE NHS GENDER INCONGRUENCE SERVICE FOR CHILDREN AND YOUNG PEOPLE +options.append(("Y-England", f"National Referral Support Service - Wait time: {youth_times}")) +options.append(("Y-Wales", f"National Referral Support Service - Wait time: {youth_times}")) # Sort options by months remaining options = sorted(options, key=lambda x: int(re.search(r'\d+', str(x[1].split(': ')[1] if len(x) == 2 and 'Unknown' not in x[1] else '0')).group())) diff --git a/app/static/js/transinformed.js b/app/static/js/transinformed.js index 925732b..af396a3 100644 --- a/app/static/js/transinformed.js +++ b/app/static/js/transinformed.js @@ -2,8 +2,11 @@ window.addEventListener('load', function () { revealContent(); privateProviderConditions(); countryFilters(); + serviceFilters(); // Countries dropdown document.getElementById('countries').addEventListener('change', countryFilters); + // Services dropdown + document.getElementById('services').addEventListener('change', serviceFilters); // Medication Status document.getElementById('selfMedCheck').addEventListener('click', checkboxStatus); document.getElementById('likelyMedCheck').addEventListener('click', checkboxStatus); @@ -93,10 +96,11 @@ function checkboxStatus() { function disableButtonsLogic(){ var countriesSelect = document.getElementById("countries"); + var servicesSelect = document.getElementById("services"); let docx = document.getElementById("docx") let pdf = document.getElementById("pdf") - // Only allow submission when a country is selected - if (countriesSelect.value !== "Choose...") { + // Only allow submission when a country and service is selected + if (countriesSelect.value !== "Choose..." && servicesSelect.value !== "Choose...") { docx.disabled = false; if (pdf.innerText !== "PDF Unavailable") { pdf.disabled = false; @@ -113,31 +117,61 @@ function countryFilters() { var countriesSelect = document.getElementById("countries"); var selectedCountry = countriesSelect.value; + var servicesSelect = document.getElementById("services"); + var selectedService = servicesSelect.value; + // Only allow submission when a country is selected disableButtonsLogic(); // Define a mapping between countries and their corresponding GIC options - var countryGICMapping = { - "England": ["England"], - "Northern Ireland": ["Northern Ireland"], - "Scotland": ["Scotland"], - "Wales": ["Wales"] - }; + if (selectedService == "Youth (≤16)") { + var countryGICMapping = { + "Y-England": ["Y-England"], + "Y-Northern Ireland": ["Y-Northern Ireland"], + "Y-Scotland": ["Y-Scotland"], + "Y-Wales": ["Y-Wales"] + }; + } else { + var countryGICMapping = { + "England": ["England"], + "Northern Ireland": ["Northern Ireland"], + "Scotland": ["Scotland"], + "Wales": ["Wales"] + }; + } + // Filter valid GICs based on country $("#gics").val(0).change(); // Hide all country options initially + + $("#gics option[value='Y-England'], #gics option[value='Y-Northern Ireland'], #gics option[value='Y-Scotland'], #gics option[value='Y-Wales']").hide(); + $("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(); + + // Show the options related to the selected country if (countryGICMapping[selectedCountry]) { countryGICMapping[selectedCountry].forEach(option => { $("#gics option[value='" + option + "']").show(); }); + } else if (countryGICMapping["Y-" + selectedCountry]) { + countryGICMapping["Y-" + selectedCountry].forEach(option => { + $("#gics option[value='" + option + "']").show(); + }); + } else { $("#gics option[value='countryNeeded']").show(); } + +} + +function serviceFilters() { + countryFilters(); + + // TODO: update youth options available } function revealContent() { diff --git a/app/static/js/transinformed.min.js b/app/static/js/transinformed.min.js index 2575461..bc82a1c 100644 --- a/app/static/js/transinformed.min.js +++ b/app/static/js/transinformed.min.js @@ -1 +1 @@ -function checkboxStatus(){var e=document.getElementById("selfMedCheck"),t=document.getElementById("likelyMedCheck"),d=document.getElementById("bridgingDesired"),n=document.getElementById("bridgingDesiredLabel"),i=document.getElementById("noMedCheck"),c=document.getElementById("diagnosisCheck"),a=document.getElementById("hrtCheck"),o=document.getElementById("noDocCheck"),s=document.getElementById("immigrationCheck"),l=document.getElementById("immigrationLetterCheck");i.checked&&(d.disabled=!0,d.innerHTML="I)"),c.checked||a.checked?o.disabled=!0:o.disabled=!1,o.checked?(c.disabled=!0,a.disabled=!0):(c.disabled=!1,a.disabled=!1),!e.checked&&!t.checked||a.checked||i.checked?(d.disabled=!0,d.checked=!1,n.innerHTML="I need a bridging prescription (invalid medication status for bridging)"):(d.disabled=!1,n.innerHTML="I need a bridging prescription"),a.checked&&(d.disabled=!0,d.checked=!1,n.innerHTML="I need a bridging prescription (invalid document status for bridging)"),0!==$(".med-status-check:checked").length||a.checked||(d.disabled=!0,d.checked=!1,n.innerHTML="I need a bridging prescription (select medication status)"),e.checked?(t.disabled=!0,i.disabled=!0):t.checked?(e.disabled=!0,i.disabled=!0):i.checked?(e.disabled=!0,t.disabled=!0):(e.disabled=!1,t.disabled=!1,i.disabled=!1),s.checked||(l.checked=!1)}function disableButtonsLogic(){var e=document.getElementById("countries");let t=document.getElementById("docx"),d=document.getElementById("pdf");"Choose..."!==e.value?(t.disabled=!1,"PDF Unavailable"!==d.innerText&&(d.disabled=!1)):(t.disabled=!0,d.disabled=!0)}function countryFilters(){var e=document.getElementById("countries").value;disableButtonsLogic();var t={England:["England"],"Northern Ireland":["Northern Ireland"],Scotland:["Scotland"],Wales:["Wales"]};$("#gics").val(0).change(),$("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(),t[e]?t[e].forEach((e=>{$("#gics option[value='"+e+"']").show()})):$("#gics option[value='countryNeeded']").show()}function revealContent(){var e=document.getElementById("referralCheck"),t=document.getElementById("sharedCareCheck"),d=document.getElementById("gicSelector"),n=document.getElementById("privateSelector"),i=document.getElementById("immigrationCheck"),c=document.getElementById("immigrationOption");e.checked?d.hidden=!1:d.hidden=!0,t.checked?n.hidden=!1:n.hidden=!0,i.checked?c.hidden=!1:c.hidden=!0}function privateProviderConditions(){var e=document.getElementById("privateProviderList"),t=document.getElementById("notUK"),d=document.getElementById("preferred");"GenderGP"===e.value?(e.classList.remove("is-valid"),e.classList.add("is-invalid"),t.innerText="This provider is not based in the UK, which deters some GPs from agreeing to shared care."):e.value.includes("Other")||e.value.includes("haven't chosen")?(e.classList.remove("is-invalid"),e.classList.remove("is-valid"),d.innerText="",t.innerText=""):(e.classList.remove("is-invalid"),e.classList.add("is-valid"),d.innerText="This provider offers GMC registered and UK based specialists.")}function submitActionsDocx(){$(this).append(' '),$("#generationForm").removeProp("target"),submitActions()}function submitActionsPdf(){$(this).append(' '),$("#generationForm").prop({target:"_blank"}),submitActions()}function submitActions(){"0"!==gics.value&&"1"!==gics.value&&$("#gics :selected").val($("#gics :selected").text()),document.getElementById("generationForm").submit();const e=document.getElementById("alertPlaceholder"),t=document.createElement("div");t.innerHTML=['"].join(""),e.append(t)}window.addEventListener("load",(function(){revealContent(),privateProviderConditions(),countryFilters(),document.getElementById("countries").addEventListener("change",countryFilters),document.getElementById("selfMedCheck").addEventListener("click",checkboxStatus),document.getElementById("likelyMedCheck").addEventListener("click",checkboxStatus),document.getElementById("noMedCheck").addEventListener("click",checkboxStatus),document.getElementById("diagnosisCheck").addEventListener("click",checkboxStatus),document.getElementById("hrtCheck").addEventListener("click",checkboxStatus),document.getElementById("noDocCheck").addEventListener("click",checkboxStatus),document.getElementById("referralCheck").addEventListener("click",revealContent),document.getElementById("sharedCareCheck").addEventListener("click",revealContent),document.getElementById("privateProviderList").addEventListener("change",privateProviderConditions),document.getElementById("immigrationCheck").addEventListener("click",revealContent),document.getElementById("immigrationCheck").addEventListener("click",checkboxStatus),document.getElementById("docx").addEventListener("click",submitActionsDocx),document.getElementById("pdf").addEventListener("click",submitActionsPdf)})); \ No newline at end of file +function checkboxStatus(){var e=document.getElementById("selfMedCheck"),t=document.getElementById("likelyMedCheck"),n=document.getElementById("bridgingDesired"),d=document.getElementById("bridgingDesiredLabel"),i=document.getElementById("noMedCheck"),c=document.getElementById("diagnosisCheck"),o=document.getElementById("hrtCheck"),a=document.getElementById("noDocCheck"),s=document.getElementById("immigrationCheck"),l=document.getElementById("immigrationLetterCheck");i.checked&&(n.disabled=!0,n.innerHTML="I)"),c.checked||o.checked?a.disabled=!0:a.disabled=!1,a.checked?(c.disabled=!0,o.disabled=!0):(c.disabled=!1,o.disabled=!1),!e.checked&&!t.checked||o.checked||i.checked?(n.disabled=!0,n.checked=!1,d.innerHTML="I need a bridging prescription (invalid medication status for bridging)"):(n.disabled=!1,d.innerHTML="I need a bridging prescription"),o.checked&&(n.disabled=!0,n.checked=!1,d.innerHTML="I need a bridging prescription (invalid document status for bridging)"),0!==$(".med-status-check:checked").length||o.checked||(n.disabled=!0,n.checked=!1,d.innerHTML="I need a bridging prescription (select medication status)"),e.checked?(t.disabled=!0,i.disabled=!0):t.checked?(e.disabled=!0,i.disabled=!0):i.checked?(e.disabled=!0,t.disabled=!0):(e.disabled=!1,t.disabled=!1,i.disabled=!1),s.checked||(l.checked=!1)}function disableButtonsLogic(){var e=document.getElementById("countries"),t=document.getElementById("services");let n=document.getElementById("docx"),d=document.getElementById("pdf");"Choose..."!==e.value&&"Choose..."!==t.value?(n.disabled=!1,"PDF Unavailable"!==d.innerText&&(d.disabled=!1)):(n.disabled=!0,d.disabled=!0)}function countryFilters(){var e=document.getElementById("countries").value,t=document.getElementById("services").value;if(disableButtonsLogic(),"Youth (≤16)"==t)var n={"Y-England":["Y-England"],"Y-Northern Ireland":["Y-Northern Ireland"],"Y-Scotland":["Y-Scotland"],"Y-Wales":["Y-Wales"]};else n={England:["England"],"Northern Ireland":["Northern Ireland"],Scotland:["Scotland"],Wales:["Wales"]};$("#gics").val(0).change(),$("#gics option[value='Y-England'], #gics option[value='Y-Northern Ireland'], #gics option[value='Y-Scotland'], #gics option[value='Y-Wales']").hide(),$("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(),n[e]?n[e].forEach((e=>{$("#gics option[value='"+e+"']").show()})):n["Y-"+e]?n["Y-"+e].forEach((e=>{$("#gics option[value='"+e+"']").show()})):$("#gics option[value='countryNeeded']").show()}function serviceFilters(){countryFilters()}function revealContent(){var e=document.getElementById("referralCheck"),t=document.getElementById("sharedCareCheck"),n=document.getElementById("gicSelector"),d=document.getElementById("privateSelector"),i=document.getElementById("immigrationCheck"),c=document.getElementById("immigrationOption");e.checked?n.hidden=!1:n.hidden=!0,t.checked?d.hidden=!1:d.hidden=!0,i.checked?c.hidden=!1:c.hidden=!0}function privateProviderConditions(){var e=document.getElementById("privateProviderList"),t=document.getElementById("notUK"),n=document.getElementById("preferred");"GenderGP"===e.value?(e.classList.remove("is-valid"),e.classList.add("is-invalid"),t.innerText="This provider is not based in the UK, which deters some GPs from agreeing to shared care."):e.value.includes("Other")||e.value.includes("haven't chosen")?(e.classList.remove("is-invalid"),e.classList.remove("is-valid"),n.innerText="",t.innerText=""):(e.classList.remove("is-invalid"),e.classList.add("is-valid"),n.innerText="This provider offers GMC registered and UK based specialists.")}function submitActionsDocx(){$(this).append(' '),$("#generationForm").removeProp("target"),submitActions()}function submitActionsPdf(){$(this).append(' '),$("#generationForm").prop({target:"_blank"}),submitActions()}function submitActions(){"0"!==gics.value&&"1"!==gics.value&&$("#gics :selected").val($("#gics :selected").text()),document.getElementById("generationForm").submit();const e=document.getElementById("alertPlaceholder"),t=document.createElement("div");t.innerHTML=['"].join(""),e.append(t)}window.addEventListener("load",(function(){revealContent(),privateProviderConditions(),countryFilters(),serviceFilters(),document.getElementById("countries").addEventListener("change",countryFilters),document.getElementById("services").addEventListener("change",serviceFilters),document.getElementById("selfMedCheck").addEventListener("click",checkboxStatus),document.getElementById("likelyMedCheck").addEventListener("click",checkboxStatus),document.getElementById("noMedCheck").addEventListener("click",checkboxStatus),document.getElementById("diagnosisCheck").addEventListener("click",checkboxStatus),document.getElementById("hrtCheck").addEventListener("click",checkboxStatus),document.getElementById("noDocCheck").addEventListener("click",checkboxStatus),document.getElementById("referralCheck").addEventListener("click",revealContent),document.getElementById("sharedCareCheck").addEventListener("click",revealContent),document.getElementById("privateProviderList").addEventListener("change",privateProviderConditions),document.getElementById("immigrationCheck").addEventListener("click",revealContent),document.getElementById("immigrationCheck").addEventListener("click",checkboxStatus),document.getElementById("docx").addEventListener("click",submitActionsDocx),document.getElementById("pdf").addEventListener("click",submitActionsPdf)})); \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index 1d11d0a..ecedba5 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -28,7 +28,7 @@
- +
+ {{form.under_16(class='form-check-input', type='checkbox', role='checkbox', id='under16Check')}} + {{form.under_16.label(class='form-check-label', for='under16Check')}} +
{{form.no_fixed_address(class='form-check-input', type='checkbox', role='checkbox', id='fixedAddressCheck')}} {{form.no_fixed_address.label(class='form-check-label', for='fixedAddressCheck')}} @@ -109,7 +115,7 @@

Why are you asking about my address and ID?

-
+

Medication Status

From f42d673b221a28aa8966cafaa2475dd2d4e45afd Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:56:13 +0100 Subject: [PATCH 05/15] minor template changes --- app/docproc/templates/template_v1_0.docx | Bin 129750 -> 128438 bytes app/docproc/templates/under_16_template.docx | Bin 120586 -> 121120 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/app/docproc/templates/template_v1_0.docx b/app/docproc/templates/template_v1_0.docx index f7157b3c2fc96807617818ce5220f7389a14c868..42800decc78efc1447e5558a047cc7089994d087 100644 GIT binary patch delta 38043 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�CBZ zE?<-HcRK;UvnzNH41d1UQ?{9hme6i1W+jQgUBDuVK92td-Mi(r5~RUAnN^0LA5VXY zyN7v~G46gYaMz}W8w%;sdpM*~a$AE#YtL|Lw0?pB4?%9Zk(ZQ+nDmGiA=4)(O%l&3 zA#t}gZ@B#UisWbdU(*g(`}oI)uGD|LY0y_!0MXJP+>HMfE`RwEID1>}Lp$)#YkfG; z|Fw>a+sm_0C>VRco{IDnTz>t8;GeoR*k9{UaH;!Kw^sQCV1H-jPqt~_)>t^YMo9O5 zd*yG~8dn^x{B<@Tt^D=i%AZb;Mk|Xw%Aq7gQ;`*xB~5K-vEsC~O=i=I9?j%*4xFWg zxYT?-JF00O&3|RL*=?*K8j;;t>`V(~620HqMLUWP`WO z^dOy7uTQB5d3lIs+F@wzsYJ5p!|>3avI|92 z3Eo62Lp#&upZ}h zGCL-@dKxpAYnWS$a=7)W$uaYIK?hbAORq@-SGoyhkM7DIXp(jh^F)OfS81AI%r-G?DVE7T0srF*CZ{N!YM#xXzi~ z#`w&xHoAK1A009DceHuUtv-2_`j_({o@|0r%f0n#?GsYFO@`raVy~p@nAq5pgT7<5 ztFx+WpC4AcMQ5+(!|`d*O=?u*pCoNrah zxo(V7U+I>+YqGDcj>?mObm#_l>l7)WIlO(OA{QfGv^c$MvOL<= z0frA#Zd{%Dx!4wmb6k!IT-Phsp0Lq$O;5*rIhXCMX1H0v<43BTvI$|?lbwB99H*6X zEq~3cP;`Ko;jYzI&g@)abLQ$a+r7ZMX)_fR zd%ke>cch+Lp}_e_UgE(SJjLp1#?6HKB^EobPS|+R5g7dqnnzWZQ#N zY)S1L3Z&nkuQwL;tJ*{buDCHO;hgb>VWP!L7aNTb5osjt9U!_yXllP05yVG;A4|Y{ zK*5pjGuQoqr)*%<-01F1+-(~0nHq_LAwEF(H=Fk0M{x{yUw02!xR?KJ?*L{=pR(NZz5M?6CbH`{ zkKu3h-0lB={nodO+RKRfsD4y-eL} zy&n+-Ncx~~|0^}K->w;9a<@Eh8~Q={uMtJyuMx1f9gkeO6u#DwSMbapbmRaZf55p* zpWr*p4>iR2{0Lt{etfXd8#*~WYy*pa(*=C>hS>+3z!cmJf9n=PDgCNf2!DM+nqls~ zAPwBVn=42XEcxB8;Gd4)pN`+Zv*RaSO|0Ca4*xyJPrSkjS&ib-h zdnq0TX|I&|RgCMGvQOft%#1B;mmZ`UdveC~_2h0(itL?t17>enoE<5M4><39v#IyaNK=PmV<4^nXr~UX2`;iq(ehByPe&2rZQ;QpSfQp9iFagsfwLh_= z@n)=@C(&^{&rC8Ru73(UE{BD!x7Dd;S^GRR$m`W(IKU1oQG!dh+s39Lwjb&oFpdv_tuwo)(9YhE(i-GwXe9{~~Q~IEFuc@7)LcTay$STV?iTC~&%|AZo z{(HbbG=Km27c4sed5q={9HaSgaT~jxDd|d~Qzq~j%FEdk7<>QqhpwVmjd-=B|EdY^ zza{Z6`#1#0@qKu@=b!d*2%O@0US;4nH(q}nf|dzUAVtKvpZYjNcg&_M{_?#BlB4IWhSlKqiyM7%q=dOM!@ z{wopiAlB_56-w#ODgMFFMSSHT?C;e7ulPvCkDd(v*PJuHa|`y;>(j!p(|+u@aCac{ zfBJFZ*L3lHS&$f-_{0L|{u52f)F)14`A-xp_bE!`=)OuIx{5k@0{wLeqRZ+l;+>@H=OlyF->lpX`ptzB;G|Y&2dVe* zQQv<_A103vWo4wc5of9M@$u@EkN@@CfBc`nwoh(VJb>D1`PAmt$49@a@+Sl-E#FCu z@|PsAimc4s>K7|Zkj!-h%R$<#un`=^&_0zHndOuvXo@$|#wZ`}a8~zyXm(+=pfUs` z5z9A<%IRJ)upb7Y5C)li4ut;%5a=O}eGY#`{4f-aK&d_hB7X`9Nc9;K^>avH=p6lX zNciVSS?;9Zp_>(nQGwgSLlUEi>ih!$&W$QCgE*+J028I3 zVT>S+enKKp>jfbp>>oxLBS~gEF=0QWWFH^vB7M5o|L{^DivBdzzh7QzIPv#23z~mp z5T~o+vU;vte9zbo)rHKe6DO_uQ9}wR2IH8er61%k)*<;>H1N=W25G)E08J72WYh(e*-RB4l>B6+$angs5eTF8InWU$37RZTLp7*iDkybm;<>_zzwuDP!OF^ z)R^X9vINI9>bQbWSQ=yLJNl;RFWc%G1F4=G18{_tWtCGrBES6=c_}fRhIE>3iY#-7 z=Y1aNDjS13sZlw6mR7)E_nCjZpMimT(40#h6b=|xpf-KGck2j}`IC`aepWo#L0Rp9 zc#nOGdr2*UPm7TRdcW0PZ_6ObV`r0G(lv11bS^ zA0Oh(iX1qWAZc8)x{_1giR1p65yx4(2F`SBegbHT zVn_nVVBhkm7r7p~zLhIHBmJX1D+5S}vlnrtA_H`2WpSOPLv>JQ?YgB?{e}@3F-E~C zzs-EU9dO>E?mt0=TH_T)?tcpW0UraGg8UZpzOMol49w*NbmvJNM;V%We6T=&NR+^F z^4=-Obseh`hoW)cWvG8=U`qP4`P%&!2(tn~$Z%(8)~0xXR(t&TkQxbCCB0R67~hLq zt7Zzt4=kwwk2eL#HlF$(1=h1S^%G>=Q{WpY0a(e0y7&ie&|uM^;NDZ~;C`Yh1|0Zrjk@t<`RgxKvwZQ}6_Mv=k#~Q>0Gs#Jmc7g+l=(g{ z)bqUTpgdgGJ>bLC^o3y6hpGeFaH+uN%X|qISNV`;yl`i^0jutaY#UaJl` zB?K{B1$eg~AC0=odZ15+1|ygWN%S4X&@n~4A0upxf@MMuT_pgof6`UsDKE-u>SW0S zOniJSfV%e07|nmOtcIe`MPPQCNkJU8! zt(e+xRFY8qoyjNJF~f>4 zSsS?iP@W|i;fp-Li3Be|-2TZ1W>I5;6Q#G*Q09gOlpB8(GF;H%yQY0Y4ApOc``bhA zgO&a8_rJr3y)l8$V8QB0j?Gy9ulfig@e5{_6eAV}2&{q~{oD}pr@G8mure6?wU_Iq8 z)&``0!rp&?T2&3?AJEcf6Iiejc=Ni}XyVlf4hD|y_58WiP{)8Ge6q;O9O(1&0()P) zzkS!B83#GkVF(4&55<#{n2-+v!40bzs2Erl&nv9Ai+{r>EQ&HX_kpKS{sW1Q#Sbh) zjz5f1aZIA*1miLO@31z|(Ykbighnjn!LyP6-Z+2bO~i}dBbDAI8I-OU==s`eSOJ^ie8=>-}@ z=#${@U#VpHXG+%h_Ft)F_`k7|0rf#injTb*K#6`hUsVk!2$XzQwITh_R<*A%J&@#o z3Dtjt35VnI1z!lq#{@&%dHxG7&Hvjx4_p|5Ip-CA*j51&a1Ng=>v}ag2TKvuq*$GAn>7x z--pjn1oq1q-rhcd$l2*YaS%?E42r|$mw~va3~tUn%J>Uhi%>q#?cj#f$46Z(1&)7H zSFnklv)_^3Rl^nB2Lq_d}YyDz%2;D2rNS;<26xj&3xr$kw4Z#lNe2!>v4fq z+qEgrx$dypm}M<1J)kbcRk=W@(a3+u>$Rg~ky>e_txh^rJ>HJT{iIplymhDXo4qTC z+NSk6!()rfQFWA=PD}Jvp*5c-jU(LyMglHt`=iY}ddrrlfbwq6Qfe}4ZJqGr#k{8F zF1%rBh}2ZGD3UHYjj+kV)ns1V`9h8y0zF*E^(mS&Js=tDR;uLUEmY8{I3a(w?oIKl z8#Q*dTYHkm+tcJ6vL?QWR+Bh1&U}Z-t+K#&`4Kte+I&kMi}hvgne4ji0nei%vw6y_ zuMmbPZIN3)C+P2RsvJJMyQnr-6LOes(P zCFa{fZK$|dUKletN8Mo^TuwNC3U-BoM<=DmVysdH0!7SCLbUB^g?4|~#4|~XwN>ya zr$VHZIDCgn>R3b5T@Sbt_e4l%jO(bkBEy39fyGEE8L1NkGbSUhsSz8o6%(JIs5;n~ z{uGI-l(a5W9dQaGx0;rJ9_OLUpRbgWmO5#~D&UTUr!~w!&*rx!u3t@5Yfe{+G!Hj@ zU&r0w#!E&mcDLq>9EPA zqq&u$4TcD-?q&%&?i59|Cw5#}Yo}!BGTC|I{1TM46zHSXW_F>KT`0G47Az`haTA%z z%`2JocBUO>5qp;@6CZZ`s+FUgcIjjSyJSJ&b=5(1hox8UHKl)@vX!k{G4Rp{ZnrDS8S)7l`TBZZ*tuiLJIvLDK}o z5`>K`OB~^|p=sC4EQ&9DOnFYdj%aMPT;Lt1;gQi5yFA&j#(Yi|SXLB!YvCiytoDvQ zpb;rMec8-VdSid1g-u{s&gg<=B`{BrjkTWF45N1O>7YAct=_gy z7+EJ>3zy`zTlIjG37eZIf%NbL>bNQ6+Y*hBJT3vT{YJSSSXV*0kVG{>+7x`kdRo15 zq zmcnLhsTF^PH;cOCoo>{E(O#;J=IF=6WNDrhWm;$tTrjvW1j1zz17R|717P#@%Jk9s^y1DvIsw0%4 zgrn5R!wWlEOqW!;bS{G%i}{U7Di1>zay!Y?4V%cDY@?l3Cs2YN6SI4STFZX8LVCbU=CiX@ z9L<{ANT+tUO8nc>(9!E?K3N)jZ%q=TU66lJi{>~pQC_CI5yf6C>Ns1oR3k`{VeHI# zwqh7$P@B$`PGy7e$j-jnhx3?5t|mh@#vJ7cDT38w6on zPTjVO$U~AE4u2r2**qK(y2h$3E2_}_011|h0Jk>gVILU>u`v#qf5!E0nR4}+jMaZ# zWUYYTwty&t9?P24+vd#+>q)IAz$-}-aoD#g-So)j*~NGbNDyX-XH;6Lpsn&WSt3(W zf|;wBQ}&_`VO@4ATn0et=(3XF@=_Ra`(wcE!;q7}AC?a380NbXxPr7B4tdY_R-jMi zbKhdB4SKkX6_#gPRTfxO6@AYoM{a*HMmEG~gkKNGB`nMzIr(se^fHD$S-0(MX3~By zx)#Nvx>qxuAqG8EwFRIfPiUt>Ua47yxJ;U=qy^}bV59EJruxaSSzf89XJ0;OTT^g} zv2yiph>{VboX!bmqmtU%b%MdbZfU_}h)0WB2gOr|ka&1kiG}v=%twk48FYCvD ztNWr3CyeW7?Zo#qD;zHtF*J5u4P&UGGFz0SMXUXYq^gd=mbhU7hqW>VnbL55xt|{7tGA3S2&~%D zd=0!vFo7JaPr3GW0wYtR+RHs>t23NOBEr!FZt5u>((!Ai zn+hj!>Mv7gv^!;-q_r!|Z#JTZayPae46Jl>UC~uf#6Bf#pHC{5If5Bk%WA0$-O?&1 zM=_e`jW4DhV%j8^Vv~QVV5=iuSJ9PLRzxuNG-lPOEN+5aKgC7 zZDAa;{JK2x^}I@=>keIa<#kH$nAK>U)?MdtNaLQ@)tp%`ykl`ZtWLvPzG=ElmWzY1 zw+ui>Vu(v`Li;V9B!qD~WIxn@PpTkDs@i6#9&+sd1j zLZq~cwDLPD00v@MdMw*7cAw>`a>5F|;mCU`fD<=R!E=8cbKcDxZOVjw6v~4MIdr#X zE^t99x1wwgo&%4R>ytA!D*-LbJjCT}ezY{k+b+&|IZwp7d>J(-DOUAaOQj$@SR%-Y zF~e?)1Uo(%x9o+^y**dRtHGT!x#MJ3oZUsoQ!-asY`*3fxPI~{qYZN=4@=>opF8Jv z;dX1jK5u`?Y@{D71h}b|FIMhSnlER1X-8*W8-hnotO0LUP2!MeMQGd3BD1Z~?7W)~ z!clB=Q^z|>&?+yaD6&~ZYM8tAwNxYe5VZ4EH(I)7GVu=7Y(47%$052V%#q;E!rFpH z^JSn#eyOs+Af8wl);FtY4@TLcfeP*SSGiYRiL1J3<-Ryeg;cG_pP^w7}GDkw;}JaQV#9QY;x+U zuf?_Oj9rpY(i=bM+Q+`|Bivyt;nz6THFx^mwEN~+g~L~;Z#J@Uj7HJF^yguxt%Cb- zpiFL5{>R7UFY)lO7z)P2rGu|q8u%t4i=2OlFbmTAc3i({47W_1CkXK16^0!+Y1Ipp zMg4wc_GD#g>R1&N?!H+KcOu`2{38Eb+2O_?_4qK<`pr74rNbq?!SaD-^Tamz! zM68)8!*Po}dTm!BpGXc(NTIL|V}XBEDKu?Jvdv>+rm_~g<`{VZ+#e4`=-6T^Ur-|B z@$n^`h1VqS2&_)gHrT1l3u$i2(l1z%Kc~R&+cl=ZsM~by3vwFX%4;2P$Ah{-d%%L! zuu158>8zO-WV(*hLQ3XTck>HFt7Zq6SVXydL$1?|+Ky&p!jCTX)wjcf&?bKg9)~DX zHuv~wSdDL(@r4wn0$oZq0&gT}vDgwWsrRN6zirw>0VboJlAFpKP=j#F|ZnIk@E$McGS=3F<>4e@eJH_RQO|>~l zymi~F700Yd9WQbm#Hl2?Qf}mR^2`cf+a=|f+O^*F_Gi@_?5}!v8t{MajLCcel;mB* zxri|FK%v8ilP^gTEKRS~ORU+At~b1GN4IlyM2QJQlb*wM3FTKwtx=PV9_!ui(t37; zvgqC#yyUpLoejX0X4|OZo~tTPoO=op6r2;<^dVU_>g3AUA-2f5_4JgrVv5#hqhl6Y zck@=uc*5CHo_@9-JI^=ZfX+g z%5}|9F{QQ3)71=5t|D!dK;0wZnTSiF2eb&^+U{(&7(tSG8BdN4P#D&|>gKBPfeP3C zP0yx~q2C{`%qmraiBstLK%qxWqpa!vcHF+_q_=c*Xw>pBp1^;*J*1;Mb9~1AE`0cY zn|t*|zyP(1u*VaO{`?id8SLGc)B+5FG{mJWh~^Zw>esH?;{!^&bJ~L&u8?m~MH ziKkCPs(=RB%(`b9fOgvrst-Mbe5kVCU_Ze(qW_Mc9K8(BE5&}@Js886@Za_hV3F)8 zFC5n?o-3Jo9Ren}u8(ibYzUuk*#?UsAY$-T_`j(&fk{?~-U(6Un^Y{bKUG@aOK7ME*#>Yqa`S9a|(SKS~z@N#$s^4@0-+UVOrT4+~XKo?X z(yw}j&=({r>e&}0f%|uN1#xVQf43|6r{njhA0QNi!^^)$XS9W0(aWZW=VXaa>unBY}R@s zWxTt@ZdC*hZLhT}LNv57)-{^3-E7uko17S}j?N$<3p%>HB0e|qq84s;|Ge|}-mUs4 zIDen|Y4G@N=g;2MU0rujlUws9fMO7(iuB&QbO>E~l@3w^C`|~6g49=<^sWRc0#XDG zp#%YiNbeBT3(|u$0Yf#E00LjUznSlTzx)2Pb9SDYch2tYnKNhhdA8aAYrC-&l=0E| zCvrk8ruZNUPchA(#ZlB{BEU0rBXFc$Jfk$7;M8dl^~%brmG- zo@`IzGF0vg%-Fw}l>Er!6Afm&dY)1yO;`qnZ01cW+8fq??ly^BNpTkIx+gDbT7TzD ze|;G1r?edSMDF4GGu6z#lQ@b4Q;5A?=8F{7N_*w_xt`v<_B5Jkj*Z1MQ$^BR=G7&) zo2<8GbiIBqe^_Q0ETY=^4zBdNULm{4+INYn99UwJT~+VrFLu}fGL6DI*5>0B`a^;S zdm3vVgO8dhBsM_BA@o=_^#T6fYnN5dpBfG9EM+US-8!yDdl6n9$v``HJ{B{RMH!u} z3G5fMb)64#tM_uh&&h~CY*i$;XReTb#N5a8$>3^>B1~)T?dgHzN;3~#k|9c!e%Ug{ zhRB}ljn{uZN;Pqlm3Ye&4=fm(5>lIm)1#E@S$#0ba;U{rnYT$Gwf&dG@VjDdD>L9Q zh+O1oZTkFrWQ7@qoNzZH{Vxzgh}QY3qI4)@C(Rl5i+MvoJDrVIa`_0 zKB%w)zj{F4ogGp0?tWhEN_oOC;eq;H8sM9kP5SLr#b%15j@4Fg6kClK_YmqyY@=TJ zugkGMSdt=g2Zd!e(kS?On!*gh>zT{xsE_kcb-vRcruOAb&hWBPW~zmkXOxR!Df=%J zX4oP|PgP-!?FdjYS%Xv)VMf$3Qu#SZcKR2&@h#^Jb&@kt`O=HDC~ACfjrYp=GD~Ku z%|#F`Av}AMGpnO@>|!$BjDMaupETP}1Gf!y&wSmMaoIPyt46OHh6WP4& zpOEG8bspRF*Zqq%jW57x8zg(qL?PwA(gV-7%>t#t&*GCuTRxHBn+RodSK8F2jtSu@ zgqA!`Z20$0(cII|2PnbhT3Q&N-NAgLeeIw|%CTlgaA=`jWaqj!ux%@Q6qV#)qm7w9 z-1x9^GRu@G$&}}f-TcXdDyL@ z-vP~=Cnxt!moiyj0a=1Yeif`2{IRJ(Q^x3(oXd46H;CclSSS<2F9;PreH?G|&3D`Z)yO9gf;wn9mdv zJz$W9B%j&?kuJ6QZSHMR_>TpM{^&Df94aH{2Yu4#k(p?qVdZU+xX&-I&i!DFQO^?e z;q2q?2G;zG{V^bmt?Z`D?)+TwHBJJ$+%Fd;85PmDwz?iYN_^%OQB!l;`Kp{HhPyPq zuJbl(a#UzX%~(G2^Z+AE_u$3I0hTe~b$V0jry{u>y@eJIjx`f*R;T86d8pE9Ad2Je zQj5tHpcMlw(3jY!%Uoz|yEo(7dzA;js zeBt;C`O4i$w^OS6LcMs}Qbf;{z+sv|m4^s2!58UF^+T@J=)mi^nS!o5Y+H@uE5QI? zQ?6X2RKA&JGwwlmH2+KbreJC8?P{gvXicXer04@BiI)f}-RGUTyyctn1(G!UvCo`) z-vc94?^+h^}$uYq6B3c-8bZZ zA_FrCVK|wdbcqDom%NP`0Yj`z_Fdk+b>o0@BE7!Ub2=_MKlv$2gTchfoc9uTKM|Il z-!RHDdAGHj4Be+ico|Z~3@O<9H}Zr?_qAWs*p*ofAfRIUy>GAF%SnbL-LuraCsvSK z=+4qjk2R~XRB@|DGbrv1a0T_@z#@So;t#V*cLs#KWI7Z1CFAw!q@ig34Y4M(`v{<` z;a)Pm9p?bg!}!Neh`mhRtT`&AULYk!6`9VboKobCNnx#F;ZCYUa~)v=Ewr$q0drp= zoz2Y=6HB3v0Ukc>HjClN=xGb3`>MHI`a_aTO4gcm7K;ePYeSBc=+|w_w@jc)t_6(z z^o=o9*Uu19>(*)REs6@bI1Gm9@`6<+C9N z&|?$*cvJ;ucYI4cd{Li{2nTl;l|=qq}mj- zs;uvINmRSzTa%V2__69?e~V}x;IT#NGwvfCsO~98+d0rc%wXaz(zPc>^vqShGt!Y= z4WZ0uTU>exOSZ#Y@Ce6*fObbH%vryPq;wT zYQ8J<`@ohxmJCTjQ=i0#MbnXK-GiM*_{?M=>B+0V3#8?l@0Ww?&I$I=e&V9U<4 zdQxkaYH?*;^YvRcoN^#Xy>8BDx^P(boQ_yQW4xxXV2vuK%%C9Aots%&w6cD=Q$km$ zsa}`;<`ZhusF4(=EWrkVvJm{>lHn&sJnd4TYJL^0XFlA}10YZJn29ZQd4rHXf1TTK zcqxdtbus8-q@`=k?d70j$#rQ?>NP31fmJS^=Y1|88<b>3Ql?5 z0-7(Rieb1>LFwo~w-hjDbwh-_&LpL=C0)|^Qkw#!F3`*WJdK9)`?=)+{a$3UR>f81 zW$$qw zYAJ4V= zGr8by0*1+={+bJp#It?C&ari*q_EdHkK;o(a2ud07XMo>-{Y+P{hP<|A&-HOl~$lE zp$zrouwT%5xnivH!gImT2C`pTYuh>;lwjL3!$00z?sOeC+Y60AfB2wwM;v#)$J}U- zi8`5r9Xzrc>-K1YG0qw#!f;y^Ov{E#gky5Zcv0w}7T-yq3@wa*G zLhS@}oY(iZ?2nWoF$eEYQ4XCZ}xu zyw9%coejq?y>ubxAjB_cldAB)rAqmAad<17pw0+8r~X4fZC2_BMe~v$tYzmkfBFd$ z1_51C4Dkylzp0HD^jc&3#N7FaLy+j`rC1hx!lQ@2$@@Wfcedo2Ff=(YXfEpOCd zsn}~(JHhuXWgZ%L$di4!C&E&(xhMii2P4C8S9&A$3oTpzO0xp9g774xbB(+!n*8Ra zY@)!nd*dFqoC)$NI{SlWKou9VQT!!!4dCS7O~|bQS!!(uf?t7&)X3=ijl}ghhPK=J zMdB<^zcWz^X@(}`XvRo7Q#U=brIsC%^b|h((qWCW-<+cmgt%K<$NEg!b)SRJ^V-Go z-}PBc*avEa3OxB)A;~qiTS4_=HZqdzXsg9nYgAmS)=y3JJB|3GdiMXu;yQ9bsafaPkr`s24s+m>NW9tU2yZv8{&Z(5()cr-#?$5hx)Wu6Oi zZw`5hhjO~yFWYl9l0axIEG?unbbrW6|FK-wL|2%*_~1Sof73Pe?jo=xBv6)j9X{x! zY<$uqQ*!Oig*u+|zpbS?!s%3C7wB>84-g5-T65?Yh$unw2kz$WVq7lH8~kOgWeuzCHWR zs|9~jL6!hSIOp23Inz3ljp{Igr#o7dmoBp9ojoHrs-v#<2`j5y z!gRLGr)M523E>Wfgq z1AW$1j@eA9p_vl??JwJlvVO^pD-65YiL>!Tb6;V3tvO7!s-%b+9|9#C(S8?3NHJS_^WLfK?hvB_*+kmX=nh zTQajRy~5J?AvHqgIr1$r3(>>@hTZKiCMFQ&f9-r3)O#ltC3H;xcL65vf?`Oo9@p*q zTN;s&NOgkXH}N1@j(=2WNJxk+#{csbTab|Cyt8G4$KydXY=0|$5Y=ipsYpoZ{s%=u zl57L7$AkFT{uWLkBAAH?+W(KRhwtG*s-({x;Zpk`9=3m2=>ONx{12GX7w*3gQXw@? zf+PMQ|K0ig50dK@{O2DeLu-y^2RmHn03<>x*#-|h0O^rRqKQ8G99S16eDaSU@(E6M z2+}0`Y7feF0Wrdz4vEhFEO-*pNvfCwANgZNUcjl3h}J(BZb7tUu6ZDMdJz$gI0A`~ zX;p#X0X4+c4sk^~R}W_;fCSn8`{;1%-&!sn+a delta 39351 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%0AB*8`?m>Gj zw$rii(1V{W0f)C3F;T*EhSFq*(jZ4^nxhmY5&4IkLXPl0@;!_^H$-mWFGBLhbP3mq zqc|tQ0{#hPAlXYHmW0reRFN?F>1(Nxx_4+Ep)g8Wo{lXv!8k;>k7SW=-dUB4ui~dR ze}^>tnyBpw;+FFIJL?qIYtNrt2-=D2ra_F#iLLpEI#r(_+)>Bj)4#LeztcLu^z zJ42(XlB0>zgx7ewqA7wc?bKTVPG0xureG@Y>peBdKTg$PVWnp_G#QvDz80`(AVz59 zMd6(v6JLI@Red3T$km*mpuqoxgU3vtf2?u5azh-Zyw{vHf=U4wxbzlC*#$@a(4cBHR8J)G)I-kQYWl0VsBWqcej)SVZWWF zR5e?k5hU}Dkx|E4pq*DMV;9wHleevQH(L@RI0*=j(x-Q?tAP- zi_oXF0Sm{ee+S(I7`=S+-uf1~f9rLSbrUo(oTCb&W_N+EjmcFNbwXll$Y&P)pNSz8 z|3^KYs(qW>4sy4(t_dLviDY<^6{tZkkznY()kGJ;(k2s@y*&{io-UmhS0m8F!vCQ^ z_@_(a(PRXH(3!Y2^C-kLDh(gWorMocd_q3ff)kM2UK*8^D7V0|q)Ud=e_??&NQEeP z9^r(B(J}tZ#*Z;!m(159YTNTk}`&&Hp-#8;%0DL9!R#wjpX#!+|C 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 delta 16735 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 Date: Fri, 10 May 2024 17:04:43 +0100 Subject: [PATCH 06/15] refactor js resolves #289 --- app/static/js/transinformed.js | 291 +++++++++++++++-------------- app/static/js/transinformed.min.js | 2 +- app/templates/index.html | 4 +- 3 files changed, 151 insertions(+), 146 deletions(-) diff --git a/app/static/js/transinformed.js b/app/static/js/transinformed.js index e2bab34..c515aec 100644 --- a/app/static/js/transinformed.js +++ b/app/static/js/transinformed.js @@ -1,154 +1,143 @@ window.addEventListener('load', function () { - revealContent(); + revealContentReferral(); + revealContentSharedCare(); + revealContentImmigration(); privateProviderConditions(); - countryFilters(); + countryServiceFilters(); serviceFilters(); // Countries dropdown - document.getElementById('countries').addEventListener('change', countryFilters); + document.getElementById('countries').addEventListener('change', countryServiceFilters); // Services dropdown document.getElementById('services').addEventListener('change', serviceFilters); // Medication Status - document.getElementById('selfMedCheck').addEventListener('click', checkboxStatus); - document.getElementById('likelyMedCheck').addEventListener('click', checkboxStatus); - document.getElementById('noMedCheck').addEventListener('click', checkboxStatus); + document.getElementById('selfMedCheck').addEventListener('click', checkMedStatus); + document.getElementById('likelyMedCheck').addEventListener('click', checkMedStatus); + document.getElementById('noMedCheck').addEventListener('click', checkMedStatus); // Documents Held - document.getElementById('diagnosisCheck').addEventListener('click', checkboxStatus); - document.getElementById('hrtCheck').addEventListener('click', checkboxStatus); - document.getElementById('noDocCheck').addEventListener('click', checkboxStatus); + document.getElementById('diagnosisCheck').addEventListener('click', checkDocStatus); + document.getElementById('hrtCheck').addEventListener('click', checkDocStatus); + document.getElementById('noDocCheck').addEventListener('click', checkDocStatus); // GIC selector - document.getElementById('referralCheck').addEventListener('click', revealContent); + document.getElementById('referralCheck').addEventListener('click', revealContentReferral); // Private provider selector - document.getElementById('sharedCareCheck').addEventListener('click', revealContent); + document.getElementById('sharedCareCheck').addEventListener('click', revealContentSharedCare); // Private provider dropdown document.getElementById('privateProviderList').addEventListener('change', privateProviderConditions); // Immigration options - document.getElementById('immigrationCheck').addEventListener('click', revealContent); - document.getElementById('immigrationCheck').addEventListener('click', checkboxStatus); + document.getElementById('immigrationCheck').addEventListener('click', revealContentImmigration); //Age checkbox - document.getElementById('under16Check').addEventListener('click', checkboxStatus); + document.getElementById('under16Check').addEventListener('click', checkAgeStatus); document.getElementById("docx").addEventListener('click', submitActionsDocx); document.getElementById("pdf").addEventListener('click', submitActionsPdf); }); -function checkboxStatus() { - // set check boxes - var selfMed = document.getElementById("selfMedCheck"); - var selfMedLikely = document.getElementById("likelyMedCheck"); - var bridgingDesired = document.getElementById("bridgingDesired"); - var bridgingDesiredLabel = document.getElementById("bridgingDesiredLabel"); - var noMed = document.getElementById("noMedCheck"); - var diagnosis = document.getElementById("diagnosisCheck"); - var hrt = document.getElementById("hrtCheck"); - var noDoc = document.getElementById("noDocCheck"); - var immCheck = document.getElementById("immigrationCheck"); - var immLetter = document.getElementById("immigrationLetterCheck"); - var ageCheck = document.getElementById("under16Check"); - var serviceSelect = document.getElementById("services") - - if (noMed.checked) { - bridgingDesired.disabled = true; - } - +function checkDocStatus() { // conditions for Documents held - (diagnosis.checked || hrt.checked) ? (noDoc.disabled = true) : (noDoc.disabled = false); - noDoc.checked ? (diagnosis.disabled = true, hrt.disabled = true) : (diagnosis.disabled = false, hrt.disabled = false); + (diagnosisCheck.checked || hrtCheck.checked) ? (noDocCheck.disabled = true) : (noDocCheck.disabled = false); + noDocCheck.checked ? (diagnosisCheck.disabled = true, hrtCheck.disabled = true) : (diagnosisCheck.disabled = false, hrtCheck.disabled = false); - // conditions for bridging - (selfMed.checked || selfMedLikely.checked) && !hrt.checked && !noMed.checked ? (bridgingDesired.disabled = false, bridgingDesiredLabel.innerHTML = 'I need a bridging prescription') : (bridgingDesired.disabled = true, bridgingDesired.checked = false, bridgingDesiredLabel.innerHTML = 'I need a bridging prescription (invalid medication status for bridging)'); - - if (hrt.checked) { - bridgingDesired.disabled = true; - bridgingDesired.checked = false; - bridgingDesiredLabel.innerHTML = 'I need a bridging prescription (invalid document status for bridging)'; - } + // update bridging status as relevant + bridgingCheck(); - if ($('.med-status-check:checked').length === 0 && !hrt.checked){ - bridgingDesired.disabled = true; - bridgingDesired.checked = false; - bridgingDesiredLabel.innerHTML = "I need a bridging prescription (select medication status)"; - } - - // conditions for medication status - if (selfMed.checked) { - selfMedLikely.disabled = true; - noMed.disabled = true; - } - else if (selfMedLikely.checked) { - selfMed.disabled = true; - noMed.disabled = true; - } - else if (noMed.checked) { - selfMed.disabled = true; - selfMedLikely.disabled = true; - } - else { - selfMed.disabled = false; - selfMedLikely.disabled = false; - noMed.disabled = false; - } - - // conditions for immigration options - if (!immCheck.checked){ - immLetter.checked = false; - } +} +function checkAgeStatus() { // conditions for age options - if (ageCheck.checked){ + if (under16Check.checked) { sharedCareCheck.parentNode.hidden = true; sharedCareCheck.checked = false; privateSelector.hidden = true; privateProviderList.value = "I haven't chosen a provider yet"; bridgingDesired.parentNode.hidden = true; + bridgingDesired.checked = false bloodTests.parentNode.hidden = true; + bloodTests.checked = false; grcCheck.parentNode.hidden = true; + grcCheck.checked = false; medStatusSection.hidden = true; - serviceSelect.value = "Youth (≤16)" + // unchecks all medStatusSection checkboxes + $('#medStatusSection').find('input:checked[type=checkbox]').prop('checked', false); + services.value = "Youth (≤16)"; $("#services option[value='Adult (17+)']").hide(); serviceFilters(); } - else{ + else { sharedCareCheck.parentNode.hidden = false; bridgingDesired.parentNode.hidden = false; bloodTests.parentNode.hidden = false; grcCheck.parentNode.hidden = false; medStatusSection.hidden = false; - - + $("#services option[value='Adult (17+)']").show(); serviceFilters(); } } -function disableButtonsLogic(){ - var countriesSelect = document.getElementById("countries"); - var servicesSelect = document.getElementById("services"); - let docx = document.getElementById("docx") - let pdf = document.getElementById("pdf") - // Only allow submission when a country and service is selected - if (countriesSelect.value !== "Choose..." && servicesSelect.value !== "Choose...") { - docx.disabled = false; - if (pdf.innerText !== "PDF Unavailable") { - pdf.disabled = false; - } - +function bridgingCheck() { + if (noMedCheck.checked) { + bridgingDesired.disabled = true; + } + + // conditions for bridging + (selfMedCheck.checked || likelyMedCheck.checked) && !hrtCheck.checked && !noMedCheck.checked ? (bridgingDesired.disabled = false, bridgingDesiredLabel.innerHTML = 'I need a bridging prescription') : (bridgingDesired.disabled = true, bridgingDesired.checked = false, bridgingDesiredLabel.innerHTML = 'I need a bridging prescription (invalid medication status for bridging)'); + + if (hrtCheck.checked) { + bridgingDesired.disabled = true; + bridgingDesired.checked = false; + bridgingDesiredLabel.innerHTML = 'I need a bridging prescription (invalid document status for bridging)'; + } + + if ($('.med-status-check:checked').length === 0 && !hrtCheck.checked) { + bridgingDesired.disabled = true; + bridgingDesired.checked = false; + bridgingDesiredLabel.innerHTML = "I need a bridging prescription (select medication status)"; + } +} + +function checkMedStatus() { + // set check boxes + if (noMedCheck.checked) { + bridgingDesired.disabled = true; + } + // conditions for medication status + if (selfMedCheck.checked) { + likelyMedCheck.disabled = true; + noMedCheck.disabled = true; + } + else if (likelyMedCheck.checked) { + selfMedCheck.disabled = true; + noMedCheck.disabled = true; + } + else if (noMedCheck.checked) { + selfMedCheck.disabled = true; + likelyMedCheck.disabled = true; } else { - docx.disabled = true; - pdf.disabled = true; + selfMedCheck.disabled = false; + likelyMedCheck.disabled = false; + noMedCheck.disabled = false; } + // update bridging status as relevant + bridgingCheck(); } -function countryFilters() { - var countriesSelect = document.getElementById("countries"); - var selectedCountry = countriesSelect.value; +function serviceFilters() { + // selected country dependent on youth services for valid options + countryServiceFilters(); + + // change youth options to available services + services.value == "Youth (≤16)" ? grcCheck.disabled = true : grcCheck.disabled = false; + +} - var servicesSelect = document.getElementById("services"); - var selectedService = servicesSelect.value; +function countryServiceFilters() { + var selectedCountry = countries.value; + var selectedService = services.value; // Only allow submission when a country is selected disableButtonsLogic(); @@ -169,102 +158,118 @@ function countryFilters() { "Wales": ["Wales"] }; } - - - // Filter valid GICs based on country - $("#gics").val(0).change(); // Hide all country options initially - + $("#gics option[value='Y-England'], #gics option[value='Y-Northern Ireland'], #gics option[value='Y-Scotland'], #gics option[value='Y-Wales']").hide(); $("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(); - - - // Show the options related to the selected country - if (countryGICMapping[selectedCountry]) { + + + // Show the options related to the selected country and service + if (countryGICMapping[selectedCountry] && selectedService !== "Choose...") { countryGICMapping[selectedCountry].forEach(option => { $("#gics option[value='" + option + "']").show(); }); - } else if (countryGICMapping["Y-" + selectedCountry]) { + $("#gics").val(1).change(); + $("#gics option[value='0']").hide(); + $("#gics option[value='1']").show(); + + } else if (countryGICMapping["Y-" + selectedCountry] && selectedService !== "Choose...") { countryGICMapping["Y-" + selectedCountry].forEach(option => { $("#gics option[value='" + option + "']").show(); }); - + $("#gics").val(1).change(); + $("#gics option[value='0']").hide(); + $("#gics option[value='1']").show(); + } else { - $("#gics option[value='countryNeeded']").show(); + $("#gics option[value='0']").show(); + $("#gics option[value='1']").hide(); } - + } -function serviceFilters() { - var servicesSelect = document.getElementById("services"); - var grcCheck = document.getElementById("grcCheck") - countryFilters(); +function revealContentReferral() { + referralCheck.checked ? gicSelector.hidden = false : (gicSelector.hidden = true, countryServiceFilters()); +} - // change youth options to available services - servicesSelect.value == "Youth (≤16)" ? grcCheck.disabled = true : grcCheck.disabled = false; - +function revealContentSharedCare() { + if (sharedCareCheck.checked) { + privateSelector.hidden = false; + } + else { + privateSelector.hidden = true; + privateProviderList.value = "I haven't chosen a provider yet"; + $("#privateProviderList").removeClass("is-valid"); + $("#privateProviderList").removeClass("is-invalid"); + } } -function revealContent() { - var referralCheck = document.getElementById("referralCheck"); - var sharedCareCheck = document.getElementById("sharedCareCheck"); - var gicSelector = document.getElementById("gicSelector"); - var privateSelector = document.getElementById("privateSelector"); - var immigrationCheck = document.getElementById("immigrationCheck"); - var immigrationOption = document.getElementById("immigrationOption"); - referralCheck.checked ? gicSelector.hidden = false : gicSelector.hidden = true; - sharedCareCheck.checked ? privateSelector.hidden = false : privateSelector.hidden = true; - immigrationCheck.checked ? immigrationOption.hidden = false : immigrationOption.hidden = true; +function revealContentImmigration() { + immigrationCheck.checked ? immigrationOption.hidden = false : (immigrationOption.hidden = true, immigrationLetterCheck.checked = false); } -function privateProviderConditions(){ - var privateProviderList = document.getElementById("privateProviderList"); - var privateProviderWarningMessage = document.getElementById("notUK") - var privateProviderPreferredMessage = document.getElementById("preferred") +function privateProviderConditions() { + var privateProviderWarningMessage = document.getElementById("notUK"); + var privateProviderPreferredMessage = document.getElementById("preferred"); if (privateProviderList.value === "GenderGP") { privateProviderList.classList.remove("is-valid"); privateProviderList.classList.add("is-invalid"); - privateProviderWarningMessage.innerText = "This provider is not based in the UK, which deters some GPs from agreeing to shared care." + privateProviderWarningMessage.innerText = "This provider is not based in the UK, which deters some GPs from agreeing to shared care." } else if (privateProviderList.value.includes("Other") || privateProviderList.value.includes("haven't chosen")) { privateProviderList.classList.remove("is-invalid"); privateProviderList.classList.remove("is-valid"); - privateProviderPreferredMessage.innerText = "" - privateProviderWarningMessage.innerText = "" - + privateProviderPreferredMessage.innerText = ""; + privateProviderWarningMessage.innerText = ""; } else { privateProviderList.classList.remove("is-invalid"); privateProviderList.classList.add("is-valid"); - privateProviderPreferredMessage.innerText = "This provider offers GMC registered and UK based specialists." + privateProviderPreferredMessage.innerText = "This provider offers GMC registered and UK based specialists."; } } +function disableButtonsLogic() { + let docx = document.getElementById("docx") + let pdf = document.getElementById("pdf") + // Only allow submission when a country and service is selected + if (countries.value !== "Choose..." && services.value !== "Choose...") { + docx.disabled = false; + if (pdf.innerText !== "PDF Unavailable") { + pdf.disabled = false; + } + + } + else { + docx.disabled = true; + pdf.disabled = true; + } +} // do these on submitting word -function submitActionsDocx(){ +function submitActionsDocx() { $(this).append(' '); $("#generationForm").removeProp("target"); submitActions(); } // do these on submitting pdf -function submitActionsPdf(){ +function submitActionsPdf() { $(this).append(' '); - $("#generationForm").prop({"target": "_blank"}); + $("#generationForm").prop({ "target": "_blank" }); submitActions(); } -function submitActions(){ - if (gics.value !== "0" ){ - if (gics.value !== "1"){ +function submitActions() { + if (gics.value !== "0") { + if (gics.value !== "1") { $("#gics :selected").val($("#gics :selected").text()); }; }; document.getElementById("generationForm").submit(); - + const alertPlaceholder = document.getElementById('alertPlaceholder') const wrapper = document.createElement('div') wrapper.innerHTML = [ @@ -274,4 +279,4 @@ function submitActions(){ '
' ].join('') alertPlaceholder.append(wrapper) - } +} diff --git a/app/static/js/transinformed.min.js b/app/static/js/transinformed.min.js index 109ffbd..d7d1ed8 100644 --- a/app/static/js/transinformed.min.js +++ b/app/static/js/transinformed.min.js @@ -1 +1 @@ -function checkboxStatus(){var e=document.getElementById("selfMedCheck"),t=document.getElementById("likelyMedCheck"),d=document.getElementById("bridgingDesired"),n=document.getElementById("bridgingDesiredLabel"),i=document.getElementById("noMedCheck"),c=document.getElementById("diagnosisCheck"),o=document.getElementById("hrtCheck"),a=document.getElementById("noDocCheck"),s=document.getElementById("immigrationCheck"),l=document.getElementById("immigrationLetterCheck"),r=document.getElementById("under16Check"),u=document.getElementById("services");i.checked&&(d.disabled=!0),c.checked||o.checked?a.disabled=!0:a.disabled=!1,a.checked?(c.disabled=!0,o.disabled=!0):(c.disabled=!1,o.disabled=!1),!e.checked&&!t.checked||o.checked||i.checked?(d.disabled=!0,d.checked=!1,n.innerHTML="I need a bridging prescription (invalid medication status for bridging)"):(d.disabled=!1,n.innerHTML="I need a bridging prescription"),o.checked&&(d.disabled=!0,d.checked=!1,n.innerHTML="I need a bridging prescription (invalid document status for bridging)"),0!==$(".med-status-check:checked").length||o.checked||(d.disabled=!0,d.checked=!1,n.innerHTML="I need a bridging prescription (select medication status)"),e.checked?(t.disabled=!0,i.disabled=!0):t.checked?(e.disabled=!0,i.disabled=!0):i.checked?(e.disabled=!0,t.disabled=!0):(e.disabled=!1,t.disabled=!1,i.disabled=!1),s.checked||(l.checked=!1),r.checked?(sharedCareCheck.parentNode.hidden=!0,sharedCareCheck.checked=!1,privateSelector.hidden=!0,privateProviderList.value="I haven't chosen a provider yet",d.parentNode.hidden=!0,bloodTests.parentNode.hidden=!0,grcCheck.parentNode.hidden=!0,medStatusSection.hidden=!0,u.value="Youth (≤16)",$("#services option[value='Adult (17+)']").hide(),serviceFilters()):(sharedCareCheck.parentNode.hidden=!1,d.parentNode.hidden=!1,bloodTests.parentNode.hidden=!1,grcCheck.parentNode.hidden=!1,medStatusSection.hidden=!1,$("#services option[value='Adult (17+)']").show(),serviceFilters())}function disableButtonsLogic(){var e=document.getElementById("countries"),t=document.getElementById("services");let d=document.getElementById("docx"),n=document.getElementById("pdf");"Choose..."!==e.value&&"Choose..."!==t.value?(d.disabled=!1,"PDF Unavailable"!==n.innerText&&(n.disabled=!1)):(d.disabled=!0,n.disabled=!0)}function countryFilters(){var e=document.getElementById("countries").value,t=document.getElementById("services").value;if(disableButtonsLogic(),"Youth (≤16)"==t)var d={"Y-England":["Y-England"],"Y-Northern Ireland":["Y-Northern Ireland"],"Y-Scotland":["Y-Scotland"],"Y-Wales":["Y-Wales"]};else d={England:["England"],"Northern Ireland":["Northern Ireland"],Scotland:["Scotland"],Wales:["Wales"]};$("#gics").val(0).change(),$("#gics option[value='Y-England'], #gics option[value='Y-Northern Ireland'], #gics option[value='Y-Scotland'], #gics option[value='Y-Wales']").hide(),$("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(),d[e]?d[e].forEach((e=>{$("#gics option[value='"+e+"']").show()})):d["Y-"+e]?d["Y-"+e].forEach((e=>{$("#gics option[value='"+e+"']").show()})):$("#gics option[value='countryNeeded']").show()}function serviceFilters(){var e=document.getElementById("services"),t=document.getElementById("grcCheck");countryFilters(),"Youth (≤16)"==e.value?t.disabled=!0:t.disabled=!1}function revealContent(){var e=document.getElementById("referralCheck"),t=document.getElementById("sharedCareCheck"),d=document.getElementById("gicSelector"),n=document.getElementById("privateSelector"),i=document.getElementById("immigrationCheck"),c=document.getElementById("immigrationOption");e.checked?d.hidden=!1:d.hidden=!0,t.checked?n.hidden=!1:n.hidden=!0,i.checked?c.hidden=!1:c.hidden=!0}function privateProviderConditions(){var e=document.getElementById("privateProviderList"),t=document.getElementById("notUK"),d=document.getElementById("preferred");"GenderGP"===e.value?(e.classList.remove("is-valid"),e.classList.add("is-invalid"),t.innerText="This provider is not based in the UK, which deters some GPs from agreeing to shared care."):e.value.includes("Other")||e.value.includes("haven't chosen")?(e.classList.remove("is-invalid"),e.classList.remove("is-valid"),d.innerText="",t.innerText=""):(e.classList.remove("is-invalid"),e.classList.add("is-valid"),d.innerText="This provider offers GMC registered and UK based specialists.")}function submitActionsDocx(){$(this).append(' '),$("#generationForm").removeProp("target"),submitActions()}function submitActionsPdf(){$(this).append(' '),$("#generationForm").prop({target:"_blank"}),submitActions()}function submitActions(){"0"!==gics.value&&"1"!==gics.value&&$("#gics :selected").val($("#gics :selected").text()),document.getElementById("generationForm").submit();const e=document.getElementById("alertPlaceholder"),t=document.createElement("div");t.innerHTML=['"].join(""),e.append(t)}window.addEventListener("load",(function(){revealContent(),privateProviderConditions(),countryFilters(),serviceFilters(),document.getElementById("countries").addEventListener("change",countryFilters),document.getElementById("services").addEventListener("change",serviceFilters),document.getElementById("selfMedCheck").addEventListener("click",checkboxStatus),document.getElementById("likelyMedCheck").addEventListener("click",checkboxStatus),document.getElementById("noMedCheck").addEventListener("click",checkboxStatus),document.getElementById("diagnosisCheck").addEventListener("click",checkboxStatus),document.getElementById("hrtCheck").addEventListener("click",checkboxStatus),document.getElementById("noDocCheck").addEventListener("click",checkboxStatus),document.getElementById("referralCheck").addEventListener("click",revealContent),document.getElementById("sharedCareCheck").addEventListener("click",revealContent),document.getElementById("privateProviderList").addEventListener("change",privateProviderConditions),document.getElementById("immigrationCheck").addEventListener("click",revealContent),document.getElementById("immigrationCheck").addEventListener("click",checkboxStatus),document.getElementById("under16Check").addEventListener("click",checkboxStatus),document.getElementById("docx").addEventListener("click",submitActionsDocx),document.getElementById("pdf").addEventListener("click",submitActionsPdf)})); \ No newline at end of file +function checkDocStatus(){diagnosisCheck.checked||hrtCheck.checked?noDocCheck.disabled=!0:noDocCheck.disabled=!1,noDocCheck.checked?(diagnosisCheck.disabled=!0,hrtCheck.disabled=!0):(diagnosisCheck.disabled=!1,hrtCheck.disabled=!1),bridgingCheck()}function checkAgeStatus(){under16Check.checked?(sharedCareCheck.parentNode.hidden=!0,sharedCareCheck.checked=!1,privateSelector.hidden=!0,privateProviderList.value="I haven't chosen a provider yet",bridgingDesired.parentNode.hidden=!0,bridgingDesired.checked=!1,bloodTests.parentNode.hidden=!0,bloodTests.checked=!1,grcCheck.parentNode.hidden=!0,grcCheck.checked=!1,medStatusSection.hidden=!0,$("#medStatusSection").find("input:checked[type=checkbox]").prop("checked",!1),services.value="Youth (≤16)",$("#services option[value='Adult (17+)']").hide(),serviceFilters()):(sharedCareCheck.parentNode.hidden=!1,bridgingDesired.parentNode.hidden=!1,bloodTests.parentNode.hidden=!1,grcCheck.parentNode.hidden=!1,medStatusSection.hidden=!1,$("#services option[value='Adult (17+)']").show(),serviceFilters())}function bridgingCheck(){noMedCheck.checked&&(bridgingDesired.disabled=!0),!selfMedCheck.checked&&!likelyMedCheck.checked||hrtCheck.checked||noMedCheck.checked?(bridgingDesired.disabled=!0,bridgingDesired.checked=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription (invalid medication status for bridging)"):(bridgingDesired.disabled=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription"),hrtCheck.checked&&(bridgingDesired.disabled=!0,bridgingDesired.checked=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription (invalid document status for bridging)"),0!==$(".med-status-check:checked").length||hrtCheck.checked||(bridgingDesired.disabled=!0,bridgingDesired.checked=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription (select medication status)")}function checkMedStatus(){noMedCheck.checked&&(bridgingDesired.disabled=!0),selfMedCheck.checked?(likelyMedCheck.disabled=!0,noMedCheck.disabled=!0):likelyMedCheck.checked?(selfMedCheck.disabled=!0,noMedCheck.disabled=!0):noMedCheck.checked?(selfMedCheck.disabled=!0,likelyMedCheck.disabled=!0):(selfMedCheck.disabled=!1,likelyMedCheck.disabled=!1,noMedCheck.disabled=!1),bridgingCheck()}function serviceFilters(){countryServiceFilters(),"Youth (≤16)"==services.value?grcCheck.disabled=!0:grcCheck.disabled=!1}function countryServiceFilters(){var e=countries.value,i=services.value;if(disableButtonsLogic(),"Youth (≤16)"==i)var d={"Y-England":["Y-England"],"Y-Northern Ireland":["Y-Northern Ireland"],"Y-Scotland":["Y-Scotland"],"Y-Wales":["Y-Wales"]};else d={England:["England"],"Northern Ireland":["Northern Ireland"],Scotland:["Scotland"],Wales:["Wales"]};$("#gics option[value='Y-England'], #gics option[value='Y-Northern Ireland'], #gics option[value='Y-Scotland'], #gics option[value='Y-Wales']").hide(),$("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(),d[e]&&"Choose..."!==i?(d[e].forEach((e=>{$("#gics option[value='"+e+"']").show()})),$("#gics").val(1).change(),$("#gics option[value='0']").hide(),$("#gics option[value='1']").show()):d["Y-"+e]&&"Choose..."!==i?(d["Y-"+e].forEach((e=>{$("#gics option[value='"+e+"']").show()})),$("#gics").val(1).change(),$("#gics option[value='0']").hide(),$("#gics option[value='1']").show()):($("#gics option[value='0']").show(),$("#gics option[value='1']").hide())}function revealContentReferral(){referralCheck.checked?gicSelector.hidden=!1:(gicSelector.hidden=!0,countryServiceFilters())}function revealContentSharedCare(){sharedCareCheck.checked?privateSelector.hidden=!1:(privateSelector.hidden=!0,privateProviderList.value="I haven't chosen a provider yet",$("#privateProviderList").removeClass("is-valid"),$("#privateProviderList").removeClass("is-invalid"))}function revealContentImmigration(){immigrationCheck.checked?immigrationOption.hidden=!1:(immigrationOption.hidden=!0,immigrationLetterCheck.checked=!1)}function privateProviderConditions(){var e=document.getElementById("notUK"),i=document.getElementById("preferred");"GenderGP"===privateProviderList.value?(privateProviderList.classList.remove("is-valid"),privateProviderList.classList.add("is-invalid"),e.innerText="This provider is not based in the UK, which deters some GPs from agreeing to shared care."):privateProviderList.value.includes("Other")||privateProviderList.value.includes("haven't chosen")?(privateProviderList.classList.remove("is-invalid"),privateProviderList.classList.remove("is-valid"),i.innerText="",e.innerText=""):(privateProviderList.classList.remove("is-invalid"),privateProviderList.classList.add("is-valid"),i.innerText="This provider offers GMC registered and UK based specialists.")}function disableButtonsLogic(){let e=document.getElementById("docx"),i=document.getElementById("pdf");"Choose..."!==countries.value&&"Choose..."!==services.value?(e.disabled=!1,"PDF Unavailable"!==i.innerText&&(i.disabled=!1)):(e.disabled=!0,i.disabled=!0)}function submitActionsDocx(){$(this).append(' '),$("#generationForm").removeProp("target"),submitActions()}function submitActionsPdf(){$(this).append(' '),$("#generationForm").prop({target:"_blank"}),submitActions()}function submitActions(){"0"!==gics.value&&"1"!==gics.value&&$("#gics :selected").val($("#gics :selected").text()),document.getElementById("generationForm").submit();const e=document.getElementById("alertPlaceholder"),i=document.createElement("div");i.innerHTML=['"].join(""),e.append(i)}window.addEventListener("load",(function(){revealContentReferral(),revealContentSharedCare(),revealContentImmigration(),privateProviderConditions(),countryServiceFilters(),serviceFilters(),document.getElementById("countries").addEventListener("change",countryServiceFilters),document.getElementById("services").addEventListener("change",serviceFilters),document.getElementById("selfMedCheck").addEventListener("click",checkMedStatus),document.getElementById("likelyMedCheck").addEventListener("click",checkMedStatus),document.getElementById("noMedCheck").addEventListener("click",checkMedStatus),document.getElementById("diagnosisCheck").addEventListener("click",checkDocStatus),document.getElementById("hrtCheck").addEventListener("click",checkDocStatus),document.getElementById("noDocCheck").addEventListener("click",checkDocStatus),document.getElementById("referralCheck").addEventListener("click",revealContentReferral),document.getElementById("sharedCareCheck").addEventListener("click",revealContentSharedCare),document.getElementById("privateProviderList").addEventListener("change",privateProviderConditions),document.getElementById("immigrationCheck").addEventListener("click",revealContentImmigration),document.getElementById("under16Check").addEventListener("click",checkAgeStatus),document.getElementById("docx").addEventListener("click",submitActionsDocx),document.getElementById("pdf").addEventListener("click",submitActionsPdf)})); \ No newline at end of file diff --git a/app/templates/index.html b/app/templates/index.html index 14e0652..5e2463c 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -68,7 +68,7 @@

Template info

-
+

Documents held

{{form.formal_diagnosis(class='form-check-input', type='checkbox', role='checkbox', id='diagnosisCheck')}} @@ -150,7 +150,7 @@

Medication Status

-
+

What I need from my GP

From b328cc4ea76e2e62ee879ab927d7c51d833949ab Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 17:13:52 +0100 Subject: [PATCH 07/15] update "copyright" message --- app/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/base.html b/app/templates/base.html index ecedba5..1f67179 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -28,7 +28,7 @@
- © 2024 Beawitching Communities CIC + ©️ Knowledge belongs to all without limits
- + From 9dbaef7b086ed5bbb5becb816bacd3db755f7647 Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 19:38:10 +0100 Subject: [PATCH 09/15] adds url encoding to blogs --- app/blueprints/blog_routes.py | 3 ++- app/utilities.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/blueprints/blog_routes.py b/app/blueprints/blog_routes.py index 6e41536..f177468 100644 --- a/app/blueprints/blog_routes.py +++ b/app/blueprints/blog_routes.py @@ -1,5 +1,6 @@ from flask import Blueprint, render_template, abort from main import cache, entries +import urllib.parse blog_bp = Blueprint('blog', __name__) @@ -14,7 +15,7 @@ def blogs(): @cache.cached(timeout=60 * 60 * 24 * 7) def blog(title): for rss_blog in entries: - if rss_blog.url_title == title: + if rss_blog.url_title == urllib.parse.quote_plus(title): blog_number = entries.index(rss_blog) # return 404 if failed to match blog try: diff --git a/app/utilities.py b/app/utilities.py index 45f4835..54d5135 100644 --- a/app/utilities.py +++ b/app/utilities.py @@ -1,4 +1,4 @@ -import feedparser, re +import feedparser, re, urllib.parse # formats blogs from rss to usable for the site def prepare_blogs(url): feed = feedparser.parse(url) @@ -9,6 +9,7 @@ def prepare_blogs(url): item.link = item.link.split('?')[0] # add url title with hyphens item.url_title = item.title.replace(" ", "-") + item.url_title = urllib.parse.quote_plus(item.url_title) # format summary if len(item.summary) > 150: From 39996ec99c50eb9ef8261729ef5652948216f981 Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 20:26:12 +0100 Subject: [PATCH 10/15] update sitemap for new blog content --- app/static/root/sitemap.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/static/root/sitemap.xml b/app/static/root/sitemap.xml index 31f76cf..384a7a3 100644 --- a/app/static/root/sitemap.xml +++ b/app/static/root/sitemap.xml @@ -32,4 +32,12 @@ https://www.transinformed.co.uk/blogs/Making-injections-as-smooth-as-possible 0.8 + + https://www.transinformed.co.uk/blogs/What-options-for-accessing-healthcare-exist-for-trans-youth-in-the-UK%3F + 0.8 + + + https://www.transinformed.co.uk/blogs/What-is-the-Gender-Experience-Summary-%28GES%29 + 0.8 + \ No newline at end of file From 03254f72aef93d03af63edeeb243ef37e50bf855 Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 20:33:22 +0100 Subject: [PATCH 11/15] update sources page with youth sources --- app/templates/sources.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/templates/sources.html b/app/templates/sources.html index e999bfc..59c3358 100644 --- a/app/templates/sources.html +++ b/app/templates/sources.html @@ -38,6 +38,9 @@

Data Sources

Royal College of Psychiatrists - guidelines for treating adults with gender dysphoria Letter from Susan Goldsmith - Chief Executive of the GMC NHS Wales - Endocrine Management of Gender Dysphoria in Adults: Prescribing Guidance for Non-specialist Practitioners + Arden & GEM CYP-GNRSS referral process, minimum data set and referral criteria + Gender experience summary (GES) questionnaire + Youth interim service specification
From fe51b9db83e2c9b167538b197b8a5d89273318a2 Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 20:54:55 +0100 Subject: [PATCH 12/15] minor JS and template tweaks --- app/docproc/templates/~$mplate_v1_0.docx | Bin 0 -> 162 bytes app/static/js/transinformed.js | 24 ++++++++++++++++++++++- app/static/js/transinformed.min.js | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 app/docproc/templates/~$mplate_v1_0.docx diff --git a/app/docproc/templates/~$mplate_v1_0.docx b/app/docproc/templates/~$mplate_v1_0.docx new file mode 100644 index 0000000000000000000000000000000000000000..e71d503c9484daa8b12d69a84c5724d2a243539d GIT binary patch literal 162 zcmZQ|N=;O7XCM)xIgBe%f!I2?JFaSNkAbmfQj!Y;VGLj{}v{$("#gics option[value='"+e+"']").show()})),$("#gics").val(1).change(),$("#gics option[value='0']").hide(),$("#gics option[value='1']").show()):d["Y-"+e]&&"Choose..."!==i?(d["Y-"+e].forEach((e=>{$("#gics option[value='"+e+"']").show()})),$("#gics").val(1).change(),$("#gics option[value='0']").hide(),$("#gics option[value='1']").show()):($("#gics option[value='0']").show(),$("#gics option[value='1']").hide())}function revealContentReferral(){referralCheck.checked?gicSelector.hidden=!1:(gicSelector.hidden=!0,countryServiceFilters())}function revealContentSharedCare(){sharedCareCheck.checked?privateSelector.hidden=!1:(privateSelector.hidden=!0,privateProviderList.value="I haven't chosen a provider yet",$("#privateProviderList").removeClass("is-valid"),$("#privateProviderList").removeClass("is-invalid"))}function revealContentImmigration(){immigrationCheck.checked?immigrationOption.hidden=!1:(immigrationOption.hidden=!0,immigrationLetterCheck.checked=!1)}function privateProviderConditions(){var e=document.getElementById("notUK"),i=document.getElementById("preferred");"GenderGP"===privateProviderList.value?(privateProviderList.classList.remove("is-valid"),privateProviderList.classList.add("is-invalid"),e.innerText="This provider is not based in the UK, which deters some GPs from agreeing to shared care."):privateProviderList.value.includes("Other")||privateProviderList.value.includes("haven't chosen")?(privateProviderList.classList.remove("is-invalid"),privateProviderList.classList.remove("is-valid"),i.innerText="",e.innerText=""):(privateProviderList.classList.remove("is-invalid"),privateProviderList.classList.add("is-valid"),i.innerText="This provider offers GMC registered and UK based specialists.")}function disableButtonsLogic(){let e=document.getElementById("docx"),i=document.getElementById("pdf");"Choose..."!==countries.value&&"Choose..."!==services.value?(e.disabled=!1,"PDF Unavailable"!==i.innerText&&(i.disabled=!1)):(e.disabled=!0,i.disabled=!0)}function submitActionsDocx(){$(this).append(' '),$("#generationForm").removeProp("target"),submitActions()}function submitActionsPdf(){$(this).append(' '),$("#generationForm").prop({target:"_blank"}),submitActions()}function submitActions(){"0"!==gics.value&&"1"!==gics.value&&$("#gics :selected").val($("#gics :selected").text()),document.getElementById("generationForm").submit();const e=document.getElementById("alertPlaceholder"),i=document.createElement("div");i.innerHTML=['"].join(""),e.append(i)}window.addEventListener("load",(function(){revealContentReferral(),revealContentSharedCare(),revealContentImmigration(),privateProviderConditions(),countryServiceFilters(),serviceFilters(),document.getElementById("countries").addEventListener("change",countryServiceFilters),document.getElementById("services").addEventListener("change",serviceFilters),document.getElementById("selfMedCheck").addEventListener("click",checkMedStatus),document.getElementById("likelyMedCheck").addEventListener("click",checkMedStatus),document.getElementById("noMedCheck").addEventListener("click",checkMedStatus),document.getElementById("diagnosisCheck").addEventListener("click",checkDocStatus),document.getElementById("hrtCheck").addEventListener("click",checkDocStatus),document.getElementById("noDocCheck").addEventListener("click",checkDocStatus),document.getElementById("referralCheck").addEventListener("click",revealContentReferral),document.getElementById("sharedCareCheck").addEventListener("click",revealContentSharedCare),document.getElementById("privateProviderList").addEventListener("change",privateProviderConditions),document.getElementById("immigrationCheck").addEventListener("click",revealContentImmigration),document.getElementById("under16Check").addEventListener("click",checkAgeStatus),document.getElementById("docx").addEventListener("click",submitActionsDocx),document.getElementById("pdf").addEventListener("click",submitActionsPdf)})); \ No newline at end of file +function checkDocStatus(){diagnosisCheck.checked||hrtCheck.checked?noDocCheck.disabled=!0:noDocCheck.disabled=!1,noDocCheck.checked?(diagnosisCheck.disabled=!0,hrtCheck.disabled=!0):(diagnosisCheck.disabled=!1,hrtCheck.disabled=!1),bridgingCheck()}function checkAgeStatus(){under16Check.checked?(sharedCareCheck.parentNode.hidden=!0,sharedCareCheck.checked=!1,privateSelector.hidden=!0,privateProviderList.value="I haven't chosen a provider yet",bridgingDesired.parentNode.hidden=!0,bridgingDesired.checked=!1,bloodTests.parentNode.hidden=!0,bloodTests.checked=!1,grcCheck.parentNode.hidden=!0,grcCheck.checked=!1,medStatusSection.hidden=!0,$("#medStatusSection").find("input:checked[type=checkbox]").prop("checked",!1),services.value="Youth (≤16)",$("#services option[value='Adult (17+)']").hide(),serviceFilters()):(sharedCareCheck.parentNode.hidden=!1,bridgingDesired.parentNode.hidden=!1,bloodTests.parentNode.hidden=!1,grcCheck.parentNode.hidden=!1,medStatusSection.hidden=!1,$("#services option[value='Adult (17+)']").show(),serviceFilters())}function bridgingCheck(){noMedCheck.checked&&(bridgingDesired.disabled=!0),!selfMedCheck.checked&&!likelyMedCheck.checked||hrtCheck.checked||noMedCheck.checked?(bridgingDesired.disabled=!0,bridgingDesired.checked=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription (invalid medication status for bridging)"):(bridgingDesired.disabled=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription"),hrtCheck.checked&&(bridgingDesired.disabled=!0,bridgingDesired.checked=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription (invalid document status for bridging)"),0!==$(".med-status-check:checked").length||hrtCheck.checked||(bridgingDesired.disabled=!0,bridgingDesired.checked=!1,bridgingDesiredLabel.innerHTML="I need a bridging prescription (select medication status)")}function checkMedStatus(){noMedCheck.checked&&(bridgingDesired.disabled=!0),selfMedCheck.checked?(likelyMedCheck.disabled=!0,noMedCheck.disabled=!0):likelyMedCheck.checked?(selfMedCheck.disabled=!0,noMedCheck.disabled=!0):noMedCheck.checked?(selfMedCheck.disabled=!0,likelyMedCheck.disabled=!0):(selfMedCheck.disabled=!1,likelyMedCheck.disabled=!1,noMedCheck.disabled=!1),bridgingCheck()}function serviceFilters(){countryServiceFilters(),"Youth (≤16)"==services.value?(grcCheck.parentNode.hidden=!0,bridgingDesired.parentNode.hidden=!0,bridgingDesired.checked=!1,grcCheck.checked=!1,bloodTests.parentNode.hidden=!0,bloodTests.checked=!1,medStatusSection.hidden=!0,$("#medStatusSection").find("input:checked[type=checkbox]").prop("checked",!1),$("#privateProviderList option[value='GenderGP']").hide(),$("#privateProviderList option[value='Other (Non-UK Based)']").hide()):(grcCheck.parentNode.hidden=!1,bridgingDesired.parentNode.hidden=!1,medStatusSection.hidden=!1,bloodTests.parentNode.hidden=!1,$("#privateProviderList option[value='GenderGP']").show(),$("#privateProviderList option[value='Other (Non-UK Based)']").show())}function countryServiceFilters(){var e=countries.value,i=services.value;if(disableButtonsLogic(),"Youth (≤16)"==i)var d={"Y-England":["Y-England"],"Y-Northern Ireland":["Y-Northern Ireland"],"Y-Scotland":["Y-Scotland"],"Y-Wales":["Y-Wales"]};else d={England:["England"],"Northern Ireland":["Northern Ireland"],Scotland:["Scotland"],Wales:["Wales"]};$("#gics option[value='Y-England'], #gics option[value='Y-Northern Ireland'], #gics option[value='Y-Scotland'], #gics option[value='Y-Wales']").hide(),$("#gics option[value='England'], #gics option[value='Northern Ireland'], #gics option[value='Scotland'], #gics option[value='Wales']").hide(),d[e]&&"Choose..."!==i?(d[e].forEach((e=>{$("#gics option[value='"+e+"']").show()})),$("#gics").val(1).change(),$("#gics option[value='0']").hide(),$("#gics option[value='1']").show()):d["Y-"+e]&&"Choose..."!==i?(d["Y-"+e].forEach((e=>{$("#gics option[value='"+e+"']").show()})),$("#gics").val(1).change(),$("#gics option[value='0']").hide(),$("#gics option[value='1']").show()):($("#gics option[value='0']").show(),$("#gics option[value='1']").hide())}function revealContentReferral(){referralCheck.checked?gicSelector.hidden=!1:(gicSelector.hidden=!0,countryServiceFilters())}function revealContentSharedCare(){sharedCareCheck.checked?privateSelector.hidden=!1:(privateSelector.hidden=!0,privateProviderList.value="I haven't chosen a provider yet",$("#privateProviderList").removeClass("is-valid"),$("#privateProviderList").removeClass("is-invalid"))}function revealContentImmigration(){immigrationCheck.checked?immigrationOption.hidden=!1:(immigrationOption.hidden=!0,immigrationLetterCheck.checked=!1)}function privateProviderConditions(){var e=document.getElementById("notUK"),i=document.getElementById("preferred");"GenderGP"===privateProviderList.value?(privateProviderList.classList.remove("is-valid"),privateProviderList.classList.add("is-invalid"),e.innerText="This provider is not based in the UK, which deters some GPs from agreeing to shared care."):privateProviderList.value.includes("Other")||privateProviderList.value.includes("haven't chosen")?(privateProviderList.classList.remove("is-invalid"),privateProviderList.classList.remove("is-valid"),i.innerText="",e.innerText=""):(privateProviderList.classList.remove("is-invalid"),privateProviderList.classList.add("is-valid"),i.innerText="This provider offers GMC registered and UK based specialists.")}function disableButtonsLogic(){let e=document.getElementById("docx"),i=document.getElementById("pdf");"Choose..."!==countries.value&&"Choose..."!==services.value?(e.disabled=!1,"PDF Unavailable"!==i.innerText&&(i.disabled=!1)):(e.disabled=!0,i.disabled=!0)}function submitActionsDocx(){$(this).append(' '),$("#generationForm").removeProp("target"),submitActions()}function submitActionsPdf(){$(this).append(' '),$("#generationForm").prop({target:"_blank"}),submitActions()}function submitActions(){"0"!==gics.value&&"1"!==gics.value&&$("#gics :selected").val($("#gics :selected").text()),document.getElementById("generationForm").submit();const e=document.getElementById("alertPlaceholder"),i=document.createElement("div");i.innerHTML=['"].join(""),e.append(i)}window.addEventListener("load",(function(){revealContentReferral(),revealContentSharedCare(),revealContentImmigration(),privateProviderConditions(),countryServiceFilters(),serviceFilters(),document.getElementById("countries").addEventListener("change",countryServiceFilters),document.getElementById("services").addEventListener("change",serviceFilters),document.getElementById("selfMedCheck").addEventListener("click",checkMedStatus),document.getElementById("likelyMedCheck").addEventListener("click",checkMedStatus),document.getElementById("noMedCheck").addEventListener("click",checkMedStatus),document.getElementById("diagnosisCheck").addEventListener("click",checkDocStatus),document.getElementById("hrtCheck").addEventListener("click",checkDocStatus),document.getElementById("noDocCheck").addEventListener("click",checkDocStatus),document.getElementById("referralCheck").addEventListener("click",revealContentReferral),document.getElementById("sharedCareCheck").addEventListener("click",revealContentSharedCare),document.getElementById("privateProviderList").addEventListener("change",privateProviderConditions),document.getElementById("immigrationCheck").addEventListener("click",revealContentImmigration),document.getElementById("under16Check").addEventListener("click",checkAgeStatus),document.getElementById("docx").addEventListener("click",submitActionsDocx),document.getElementById("pdf").addEventListener("click",submitActionsPdf)})); \ No newline at end of file From 19bbd2a035a6f3193a59cd9db3ec2accc338de53 Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 21:06:08 +0100 Subject: [PATCH 13/15] fix test case TODO: actually write proper tests --- app/docproc/tests/test_populate_doc.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/docproc/tests/test_populate_doc.py b/app/docproc/tests/test_populate_doc.py index 522959b..34f89ca 100644 --- a/app/docproc/tests/test_populate_doc.py +++ b/app/docproc/tests/test_populate_doc.py @@ -17,6 +17,7 @@ def test_generate_doc_docx(): context = { 'countries': 'England', + 'services': 'Adult (17+)', 'self_med': True, 'self_med_likely': False, 'formal_diagnosis': True, @@ -25,6 +26,7 @@ def test_generate_doc_docx(): 'bridging_desired': False, 'gic_referral': True, 'chosen_gic': 'Leeds - Wait time (months): 44', + 'under_16': False, 'name': 'Bea', 'email': 'test123@test.com', 'phone': '1234567890', From bb83d062303c52fbc8912d384c9e5b09706f905c Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 21:10:16 +0100 Subject: [PATCH 14/15] update python version for testing --- .github/workflows/run-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index fcfbce4..9602cf9 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -19,7 +19,7 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - python-version: [ 3.9 ] + python-version: [ 3.10 ] steps: - uses: actions/checkout@v3 From bf8c721ec7634a6c9865e0353e87fefb85071d5c Mon Sep 17 00:00:00 2001 From: Bea <66849242+beawitcht@users.noreply.github.com> Date: Fri, 10 May 2024 21:22:26 +0100 Subject: [PATCH 15/15] housekeeping --- .github/workflows/codeql.yml | 6 +++--- .github/workflows/run-tests.yml | 2 +- app/static/js/transinformed.js | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b76f092..30242d4 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,16 +25,16 @@ jobs: uses: actions/checkout@v3 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: +security-and-quality - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 if: ${{ matrix.language == 'javascript' || matrix.language == 'python' }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 9602cf9..dedb2f4 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -19,7 +19,7 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - python-version: [ 3.10 ] + python-version: ["3.10"] steps: - uses: actions/checkout@v3 diff --git a/app/static/js/transinformed.js b/app/static/js/transinformed.js index 7575fe9..1ea6dd2 100644 --- a/app/static/js/transinformed.js +++ b/app/static/js/transinformed.js @@ -54,7 +54,7 @@ function checkAgeStatus() { privateSelector.hidden = true; privateProviderList.value = "I haven't chosen a provider yet"; bridgingDesired.parentNode.hidden = true; - bridgingDesired.checked = false + bridgingDesired.checked = false; bloodTests.parentNode.hidden = true; bloodTests.checked = false; grcCheck.parentNode.hidden = true; @@ -239,7 +239,7 @@ function privateProviderConditions() { if (privateProviderList.value === "GenderGP") { privateProviderList.classList.remove("is-valid"); privateProviderList.classList.add("is-invalid"); - privateProviderWarningMessage.innerText = "This provider is not based in the UK, which deters some GPs from agreeing to shared care." + privateProviderWarningMessage.innerText = "This provider is not based in the UK, which deters some GPs from agreeing to shared care."; } else if (privateProviderList.value.includes("Other") || privateProviderList.value.includes("haven't chosen")) { privateProviderList.classList.remove("is-invalid");