Peter Muturi 2 年之前
父节点
当前提交
c38559cbc5

+ 189 - 0
resources/views/app/patient/modules/sleep_health_intake/edit.blade.php

@@ -0,0 +1,189 @@
+<?php
+
+use App\Models\Client;
+use App\Models\Note;
+use App\Models\Point;
+
+/** @var Client $patient */
+/** @var Note $note */
+/** @var Point $point */
+
+if (!@$sessionKey) {
+	$sessionKey = request()->cookie('sessionKey');
+}
+
+$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'SLEEP_STUDY_INTAKE', $sessionKey);
+
+// replace content data
+$contentData = [
+	"Dozing" => "",
+	"functional_status" => false,
+	"cognitive_status" => false,
+	"Score" => 0,
+];
+
+if ($point->lastChildReview && $point->lastChildReview->data) {
+	$point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+	$contentData = $point->lastChildReview->data;
+}
+?>
+<div class="p-3 mcp-theme-1">
+	<style>
+		.select-esc-option {
+			max-width: 100px;
+			min-width: auto !important;
+		}
+    .textarea .select2-selection{
+      height: 100px !important;
+    }
+    .modal-backdrop {
+      z-index: 90 !important;
+      background: #ccc;
+    }
+    .select2-results__message {
+      display: none !important;
+    }
+	</style>
+	<div visit-moe close-on-save close-on-cancel class="d-block">
+		<form show url="/api/visitPoint/upsertChildReview" class="mcp-theme-1">
+			<input type="hidden" name="uid" value="<?= $point->uid ?>">
+			<input type="hidden" name="noteUid" value="<?= $note->uid ?>">
+			<input type="hidden" name="segmentUid" value="<?= $note->coreSegment->uid ?>">
+			<input type="hidden" name="data" value="{{json_encode($contentData)}}">
+
+			<div id="edit-sleep_health_intake-container" class="customized-form">
+
+				@include('app.patient.modules.sleep_health_intake.partials.epworth_sleepiness_study')
+
+				@include('app.patient.modules.sleep_health_intake.partials.obstructive_sleep_apnea')
+
+				@include('app.patient.modules.sleep_health_intake.partials.physical_exam')
+
+				@include('app.patient.modules.sleep_health_intake.partials.a_p')
+
+				<div class="mt-3 pt-3 border-top text-center">
+					<button type="button" v-on:click.prevent="saveForm()" class="btn btn-sm btn-primary mr-2">Submit</button>
+					<button type="button" onclick="closeStagPopup()" class="btn btn-sm btn-default border">Cancel</button>
+				</div>
+
+			</div>
+
+			<div class="d-none">
+				<button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+				<button cancel class="btn btn-sm btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>
+</div>
+<script>
+	(function() {
+		runMCInitializer('hide-moes');
+		function init() {
+
+			// any JS can come here
+			// will be run on page-load as well as whenever this segment is refreshed
+			new Vue({
+				el: '#edit-sleep_health_intake-container',
+				delimiters: ["@{{", "}}"],
+				data: {
+					form: $('#edit-sleep_health_intake-container').closest('form'),
+					data: <?= json_encode($contentData) ?>,
+					defaultDropdownOptions: {}
+				},
+				methods: {
+					autoSaveForm: function() {
+						var self = this;
+						var url = self.form.attr('url');
+						self.form.find('input[name=data]').val(JSON.stringify(self.data));
+						// autosave on change
+						var dataArray = self.form.serializeArray();
+						$.post(url, dataArray, function(response) {}, 'json');
+						refreshSegment('omega_subjective_system');
+						refreshSegment('omega_plan_system');
+					},
+					_autoSaveForm: function() {
+						let parent = $('#edit-sleep_health_intake-container').closest('form');
+						parent.find('[name="data"]').val(JSON.stringify(this.data));
+
+						// autosave on change
+						autoSaveSegment(parent.find('[submit]').first());
+					},
+					saveForm: function() {
+						this.autoSaveForm();
+						closeStagPopup();
+						refreshSegment('omega_subjective_system');
+						refreshSegment('omega_plan_system');
+					},
+					onInputChange: function(evt) {
+						var self = this;
+						var input = evt.target;
+						var name = input.name || $(input).data('name');
+						value = input.value;
+						if ($(input).is(':radio')) {
+							if (!input.checked) {
+								value = null;
+							}
+						}
+						self.data[name] = value;
+						self.autoSaveForm();
+					},
+					initSelect2: function() {
+						var select2 = $('.select2').select2({
+							tags: true,
+							allowClear: true,
+							placeholder: 'Press "Enter" to create a new selection',
+						});
+						select2.on('select2:select', function(e) {
+							console.log(e.params);
+						});
+					},
+					calculateScore: function() {
+						var self = this;
+						var fields = self.form.find('[score-input]');
+						var score = 0;
+						$.each(fields, function(i, field) {
+							var value = parseInt($(field).val());
+							value = isNaN(value) ? 0 : value;
+							score = score + value;
+						});
+						self.data.Score = score;
+						$('#scoreValue').text(self.data.Score);
+						self.$forceUpdate();
+						self.autoSaveForm();
+					},
+					clearScore: function() {
+						var self = this;
+						var fields = self.form.find('[score-input]');
+						$.each(fields, function(i, field) {
+							$(field).val(0)
+						});
+						self.data.score = 0;
+						$('#scoreValue').text(self.data.score);
+						self.$forceUpdate();
+						self.autoSaveForm();
+					},
+					initOnSelectChange: function() {
+						var self = this;
+						self.form.find('.calc-select').on('change', function() {
+							self.calculateScore();
+						});
+					},
+				},
+				mounted: function() {
+					if (!this.data.dropdownOptions) {
+						this.data.dropdownOptions = this.defaultDropdownOptions;
+						this.$forceUpdate();
+					}
+					this.initSelect2();
+					this.initOnSelectChange();
+				}
+			});
+
+			// if in popup (omega template), add provision to toggle relevance
+			@include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-sleep_health_intake-container'])
+		}
+
+		addMCInitializer('edit-sleep_health_intake-container-{{$note->id}}', init, '#edit-sleep_health_intake-container');
+
+	})();
+</script>

+ 31 - 0
resources/views/app/patient/modules/sleep_health_intake/partials/a_p.blade.php

@@ -0,0 +1,31 @@
+<div class="row mb-1">
+	<div class="col-md-12">
+		<h6 class="my-3"><b><u>Assessment & Plan</u></b></h6>
+	</div>
+	<div class="col-md-12 section bg-light pt-2 mb-3">
+		<div class="form-group">
+				<label class="m-0">Sleep Hygiene Counseling:</label>
+				<div class="d-flex align-items-end">
+						<select data-name="ED_Sleep_Hygiene" name="ED_Sleep_Hygiene[]" multiple="multiple" class="select2" v-model="data.ED_Sleep_Hygiene"></select>
+				</div>
+		</div>
+		<div class="form-group textarea">
+				<label class="m-0">BMI Follow-up Plan:</label>
+				<div class="d-flex align-items-end">
+						<select data-name="AP_Weight_Mgmt_Plan" name="AP_Weight_Mgmt_Plan[]" multiple="multiple" class="select2" v-model="data.AP_Weight_Mgmt_Plan"></select>
+				</div>
+		</div>
+		<div class="form-group">
+				<label class="m-0">Nutrition Counseling:</label>
+				<div class="d-flex align-items-end">
+						<select data-name="ED_Nutrition_Counsel" name="ED_Nutrition_Counsel[]" multiple="multiple" class="select2" v-model="data.ED_Nutrition_Counsel"></select>
+				</div>
+		</div>
+		<div class="form-group">
+				<label class="m-0">Physical Activity Counseling:</label>
+				<div class="d-flex align-items-end">
+						<select data-name="ED_Physical_Activity_Counsel" name="ED_Physical_Activity_Counsel[]" multiple="multiple" class="select2" v-model="data.ED_Physical_Activity_Counsel"></select>
+				</div>
+		</div>
+	</div>
+</div>

+ 203 - 0
resources/views/app/patient/modules/sleep_health_intake/partials/epworth_sleepiness_study.blade.php

@@ -0,0 +1,203 @@
+<div class="row mb-1">
+    <div class="col-md-12 section bg-light pt-2 mb-3">
+        <div class="mb-4 d-flex align-items-start">
+            <label class="mb-0 mr-5">
+                <input @change="onInputChange" type="checkbox" name="functional_status" v-model="data.functional_status" />
+                <b>Functional Status Assessed</b>
+            </label>
+            <div v-if="data.functional_status == 'on'">
+                <div>
+                    <label class="mb-0 mr-3">
+                        <input @change="onInputChange" type="radio" name="functional_impairments" value="NO" v-model="data.functional_impairments" />
+                        <span>No Impairments</span>
+                    </label>
+                    <label class="mb-0 mr-3">
+                        <input @change="onInputChange" type="radio" name="functional_impairments" value="YES" v-model="data.functional_impairments" />
+                        <span>Functional Impairments Present</span>
+                    </label>
+                    <label class="mb-0 mr-3">
+                        <input @change="onInputChange" type="radio" name="functional_impairments" value="" v-model="data.functional_impairments" />
+                        <span>--</span>
+                    </label>
+                </div>
+                <b v-if="data.functional_impairments == 'YES'" class="mt-1">Insert Impairments Subnote to Document Details</b>
+            </div>
+        </div>
+        <div class="mb-4 d-flex align-items-start">
+            <label class="mb-0 mr-5">
+                <input @change="onInputChange" type="checkbox" name="cognitive_status" v-model="data.cognitive_status" />
+                <b>Cognitive Status Assessed</b>
+            </label>
+            <div>
+                <div>
+                    <label class="mb-0 mr-3">
+                        <input @change="onInputChange" type="radio" name="cognitive_impairments" value="NO" v-model="data.cognitive_impairments" />
+                        <span>No Impairments</span>
+                    </label>
+                    <label class="mb-0 mr-3">
+                        <input @change="onInputChange" type="radio" name="cognitive_impairments" value="YES" v-model="data.cognitive_impairments" />
+                        <span>Functional Impairments Present</span>
+                    </label>
+                    <label class="mb-0 mr-3">
+                        <input @change="onInputChange" type="radio" name="cognitive_impairments" value="" v-model="data.cognitive_impairments" />
+                        <span>--</span>
+                    </label>
+                </div>
+                <b v-if="data.cognitive_impairments == 'YES'" class="mt-1">Insert Impairments Subnote to Document Details</b>
+            </div>
+        </div>
+        <div class="form-group textarea">
+            <label class="m-0">History of Present Illness:</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_description" name="HPI_description[]" multiple="multiple" class="select2" v-model="data.HPI_description"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Symptoms</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_symptoms" name="HPI_symptoms[]" multiple="multiple" class="select2" v-model="data.HPI_symptoms"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Severity</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_severity" name="HPI_severity[]" multiple="multiple" class="select2" v-model="data.HPI_severity"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Duration</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_duration" name="HPI_duration[]" multiple="multiple" class="select2" v-model="data.HPI_duration"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Timing</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_timing" name="HPI_timing[]" multiple="multiple" class="select2" v-model="data.HPI_timing"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Context</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_context" name="HPI_context[]" multiple="multiple" class="select2" v-model="data.HPI_context"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Aggravating Factors:</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_aggravating_factors" name="HPI_aggravating_factors[]" multiple="multiple" class="select2" v-model="data.HPI_aggravating_factors"></select>
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="m-0">Alleviating Factors:</label>
+            <div class="d-flex align-items-end">
+                <select data-name="HPI_alleviating_factors" name="HPI_alleviating_factors[]" multiple="multiple" class="select2" v-model="data.HPI_alleviating_factors"></select>
+            </div>
+        </div>
+        <div class="form-group textarea">
+            <label class="m-0">Sleep Summary:</label>
+            <div class="d-flex align-items-end">
+                <select data-name="sleep_exam_sleep_summary" name="sleep_exam_sleep_summary[]" multiple="multiple" class="select2" v-model="data.sleep_exam_sleep_summary"></select>
+            </div>
+        </div>
+        <div class="form-group textarea">
+            <label class="m-0">Previous Treatments:</label>
+            <div class="d-flex align-items-end">
+                <select data-name="PH_previous_treatment" name="PH_previous_treatment[]" multiple="multiple" class="select2" v-model="data.PH_previous_treatment"></select>
+            </div>
+        </div>
+        <div class="form-group textarea">
+            <label class="m-0">Current Treatments:</label>
+            <div class="d-flex align-items-end">
+                <select data-name="PH_current_treatment" name="PH_current_treatment[]" multiple="multiple" class="select2" v-model="data.PH_current_treatment"></select>
+            </div>
+        </div>
+    </div>
+    <div class="col-md-12">
+        <h6 class="my-3"><b><u>Epworth Sleepiness Scale</u></b></h6>
+    </div>
+    <div class="col-md-12 section bg-light pt-2 mb-3">
+        <div class="mb-2">
+            <label class="mb-1">How likely are you to doze off or fall asleep in the following situations, in contrast to feeling just tired? This refers to your usual way of life in recent times. Use the following scale (0, 1, 2, and 3) to choose
+                the most appropriate number for each situation.</label>
+            <div class="d-flex align-items-center">
+                <select data-name="dozing" class="form-control form-control-sm select-esc-option" style="max-width:200px;" v-model="data.dozing">
+                    <option value=""></option>
+                    <option value="Never Chance of Doze">Never Chance of Doze</option>
+                    <option value="Slight Chance of Dozing">Slight Chance of Dozing</option>
+                    <option value="Moderate Chance of Dozing">Moderate Chance of Dozing</option>
+                    <option value="High Chance of Dozing">High Chance of Dozing</option>
+                </select>
+            </div>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">Sitting and reading</label>
+            <select data-name="sitting" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.sitting">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">Watching TV</label>
+            <select data-name="watching" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.watching">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">Sitting inactive in a public place (e.g. a theatre or a meeting)</label>
+            <select data-name="sitting_inactive" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.sitting_inactive">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">As a passenger in a car for an hour without a break</label>
+            <select data-name="passenger_car" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.passenger_car">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">Sitting quietly after a lunch without alcohol</label>
+            <select data-name="sitting_quietly" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.sitting_quietly">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">Lying down to rest in the afternoon when circumstances permit</label>
+            <select data-name="lying_down" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.lying_down">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">Sitting and talking to someone</label>
+            <select data-name="sitting_and_talking" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.sitting_and_talking">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="d-flex align-items-center flex-wrap mb-2">
+            <label class="mb-0 mr-2">In a car, while stopped for a few minutes in traffic</label>
+            <select data-name="traffic" class="form-control form-control-sm select-esc-option calc-select" score-input v-model="data.traffic">
+                <option value=""></option>
+                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
+            </select>
+        </div>
+        <div class="my-2">
+            <div class="d-flex align-items-center">
+                <span class="font-weight-bold">Score:</span>
+                <div class="border p-2 mx-1" style="width:50px;">
+                    <input type="hidden" data-name="Score" name="score" v-model="data.score">
+                    <span id="scoreValue">@{{ data.Score }}</span>
+                </div>
+                <div class="">
+                    <span class="mr-1 text-primary c-pointer" @click="calculateScore">Calculate</span>
+                    <span class="text-danger c-pointer" @click="clearScore">Clear</span>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 0 - 0
resources/views/app/patient/modules/sleep_study_intake/partials/obstructive_sleep_apnea.blade.php → resources/views/app/patient/modules/sleep_health_intake/partials/obstructive_sleep_apnea.blade.php


+ 17 - 0
resources/views/app/patient/modules/sleep_health_intake/partials/physical_exam.blade.php

@@ -0,0 +1,17 @@
+<div class="row mb-1">
+	<div class="col-md-12">
+		<h6 class="my-3"><b><u>Review Of Systems</u></b></h6>
+	</div>
+	<div class="col-md-12 section bg-light py-2 mb-3">
+		<div class="c-pointer"
+		open-in-stag-popup
+		href="/note-segment-view-by-name/{{$note->uid}}/omega_ros/edit"
+		mc-initer="init-ros-{{$note->id}}"
+		title="Review Of Systems"
+		update-parent
+		popup-style="overflow-visible">
+		@include('app.patient.segment-templates.omega_ros.summary')
+	</div>
+</div>
+
+</div>

+ 0 - 227
resources/views/app/patient/modules/sleep_study_intake/edit.blade.php

@@ -1,227 +0,0 @@
-<?php
-
-use App\Models\Client;
-use App\Models\Note;
-use App\Models\Point;
-
-/** @var Client $patient */
-/** @var Note $note */
-/** @var Point $point */
-
-if (!@$sessionKey) {
-	$sessionKey = request()->cookie('sessionKey');
-}
-
-$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'SLEEP_STUDY_INTAKE', $sessionKey);
-
-// replace content data
-$contentData = [
-	"Dozing" => "",
-	"Score" => 0,
-  "PE_Eyes_Normal" => "Extraocular muscles are intact, pupils are equally round and reactive to light and accommodation.",
-  "PE_Ears_Normal" => "Tympanic membranes and canals are clear.",
-  "PE_Nose_Normal" => "Mucous membranes within normal limits. No discharge, nasal turbinates within normal limits and septum is midline.",
-  "PE_Mouth_Throat_Normal" => "Posterior pharynx is clear. Teeth are without dental caries. Tongue and mucosa are moist, soft, and pink. No lesions or inflammations noted on hard or soft palate, buccal areas, or gingiva.",
-  "PE_Neck_Normal" => "Neck is supple. No palpable masses or thyromegaly.",
-  "PE_Lymph_Normal" => "No adenopathy with bilateral palpation of lymph nodes in the cervical, supraclavicular, axilla, or inguinal regions.",
-  "PE_Resp_Normal" => "Clear to auscultation, no wheezes, rales, or rhonchi.",
-  "PE_Cardio_Normal" => "Regular rate and rhythm, no murmurs, ectopy, or rubs. No jugular venous distention.",
-  "PE_Skin_Normal" => "Tone, turgor, texture, and temperature&#160;within normal limits. Hair growth within normal limits.",
-  "PE_Extrimities_Normal" => "Inspection and palpation of digits and nails reveal no clubbing, cyanosis, or edema. Muscle strength 5 / 5.",
-  "PE_Neuro_Normal" => "Cranial nerves I - XII are grossly intact. Bilateral reflexes are 2+ throughout. Intact sensations of fine touch, pain, and temperature.",
-  "PE_Psych_Normal" => "Oriented to time, place, and person. Appropriate mood and affect.",
-];
-
-if ($point->lastChildReview && $point->lastChildReview->data) {
-	$point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
-	$contentData = $point->lastChildReview->data;
-}
-?>
-<div class="p-3 mcp-theme-1">
-	<style>
-		.select-esc-option {
-			max-width: 100px;
-			min-width: auto !important;
-		}
-    .textarea .select2-selection{
-      height: 100px !important;
-    }
-    .modal-backdrop {
-      z-index: 90 !important;
-      background: #ccc;
-    }
-    .select2-results__message {
-      display: none !important;
-    }
-	</style>
-	<div visit-moe close-on-save close-on-cancel class="d-block">
-		<form show url="/api/visitPoint/upsertChildReview" class="mcp-theme-1">
-			<input type="hidden" name="uid" value="<?= $point->uid ?>">
-			<input type="hidden" name="noteUid" value="<?= $note->uid ?>">
-			<input type="hidden" name="segmentUid" value="<?= $note->coreSegment->uid ?>">
-			<input type="hidden" name="data" value="{{json_encode($contentData)}}">
-
-			<div id="edit-sleep_study_intake-container" class="customized-form">
-
-				<div class="col-md-12 section bg-light py-2 mb-3">
-					<?php $cc = $note->getSegmentByInternalName('omega_cc'); ?>
-					<div class="inset-comment summary-container">
-						{!! $cc->accepted_suggestion_summary_html !!}
-					</div>
-				</div>
-
-				@include('app.patient.modules.sleep_study_intake.partials.epworth_sleepiness_study')
-
-				@include('app.patient.modules.sleep_study_intake.partials.obstructive_sleep_apnea')
-
-				@include('app.patient.modules.sleep_study_intake.partials.physical_exam')
-
-				@include('app.patient.modules.sleep_study_intake.partials.a_p')
-
-				<div class="mt-3 pt-3 border-top text-center">
-					<button type="button" v-on:click.prevent="saveForm()" class="btn btn-sm btn-primary mr-2">Submit</button>
-					<button type="button" onclick="closeStagPopup()" class="btn btn-sm btn-default border">Cancel</button>
-				</div>
-
-			</div>
-
-			<div class="d-none">
-				<button submit class="btn btn-sm btn-primary mr-2">Submit</button>
-				<button cancel class="btn btn-sm btn-default border">Cancel</button>
-			</div>
-		</form>
-	</div>
-</div>
-<script>
-
-
-
-	(function() {
-		function init() {
-
-			runMCInitializer('hide-moes');
-			// any JS can come here
-			// will be run on page-load as well as whenever this segment is refreshed
-			new Vue({
-				el: '#edit-sleep_study_intake-container',
-				delimiters: ["@{{", "}}"],
-				data: {
-					form: $('#edit-sleep_study_intake-container').closest('form'),
-					data: <?= json_encode($contentData) ?>,
-					defaultDropdownOptions: {}
-				},
-				watch: {
-					$data: {
-						handler: function(val, oldVal) {
-							this.autoSaveForm();
-						},
-						deep: true
-					}
-				},
-				methods: {
-					autoSaveForm: function(){
-						var self = this;
-						var url = self.form.attr('url');
-						self.form.find('input[name=data]').val(JSON.stringify(self.data));
-						// autosave on change
-						var dataArray = self.form.serializeArray();
-						$.post(url, dataArray, function(response) {}, 'json');
-					},
-					_autoSaveForm: function(){
-						let parent = $('#edit-sleep_study_intake-container').closest('form');
-							parent.find('[name="data"]').val(JSON.stringify(this.data));
-
-							// autosave on change
-							autoSaveSegment(parent.find('[submit]').first());
-					},
-					saveForm: function() {
-						this.autoSaveForm();
-						closeStagPopup();
-						refreshSegment('omega_subjective_system');
-						refreshSegment('omega_plan_system');
-					},
-					undoChanges: function() {
-						$.post('/api/visitPoint/destroyCurrentChildReview', {
-							uid: '{{$point->uid}}'
-						}, _data => {
-							if (!hasResponseError(_data)) {
-								closeStagPopup();
-								refreshSegment('omega_subjective_system');
-								refreshSegment('omega_plan_system');
-							}
-						});
-						return false;
-					},
-					onInputChange: function(evt){
-	          var self = this;
-	          var input = evt.target;
-	          var name = input.name || $(input).data('name');
-	          value = input.value;
-	          if($(input).is(':radio')){
-	            if(!input.checked){
-	              value = null;
-	            }
-	          }
-	          self.data[name] = value;
-	          self.autoSaveForm();
-	        },
-					initSelect2: function(){
-	          // var select2 = $('.select2').select2({
-	          //   tags: true,
-	          //   allowClear: true,
-	          //   placeholder: 'Press "Enter" to create a new selection',
-	          // });
-						// select2.on('select2:select', function(e) {
-					  //   console.log(e.params);
-						// });
-	        },
-					calculateScore: function() {
-                        var self = this;
-                        var fields = self.form.find('[score-input]');
-                        var score = 0;
-                        $.each(fields, function(i, field) {
-                            var value = parseInt($(field).val());
-                            value = isNaN(value) ? 0 : value;
-                            score = score + value;
-                        });
-                        self.data.Score = score;
-						$('#scoreValue').text(self.data.Score);
-						self.$forceUpdate();
-                        self.autoSaveForm();
-                    },
-					clearScore: function(){
-						var self = this;
-                        var fields = self.form.find('[score-input]');
-                        $.each(fields, function(i, field) {
-                            $(field).val(0)
-                        });
-                        self.data.score = 0;
-						$('#scoreValue').text(self.data.score);
-						self.$forceUpdate();
-                        self.autoSaveForm();
-					},
-                    initOnSelectChange: function() {
-                        var self = this;
-                        self.form.find('select').on('change', function() {
-                            self.calculateScore();
-                        });
-                    },
-				},
-				mounted: function() {
-					if (!this.data.dropdownOptions) {
-						this.data.dropdownOptions = this.defaultDropdownOptions;
-						this.$forceUpdate();
-					}
-					this.initSelect2();
-					this.initOnSelectChange();
-				}
-			});
-
-			// if in popup (omega template), add provision to toggle relevance
-			@include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-sleep_study_intake-container'])
-		}
-
-		addMCInitializer('edit-sleep_study_intake-container-{{$note->id}}', init, '#edit-sleep_study_intake-container');
-
-	})();
-</script>

+ 0 - 35
resources/views/app/patient/modules/sleep_study_intake/partials/a_p.blade.php

@@ -1,35 +0,0 @@
-<div class="row mb-1">
-	<div class="col-md-12">
-		<h6 class="my-3"><b><u>Assessment & Plan</u></b></h6>
-	</div>
-	<div class="col-md-12 section bg-light pt-2 mb-3">
-		<div class="form-group">
-			<label class="m-0">Sleep Hygiene Counseling:</label>
-			<div class="d-flex align-items-end">
-				<input data-name="ED_Sleep_Hygiene" v-model="data.ED_Sleep_Hygiene" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="ED_Sleep_Hygiene" data-title="ED_Sleep_Hygiene" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">BMI Follow-up Plan:</label>
-			<div class="d-flex align-items-end">
-				<textarea data-name="AP_Weight_Mgmt_Plan" v-model="data.AP_Weight_Mgmt_Plan" class="form-control border textarea" rows="3"></textarea>
-				<span add-dropdown-option data-name="AP_Weight_Mgmt_Plan" data-title="AP_Weight_Mgmt_Plan" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Nutrition Counseling:</label>
-			<div class="d-flex align-items-end">
-				<input data-name="ED_Nutrition_Counsel" v-model="data.ED_Nutrition_Counsel" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="ED_Nutrition_Counsel" data-title="ED_Nutrition_Counsel" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Physical Activity Counseling:</label>
-			<div class="d-flex align-items-end">
-				<input data-name="ED_Physical_Activity_Counsel" v-model="data.ED_Physical_Activity_Counsel" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="ED_Physical_Activity_Counsel" data-title="ED_Physical_Activity_Counsel" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-	</div>
-</div>

+ 0 - 214
resources/views/app/patient/modules/sleep_study_intake/partials/epworth_sleepiness_study.blade.php

@@ -1,214 +0,0 @@
-<div class="row mb-1">
-  <div class="col-md-12 section bg-light pt-2 mb-3">
-		<div class="mb-4 d-flex align-items-start">
-			<label class="mb-0 mr-3">
-				<input type="checkbox"  data-name="functional_status" name="functional_status" v-model="data.functional_status" />
-				<b>Functional Status Assessed</b>
-			</label>
-			<div class="border p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio" data-name="functional_impairments" name="functional_impairments" value="NO"  v-model="data.functional_impairments" />
-						<span>No Impairments</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio" data-name="functional_impairments" name="functional_impairments" value="YES"  v-model="data.functional_impairments" />
-						<span>Functional Impairments Present</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio" data-name="functional_impairments" name="functional_impairments" value=""  v-model="data.functional_impairments" />
-						<span>--</span>
-					</label>
-				</div>
-				<b v-if="data.functional_impairments == 'YES'" class="mt-1">Insert Impairments Subnote to Document Details</b>
-			</div>
-		</div>
-		<div class="mb-4 d-flex align-items-start">
-			<label class="mb-0 mr-3">
-				<input type="checkbox"  data-name="cognitive_status" name="cognitive_status"  v-model="data.cognitive_status" />
-				<b>Cognitive Status Assessed</b>
-			</label>
-			<div class="border p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio" data-name="cognitive_impairments" name="cognitive_impairments" value="NO"  v-model="data.cognitive_impairments" />
-						<span>No Impairments</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio" data-name="cognitive_impairments" name="cognitive_impairments" value="YES"  v-model="data.cognitive_impairments" />
-						<span>Functional Impairments Present</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio" data-name="cognitive_impairments" name="cognitive_impairments" value=""  v-model="data.cognitive_impairments" />
-						<span>--</span>
-					</label>
-				</div>
-				<b v-if="data.cognitive_impairments == 'YES'" class="mt-1">Insert Impairments Subnote to Document Details</b>
-			</div>
-		</div>
-    <div class="form-group textarea">
-      <label class="m-0">History of Present Illness:</label>
-      <div class="d-flex align-items-end">
-        <select data-name="HPI_description" name="HPI_description[]" multiple="multiple" class="select2" v-model="data.HPI_description">
-        </select>
-      </div>
-    </div>
-		<div class="form-group">
-			<label class="m-0">Symptoms</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_symptoms" v-model="data.HPI_symptoms" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_symptoms" data-title="HPI_symptoms" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Severity</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_severity" v-model="data.HPI_severity" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_severity" data-title="HPI_severity" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Duration</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_duration" v-model="data.HPI_duration" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_duration" data-title="HPI_duration" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Timing</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_timing" v-model="data.HPI_timing" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_timing" data-title="HPI_timing" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Context</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_context" v-model="data.HPI_context" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_context" data-title="HPI_context" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Aggravating Factors:</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_aggravating_factors" v-model="data.HPI_aggravating_factors" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_aggravating_factors" data-title="HPI_aggravating_factors" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Alleviating Factors:</label>
-			<div class="d-flex align-items-end">
-				<input data-name="HPI_alleviating_factors" v-model="data.HPI_alleviating_factors" class="form-control form-control-sm"/>
-				<span add-dropdown-option data-name="HPI_alleviating_factors" data-title="HPI_alleviating_factors" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Sleep Summary:</label>
-			<div class="d-flex align-items-end">
-				<textarea data-name="sleep_exam_sleep_summary" v-model="data.sleep_exam_sleep_summary" class="form-control border textarea" rows="3"></textarea>
-				<span add-dropdown-option data-name="sleep_exam_sleep_summary" data-title="sleep_exam_sleep_summary" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Previous Treatments:</label>
-			<div class="d-flex align-items-end">
-				<textarea data-name="PH_previous_treatment" v-model="data.PH_previous_treatment" class="form-control border textarea" rows="3"></textarea>
-				<span add-dropdown-option data-name="PH_previous_treatment" data-title="PH_previous_treatment" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="m-0">Current Treatments:</label>
-			<div class="d-flex align-items-end">
-				<textarea data-name="PH_current_treatment" v-model="data.PH_current_treatment" class="form-control border textarea" rows="3"></textarea>
-				<span add-dropdown-option data-name="PH_current_treatment" data-title="PH_current_treatment" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-	</div>
-
-    <div class="col-md-12">
-        <h6 class="my-3"><b><u>Epworth Sleepiness Scale</u></b></h6>
-    </div>
-    <div class="col-md-12 section bg-light pt-2 mb-3">
-        <div class="mb-2">
-            <label class="mb-1">How likely are you to doze off or fall asleep in the following situations, in contrast to feeling just tired? This refers to your usual way of life in recent times. Use the following scale (0, 1, 2, and 3) to choose the most appropriate number for each situation.</label>
-            <div class="d-flex align-items-center">
-                <select data-name="dozing" class="form-control form-control-sm select-esc-option" style="max-width:200px;" v-model="data.dozing">
-                    <option value=""></option>
-                    <option value="Never Chance of Doze">Never Chance of Doze</option>
-                    <option value="Slight Chance of Dozing">Slight Chance of Dozing</option>
-                    <option value="Moderate Chance of Dozing">Moderate Chance of Dozing</option>
-                    <option value="High Chance of Dozing">High Chance of Dozing</option>
-                </select>
-            </div>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">Sitting and reading</label>
-            <select data-name="sitting" class="form-control form-control-sm select-esc-option" score-input v-model="data.sitting">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">Watching TV</label>
-            <select data-name="watching" class="form-control form-control-sm select-esc-option" score-input v-model="data.watching">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">Sitting inactive in a public place (e.g. a theatre or a meeting)</label>
-            <select data-name="sitting_inactive" class="form-control form-control-sm select-esc-option" score-input v-model="data.sitting_inactive">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">As a passenger in a car for an hour without a break</label>
-            <select data-name="passenger_car" class="form-control form-control-sm select-esc-option" score-input v-model="data.passenger_car">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">Sitting quietly after a lunch without alcohol</label>
-            <select data-name="sitting_quietly" class="form-control form-control-sm select-esc-option" score-input v-model="data.sitting_quietly">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">Lying down to rest in the afternoon when circumstances permit</label>
-            <select data-name="lying_down" class="form-control form-control-sm select-esc-option" score-input v-model="data.lying_down">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">Sitting and talking to someone</label>
-            <select data-name="sitting_and_talking" class="form-control form-control-sm select-esc-option" score-input v-model="data.sitting_and_talking">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="d-flex align-items-center flex-wrap mb-2">
-            <label class="mb-0 mr-2">In a car, while stopped for a few minutes in traffic</label>
-            <select data-name="traffic" class="form-control form-control-sm select-esc-option" score-input v-model="data.traffic">
-                <option value=""></option>
-                <option v-for="i in 4" :value="i - 1">@{{ i - 1 }}</option>
-            </select>
-        </div>
-        <div class="my-2">
-            <div class="d-flex align-items-center">
-                <span class="font-weight-bold">Score:</span>
-                <div class="border p-2 mx-1" style="width:50px;">
-                    <input type="hidden" data-name="Score" name="score" v-model="data.score">
-                    <span id="scoreValue">@{{ data.Score }}</span>
-                </div>
-                <div class="">
-                    <span class="mr-1 text-primary c-pointer" @click="calculateScore">Calculate</span>
-                    <span class="text-danger c-pointer" @click="clearScore">Clear</span>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>

+ 0 - 326
resources/views/app/patient/modules/sleep_study_intake/partials/physical_exam.blade.php

@@ -1,326 +0,0 @@
-<div class="row mb-1">
-	<div class="col-md-12">
-		<h6 class="my-3"><b><u>Physical Exam</u></b></h6>
-	</div>
-	<div class="col-md-12">
-		<h6 class="my-3"><b><u>Physical Exam (2)</u></b></h6>
-	</div>
-	<div class="col-md-12 section bg-light pt-2 mb-3">
-		<div class="form-group">
-			<label class="m-0">General:</label>
-			<div class="d-flex align-items-end">
-				<textarea data-name="PE_general" v-model="data.PE_general" class="form-control border textarea" rows="3"></textarea>
-				<span add-dropdown-option data-name="PE_general" data-title="PE_general" class="ml-1 c-pointer" data-toggle="modal" data-target="#addDropdownOptionModal"><i class="fas fa-plus-circle fa-fw text-success"></i></span>
-			</div>
-		</div>
-		<div class="form-group d-flex align-items-start">
-			<label class="mb-0 mr-3">
-				<b>Depression</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_General_Depression" value="Admits" v-model="data.PE_General_Depression" />
-						<span>Admits</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_General_Depression" value="Denies" v-model="data.PE_General_Depression" />
-						<span>Denies</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_General_Depression" value="" v-model="data.PE_General_Depression" />
-						<span>--</span>
-					</label>
-				</div>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Eyes</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Eyes" value="Normal" v-model="data.PE_Eyes" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Eyes" value="Abnormal" v-model="data.PE_Eyes" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Eyes" value="" v-model="data.PE_Eyes" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Eyes == 'Normal'" data-name="PE_Eyes_Normal" v-model="data.PE_Eyes_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Eyes == 'Abnormal'" data-name="PE_Eyes_Abnormal" v-model="data.PE_Eyes_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Ears</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Ears" value="Normal" v-model="data.PE_Ears" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Ears" value="Abnormal" v-model="data.PE_Ears" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Ears" value="" v-model="data.PE_Ears" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Ears == 'Normal'" data-name="PE_Ears_Normal" v-model="data.PE_Ears_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Ears == 'Abnormal'" data-name="PE_Ears_Abnormal" v-model="data.PE_Ears_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Nose</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Nose" value="Normal" v-model="data.PE_Nose" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Nose" value="Abnormal" v-model="data.PE_Nose" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Nose" value="" v-model="data.PE_Nose" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Nose == 'Normal'" data-name="PE_Nose_Normal" v-model="data.PE_Nose_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Nose == 'Abnormal'" data-name="PE_Nose_Abnormal" v-model="data.PE_Nose_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Mouth / Throat</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Mouth_Throat" value="Normal" v-model="data.PE_Mouth_Throat" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Mouth_Throat" value="Abnormal" v-model="data.PE_Mouth_Throat" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Mouth_Throat" value="" v-model="data.PE_Mouth_Throat" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Mouth_Throat == 'Normal'" data-name="PE_Mouth_Throat_Normal" v-model="data.PE_Mouth_Throat_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Mouth_Throat == 'Abnormal'" data-name="PE_Mouth_Throat_Abnormal" v-model="data.PE_Mouth_Throat_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Neck</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Neck" value="Normal" v-model="data.PE_Neck" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Neck" value="Abnormal" v-model="data.PE_Neck" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Neck" value="" v-model="data.PE_Neck" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Neck == 'Normal'" data-name="PE_Neck_Normal" v-model="data.PE_Neck_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Neck == 'Abnormal'" data-name="PE_Neck_Abnormal" v-model="data.PE_Neck_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Lymphatic</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Lymph" value="Normal" v-model="data.PE_Lymph" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Lymph" value="Abnormal" v-model="data.PE_Lymph" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Lymph" value="" v-model="data.PE_Lymph" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Lymph == 'Normal'" data-name="PE_Lymph_Normal" v-model="data.PE_Lymph_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Lymph == 'Abnormal'" data-name="PE_Lymph_Abnormal" v-model="data.PE_Lymph_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Respiratory</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Resp" value="Normal" v-model="data.PE_Resp" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Resp" value="Abnormal" v-model="data.PE_Resp" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Resp" value="" v-model="data.PE_Resp" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Resp == 'Normal'" data-name="PE_Resp_Normal" v-model="data.PE_Resp_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Resp == 'Abnormal'" data-name="PE_Resp_Abnormal" v-model="data.PE_Resp_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Cardiovascular</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Cardio" value="Normal" v-model="data.PE_Cardio" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Cardio" value="Abnormal" v-model="data.PE_Cardio" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Cardio" value="" v-model="data.PE_Cardio" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Cardio == 'Normal'" data-name="PE_Cardio_Normal" v-model="data.PE_Cardio_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Cardio == 'Abnormal'" data-name="PE_Cardio_Abnormal" v-model="data.PE_Cardio_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Skin</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Skin" value="Normal" v-model="data.PE_Skin" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Skin" value="Abnormal" v-model="data.PE_Skin" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Skin" value="" v-model="data.PE_Skin" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Skin == 'Normal'" data-name="PE_Skin_Normal" v-model="data.PE_Skin_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Skin == 'Abnormal'" data-name="PE_Skin_Abnormal" v-model="data.PE_Skin_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Extrimities</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Extrimities" value="Normal" v-model="data.PE_Extrimities" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Extrimities" value="Abnormal" v-model="data.PE_Extrimities" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Extrimities" value="" v-model="data.PE_Extrimities" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Extrimities == 'Normal'" data-name="PE_Extrimities_Normal" v-model="data.PE_Extrimities_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Extrimities == 'Abnormal'" data-name="PE_Extrimities_Abnormal" v-model="data.PE_Extrimities_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Neurological</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Neuro" value="Normal" v-model="data.PE_Neuro" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Neuro" value="Abnormal" v-model="data.PE_Neuro" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Neuro" value="" v-model="data.PE_Neuro" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Neuro == 'Normal'" data-name="PE_Neuro_Normal" v-model="data.PE_Neuro_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Neuro == 'Abnormal'" data-name="PE_Neuro_Abnormal" v-model="data.PE_Neuro_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-		<div class="form-group">
-			<label class="mb-0">
-				<b>Psychiatric</b>
-			</label>
-			<div class="bg-light p-1">
-				<div>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Psych" value="Normal" v-model="data.PE_Psych" />
-						<span>Normal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Psych" value="Abnormal" v-model="data.PE_Psych" />
-						<span>Abnormal</span>
-					</label>
-					<label class="mb-0 mr-3">
-						<input type="radio"  data-name="PE_Psych" value="" v-model="data.PE_Psych" />
-						<span>--</span>
-					</label>
-				</div>
-				<textarea v-if="data.PE_Psych == 'Normal'" data-name="PE_Psych_Normal" v-model="data.PE_Psych_Normal" class="form-control border textarea" rows="3"></textarea>
-				<textarea v-if="data.PE_Psych == 'Abnormal'" data-name="PE_Psych_Abnormal" v-model="data.PE_Psych_Abnormal" class="form-control border textarea" rows="3"></textarea>
-			</div>
-		</div>
-	</div>
-
-	<div class="col-md-12 section bg-light py-2 mb-3">
-		<div class="c-pointer"
-		open-in-stag-popup
-		href="/note-segment-view-by-name/{{$note->uid}}/omega_ros/edit"
-		mc-initer="init-ros-{{$note->id}}"
-		title="Review Of Systems"
-		update-parent
-		popup-style="overflow-visible">
-		@include('app.patient.segment-templates.omega_ros.summary')
-		</div>
-	</div>
-</div>

+ 3 - 3
resources/views/app/patient/note/dashboard.blade.php

@@ -557,8 +557,8 @@ use App\Models\Handout;
                     "name" => 'Sleep Health Intake',
                     "title" => 'Sleep Health Intake',
                     "style" => 'stag-popup-md',
-                    "href" => "/module-view/{$note->uid}/sleep_study_intake/edit",
-                    "initer" => "edit-sleep_study_intake-container-{$note->id}"
+                    "href" => "/module-view/{$note->uid}/sleep_health_intake/edit",
+                    "initer" => "edit-sleep_health_intake-container-{$note->id}"
                 ],
             ];
             ?>
@@ -1098,7 +1098,7 @@ use App\Models\Handout;
                     @include('app.patient.handouts-list', compact('patient', 'clientHandouts', 'handouts', 'note'))
                 </div>
 
-                <div class="p-3 border-bottom screen-only" data-non-segment-section="Sleep Study">
+                <div class="p-3 border-bottom screen-only" data-non-segment-section="Sleep Health">
                     @include('app.patient.sleep-study-actions-from-note', compact('patient', 'note'))
                 </div>
 

+ 8 - 3
resources/views/app/patient/segment-templates/omega_cc/edit.blade.php

@@ -41,9 +41,14 @@ if(!$parsed || !@$parsed->free_text) {
     ]));
 }
 ?>
-<div visit-moe close-on-save close-on-cancel class="d-block">
-    <form show url="/api/visitPoint/<?= $endPoint ?>" class="mcp-theme-1">
-        <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+<div {{!!$segment ? 'visit-moe' : 'moe'}} close-on-save close-on-cancel class="d-block">
+    <form show url="/api/visitPoint/<?= $endPoint ?>" class="mcp-theme-1"
+      {{!$segment ? 'hook=onHxPopupClosure' : ''}}>
+        @if(!!@$segment)
+            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+        @else
+            <input type="hidden" name="segmentUid" value="<?= $note->coreSegment->uid ?>">
+        @endif
         <input type="hidden" name="category" value="<?= $category ?>">
         <input type="hidden" name="data">
         <div note-rte

+ 437 - 0
resources/views/app/patient/segment-templates/omega_pe/edit.blade.php

@@ -0,0 +1,437 @@
+<?php
+use App\Models\Client;
+use App\Models\Point;
+use App\Models\Note;
+/** @var Client $patient */
+/** @var Note $note */
+/** @var Segment $segment */
+
+
+if(!@$segment) $segment = null;
+
+if(!@$sessionKey) {
+    $sessionKey = request()->cookie('sessionKey');
+}
+
+$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'PHYSICAL_EXAM', $sessionKey, true);
+
+$contentData = [
+  "PE_Eyes_Normal" => "Extraocular muscles are intact, pupils are equally round and reactive to light and accommodation.",
+  "PE_Ears_Normal" => "Tympanic membranes and canals are clear.",
+  "PE_Nose_Normal" => "Mucous membranes within normal limits. No discharge, nasal turbinates within normal limits and septum is midline.",
+  "PE_Mouth_Throat_Normal" => "Posterior pharynx is clear. Teeth are without dental caries. Tongue and mucosa are moist, soft, and pink. No lesions or inflammations noted on hard or soft palate, buccal areas, or gingiva.",
+  "PE_Neck_Normal" => "Neck is supple. No palpable masses or thyromegaly.",
+  "PE_Lymph_Normal" => "No adenopathy with bilateral palpation of lymph nodes in the cervical, supraclavicular, axilla, or inguinal regions.",
+  "PE_Resp_Normal" => "Clear to auscultation, no wheezes, rales, or rhonchi.",
+  "PE_Cardio_Normal" => "Regular rate and rhythm, no murmurs, ectopy, or rubs. No jugular venous distention.",
+  "PE_Skin_Normal" => "Tone, turgor, texture, and temperature&#160;within normal limits. Hair growth within normal limits.",
+  "PE_Extrimities_Normal" => "Inspection and palpation of digits and nails reveal no clubbing, cyanosis, or edema. Muscle strength 5 / 5.",
+  "PE_Neuro_Normal" => "Cranial nerves I - XII are grossly intact. Bilateral reflexes are 2+ throughout. Intact sensations of fine touch, pain, and temperature.",
+  "PE_Psych_Normal" => "Oriented to time, place, and person. Appropriate mood and affect."
+];
+
+if ($point->lastChildReview && $point->lastChildReview->data) {
+    $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+    $contentData = $parsed = $point->lastChildReview->data;
+}
+
+?>
+
+<hr class="hide-outside-popup mt-3 mb-0">
+<div class="p-3 mcp-theme-1">
+  <div {{!!$segment ? 'visit-moe' : 'moe'}} close-on-save close-on-cancel class="d-block">
+        <form show url="/api/visitPoint/upsertChildReview" class="mcp-theme-1"
+                    {{!$segment ? 'hook=onHxPopupClosure' : ''}}>
+        @if(!!@$segment)
+            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+        @else
+            <input type="hidden" name="segmentUid" value="<?= $note->coreSegment->uid ?>">
+        @endif
+        <input type="hidden" name="uid" value="<?= $point->uid ?>">
+        <input type="hidden" name="noteUid" value="<?= $note->uid ?>">
+        <input type="hidden" name="data">
+        <div id="edit-univ_physical_exam-container">
+          <div class="form-group">
+            <label class="m-0">General:</label>
+            <div class="d-flex align-items-end">
+              <input @keyup.prevent="onInputChange" name="PE_general" v-model="data.PE_general" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group d-flex align-items-start">
+            <label class="mb-0 mr-3">
+              <b>Depression</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_General_Depression" value="Admits" v-model="data.PE_General_Depression" />
+                  <span>Admits</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_General_Depression" value="Denies" v-model="data.PE_General_Depression" />
+                  <span>Denies</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_General_Depression" value="" v-model="data.PE_General_Depression" />
+                  <span>--</span>
+                </label>
+              </div>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Eyes</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Eyes" value="Normal" v-model="data.PE_Eyes" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Eyes" value="Abnormal" v-model="data.PE_Eyes" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Eyes" value="" v-model="data.PE_Eyes" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Eyes == 'Normal'" data-name="PE_Eyes_Normal" v-model="data.PE_Eyes_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Eyes == 'Abnormal'" data-name="PE_Eyes_Abnormal" v-model="data.PE_Eyes_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Ears</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Ears" value="Normal" v-model="data.PE_Ears" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Ears" value="Abnormal" v-model="data.PE_Ears" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Ears" value="" v-model="data.PE_Ears" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Ears == 'Normal'" data-name="PE_Ears_Normal" v-model="data.PE_Ears_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Ears == 'Abnormal'" data-name="PE_Ears_Abnormal" v-model="data.PE_Ears_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Nose</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Nose" value="Normal" v-model="data.PE_Nose" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Nose" value="Abnormal" v-model="data.PE_Nose" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Nose" value="" v-model="data.PE_Nose" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Nose == 'Normal'" data-name="PE_Nose_Normal" v-model="data.PE_Nose_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Nose == 'Abnormal'" data-name="PE_Nose_Abnormal" v-model="data.PE_Nose_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Mouth / Throat</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Mouth_Throat" value="Normal" v-model="data.PE_Mouth_Throat" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Mouth_Throat" value="Abnormal" v-model="data.PE_Mouth_Throat" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Mouth_Throat" value="" v-model="data.PE_Mouth_Throat" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Mouth_Throat == 'Normal'" data-name="PE_Mouth_Throat_Normal" v-model="data.PE_Mouth_Throat_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Mouth_Throat == 'Abnormal'" data-name="PE_Mouth_Throat_Abnormal" v-model="data.PE_Mouth_Throat_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Neck</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Neck" value="Normal" v-model="data.PE_Neck" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Neck" value="Abnormal" v-model="data.PE_Neck" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Neck" value="" v-model="data.PE_Neck" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Neck == 'Normal'" data-name="PE_Neck_Normal" v-model="data.PE_Neck_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Neck == 'Abnormal'" data-name="PE_Neck_Abnormal" v-model="data.PE_Neck_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Lymphatic</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Lymph" value="Normal" v-model="data.PE_Lymph" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Lymph" value="Abnormal" v-model="data.PE_Lymph" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Lymph" value="" v-model="data.PE_Lymph" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Lymph == 'Normal'" data-name="PE_Lymph_Normal" v-model="data.PE_Lymph_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Lymph == 'Abnormal'" data-name="PE_Lymph_Abnormal" v-model="data.PE_Lymph_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Respiratory</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Resp" value="Normal" v-model="data.PE_Resp" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Resp" value="Abnormal" v-model="data.PE_Resp" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Resp" value="" v-model="data.PE_Resp" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Resp == 'Normal'" data-name="PE_Resp_Normal" v-model="data.PE_Resp_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Resp == 'Abnormal'" data-name="PE_Resp_Abnormal" v-model="data.PE_Resp_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Cardiovascular</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Cardio" value="Normal" v-model="data.PE_Cardio" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Cardio" value="Abnormal" v-model="data.PE_Cardio" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Cardio" value="" v-model="data.PE_Cardio" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Cardio == 'Normal'" data-name="PE_Cardio_Normal" v-model="data.PE_Cardio_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Cardio == 'Abnormal'" data-name="PE_Cardio_Abnormal" v-model="data.PE_Cardio_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Skin</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Skin" value="Normal" v-model="data.PE_Skin" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Skin" value="Abnormal" v-model="data.PE_Skin" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Skin" value="" v-model="data.PE_Skin" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Skin == 'Normal'" data-name="PE_Skin_Normal" v-model="data.PE_Skin_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Skin == 'Abnormal'" data-name="PE_Skin_Abnormal" v-model="data.PE_Skin_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Extrimities</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Extrimities" value="Normal" v-model="data.PE_Extrimities" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Extrimities" value="Abnormal" v-model="data.PE_Extrimities" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Extrimities" value="" v-model="data.PE_Extrimities" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Extrimities == 'Normal'" data-name="PE_Extrimities_Normal" v-model="data.PE_Extrimities_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Extrimities == 'Abnormal'" data-name="PE_Extrimities_Abnormal" v-model="data.PE_Extrimities_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Neurological</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Neuro" value="Normal" v-model="data.PE_Neuro" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Neuro" value="Abnormal" v-model="data.PE_Neuro" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Neuro" value="" v-model="data.PE_Neuro" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Neuro == 'Normal'" data-name="PE_Neuro_Normal" v-model="data.PE_Neuro_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Neuro == 'Abnormal'" data-name="PE_Neuro_Abnormal" v-model="data.PE_Neuro_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+          <div class="form-group">
+            <label class="mb-0">
+              <b>Psychiatric</b>
+            </label>
+            <div class="bg-light p-1">
+              <div>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Psych" value="Normal" v-model="data.PE_Psych" />
+                  <span>Normal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Psych" value="Abnormal" v-model="data.PE_Psych" />
+                  <span>Abnormal</span>
+                </label>
+                <label class="mb-0 mr-3">
+                  <input @change.prevent="onInputChange" type="radio"  data-name="PE_Psych" value="" v-model="data.PE_Psych" />
+                  <span>--</span>
+                </label>
+              </div>
+              <input @change.prevent="onInputChange" v-if="data.PE_Psych == 'Normal'" data-name="PE_Psych_Normal" v-model="data.PE_Psych_Normal" class="form-control form-control-sm"/>
+              <input @change.prevent="onInputChange" v-if="data.PE_Psych == 'Abnormal'" data-name="PE_Psych_Abnormal" v-model="data.PE_Psych_Abnormal" class="form-control form-control-sm"/>
+            </div>
+          </div>
+        </div>
+        <div class="my-2">
+            <button submit class="btn btn-sm btn-primary mr-2"><i class="fa fa-save"></i></button>
+            <div class="d-inline-flex align-self-stretch align-items-center">
+                <span class="autosave-indicator saving text-sm text-secondary">Saving changes &hellip;</span>
+                <span class="autosave-indicator saved text-sm text-secondary">
+                    <i class="fa fa-check"></i>
+                    Saved
+                </span>
+            </div>
+        </div>
+    </form>
+  </div>
+</div>
+<script>
+    (function() {
+
+        function initPE() {
+
+          let model = <?= $contentData ? json_encode($contentData) : '{}' ?>;
+
+          new Vue({
+            el: '#edit-univ_physical_exam-container',
+            delimiters: ["@{{", "}}"],
+            data: {
+              form: $('#edit-univ_physical_exam-container').closest('form'),
+              data: model,
+              defaultDropdownOptions: {}
+            },
+            mounted: function() {
+                $('#edit-univ_physical_exam-container').find('[moe][initialized]').removeAttr('initialized');
+                initMoes();
+            },
+            methods: {
+              onInputChange: function(evt) {
+    						var self = this;
+    						var input = evt.target;
+    						var name = input.name || $(input).data('name');
+    						value = input.value;
+    						if ($(input).is(':radio')) {
+    							if (!input.checked) {
+    								value = null;
+    							}
+    						}
+    						self.data[name] = value;
+    						self.autoSaveForm();
+    					},
+              autoSaveForm: function(){
+                var self = this;
+                var url = self.form.attr('url');
+                self.form.find('input[name=data]').val(JSON.stringify(self.data));
+                // autosave on change
+                var dataArray = self.form.serializeArray();
+                $.post(url, dataArray, function(response) {}, 'json');
+                refreshSegment('omega_pe');
+              },
+              _autoSaveForm: function(){
+                let parent = $('#edit-univ_physical_exam-container').closest('form');
+                  parent.find('[name="data"]').val(JSON.stringify(this.data));
+
+                  // autosave on change
+                  autoSaveSegment(parent.find('[submit]').first());
+              },
+              saveForm: function() {
+                this.autoSaveForm();
+                closeStagPopup();
+                refreshSegment('omega_pe');
+              },
+            },
+          });
+
+          // if in popup (omega template), add provision to toggle relevance
+          @include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-univ_physical_exam-container', 'segmentName' => 'omega_pe'])
+
+        };
+
+        window.segmentInitializers.omega_pe = initPE;
+        addMCInitializer('edit-univ_physical_exam-container-{{$note->id}}', initPE, '#edit-univ_physical_exam-container');
+
+    }).call(window);
+</script>

+ 75 - 0
resources/views/app/patient/segment-templates/omega_pe/summary.blade.php

@@ -0,0 +1,75 @@
+<?php
+
+use App\Models\Client;
+use App\Models\Point;
+use App\Models\Note;
+/** @var Client $patient */
+/** @var Note $note */
+
+if(!@$note) {
+    $note = $patient->coreNote;
+}
+if(!@$sessionKey) {
+    $sessionKey = request()->cookie('sessionKey');
+}
+
+$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'PHYSICAL_EXAM', $sessionKey, true);
+
+$contentData = $parsed = false;
+
+$rel = !!$point->relevanceToNote($note);
+
+if ($point->lastChildReview && $point->lastChildReview->data && ($rel || $point->lastChildReview->added_in_note_id === $note->id)) {
+    $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+    $contentData = $parsed = $point->lastChildReview->data;
+}
+
+$labels = [
+    'PE_general' => 'General',
+    'PE_General_Depression' => 'Depression',
+    'PE_Eyes' => 'Eyes',
+    'PE_Ears' => 'Ears',
+    'PE_Nose' => 'Nose',
+    'PE_Mouth_Throat' => 'Mouth/Throat',
+    'PE_Neck' => 'Neck',
+    'PE_Lymph' => 'Lymphatic',
+    'PE_Resp' => 'Respiratory',
+    'PE_Cardio' => 'Cardiovascular',
+    'PE_Skin' => 'Skin',
+    'PE_Extrimities' => 'Extrimities',
+    'PE_Neuro' => 'Neurological',
+    'PE_Psych' => 'Psychiatric',
+];
+
+if($contentData && !@$contentData['unknown']) {
+    foreach ($labels as $k => $v) {
+?>
+@if(isset($contentData[$k]) && $contentData[$k] !== '')
+  @if($k == 'PE_general' || $k == 'PE_General_Depression')
+    <div class="mb-1">
+      <b>{{$v}}:</b> <span>{{$contentData[$k]}}</span>
+    </div>
+  @else
+    <div class="mb-2">
+      <div class="">
+        <b>{{$v}}:</b> <span>{{$contentData[$k]}}</span>
+      </div>
+      <span><em>Note:</em> {{@$contentData["{$k}_$contentData[$k]"]}}</span>
+    </div>
+  @endif
+@endif
+
+<?php
+    }
+}
+else if(@$contentData['unknown']) {
+    ?>
+    <div class="text-secondary">Physical Exam is unavailable</div>
+    <?php
+}
+else {
+?>
+<div class="text-secondary">-</div>
+<?php
+}
+?>

+ 0 - 0
resources/views/app/patient/segment-templates/omega_care_team/edit.blade.php → resources/views/omega_care_team/edit.blade.php


+ 0 - 0
resources/views/app/patient/segment-templates/omega_care_team/summary.blade.php → resources/views/omega_care_team/summary.blade.php