Initial Checking with all 820 MLMs
This commit is contained in:
483
MLMStripper/bin/Debug/FORM/FORM_OBSERVATION_ADT.mlm
Normal file
483
MLMStripper/bin/Debug/FORM/FORM_OBSERVATION_ADT.mlm
Normal file
@@ -0,0 +1,483 @@
|
||||
maintenance:
|
||||
|
||||
title: Observation Admit/Discharge;;
|
||||
mlmname: FORM_Observation_ADT;;
|
||||
arden: version 2;;
|
||||
version: 4.50;;
|
||||
institution: St Clair;;
|
||||
author: Don Warnick, Eclipsys Corp;;
|
||||
specialist: ;;
|
||||
date: 2010-07-15;;
|
||||
validation: testing;;
|
||||
|
||||
library:
|
||||
purpose: Manage Date fields
|
||||
;;
|
||||
|
||||
explanation: This MLM is called from the Observation forms and Order sets
|
||||
|
||||
Change history
|
||||
|
||||
07.15.2010 DW Created
|
||||
07.12.2011 DW Introduced logic to support mandatory MD HI entry found in Form_Health_Issue_Entered_From_Order_Form
|
||||
08.09.2013 DW HD#159598 Altered date field from "requesteddate" to "CM_Patient_Change_Date"
|
||||
11.5.2013 SH CSR#: 31898 Altered to include PA, PA-C, and CRNP for required HI and Admit date/time to auto populate.
|
||||
Also added 5 minutes to the start time to prevent nuisance alert from occuring.
|
||||
02.25.2014 JML CSR# 31744: Modified for Discharge order ONLY; if patient is "emergency", then remove the mandatory
|
||||
field property on Discharge Diagnosis.
|
||||
06.03.2014 DW CSR# 31688 Changes for MU2
|
||||
08.07.2014 DW HD#167318 - Exclude all Infusion Department users from the Discharge Dx requirement.
|
||||
|
||||
;;
|
||||
|
||||
keywords: Called MLMs, Form fields, Observation ADT Date fields
|
||||
;;
|
||||
|
||||
knowledge:
|
||||
type: data-driven;;
|
||||
data:
|
||||
|
||||
standard_libs := MLM {{{SINGLE-QUOTE}}}std_include_libs{{{SINGLE-QUOTE}}};
|
||||
include standard_libs;
|
||||
|
||||
(this_communication, this_form, client_info_obj) := argument;
|
||||
|
||||
visit_guid := this_communication.ClientVisitGUID;
|
||||
client_guid := this_communication.ClientGUID;
|
||||
chart_guid := this_communication.ChartGUID;
|
||||
orderroletype:= this_communication.primaryobj.enterrole;
|
||||
orderForm := this_communication.PrimaryObj.Name;
|
||||
userguid := this_communication.userguid;
|
||||
|
||||
|
||||
if (orderroletype matches pattern "%Physician%") or orderroletype in ("PA","PA-C","CRNP","Nurse (RN)") then
|
||||
orderrole := true;
|
||||
else
|
||||
orderrole := false;
|
||||
endif;
|
||||
|
||||
orgunit := read last {" select ou.Name "
|
||||
|| " from cv3user u with (nolock) "
|
||||
|| " join CV3OrganizationalUnit ou with (nolock) on ou.guid = u.OrgUnitGUID "
|
||||
|| " where u.guid = " || SQL(userguid)
|
||||
};
|
||||
|
||||
|
||||
log_execution_info := FALSE;
|
||||
error_message:="";
|
||||
|
||||
field_list:= this_form.fields;
|
||||
CallingField :=this_communication.CallingFieldName;
|
||||
CallingEvent := this_communication.CallingEvent;
|
||||
|
||||
|
||||
// On some of the forms the "system" date field is not used. This permits either to work.
|
||||
|
||||
requesteddate:= last of (field_list where field_list.DataItemName = "RequestedDate" );
|
||||
|
||||
if not exist requesteddate
|
||||
then
|
||||
requesteddate:= last of (field_list where field_list.DataItemName = "CM_Patient_Change_Date" );
|
||||
endif;
|
||||
|
||||
requestedtime:= last of (field_list where field_list.DataItemName = "RequestedTime" );
|
||||
|
||||
Obs_field := last of (field_list where field_list.DataItemName = "NUR_ADTObsvStatusCBx");
|
||||
SSop_field := last of (field_list where field_list.DataItemName = "NUR_ADTSsopStatusCBx");
|
||||
Inp_field := last of (field_list where field_list.DataItemName = "NUR_ADTInptStatusCBx");
|
||||
Surgery_field := last of (field_list where field_list.DataItemName= "NUR_ADTsdcstatusCBx");
|
||||
Denied_field := last of (field_list where field_list.DataItemName = "NUR_ADTAdmDeniedCBx");
|
||||
|
||||
Dis_Time_Testing_field := last of (field_list where field_list.DataItemName= "NUR_CB Testing" );
|
||||
Dis_Time_AM_field := last of (field_list where field_list.DataItemName = "NUR_CB AM");
|
||||
Dis_Time_PM_field := last of (field_list where field_list.DataItemName = "NUR_CB PM");
|
||||
Dis_Time_Today_field:= last of (field_list where field_list.DataItemName = "NUR_CB Today");
|
||||
Dis_Time_Tomorrow_field:= last of (field_list where field_list.DataItemName= "NUR_CB Tomorrow");
|
||||
Dis_Time_Now_field:= last of (field_list where field_list.DataItemName = "NUR_CB Now");
|
||||
|
||||
AttendingPhysician:= last of (field_list where field_list.DataItemName = "Obj_Plus_Consult");
|
||||
Two_Midnight_field:= last of (field_list where field_list.DataItemName = "CPOE_Adm_TwoMidnight");
|
||||
|
||||
Dis_Diagnosis_field:= last of (field_list where field_list.DataItemName = "Obj_Plus_Problem List Builder DISC");
|
||||
Dis_Current_Diagnosis_field:= last of (field_list where field_list.DataItemName = "NUR_ADT Discharge Dx");
|
||||
|
||||
Dis_Goals_field:= last of (field_list where field_list.DataItemName = "NUR_DC_Goals");
|
||||
|
||||
//**** CSR 31744 Change ****
|
||||
Dis_ED_Diagnosis_field := last of (field_list WHERE field_list.DataItemName = "DISC_Discharge Diagnosis");
|
||||
|
||||
MD_Box := last of (field_list where field_list.DataItemName = "MLM_Physician_Mandatory_HI");
|
||||
|
||||
// extract components of current time and create fields which can be compared with requested time
|
||||
|
||||
hr := extract hour now; if hr < 10 then hr := "0" || hr; endif;
|
||||
mi := extract minute now; if mi < 10 then mi := "0" || mi; endif;
|
||||
yr := extract year now;
|
||||
mn := extract month now; if mn < 10 then mn := "0" || mn; endif;
|
||||
dd := extract day now; if dd < 10 then dd := "0" || dd; endif;
|
||||
|
||||
calc_currtime := ((hr ||":"|| mi) as time) + 300 seconds; //changed to add 5 minutes to time to prevent nuisance alerts
|
||||
currdate := yr || "-" || mn || "-" || dd ;
|
||||
currtime := extract hour calc_currtime || ":" || extract minute calc_currtime;
|
||||
|
||||
// Populate the Requested Time Code with "start time"
|
||||
|
||||
requestedtime.value.ReqTimeCode := "Start Time";
|
||||
|
||||
|
||||
|
||||
// Only called upon open from the Admit, Observation, Discharge forms
|
||||
|
||||
//**** CSR 31744 Change Begin ****
|
||||
visitType := read last {"SELECT cv.TypeCode"
|
||||
|| " FROM CV3Client c WITH (NOLOCK) JOIN CV3ClientVisit cv WITH (NOLOCK)"
|
||||
|| " ON c.GUID = cv.ClientGUID"
|
||||
|| " WHERE c.GUID = " || Sql(client_guid)
|
||||
|| " AND cv.GUID = " || Sql(visit_guid)};
|
||||
|
||||
if ( ( visitType <> "Emergency" ) and ( visitType <> "Clinic" ) )
|
||||
|
||||
then
|
||||
Dis_ED_Diagnosis_field.control_read_only := true;
|
||||
|
||||
endif;
|
||||
//**** CSR 31744 Change End ****
|
||||
|
||||
|
||||
(DischargeDiagnosisHIOnFile) := read
|
||||
{
|
||||
" select distinct hi.shortname "
|
||||
|| " from cv3healthissuedeclaration hi with (nolock) "
|
||||
|| " join CV3CodedHealthIssue chi with (nolock) on chi.GUID = hi.CodedHealthIssueGUID "
|
||||
|| " where hi.clientguid = " || client_guid || " and hi.chartguid = " || chart_guid || " and hi.clientvisitguid = " || visit_guid || " "
|
||||
|| " and hi.active = 1 and hi.status = {{{SINGLE-QUOTE}}}Active{{{SINGLE-QUOTE}}} "
|
||||
|| " and hi.typecode = {{{SINGLE-QUOTE}}}Discharge Diag{{{SINGLE-QUOTE}}} "
|
||||
};
|
||||
|
||||
|
||||
(NursingOrdersList) := read last
|
||||
{
|
||||
" SET CONCAT_NULL_YIELDS_NULL off select {{{SINGLE-QUOTE}}}\n{{{SINGLE-QUOTE}}} + o.name + {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}} + REPLACE(REPLACE(REPLACE(o.SummaryLine, CHAR(10), {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}), CHAR(13), {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}), CHAR(9), {{{SINGLE-QUOTE}}} {{{SINGLE-QUOTE}}}) "
|
||||
|| " from cv3ordercatalogmasteritem as ocmi with (nolock) "
|
||||
|| " join cv3order as o with (nolock)on o.ordercatalogmasteritemguid = ocmi.guid "
|
||||
|| " and o.ClientGUID = " || client_guid || " and o.ChartGUID = " || chart_guid || " and o.ClientVisitGUID= " || visit_guid || " "
|
||||
|| " and o.InitialSessionTypeCode = {{{SINGLE-QUOTE}}}Discharge{{{SINGLE-QUOTE}}} and o.name <> {{{SINGLE-QUOTE}}}Discharge{{{SINGLE-QUOTE}}} "
|
||||
|| " and o.name not like {{{SINGLE-QUOTE}}}Lab Test%{{{SINGLE-QUOTE}}} and o.name not like {{{SINGLE-QUOTE}}}Medical Imaging%{{{SINGLE-QUOTE}}} "
|
||||
|| " and o.OrderStatusLevelNum > 15 and o.OrderStatusLevelNum not in (69, 70) "
|
||||
};
|
||||
|
||||
|
||||
|
||||
// FORM CLOSE
|
||||
|
||||
|
||||
If CallingEvent = "FormClose" Then
|
||||
|
||||
AttendingPhysicianNameEdstan := AttendingPhysician.value;
|
||||
AttendingPhysicianName:= Substring (Find "(" in string AttendingPhysicianNameEdstan) -1 characters from AttendingPhysicianNameEdstan;
|
||||
|
||||
EdstanStart := (Find "(" in string AttendingPhysicianNameEdstan) +1;
|
||||
Edstanlength := ((Find ")" in string AttendingPhysicianNameEdstan) -1) - (Find "(" in string AttendingPhysicianNameEdstan);
|
||||
Edstan := Substring Edstanlength characters starting at EdstanStart from AttendingPhysicianNameEdstan ;
|
||||
|
||||
RequestingUserGUID := read first
|
||||
{ " select cp.guid "
|
||||
|| " from cv3careproviderid cpid with (nolock) "
|
||||
|| " join cv3careprovider cp on cp.guid = cpid.providerguid "
|
||||
|| " where cpid.ProviderIDTypeCode = {{{SINGLE-QUOTE}}}Edstan Number (physician){{{SINGLE-QUOTE}}} "
|
||||
|| " and cpid.idcode = " || Sql(Edstan) };
|
||||
|
||||
(CurrentOrder) := read last
|
||||
{ " select o.name "
|
||||
|| " from cv3order o with (nolock) "
|
||||
|| " where o.name = {{{SINGLE-QUOTE}}}Two Midnight Rule (Admit to Inpatient){{{SINGLE-QUOTE}}} "
|
||||
|| " and o.ClientGUID = " || client_guid || " and o.ChartGUID = " || chart_guid || " and o.ClientVisitGUID= " || visit_guid || " "
|
||||
|| " and o.OrderStatusLevelNum > 15 and o.OrderStatusLevelNum not in (69, 70) " };
|
||||
|
||||
|
||||
If exists RequestingUserGUID and not exists CurrentOrder and Two_Midnight_field.value = true
|
||||
|
||||
then
|
||||
|
||||
try
|
||||
|
||||
orderItemName := "Two Midnight Rule (Admit to Inpatient)";
|
||||
SessionType := "Standard";
|
||||
SessionReason := "";
|
||||
RequestingSource := "Verbal Order";
|
||||
user_IDType := "Edstan Number (physician)";
|
||||
order_Creation_Reason := "From Test MLM";
|
||||
|
||||
client_visit_obj := call {{{SINGLE-QUOTE}}}ClientVisit{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((visit_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}}) ;
|
||||
user_IDCode := read last {"SELECT IDCode FROM CV3CareProviderID " || " where ProviderGUID = {{{SINGLE-QUOTE}}}" || RequestingUserGUID || "{{{SINGLE-QUOTE}}} and ProviderIDTypeCode = {{{SINGLE-QUOTE}}}" || user_IDType || "{{{SINGLE-QUOTE}}}"};
|
||||
RequestingCareProvider_obj:= call {{{SINGLE-QUOTE}}}CareProvider{{{SINGLE-QUOTE}}}.FindById with ( user_IDType, (user_IDCode as STRING) );
|
||||
location_guid := read last {"SELECT CurrentLocationGUID FROM CV3ClientVisit with (nolock) where ClientGUID = " || client_guid};
|
||||
location_obj := call {{{SINGLE-QUOTE}}}Location{{{SINGLE-QUOTE}}}.FindByPrimaryKey with ((location_guid as number) as {{{SINGLE-QUOTE}}}Int64{{{SINGLE-QUOTE}}});
|
||||
general_catalog_item := call {{{SINGLE-QUOTE}}}OrderCatalogMasterItem{{{SINGLE-QUOTE}}}.FindByName with orderItemName;
|
||||
|
||||
GeneralOrder_obj := call {{{SINGLE-QUOTE}}}GeneralOrder{{{SINGLE-QUOTE}}}.CreateGeneralOrder
|
||||
with
|
||||
client_visit_obj, // ClientVisit ObjectsPlus object
|
||||
general_catalog_item, // CatalogMasterItem ObjectsPlus object
|
||||
order_Creation_Reason, // CreateReason
|
||||
RequestingCareProvider_obj, // RequestingProvider ObjectsPlus object
|
||||
RequestingSource, // string requestingSource (must be in dictionary)
|
||||
SessionType, // string SessionType
|
||||
SessionReason, // string SessionReason
|
||||
location_obj, // Location ReleaseLocGrpID
|
||||
"Never" as {{{SINGLE-QUOTE}}}AvailabilityOverride{{{SINGLE-QUOTE}}}; // AvailabilityOverride
|
||||
GeneralOrder_obj.RequestedDate := "T";
|
||||
|
||||
void := call GeneralOrder_obj.Save;
|
||||
|
||||
endtry;
|
||||
|
||||
catch Exception ex
|
||||
error_occurred:= true;
|
||||
debugFlag := TRUE;
|
||||
messageText := messageText || "New general order:\n" || ex.Message || "\n\n";
|
||||
if ( general_catalog_item is NOT NULL ) then void:= call general_catalog_item.Dispose; general_catalog_item:= null; endif;
|
||||
if ( GeneralOrder_obj is NOT NULL ) then void:= call GeneralOrder_obj.Dispose; GeneralOrder_obj:= null; endif;
|
||||
endcatch;
|
||||
|
||||
if ( client_visit_obj is NOT NULL ) then void:= call client_visit_obj.Dispose; client_visit_obj:= null; endif;
|
||||
if ( RequestingCareProvider_obj is NOT NULL ) then void:= call RequestingCareProvider_obj.Dispose; RequestingCareProvider_obj:= null; endif;
|
||||
if ( location_obj is NOT NULL ) then void:= call location_obj.Dispose; location_obj:= null; endif;
|
||||
|
||||
endif; // Place Order Decision
|
||||
|
||||
endif; // Close
|
||||
|
||||
|
||||
|
||||
// FORM OPEN
|
||||
|
||||
|
||||
|
||||
If CallingEvent= "FormOpen"
|
||||
|
||||
then
|
||||
|
||||
If orderrole = true
|
||||
then
|
||||
MD_Box.control_mandatory := true;
|
||||
requesteddate.value:= currdate;
|
||||
requestedtime.value.reqtimevalue:= currtime;
|
||||
endif;
|
||||
|
||||
|
||||
|
||||
If exists DischargeDiagnosisHIOnFile
|
||||
then
|
||||
|
||||
for i in 1 seqto count DischargeDiagnosisHIOnFile do
|
||||
if i = 1
|
||||
then DischargeDiagnosisHIOnFile_Out := DischargeDiagnosisHIOnFile [i];
|
||||
else DischargeDiagnosisHIOnFile_Out := DischargeDiagnosisHIOnFile_Out || " , " || DischargeDiagnosisHIOnFile [i];
|
||||
endif;
|
||||
enddo;
|
||||
|
||||
Dis_Diagnosis_field.Control_Mandatory := false;
|
||||
|
||||
else
|
||||
DischargeDiagnosisHIOnFile_Out := " ";
|
||||
|
||||
If orderrole = true and orgunit not in ("Emergency Department","Infusion Center")
|
||||
then
|
||||
Dis_Diagnosis_field.Control_Mandatory := true;
|
||||
else
|
||||
Dis_Diagnosis_field.Control_Mandatory := false;
|
||||
endif;
|
||||
|
||||
endif; // exists DischargeDiagnosisHIOnFile
|
||||
|
||||
Dis_Current_Diagnosis_field.Value := DischargeDiagnosisHIOnFile_Out ;
|
||||
|
||||
endif; // orderrole = true
|
||||
|
||||
|
||||
|
||||
|
||||
// FIELD CHANGE
|
||||
|
||||
|
||||
|
||||
If CallingEvent = "FieldChange"
|
||||
|
||||
then
|
||||
|
||||
|
||||
// Called from this field on the Change (in house) form
|
||||
|
||||
If callingField = "NUR_ADTObsvStatusCBx"
|
||||
|
||||
then
|
||||
|
||||
If Obs_field.value = true
|
||||
|
||||
then
|
||||
SSop_field.control_read_only := True;
|
||||
Inp_field.control_read_only := True;
|
||||
Surgery_field.control_read_only := True;
|
||||
Denied_field.control_read_only := True;
|
||||
|
||||
else
|
||||
SSop_field.control_read_only := False;
|
||||
Inp_field.control_read_only := False;
|
||||
Surgery_field.control_read_only := False;
|
||||
Denied_field.control_read_only := False;
|
||||
requesteddate.value:= " ";
|
||||
requestedtime.value.reqtimevalue:= " ";
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
// Called from one of these fields on the Discharge - Observation form
|
||||
|
||||
ElseIf (callingField = "NUR_CB Now") // Now is selected
|
||||
|
||||
then
|
||||
|
||||
If (Dis_Time_Now_field.value = true)
|
||||
|
||||
then // NOW is True
|
||||
|
||||
Dis_Time_Today_field.value:= false;
|
||||
Dis_Time_Tomorrow_field.value:= false;
|
||||
requesteddate.value:= currdate;
|
||||
requestedtime.value.reqtimevalue:= currtime;
|
||||
|
||||
else // NOW is False
|
||||
|
||||
requesteddate.value := " ";
|
||||
requestedtime.value.ReqTimeCode := " ";
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
ElseIf (callingField = "NUR_CB Testing" or callingField = "NUR_CB AM" or
|
||||
callingField = "NUR_CB PM" or callingField = "NUR_CB Today" or
|
||||
callingField = "NUR_CB Tomorrow") // Pending Results or AM or PM or Today or Tomorrow is selected
|
||||
|
||||
then
|
||||
|
||||
If (Dis_Time_Testing_field.value = true or Dis_Time_AM_field.value = true or Dis_Time_PM_field.value = true or
|
||||
Dis_Time_Today_field.value = true or Dis_Time_Tomorrow_field.value = true)
|
||||
|
||||
then // Any are True
|
||||
|
||||
requesteddate.Control_Mandatory:= false;
|
||||
requestedtime.Control_Mandatory:= false;
|
||||
|
||||
|
||||
else // All are False
|
||||
|
||||
requesteddate.Control_Mandatory:= true;
|
||||
requestedtime.Control_Mandatory:= true;
|
||||
endif;
|
||||
|
||||
|
||||
ElseIf (CallingField = "CPOE_ADM Dx Override")
|
||||
|
||||
then
|
||||
|
||||
HardCodedProblem:= last of (field_list where field_list.DataItemName = "HI List 1");
|
||||
ProblemListADM := last of (field_list where field_list.DataItemName = "Obj_Plus_Problem List Builder ADM");
|
||||
Override := last of (field_list where field_list.DataItemName = "CPOE_ADM Dx Override");
|
||||
|
||||
If Override.Value = true
|
||||
then
|
||||
|
||||
HardCodedProblem.Value := "";
|
||||
HardCodedProblem.Control_Mandatory:= false;
|
||||
ProblemListADM.Control_Mandatory := true;
|
||||
endif;
|
||||
|
||||
endif;
|
||||
|
||||
|
||||
If callingField = "NUR_CB Tomorrow"
|
||||
then
|
||||
If Dis_Time_Tomorrow_field.value = true
|
||||
then
|
||||
Dis_Time_Now_field.value:= false;
|
||||
Dis_Time_Today_field.value:= false;
|
||||
requesteddate.value:= Now + 1 day;
|
||||
else
|
||||
requesteddate.value:= " ";
|
||||
endif;
|
||||
endif;
|
||||
|
||||
|
||||
If callingField = "NUR_CB Today"
|
||||
then
|
||||
If Dis_Time_Today_field.value = true
|
||||
then
|
||||
Dis_Time_Now_field.value:= false;
|
||||
Dis_Time_Tomorrow_field.value:= false;
|
||||
requesteddate.value:= Now;
|
||||
else
|
||||
requesteddate.value:= " ";
|
||||
endif;
|
||||
endif;
|
||||
|
||||
|
||||
If callingField = "NUR_CB AM"
|
||||
then
|
||||
If Dis_Time_AM_field.value = true
|
||||
then
|
||||
Dis_Time_PM_field.value:= false;
|
||||
endif;
|
||||
endif;
|
||||
|
||||
|
||||
|
||||
If callingField = "NUR_CB PM"
|
||||
then
|
||||
If Dis_Time_PM_field.value = true
|
||||
then
|
||||
Dis_Time_AM_field.value:= false;
|
||||
endif;
|
||||
endif;
|
||||
|
||||
|
||||
If callingField = "Obj_Plus_Problem List Builder DISC"
|
||||
then
|
||||
|
||||
If Dis_Diagnosis_field.value matches pattern "%...%"
|
||||
or
|
||||
Dis_Diagnosis_field.Value is null
|
||||
then
|
||||
|
||||
xxx:= "xxx";
|
||||
else
|
||||
|
||||
dlg_result := call {{{SINGLE-QUOTE}}}MessageBox{{{SINGLE-QUOTE}}}.Show with
|
||||
"\n\nType-in{{{SINGLE-QUOTE}}}s are not permitted. Click the search button (on the right) to enter the Health Issue " ||
|
||||
"\n\n\n","Type-in Information Not Permitted", "OK" as {{{SINGLE-QUOTE}}}MessageBoxButtons{{{SINGLE-QUOTE}}},"Error" as {{{SINGLE-QUOTE}}}MessageBoxIcon{{{SINGLE-QUOTE}}};
|
||||
|
||||
Dis_Diagnosis_field.Value := " ";
|
||||
|
||||
endif;
|
||||
|
||||
endif;
|
||||
|
||||
endif; // Calling Event Field Change
|
||||
|
||||
|
||||
;;
|
||||
evoke: // No evoke statement
|
||||
;;
|
||||
logic:
|
||||
|
||||
conclude true;
|
||||
;;
|
||||
action:
|
||||
|
||||
// This MLM returns two parameters, of types communication_type and form_type respectively.
|
||||
return this_communication, this_form;
|
||||
|
||||
|
||||
|
||||
;;
|
||||
end:
|
||||
Reference in New Issue
Block a user