For Physicians Vendors Careers MyChart
Texas Health Resources Doctors Locations Urgent Care Get Care Now
1-877-847-9355
Texas Health Resources Doctors Locations Urgent Care Get Care Now
MyChart Schedule an Appointment Patient Resources Give About Texas Health Community Newsroom Get Involved Texas Health Physicians Group Texas Health Medical Associates Careers Physician Resources Residencies and Internships Contact Us
Glen Douglas Hooker, MD
Colon & Rectal Surgery
Surgery
Texas Health Care PLLC 2000 Cooper St.
Ste 100B
Fort Worth, TX 76104
817-924-9002
Request a Visit with Dr. Hooker
Call for Appointment
817-924-9002
${provider.namePlusDegree}
${ provider.PrimarySpecialties ? `
${provider.PrimarySpecialties.join(', ')}
` : '' } ${ provider.Rating ? `
${provider.Rating}
` : '' } ${ provider.isTHPG ? `
Offers Video Visits
` : '' }
Other Providers Available at this Location
${otherProv.namePlusDegree}
${ otherProv.PrimarySpecialties ? `
${otherProv.PrimarySpecialties.join(', ')}
` : '' } ${ otherProv.Rating ? `
${otherProv.Rating}
` : '' } ${ otherProv.isTHPG ? `
Offers Video Visits
` : '' }
${otherProv.CTA ? otherProv.CTA : ''}
${ location.hasSimilarMore ? ` More Care Team Members ` : '' }`; const widgetOther = document.querySelector('#widgetOther'); widgetOther.innerHTML = template; updateMoreCareTeamLink(widgetOther, otherProv, location, isExisting); } function populateWidgetProvs() { for (const loc of window.pageState.locations) { const primNpi = loc.primProvNpi.toString(); const localProvIdsArr = loc.ProviderIds.filter((p) => { return p != primNpi; }); const otherLocalProvArr = window.pageState.otherProviders.filter((prov) => { return localProvIdsArr.includes(prov.Npi.toString()) && prov.LocationId == loc.id; }); if (localProvIdsArr.length) { let localProvCTsArr = []; let localProvCTNpisArr = []; let localProvCTNpisPlusMDsArr = []; let localProvMDsArr = []; loc.hasSimilarMore = false; loc.soonestOtherProv = null; loc.soonestOtherProvExist = null; loc.soonestOtherProvNew= null; loc.hasCareTeamMore = false; loc.soonestCareTeamProv = null; loc.soonestCareTeamProvExist = null; loc.soonestCareTeamProvNew = null; localProvMDsArr = otherLocalProvArr.filter((prov) => prov.isMDDO); if (!window.pageState.primaryProvider.CareTeam.length) { if (otherLocalProvArr.some((prov) => prov.CareTeam.includes(primNpi))) { localProvMDsArr = otherLocalProvArr .filter((prov) => prov.CareTeam.includes(primNpi)); localProvCTNpisArr = otherLocalProvArr .filter((prov) => prov.CareTeam.includes(primNpi)) .reduce((acc, prov) => { for (const ctId of prov.CareTeam) { if (localProvIdsArr.includes(ctId)) { acc.push(...prov.CareTeam); } } return acc; }, []); localProvCTNpisArr = localProvCTNpisArr .filter((ctNpi, index) => { const alreadyFound = localProvCTNpisArr.indexOf(ctNpi) !== index; const isPrim = ctNpi == primNpi; return !(alreadyFound || isPrim); }); localProvCTNpisPlusMDsArr = [...localProvCTNpisArr]; for (const md of localProvMDsArr) { localProvCTNpisPlusMDsArr.push(md.Npi.toString()); } } } else { localProvCTNpisArr = window.pageState.primaryProvider.CareTeam; localProvCTNpisArr = localProvCTNpisArr.filter((ctNpi) => { return otherLocalProvArr.some((prov) => prov.Npi == ctNpi); }); localProvCTNpisArr = localProvCTNpisArr.filter((ctId) => localProvIdsArr.includes(ctId)); localProvCTNpisPlusMDsArr = [...localProvCTNpisArr]; for (const md of localProvMDsArr) { localProvCTNpisPlusMDsArr.push(md.Npi.toString()); } } if (localProvMDsArr.length === 1) { loc.soonestOtherProv = localProvMDsArr[0].Npi.toString(); loc.soonestOtherProvExist = localProvMDsArr[0].Npi.toString(); loc.soonestOtherProvNew = localProvMDsArr[0].Npi.toString(); } if (localProvMDsArr.length > 1) { loc.soonestOtherProvExist = localProvMDsArr.sort((a,b) => { return a.SoonestFollowUpClinicVisit - b.SoonestFollowUpClinicVisit; })[0].Npi.toString(); loc.soonestOtherProvNew = localProvMDsArr.sort((a,b) => { return a.SoonestNewClinicVisit - b.SoonestNewClinicVisit; })[0].Npi.toString(); loc.soonestOtherProv = localProvMDsArr.sort((a,b) => { return Math.min(a.SoonestNewClinicVisit,a.SoonestFollowUpClinicVisit) - Math.min(b.SoonestNewClinicVisit,b.SoonestFollowUpClinicVisit); })[0].Npi.toString(); loc.hasSimilarMore = true; } localProvCTsArr = otherLocalProvArr.filter((ct) => localProvCTNpisArr.includes(ct.Npi.toString())); loc.careTeamString = localProvCTNpisArr.join(','); loc.careTeamStringPlusMDs = localProvCTNpisPlusMDsArr.join(','); localProvCTNpisArr = localProvCTNpisArr.filter((provId) => provId != primNpi); if (localProvCTNpisArr.length === 1) { loc.soonestCareTeamProv = localProvCTNpisArr[0]; loc.soonestCareTeamProvExist = localProvCTNpisArr[0]; loc.soonestCareTeamProvNew = localProvCTNpisArr[0]; } if (localProvCTsArr.length > 1) { loc.soonestCareTeamProvExist = localProvCTsArr.sort((a,b) => { return a.SoonestFollowUpClinicVisit - b.SoonestFollowUpClinicVisit; })[0].Npi.toString(); loc.soonestCareTeamProvNew = localProvCTsArr.sort((a,b) => { return a.SoonestNewClinicVisit - b.SoonestNewClinicVisit; })[0].Npi.toString(); loc.soonestCareTeamProv = localProvCTsArr.sort((a,b) => { return Math.min(a.SoonestNewClinicVisit,a.SoonestFollowUpClinicVisit) - Math.min(b.SoonestNewClinicVisit,b.SoonestFollowUpClinicVisit); })[0].Npi.toString(); loc.hasCareTeamMore = true; } } } } function prepProvBooleans(provider) { provider.allowsScheduling = provider.BookingFlow.toLowerCase() == 'flow' ? true : false; provider.isMDDO = false; const requiredDegrees = ['MD', 'DO', 'md', 'do']; if (provider.Degrees.some((deg) => requiredDegrees.includes(deg))) { provider.isMDDO = true; } provider.isTHPG = provider.Tier == 1 ? true : false; } function prepProvCTA(provider, location) { let cta = ''; switch (provider.BookingFlow.toLowerCase()) { case 'flow': cta = providerTimeslots = `Request Appointment
Call For Appointment
`; if (location.Phone) { cta = callCTA; } cta = ''; default: cta = ''; } provider.CTA = cta; } function prepProvExtras (provider) { delete provider.ProviderUniqueUrlPacmed; delete provider.ProviderUniqueUrlProvidence; delete provider.ProviderUniqueUrlSwedish; }; function prepProvImage(provider) { if (provider.ImageUrl.length > 0) { provider.ImageUrl = provider.ImageUrl; } else { try { provider.ImageUrl = `https://www.texashealth.org/-/media/Experience-Explorer/Presets/Unknown-128x128.jpg`; } catch (error) { console.error('Could not retrieve placeholder image', error); } } } function prepProvLocURL(provider) { if ( provider.LocationUrls && provider.LocationUrls[0] && provider.LocationUrls[0].length ) { function prepURL(url) { const locationUrlObj = /^http/gi.test(url) ? new URL(url) : /^www/gi.test(url) ? new URL('https://' + url) : new URL('https://www.care.texashealth.org' + url); return locationUrlObj.href; } provider.locationUrlsPrepped = []; for (let [i, url] of provider.LocationUrls.entries()) { provider.locationUrlsPrepped[i] = prepURL(url); } } } function prepProvName(provider) { if ( provider.Name && provider.Names && provider.Names.length ) { if (provider.isMDDO) { provider.shortName = `Dr. ${provider.Names[2]}`; } else { provider.shortName = `${provider.Names[0]} ${provider.Names[2]}`; } provider.namePlusDegree = provider.Degrees.length && provider.Degrees[0] !== '' ? provider.Name + `, ${provider.Degrees.join(', ')}` : provider.Name; provider.namePlusDegreeRaw = provider.namePlusDegree; } } function prepProvPhone(provider) { if (provider.Phones[0] && provider.Phones[0].length) { provider.Phones = provider.Phones.map((phone) => { return formatPhoneNumber(phone, 'hyphenated'); }); } }; function prepProvRating(provider) { if (provider.Rating > 0) { provider.Rating = fixedRating(provider.Rating); } provider.isRatingsPlural = !provider.RatingCount ? false : provider.RatingCount > 1 ? true : false; provider.isReviewsPlural = !provider.ReviewCount ? false : provider.ReviewCount > 1 ? true : false; } function prepProvURL(provider) { if (provider.ProfileUrl) { const url = provider.ProfileUrl; const providerUrl = /^http/gi.test(url) ? url : /^www/gi.test(url) ? 'https://' + url : 'https://www.care.texashealth.org' + url; provider.profileUrlPrepped = providerUrl; } } function reloadWidgetCareTeam(npiToLoad, location, isExisting = undefined) { const widgetCareTeam = document.querySelector('#widgetCareTeam'); const provCTNpi = widgetCareTeam?.querySelector('provider-timeslots')?.getAttribute('provider'); let providerCT = null; if (provCTNpi != npiToLoad) { providerCT = window.pageState.otherProviders.find((prov) => { return prov.Npi == npiToLoad && prov.LocationId == location.id; }); populateWidgetCareTeam(providerCT, location, isExisting); } else { updateMoreCareTeamLink(widgetCareTeam, providerCT, location, isExisting); } } function reloadWidgetOther(npiToLoad, location, isExisting = undefined) { const widgetOther = document.querySelector('#widgetOther'); const otherProvNpi = widgetOther?.querySelector('provider-timeslots')?.getAttribute('provider'); let providerOP = null; if (otherProvNpi != npiToLoad) { providerOP = window.pageState.otherProviders.find((prov) => { return prov.Npi == npiToLoad && prov.LocationId == location.id; }); populateWidgetOther(providerOP, location, isExisting); } else { const otherProv = window.pageState.otherProviders.find((prov) => prov.Npi == otherProvNpi); updateMoreCareTeamLink(widgetOther, otherProv, location, isExisting); } } async function returnJSON (res, identifier = '') { if (res.status === 200 || res.ok) { const response = await res.json(); if (response && !/(undefined|false|null)/.test(response)) { return response; } else { console.error(`Unexpected fetch response for ${identifier}:`, response); }; } else { const msg = `${res.status} Failure fetching api for ${identifier}`; console.error(msg); }; } function selectMarker() { if (google.maps) { const dropdownEl = document.querySelector('.selector-dropdown'); let location = window.search.helpers.state.visibleResults.results[0].id; if (dropdownEl?.dataset.value) { location = dropdownEl.dataset.value } google.maps.event.trigger(window.search.helpers.map.markers[location], 'click'); } } function setEventListeners() { const addrBlock = document.getElementById('addrBlock'); const locName = document.getElementById('locName'); addrBlock?.addEventListener('click', selectMarker); locName?.addEventListener('click', selectMarker); const locationSelector = document.querySelector('#locationSelector'); locationSelector?.addEventListener('click', handleDropdown); window.addEventListener('marker-clicked', (event) => { const dropdownEl = document.querySelector('.selector-dropdown'); if ( dropdownEl?.dataset.value && event.detail.location != dropdownEl?.dataset.value ) { const options = document.querySelectorAll('.selector-options')[0]; const optionBtn = options.querySelector( 'button[value="' + event.detail.location + '"]' ); optionBtn.click(); dropdownEl.click(); } }); window.addEventListener('existing-patient-clicked', (event) => { const location = window.pageState.locations.find((loc) => loc.id === window.pageState.selectedLoc); window.pageState.patientType = 'existing'; switch (location.primProvCategory) { case 'CT2': if (location.soonestCareTeamProv) { if (location.soonestCareTeamProvExist) { reloadWidgetCareTeam(location.soonestCareTeamProvExist, location, true); } else { reloadWidgetCareTeam(location.soonestCareTeamProv, location, true); } document.querySelector('#widgetCareTeam')?.classList.remove('hidden'); document.querySelector('#widgetOther')?.classList.add('hidden'); } else if (location.soonestOtherProv) { if (location.soonestOtherProvExist) { reloadWidgetOther(location.soonestOtherProvExist, location, true); } else { reloadWidgetOther(location.soonestOtherProv, location, true); } document.querySelector('#widgetOther')?.classList.remove('hidden'); document.querySelector('#widgetCareTeam')?.classList.add('hidden'); } break; case 'MDCT': if (location.soonestCareTeamProv) { if (location.soonestCareTeamProvExist) { reloadWidgetCareTeam(location.soonestCareTeamProvExist, location, true); } else { reloadWidgetCareTeam(location.soonestCareTeamProv, location, true); } document.querySelector('#widgetCareTeam')?.classList.remove('hidden'); document.querySelector('#widgetOther')?.classList.add('hidden'); } break; case 'CT1': if (location.soonestOtherProv) { if (location.soonestOtherProvNew) { reloadWidgetOther(location.soonestOtherProvNew, location, true); } else { reloadWidgetOther(location.soonestOtherProv, location, true); } document.querySelector('#widgetCareTeam')?.classList.add('hidden'); document.querySelector('#widgetOther')?.classList.remove('hidden'); } break; case 'MD': default: document.querySelector('#widgetCareTeam')?.classList.add('hidden'); document.querySelector('#widgetOther')?.classList.add('hidden'); break; } switch (location.primProvCategory) { case 'CT2': if (location.soonestCareTeamProv) { document.querySelector('#widgetCareTeam')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } else if (location.soonestOtherProv) { document.querySelector('#widgetOther')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; case 'MDCT': if (location.soonestCareTeamProv) { document.querySelector('#widgetCareTeam')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; case 'CT1': if (location.soonestOtherProv) { document.querySelector('#widgetOther')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; case 'MD': default: break; } }); window.addEventListener('new-patient-clicked', (event) => { const location = window.pageState.locations.find((loc) => loc.id === window.pageState.selectedLoc); window.pageState.patientType = 'new'; switch (location.primProvCategory) { case 'CT1': case 'CT2': case 'MD': if (location.soonestOtherProv) { if (location.soonestOtherProvNew) { reloadWidgetOther(location.soonestOtherProvNew, location, false); } else { reloadWidgetOther(location.soonestOtherProv, location, false); } document.querySelector('#widgetCareTeam')?.classList.add('hidden'); document.querySelector('#widgetOther')?.classList.remove('hidden'); } break; case 'MDCT': if (location.soonestCareTeamProv) { if (location.soonestCareTeamProvNew) { reloadWidgetCareTeam(location.soonestCareTeamProvNew, location, false); } else { reloadWidgetCareTeam(location.soonestCareTeamProv, location, false); } document.querySelector('#widgetCareTeam')?.classList.remove('hidden'); document.querySelector('#widgetOther')?.classList.add('hidden'); } break; default: document.querySelector('#widgetCareTeam')?.classList.add('hidden'); document.querySelector('#widgetOther')?.classList.add('hidden'); break; } switch (location.primProvCategory) { case 'CT1': case 'CT2': case 'MD': if (location.soonestOtherProv) { document.querySelector('#widgetOther')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; case 'MDCT': if (location.soonestCareTeamProv) { document.querySelector('#widgetCareTeam')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; default: break; } switch (location.primProvCategory) { case 'CT1': case 'CT1': case 'MD': if (location.soonestOtherProv) { document.querySelector('#widgetOther')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; case 'MDCT': if (location.soonestCareTeamProv) { document.querySelector('#widgetCareTeam')?.querySelector('#moreCareTeamLink')?.classList.remove('disabled'); } break; default: break; } }); window.addEventListener('restart-wizard-clicked', (event) => { window.pageState.patientType = ''; displayCrossSells(); if (event.target.getAttribute('provider') != window.pageState.primaryProvider.Npi) { const primaryTimeslots = document.querySelector('#primaryTimeslots'); primaryTimeslots.outerHTML = primaryTimeslots.outerHTML; } document.querySelector('#moreCareTeamLink')?.classList.add('disabled'); }); } function setState(obj) { if (Object.keys(obj).length > 0) { window.pageState = Object.assign(window.pageState, obj); return; } else { console.error('setState data object keys are:', obj); } } function toggleHidden(el) { if (el.classList.contains('hidden')) { el.classList.remove('hidden'); } else { el.classList.add('hidden'); } } function updateLocationElements(location) { const address = document.querySelector('#addrCtnt'); const addressBlock = document.querySelector('#addrBlock'); const directions = document.querySelector('#btnGetDirections'); const locationLink = document.querySelector('#locLink'); const phoneLink = document.querySelector('#phoneLnk'); const primaryTimeslots = document.querySelector('#primaryTimeslots'); const addressContent = `${location.address.street}${location.address.city}, ${location.address.region ?? 'TX'} ${location.address.postalCode}`; if (address) { address.innerHTML = addressContent; } if (addressBlock) { addressBlock.ariaLabel = location.address.full; } if (locationLink) { locationLink.href = location.Url; locationLink.dataset.varsLocationLink = location.Url; } if (phoneLink) { if (location.Phone) { phoneLink.innerHTML = location.Phone; phoneLink.href = 'tel:' + location.Phone; phoneLink.parentElement.classList.remove('hidden'); } else { phoneLink.parentElement.classList.add('hidden'); } } if (directions) { directions.href = "https://maps.google.com/maps/dir//" + location.address.googleAddress; } if (primaryTimeslots) { primaryTimeslots.setAttribute('location', location.address.apiString); primaryTimeslots.setAttribute('location-id', location.id); primaryTimeslots.setAttribute('phone', location.Phone); primaryTimeslots.outerHTML = primaryTimeslots.outerHTML; } } function updateMoreCareTeamLink(widget, provider, location, isExisting) { const moreCareTeamLink = widget.querySelector('#moreCareTeamLink'); if (moreCareTeamLink) { if (location.primProvCategory === 'MD') { moreCareTeamLink.href = `${location.Url}?doctorsOnly=true`; } else if ( location.primProvCategory === 'MDCT' && (isExisting === true || typeof isExisting === undefined) ) { moreCareTeamLink.href = `${location.Url}?doctor=${location.primProvShortName}&providers=${location.careTeamString}`; } else { let selectedLocData = {}; if (window.pageState.locations.length) { selectedLocData = window.pageState.locations .filter((loc) => (loc.id == location.id))[0]; moreCareTeamLink.href = `${location.Url}?${location.primProvCategory === 'MDCT' ? `doctor=${location.primProvShortName}&` : ''}providers=${selectedLocData.careTeamStringPlusMDs}`; } else { moreCareTeamLink.href = `${location.Url}`; } } } }