專利名稱:應(yīng)用程序中的自動行為執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)系統(tǒng),尤其涉及用于應(yīng)用處理系統(tǒng)處理動作的自動適應(yīng)和增強(qiáng)的信息工程技術(shù)。
背景技術(shù):
信息系統(tǒng)開發(fā)者正面臨比以往任何時候都要困難得多的挑戰(zhàn)。在過去的幾年中,側(cè)重點已經(jīng)從數(shù)據(jù)處理轉(zhuǎn)到信息系統(tǒng)管理,轉(zhuǎn)到判定支持系統(tǒng),繼而又轉(zhuǎn)變到戰(zhàn)略信息(strategic information)系統(tǒng)。為了跟上業(yè)務(wù)的變化,信息開發(fā)者必須建立足夠靈活的系統(tǒng)以適應(yīng)業(yè)務(wù)功能變化而同時不會引起過度維護(hù)和相應(yīng)的費用。
在過去的約二十年中,軟件開發(fā)自動化已經(jīng)沿三條不同的獨立途徑而進(jìn)步。一條途徑是通過自動化編程來提高編程的效率。結(jié)果是產(chǎn)生了非過程的解釋語言,如第四代語言(4GL)的程序發(fā)生器。第二條途徑是在分析和設(shè)計中引入結(jié)構(gòu)和精確性來尋求實現(xiàn)設(shè)計效率。第二條途徑導(dǎo)致了將程序流程化或者將程序劃分成功能塊的結(jié)構(gòu)化方法的發(fā)展。近來,這種結(jié)構(gòu)方法的自動化已經(jīng)通過計算機(jī)輔助軟件工程(CASE)圖示工具而實現(xiàn)。第三條途徑著眼于可重復(fù)使用性,即借助于將目標(biāo)和數(shù)據(jù)抽象化的開發(fā)的數(shù)據(jù)庫方法。這種方法一開始采用諸如數(shù)據(jù)字典的結(jié)構(gòu),存取數(shù)據(jù)和數(shù)據(jù)單元之間的關(guān)系的信息。近來,這樣的系統(tǒng)已經(jīng)包含面向目標(biāo)系統(tǒng),并且已經(jīng)包括了用來存儲和存取目標(biāo)、程序和數(shù)據(jù)的所謂信息源字典。
因為上述每一種方法和途徑都具有其優(yōu)點,所以人們試圖將三種不同途徑的不同工具在信息工程中組合起來。例如,有一種用于存儲技術(shù)的衍生ANSI標(biāo)準(zhǔn)(evolving ANSI standard),并且IBM已經(jīng)推出了一種“AD/循環(huán)”,它定義了一種管理所有信息資源的方法,包括應(yīng)用說明(application specification)、編程工具、軟件程序、軟件程序碼和數(shù)據(jù)。
然而,這些方法并沒有解決應(yīng)用程序維護(hù)的問題。計算機(jī)軟件應(yīng)用的維護(hù)和其他的相關(guān)支持通常是費錢、費時并且是不可靠的。若要削除維護(hù)費用,本質(zhì)上講人們通常需要削掉應(yīng)用程序本身。這附帶的好處是削減了技術(shù)說明、設(shè)計、結(jié)構(gòu)和執(zhí)行的信息工程應(yīng)用開發(fā)周期。但上述三種應(yīng)用開發(fā)途徑中的任何一種方法或綜合方法都沒有恰當(dāng)?shù)亟鉀Q維護(hù)問題,或者沒有指出如何解決這一問題。
現(xiàn)有技術(shù)的信息處理系統(tǒng)的另一個問題涉及到借助于應(yīng)用處理系統(tǒng)來檢測運行的應(yīng)用程序引起的錯誤。現(xiàn)有技術(shù)側(cè)重于進(jìn)行數(shù)據(jù)處理運行的動作所引起的故障和排除故障或不管故障如何使系統(tǒng)運行繼續(xù)進(jìn)行的方法。然而,在許多的應(yīng)用處理系統(tǒng)中,并不是應(yīng)用程序一定會有應(yīng)用程序故障的。執(zhí)行這些動作的應(yīng)用程序是經(jīng)過很好測試和實現(xiàn)。問題在于應(yīng)用程序是沒有產(chǎn)生所期待的行為,這是因為假設(shè)要發(fā)生的動作沒有發(fā)生,而假設(shè)不會發(fā)生的某些動作卻發(fā)生了的緣故。
這些類型的問題通常保持未被檢測的狀態(tài),直到應(yīng)用程序崩潰或直到由于對動作進(jìn)行了不必要的處理而暴露了較差的性能為止。在傳統(tǒng)的系統(tǒng)中,用戶必須跟蹤處理流程并觀察處理流程中的每一個動作,以分析系統(tǒng)的性能或識別錯誤。所以,具有一個與所期待的行為所一致或增強(qiáng)應(yīng)用處理系統(tǒng)的每一個動作的特定行為并消除不正確或不必要的處理而使系統(tǒng)性能最佳的系統(tǒng)是有利且有用的。
發(fā)明概述本發(fā)明采用在應(yīng)用處理系統(tǒng)中使所期待的行為自動一致和增強(qiáng)的方法和裝置解決了上述問題和其他一些問題。一個期待行為控制系統(tǒng)(EBCS)與包括至少一個其中定義動作的應(yīng)用程序的應(yīng)用處理系統(tǒng)組合在一起。對于EBCS來說,除非特別指明,術(shù)語“動作”、“規(guī)則”、“表達(dá)式”和“功能”意義相同。EBCS包括檢測一由控制程序執(zhí)行的動作是否產(chǎn)生一預(yù)期行為的預(yù)期行為功能。另外,EBCS可以協(xié)調(diào)或增強(qiáng)所選擇的行為,以修改應(yīng)用處理系統(tǒng)方法的處理流程,而不修改應(yīng)用程序。當(dāng)所期待的行為完成時,應(yīng)用處理系統(tǒng)執(zhí)行應(yīng)用程序所規(guī)定的下一個動作。如果檢測到一個所不期待的行為,校正動作功能執(zhí)行至少一個校正動作,以便協(xié)高或增強(qiáng)系統(tǒng)的行為,完成期待的行為。
下文中給出了本發(fā)明更貼切的方面。這些方面應(yīng)當(dāng)被看作是本發(fā)明某些更突出的特性和應(yīng)用的描述。通過以不同的方式應(yīng)用本發(fā)明或以將要描述的方法修改本發(fā)明可以得到許多其他的有益結(jié)果。因此,通過下文中對較佳實施例的詳細(xì)描述可以更完整地理解本發(fā)明和其他方面。
附圖簡述為了更完整地理解本發(fā)明及其優(yōu)點,下面結(jié)合附圖詳細(xì)描述本發(fā)明。其中,
圖1是模型信息控制系統(tǒng)的方框圖;圖2是圖1所示模型信息控制系統(tǒng)的控制系統(tǒng)機(jī)構(gòu)的詳細(xì)狀態(tài)圖;圖3是描述包括所期待的行為控制系統(tǒng)的應(yīng)用處理系統(tǒng)的圖。
詳細(xì)描述參照圖1,該圖示出的是本發(fā)明模型信息控制系統(tǒng)(MICS)10較佳實施例的方框圖。MICS 10包括至少一個信息模型12,它是用文本編輯器和運行MICS的目標(biāo)計算機(jī)系統(tǒng)定義的特定語義規(guī)則產(chǎn)生的。幾個信息模型詳述如下。目標(biāo)計算機(jī)系統(tǒng)典型的是運行UNIX、DOS或OS/2等操作系統(tǒng)的486計算機(jī),當(dāng)然其他的目標(biāo)系統(tǒng)也是有用的。MICS還包括控制系統(tǒng)機(jī)構(gòu)(CSE)14,它最好是一種通過下文中將要詳述的操作狀態(tài)循環(huán)的有限狀態(tài)控制動作機(jī)器??刂葡到y(tǒng)機(jī)構(gòu)14執(zhí)行幾個動作。它從信息模型12中定義的一組目標(biāo)中激活一個目標(biāo)??刂葡到y(tǒng)機(jī)構(gòu)14還從與該目標(biāo)相關(guān)的一組動作16中的激活一個動作。這是用將在下文中描述的相關(guān)動作標(biāo)志完成的。
控制系統(tǒng)機(jī)構(gòu)14還根據(jù)目標(biāo)屬性的激活限制來激活目標(biāo)的“瞬間(instants)”,并且CSE通過與動作相關(guān)的功能來處理每一瞬間。一個目標(biāo)的“瞬間”指的是目標(biāo)屬性的值的一個給定條件或狀態(tài)。如果目標(biāo)的屬性賦予的值或具有從數(shù)據(jù)庫檢索的值而預(yù)先賦給的值,那么就存在目標(biāo)的“活動(active)”瞬間。一“空(empty)”瞬間是目標(biāo)屬性的值還必須賦給或說明的情況??刂葡到y(tǒng)機(jī)構(gòu)所使用的數(shù)據(jù)存儲在數(shù)據(jù)庫(DB)20中,并且該機(jī)構(gòu)通過數(shù)據(jù)庫接口22與DB 20相互作用。MICS的用戶24通過表述接口26與系統(tǒng)的其余部分連接。盡管圖中未詳細(xì)示出,但應(yīng)當(dāng)理解,一個或更多個功能和/或數(shù)據(jù)庫可以在本地或遠(yuǎn)端訪問。
信息模型由至少一個屬性和至少一個控制標(biāo)志或至少一個目標(biāo)和屬性字典組成。目標(biāo)通常包括一組屬性,這組屬性構(gòu)成字典中的屬性“分組”、幾個控制標(biāo)志以及一個或多個規(guī)則或表達(dá)式。與表達(dá)式相關(guān)的控制標(biāo)志方便了目標(biāo)的CSE使用??刂茦?biāo)志最好分成四種不同的類型,即(1)屬性類型標(biāo)志,(2)控制目標(biāo)瞬間的存儲和檢索的目標(biāo)類型標(biāo)志,(3)通過一個或更多個功能方便瞬間的激活和處理的動作類型標(biāo)志,以及(4)與屬性一起使用以提供對功能指定的屬性控制的功能控制標(biāo)志,例如可以被傳送到用戶接口功能的表述功能控制標(biāo)志以控制表述以及用戶接口功能和各種系統(tǒng)I/O裝置(例如表示顯示器和報告打印機(jī))之間的相互作用。
屬性類型控制標(biāo)志規(guī)定如何控制屬性的行為,如“存儲”級別和“存在”級別?!按鎯Α奔墑e標(biāo)志識別存儲值,如“圖象”、“視頻”、“話音”、“實數(shù)”、“整數(shù)”、“科學(xué)”、“布爾”、“ASCII”、“數(shù)據(jù)”、“時間”等。例如,屬性“PATIENT NAME(病人姓名)”具有兩個屬性控制標(biāo)志“TYPE(類型)=C,LEN(長度)=30”。第一標(biāo)志表示數(shù)據(jù)是ASCII字符格式的。LEN=30表示ASCII數(shù)據(jù)存儲級別的長度。
標(biāo)志的屬性“存在”級別控制用于產(chǎn)生屬性的規(guī)則。例如,ATYPE和“選擇”屬性限定表達(dá)式指明如何產(chǎn)生一個或多個屬性的條件。例如,“預(yù)約日歷信息模型(Appointment Calendar Information Model)”中的屬性“0900 A.M.”具有控制標(biāo)志“ATYPE=T”,它指明屬性名稱是時間類型的,而屬性“選擇”限制規(guī)定的是如何產(chǎn)生在后文中詳述的另一個屬性。
目標(biāo)型控制標(biāo)志包括“基元(primitive)”、“瞬間(transient)”、“原子的(atomic)”、“觀察(view)”、“同義詞(synonym)”、“聯(lián)結(jié)(link)”、“表格”和“分組”。該列舉是示例性的,其他的目標(biāo)類型標(biāo)志也可以定義和用來對目標(biāo)分類,并使一個與一個或多個其他目標(biāo)相關(guān)。基元目標(biāo)類型標(biāo)志表示目標(biāo)瞬間(instants)保留在系統(tǒng)中的MICS內(nèi)持續(xù)一定的時間。瞬間目標(biāo)類型標(biāo)志指的是目標(biāo)瞬間僅在特定動作處理期間需要保留在系統(tǒng)中。原子目標(biāo)類型標(biāo)志指的是目標(biāo)瞬間是通過從目標(biāo)的某些其他(源)瞬間抽象得到的。由瞬態(tài)目標(biāo)類型識別的瞬間也保留在系統(tǒng)中,一觀察目標(biāo)類型標(biāo)志表示主目標(biāo)是某些其他目標(biāo)的觀察?!巴x詞”目標(biāo)類型標(biāo)志跟隨主目標(biāo)的識別之后,并指示主目標(biāo)的屬性應(yīng)當(dāng)用“使用”標(biāo)志中識別的目標(biāo)的屬性來替代。所以,如果目標(biāo)A后面跟隨的是標(biāo)志“X的使用”,則目標(biāo)X的屬性由目標(biāo)A使用。
“分組”目標(biāo)類型控制標(biāo)志表示一組瞬間必須在選擇的動作組中處理。每一目標(biāo)也可以具有一相關(guān)的聯(lián)系目標(biāo)。例如,如果目標(biāo)A是基元目標(biāo)B的原子觀察,則目標(biāo)B被說成是目標(biāo)A的相關(guān)聯(lián)系目標(biāo)?;蛘?,如果目標(biāo)C的瞬間存在于并且僅存在于有另一個目標(biāo)D的相應(yīng)瞬間,則目標(biāo)D被說成是目標(biāo)C的相關(guān)聯(lián)系目標(biāo)。
如上所述,目標(biāo)中的動作類型標(biāo)志識別便于CSE進(jìn)行的瞬間的激活和處理的動作。一動作由四種控制標(biāo)志組成,即,“動作標(biāo)識符(identifier)”、“瞬間類型”、“動作級別”、“瞬間傳輸類型”以及可有可無的一個或更多個“功能”。動作標(biāo)識符標(biāo)志是這樣的標(biāo)志,借此可知道特定動作在系統(tǒng)的外部。瞬間類型標(biāo)志表示瞬間的類型(活動或空)。動作級別標(biāo)志表示該特定動作屬于哪一個級別的動作。瞬間傳輸類型標(biāo)志表示對于該瞬間的基元目標(biāo)或原子目標(biāo)如何傳輸瞬間的變化。功能(如果定義的話)可以要求被執(zhí)行以處理該瞬間。
用編譯程序器和鏈結(jié)/編輯器或其他的傳統(tǒng)裝置將這些功能包括在MICS系統(tǒng)中。這些功能可以是“現(xiàn)有的”模塊,或者根據(jù)需要實際寫入到MICS內(nèi)。然而,一旦定義了功能組,就不必要在任何傳統(tǒng)的意義上保留功能設(shè)置編碼。
如上所述,當(dāng)目標(biāo)是在信息模型中定義的時候,它通常將包括由外部接口控制目標(biāo)屬性表達(dá)式的表達(dá)式控制功能標(biāo)志。特別是,其中的每一屬性包括一個或多個表達(dá)式控制標(biāo)志,該表達(dá)式控制標(biāo)志可以被傳送到用戶接口功能,以控制表達(dá)式以及用戶接口功能和系統(tǒng)的各種I/O裝置(例如表達(dá)式顯示和報告打印機(jī))之間的互相作用。表達(dá)式控制標(biāo)志的代表的實例是FPROT、MFILL、RJUST、FHIDE、DPROT、RSKIP、CENTER、GROUP、COMMON、UNIQUE、WSKIP和PHIDE。FPROT表達(dá)式控制標(biāo)志提供字段保護(hù)動作,防止用戶示例目標(biāo)的特定屬性。MFILL標(biāo)志表示該屬性是使用者必須示例的屬性。RJUST、LJUST或CENTER標(biāo)志通知表述接口右邊對齊、左邊對齊或?qū)傩缘闹醒胫蹈嬖V表述顯示器。FHIDE標(biāo)志防止該值被顯示出來。DPROT標(biāo)志保護(hù)覆蓋DPROT的屬性值免被擦去。COMMON標(biāo)志表示該屬性由多個使用者共享,并且在任何傳輸表達(dá)式的執(zhí)行之前可以需要活動瞬間的特定動作。UNIQUE標(biāo)志表示目標(biāo)的實例由該屬性的值組織,并指示建立目標(biāo)的索引屬性。這在以后的“預(yù)約日歷信息模型”例子中說明。當(dāng)報告被打印出來時,RSKIP標(biāo)志告訴表達(dá)式接口跳過該屬性,而當(dāng)在顯示屏上產(chǎn)生一窗口時,WSKIP標(biāo)志告訴該接口跳過該屬性。PHIDE標(biāo)志把屬性的名稱隱藏起來。GROUP標(biāo)志表示該接口應(yīng)當(dāng)將用于顯示的屬性值組織起來,以便易于閱讀。例如,一病人名單可以按城市、省份和郵政編碼來編組,而財務(wù)報告可以按照天、星期和月來編組。目標(biāo)可以包括用于類似控制目的的其他表達(dá)式控制標(biāo)志。
按照本發(fā)明的屬性,信息模型中的屬性和目標(biāo)使用一致的規(guī)則或“表達(dá)式”,它們與各種控制標(biāo)志一起,便于應(yīng)用處理流程執(zhí)行信息模型。一目標(biāo)屬性含有(i)如何對這些屬性賦值的信息,(ii)限制可以賦給這些屬性的值的種類的值約束,(iii)表明對一個屬性賦給特定值是任何影響另一屬性的值的相關(guān)信息,以及(iv)選擇產(chǎn)生具有特定限制的一個或多個屬性的約束。更具體地說,在該屬性級,這些規(guī)則包括(i)對這些屬性進(jìn)行賦值的“初始值”或“缺省值”表達(dá)式,(ii)限制可以賦給這些屬性的值的種類的“值”、“條件”或“賦值”表達(dá)式,以及(iii)當(dāng)激活這些瞬間時,表明如何改變這些屬性值的“激活”表達(dá)式,(iv)表明對一個屬性賦予特定值是如何影響另一屬性值的“傳輸”表達(dá)式,(v)“選擇”表達(dá)式,規(guī)定限制可以被激活的瞬間的種類的約束條件。類似的規(guī)則或表達(dá)式是在目標(biāo)級別處應(yīng)用。當(dāng)用在目標(biāo)中時,這些表達(dá)式修改了瞬間的行為,影響到信息的激活、示例和處理。例如,目標(biāo)級別處的約束表達(dá)式規(guī)定了啟動約束,限制可以激活的目標(biāo)瞬間的種類。最后,該目標(biāo)還包括索引屬性,采用這些索引屬性,可以用一個或多個目標(biāo)屬性的值通過數(shù)據(jù)庫存儲和檢索一個目標(biāo)的實例。
因此,按照本發(fā)明,一個目標(biāo)通常包括便于CSE的目標(biāo)使用的一個或多個控制標(biāo)志、從屬性字典中選出的屬性子集、以及可以修改目標(biāo)的瞬間的行為以影響信息的激活、示例和處理的一個或多個規(guī)則或表達(dá)式。目標(biāo)屬性還可以包括表達(dá)式,它們控制如何對這些屬性進(jìn)行賦值、限制可以賦給這些屬性的值的種類、規(guī)定當(dāng)激活這些實例時如何改變屬性值、表明對一個屬性賦予特定值是如何影響另一屬性值以及規(guī)定限制可以激活的瞬間的種類的約束。
本發(fā)明的優(yōu)點是采用模型中定義的控制標(biāo)志,通過將一個或多個信息模型直接轉(zhuǎn)換成一組獨立的功能的激活、示例和處理,MICS模擬具有自發(fā)控制的應(yīng)用處理,從而使應(yīng)用程序的應(yīng)用處理流程自動化。在現(xiàn)有技術(shù)中,至今仍然必須產(chǎn)生這種處理流程的詳細(xì)設(shè)計(以及自動或手動地產(chǎn)生源碼來實施該處理流程)。本發(fā)明從整體上避免了這種詳細(xì)設(shè)計和碼的產(chǎn)生。
按照本發(fā)明的較佳實施例,MICS包括一個或多個信息模型和控制系統(tǒng)機(jī)構(gòu)(CSE)??刂葡到y(tǒng)機(jī)構(gòu)直接讀取信息模型,并對此作出響應(yīng),(i)激活信息模型中定義的目標(biāo)組的目標(biāo),(ii)激活與一目標(biāo)的動作控制標(biāo)志相關(guān)的動作組得到的動作,(iii)激活一個目標(biāo)的一個或多個“瞬間”,以及(iv)通過與目標(biāo)和/或其屬性相關(guān)的任何一個表達(dá)式一起的與動作相關(guān)的一個或多個接口或功能處理一個或多個目標(biāo)瞬間。以這種方式,MICS激活和處理對信息模型的獨立的激活、示例和服務(wù)動作組。
下面可以描述具有本發(fā)明的屬性的MICS的特定實現(xiàn)。通過附加背景,定義一“動作”的概念是有益的,該概念指的是用一個或多個功能,用控制標(biāo)志來控制信息的激活、示例和處理的功能的自動分類和相關(guān)。這避免了對每一應(yīng)用專門產(chǎn)生處理流程指令。因此這些應(yīng)用可以被說成是與處理流程指定的過程分開,因為信息模型只需指明一個動作,而無需指明該動作是如何實施的。一個“動作”最好由服務(wù)的級別或它所使用的功能的類型來分類。為了方便起見,動作級別按如下方式劃分1)“分析”類型(通過分析信息的一個或多個功能處理一活動瞬間的動作);2)“數(shù)據(jù)庫”類型(通過一個或多個訪問和處理信息的功能處理一活動瞬間的動作);3)“報告”類型(通過一個或多個從信息中產(chǎn)生報告的功能處理活動瞬間的動作);4)“加”類型(通過一個或多個產(chǎn)生活動瞬間的功能處理一空瞬間的動作);5)“更新”類型(通過一個或多個訪問、處理和和將一活動瞬間返回到數(shù)據(jù)庫的功能處理一活動瞬間的動作);6)“刪除”類型(通過一個或多個從數(shù)據(jù)庫中去除一瞬間的痕跡的功能來處理一活動瞬間的動作);以及7)“建立”類型(通過一個或多個從基元信息中建立原子信息的功能來處理一活動瞬間的動作)。
上述動作類型表僅為舉例,而MICS可以包括其他的動作類型或上述各種類型的變異。每一動作與先前討論的動作控制標(biāo)志組相關(guān)。應(yīng)當(dāng)注意,不同的動作控制標(biāo)志組可以用來取代上述標(biāo)志。
例如在本發(fā)明的典型實施例中,假設(shè)動作類型是“更新”。于是相關(guān)的動作控制標(biāo)志是“UPDATE、ACTIVE INSTANT、DATABASE、UPDATEINSTANT、USR_INSTANTIATION”。第一個標(biāo)志UPDATE是識別動作UPDATE的標(biāo)識符標(biāo)志。第二個標(biāo)志ACTIVE INSTANT表示該動作需要一活動瞬間。第三個標(biāo)志DATABASE表示UPDATE動作屬于DATABASE動作級別類型。第四個標(biāo)志是引起CSE用數(shù)據(jù)庫接口來更新活動瞬間的最終狀態(tài)的瞬間傳輸類型。最后,功能USR_INSTANTIATION表示CSE將要求用戶示例功能的執(zhí)行。用戶示例功能通過用戶接口示例一瞬間。
在另一例中,假設(shè)動作是ADD。該ADD動作具有動作控制標(biāo)志“ADD、EMPTY INSTANT、DATABASE、UPDATE INSTANT、USR_INSTANTIATION”。第一個標(biāo)志識別動作ADD。第二個標(biāo)志表示對一空瞬間進(jìn)行操作的動作。第三個標(biāo)志識別該ADD動作屬于DATABASE動作級別類型。第四個標(biāo)志UPDATE INSTANT是瞬間傳輸類型的,并引起CSE用該數(shù)據(jù)庫接口將新產(chǎn)生的瞬間加到該數(shù)據(jù)庫。最后,功能USR_INSTANTIATION表示CSE將需要用戶示例功能的執(zhí)行。
根據(jù)上述背景,下面是從用于醫(yī)學(xué)記帳、計費和病人管理系統(tǒng)的信息模型(如下所示)得到的代表的目標(biāo)的一部分模型醫(yī)學(xué)#OBJECT PATIENT CHART,PRIMITIVE,DATABASEACNT NO,TYPE=1,LEN=8,GROUP=100,F(xiàn)PROTDEFAULT VALUE[ACNT NO]=SEQNUMBER.
VISIT FIRST,TYPE=d,GBOUP=100,F(xiàn)PROT,SETDATELAST,TYPE=D,GROUP=100,F(xiàn)PROT,SETDATEPATIENT NAME,TYPE=A,LEN=30,GROUP=102,MFILLADDRESS,TYPE=A,LEN=30,GROUP=103,MFILLCITY,TYPE=A,LEN=15,GROUP=104,MFILLSTATE,TYPE=A,LEN=2,GROUP=104,MFILLZIP CODE,TYPE=L,PTYPE=Z,LEN=5,GROUP=104,MFILL
BIRTHDATE,TYPE=D,GROUP=105,MFILLSEX,TYPE=A,LEN=1,GROUP=105,MFILL限制,值M-MALE,F(xiàn)-FEMALE.
MARITAL STATUS,TYPE=A,LEN=1,GROUP=105,MFILL限制,值S-SINGLE,M-MARRIED,W-WIDOWED,D-DIVORCEDPHONENO(HOME),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUST(OFFICE),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUSTSOCIAL SEC.#,TYPE=L,PTYPE=S,LEN=9,GROUP=107DRIVER LIC.#,TYPE=C,LEN=15,GROUP=107…第一行中的第一字段包括目標(biāo)的名稱(本例中PATIENT CHART)。該行中的第二個字段包括識別目標(biāo)的類型的目標(biāo)類型標(biāo)志(本例中PRIMITIVE)。目標(biāo)類型標(biāo)志后面的下一個字段識別動作類型標(biāo)志,這些標(biāo)志識別CSE可以為瞬間的激活、示例和處理選擇一個目標(biāo)的一個或多個動作。本例中,具有DATABASE動作級別標(biāo)志的目標(biāo)只向CSE表示替換與DATABASE動作相關(guān)的所有動作成為可用的動作(因此使得不必一個個列舉組中的每一個動作)。
目標(biāo)第一行上目標(biāo)類型和動作類型控制類型的后面,目標(biāo)包括一組屬性。正如可以看到的那樣,病人圖目標(biāo)用作記帳和信息的目的,因此包括如姓名、地址、最近一次看病的日期和帳號及其他。目標(biāo)還包括與特定的屬性相關(guān)的幾個表達(dá)式控制標(biāo)志。如上所述,屬性中的GROUP標(biāo)志用來將接口顯示的相同行上的目標(biāo)的不同屬性進(jìn)行編組。所以,ACNT NO、VISIT FIRST和LAST屬性將出現(xiàn)在在同一行上。如果相同的屬性在目標(biāo)中使用了一次以上,則該屬性還包括一DATA語句。
參照圖2,圖中示出了MICS的控制系統(tǒng)機(jī)構(gòu)(CSE)的較佳操作的詳細(xì)狀態(tài)圖。CSE的各種狀態(tài)和相關(guān)的控制動作分別如下(1)使MICS初始化
(2)選擇模型(3)選擇目標(biāo)(4)選擇動作(5)激活瞬間(6)處理瞬間(7)終止模型(8)終止CSE在CSE執(zhí)行之前,利用針對目標(biāo)系統(tǒng)的語義規(guī)則由開發(fā)者建立一個或多個信息模型。每一信息模型具有三個狀態(tài)中的一個狀態(tài)空閑、活動和掛起。當(dāng)一信息模型處于其空閑狀態(tài)時,其“下一個狀態(tài)”是活動。活動狀態(tài)中的信息模型可以在信息模型的處理期間的任何時刻掛起。一旦掛起,信息模型可以回到其活動狀態(tài)(與在掛起同一點上),或者掛起的信息模型可以回到其空閑狀態(tài)。每一信息模型與識別其狀態(tài)和其下一個狀態(tài)的屬性相關(guān)。控制系統(tǒng)機(jī)構(gòu)的執(zhí)行從狀態(tài)1開始。在狀態(tài)1,CSE被初始化。這一步驟從操作系統(tǒng)獲得了必要的資源(例如,存儲區(qū)、緩沖區(qū)、進(jìn)程間通信環(huán)境、I/O接口環(huán)境),并接著讀取動作表定義和功能表定義,并將它們裝入存儲器。CSE還在存儲器中建立結(jié)構(gòu),以保存信息模型,并將信息模型存入存儲器。狀態(tài)1還建立激活戶環(huán)境的表達(dá)式接口26。
在狀態(tài)1,所有信息模型被設(shè)置成空閑,而信息模型屬性被設(shè)置成“3”(這是空閑模型的選擇以后的下一個狀態(tài))。CSE接著移動到狀態(tài)2。如果在狀態(tài)1期間存在故障,則CSE進(jìn)入狀態(tài)8并且終止,提供一錯誤消息或類似的消息。
在狀態(tài)2,提示用戶進(jìn)行信息模型的選擇。盡管表述接口并不意味選擇有限制,但表達(dá)式接口最好是基于窗口的圖形用戶接口(GUI)并采用傳統(tǒng)的指向擊鍵裝置(如鼠標(biāo))來進(jìn)行恰當(dāng)?shù)倪x擇。如果用戶選擇一模型,則CSE激活選擇的模型,并將選擇的模型設(shè)置成“活動模型”。模型的激活意味著分配必要的存儲區(qū)、使數(shù)據(jù)庫初始化、從所有的目標(biāo)根據(jù)屬性組建立一字典,并建立與屬性限制表達(dá)式相關(guān)的屬性組或僅建立具有相關(guān)屬性約束表達(dá)式的屬性組。這將在關(guān)于日歷例子的描述中作更全面的描述。如果用戶決定取消這一部分,則CSE激活最近掛起的模型成“活動模型”。CSE接著進(jìn)入活動模型的下一個狀態(tài)。如果用戶決定退出,則CSE進(jìn)入狀態(tài)8,并且CSE終止。
在狀態(tài)3,CSE首先確定是否存在為活動模型而定義的一個或多個目標(biāo)。如果不存在目標(biāo),則將目標(biāo)設(shè)置成模型名稱,并將所有在模型處定義的控制標(biāo)志和控制表達(dá)式復(fù)制成目標(biāo)的。并將所有模型的屬性設(shè)置成目標(biāo)的屬性。如果為活動模型定義的只有一個目標(biāo),則CSE將“活動目標(biāo)”的屬性設(shè)置成該目標(biāo)的并進(jìn)入狀態(tài)4。根據(jù)該活動模型,CSE控制表達(dá)式接口,以顯示現(xiàn)有目標(biāo)表(這是在信息模型中定義的),并指示用戶選擇一個。如果用戶選擇一個目標(biāo),則CSE將“活動目標(biāo)”屬性設(shè)置給所選擇的目標(biāo),并進(jìn)入狀態(tài)4。如果用戶決定取消,則CSE回到狀態(tài)2,于是,CSE從該狀態(tài)進(jìn)入狀態(tài)7,在該狀態(tài)7,活動模型終止。
在狀態(tài)4,CSE首先確定是否存在與活動目標(biāo)相關(guān)的動作級別標(biāo)志。如果有一個,則CSE替換與該動作的級別相關(guān)的所有動作標(biāo)志,作為有效動作標(biāo)志。如果只有一個動作標(biāo)志,則CSE將與該動作標(biāo)志相關(guān)的的動作設(shè)置成“活動動作”并進(jìn)入狀態(tài)5。另一方面,如果有一個以上的動作標(biāo)志,則CSE控制表達(dá)式接口,以顯示與活動目標(biāo)的動作標(biāo)志相關(guān)的動作名稱表,并提示用戶選擇一個。如果用戶選擇一個動作,則CSE將“活動動作”屬性設(shè)置成與活動目標(biāo)的選擇動作的動作名稱相關(guān)的動作,并進(jìn)入狀態(tài)5。如果用戶決定取消,則CSE返回到狀態(tài)3。如果用戶決定退出,CSE進(jìn)入狀態(tài)7。然而如果用戶在狀態(tài)4期間決定訪問另一個信息模型,那么CSE就將活動模型的下一個狀態(tài)設(shè)置成等于4,掛起活動模型并返回狀態(tài)2。
在狀態(tài)5,除了具有DPROT標(biāo)志的那些屬性以外,通過首先將活動目標(biāo)的屬性的所有值設(shè)置為零開始處理過程。接著完成一測試,以確定該活動目標(biāo)是否具有相關(guān)的鏈接(link)目標(biāo)。如果激活鏈接目標(biāo)失敗,則CSE回到狀態(tài)4。如果鏈接目標(biāo)激活成功,或者該活動目標(biāo)不具有相關(guān)的鏈接目標(biāo),則程序繼續(xù)進(jìn)行確定活動目標(biāo)是否需要一活動瞬間。如果這樣,則CSE在活動目標(biāo)中存在選擇條件的情況下用該選擇條件激活該瞬間。(選擇目標(biāo)的激活約束直接映射到與數(shù)據(jù)庫20相關(guān)的選擇調(diào)用)。如果激活失敗,并且沒有學(xué)習(xí)標(biāo)志(learn flag),則CSE進(jìn)入狀態(tài)4。如果激活成功或者不需要激活,則CSE進(jìn)入狀態(tài)6。如果激活失敗,并且存在一學(xué)習(xí)標(biāo)志,則CSE也進(jìn)入狀態(tài)6,這是因為學(xué)習(xí)標(biāo)志指示CSE接受一空瞬間,既使也需要一活動瞬間也是如此。例如,在預(yù)約日歷信息模型中,數(shù)據(jù)庫將不必包含與所有的日歷日期對應(yīng)的實例。當(dāng)使用者請求觀看日歷特定頁上的數(shù)據(jù)而數(shù)據(jù)庫中沒有該頁的數(shù)據(jù)時,學(xué)習(xí)標(biāo)志允許CSE接受空頁作為沒有數(shù)據(jù)的活動頁,從而當(dāng)使用者輸入該頁上的數(shù)據(jù)時,它將進(jìn)入該數(shù)據(jù)庫。同時,如果對于該活動瞬間存在一個激活表達(dá)式,則CSE執(zhí)行該激活表達(dá)式。然而,如果使用者決定在狀態(tài)5期間訪問另一個信息模型,則CSE將活動模型的下一狀態(tài)設(shè)置為等于5、掛起活動模型并返回狀態(tài)2。對于上述每一個動作,如瞬間的激活、值的賦給和表達(dá)式的執(zhí)行,由“期待行為控制系統(tǒng)(EBCS,Expected BehaviorControl System)”執(zhí)行一檢查,以確定由該動作發(fā)出的處理動作是否提供了期待的行為。對于動作與特定行為的一致性,檢查僅在動作執(zhí)行以后執(zhí)行。為了加強(qiáng)特定的處理流行為,由EBCS進(jìn)行的檢查可以在動作的處理之前或之后進(jìn)行。EBCS將在以后作更全面的討論。
在狀態(tài)6,程序首先確定是否存在與活動動作相關(guān)的任何功能標(biāo)志。如果存在一個或一個以上的功能標(biāo)志,那么對于每一功能標(biāo)志,CSE執(zhí)行相關(guān)的功能和在滿足目標(biāo)中激活約束的所有瞬間上與活動目標(biāo)相關(guān)的處理傳輸表達(dá)式。功能可以是一個示例功能,例如與使用表達(dá)式接口和表達(dá)式控制標(biāo)志的用戶交互作用的用戶示例功能。CSE還將通過將屬性標(biāo)志映射成恰當(dāng)?shù)墓δ軄硖幚韺傩詷?biāo)志。例如,表述標(biāo)志用來建立窗口并控制窗口中與數(shù)據(jù)的交互作用。只有滿足屬性約束條件的數(shù)據(jù)被接受,并且一經(jīng)接受,CSE還執(zhí)行與任意屬性相關(guān)的傳輸表達(dá)式。然而如果用戶者決定在狀態(tài)6期間訪問另一個信息模型,則CSE將活動模型的下一個狀態(tài)設(shè)置為等于6、終止活動模型并返回到狀態(tài)2。
如果不存在與活動動作相關(guān)的功能,或者如果已經(jīng)成功執(zhí)行了與活動動作相關(guān)的功能,則CSE執(zhí)行與目標(biāo)相關(guān)的任何傳輸表達(dá)式,并且通過確定任一目標(biāo)類型標(biāo)志是基元還是原子的使程序繼續(xù)進(jìn)行。如果不是,則CSE進(jìn)入狀態(tài)4以選擇下一個動作。如果是,則CSE確定當(dāng)前動作是否具有一更新瞬間或刪除瞬間(瞬間傳輸類型動作控制)標(biāo)志。如果更新瞬間標(biāo)志存在,則活動瞬間被更新,或者將一空瞬間加到該數(shù)據(jù)庫。如果一刪除瞬間標(biāo)志存在,則CSE刪除一活動瞬間,并忽略空瞬間。如果一目標(biāo)具有鏈接目標(biāo),則其相關(guān)鏈接傳輸表達(dá)式被執(zhí)行,并且其瞬間被更新。如果使用者選擇NEXT或PREVIOUS事件,則CSE獲取NEXT或PREVIOUS瞬間。如果使用者選擇PROCESS事件,則CSE回到狀態(tài)4。如果在這些活動中的任一活動期間出現(xiàn)一錯誤,則CSE帶著表示一故障的事件標(biāo)志回到狀態(tài)4。與在狀態(tài)5中一樣,對于每一動作,對EBCS執(zhí)行一測試,以檢查期待的行為,從而協(xié)調(diào)或增強(qiáng)處理動作,以提供一期待的行為。
在狀態(tài)7,活動模型終止,CSE激活最新掛起的一個模型,并進(jìn)入被激活模型的下一個狀態(tài);否則,CSE返回到狀態(tài)2。
在狀態(tài)8,CSE終止。一旦CSE初始化,它通過各種狀態(tài)執(zhí)行直至達(dá)到狀態(tài)8。CSE執(zhí)行時,信息模型中定義的功能性是以與現(xiàn)有技術(shù)源碼相同的執(zhí)行方式實施的。
下面描述用在MICS中的不使用EBCS的幾個信息模型的典型結(jié)構(gòu)。本例中,MICS包括三個信息模型預(yù)約日歷(MODEL APPOINTMENTCALENDAR)、筆記本(MODEL NOTEPAD)和復(fù)雜的醫(yī)學(xué)系統(tǒng)(MODELMEDICAL)?!邦A(yù)約日歷”模型包括一個屬性(如日期、星期幾、時間和日記時間增量)和控制表達(dá)式的短表。初始值表達(dá)式將日期、星期幾和時間初始設(shè)置成當(dāng)前系統(tǒng)日期、星期幾和時間,缺省值表達(dá)式將星期幾屬性設(shè)置成日期屬性的相應(yīng)值,而約束指定表達(dá)式分別根據(jù)EVENT前一個或下一個將日期設(shè)置成前一天(日期-1)或后一天(日期+1)。與此類似,筆記本模型包括一短屬性表。醫(yī)學(xué)系統(tǒng)包括眾多目標(biāo)的表。由動作和功能控制標(biāo)志組成的系統(tǒng)控制表也被提供用以理解這些例子。
SYSTEM CONTROL TABLES#ACTIONADD,EMPTY INSTANT,DATABASE,UPDATE INSTANT,USRINSTANTIATIONUPDATE,ACTIVE INSTANT,DATABASE,UPDATEINSTANT,USR_INSTANTIATIONDELETE,ACTIVE INSTANT,DATABASE,DELETE INSTANT,USRINSTANTIATIONREPORT,ACTIVE INSTANT,REPORT,O,O,CREATE_REPORTCREATE ATOMIC DATA,ACTIVE INSTANT,ANALYSIS,UPDATEINSTANT,CREATE_ATOMIC_DATAGRAPH,ACTIVE INSTANT,ANALYSIS,O,O,GRAPHLEARN ASSOCIATION,ACTIVE INSTANT,ANALYSIS,O,O,LEARNATOMIC_DATAUSE ASSOCIATION,ACTIVE INSTANT,ANALYSIS,O,O,USE_ATOMICDATA#MODEL APPOINTMENT CALENDAR,PRIMITIVE,UPDATE,LEARNDescriptionYou can use Calendar program to keep track of yourappointmentsSELECT,INSTANT(NEXT INSTANT)[DATE]+=1;(PREV INSTANT)[DATE]-=1.DATE,TYPE=D,UNIQUEDATE,TYPE=D,PTYPE=D,TEMP0900 A.M.,TYPE=C,LEN=66,ATYPE=tDescriptionType any information you want to include for this timeslot.
SELECT,ATTRIBUTE(ATTRIBUTE<5.30) ATTRIBUTE+=60.NOTE,TYPE=C,LEN=132DescriptionType up to two lines of text as notes.TODO,TYPE=C,LEN=132DescriptionType up to two lines of text for things to do.#ENDMOIDEL NOTEPAD.PRIMITIVE_UPDIATE,LEARNDATE,TYPE=D,GROUP=100,SETDATE,F(xiàn)PROT,UNIQUETIME,TYPE=T,GROUP=100,SETTIME,F(xiàn)PROTREFERENCE,TYPE=A,LEN=20,GROUP=100TEXT,TYPE=C,LEN=512,GROUP=101,PHIDE#ENDMODEL MEDICAL#OBJECT PATIENT CHART,PRIMITIVE,DATABASEACNT NO,TYPE=I,LEN=8,GROUP=100,F(xiàn)PROTDEFAULT VALUE[ACNT NO]=SEQNUMBER.VISIT FIRST,TYPE=d,GROUP=100,F(xiàn)PROT,SETDATELAST,TYPE=D,GROUP=100,F(xiàn)PROT,SETDATEPATIENT NAME,TYPE=A,LEN=30,GROUP=102,MFILLADDRESS,TYPE=A,LEN=30,GROUP=103,MFILLCITY,TYPE=A,LEN=15,GROUP=104,MFILLSTATE,TYPE=A,LEN=2,GROUP=104,MFILLZIP CODE,TYPE=L,PTYPE=Z,LEN=5,GROUP=104,MFILLBIRTHDATE,TYPE=D,GROUP=105,MFILLSEX,TYPE=A,LEN=1,GROUP=105,MFILL限制,值M-MALE,F(xiàn)-FEMALE.MARITAL STATUS,TYPE=A,LEN=1,GROUP=105,MFILL限制,值S-SINGLE,M-MARRIED,W-WIDOWED,D-DIVORCED.PHONE NO(HOME),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUST(OFFICE),TYPE=S,PTYPE=P,LEN=10,GROUP=106,RJUSTSOCIAL SEC.#,TYPE=L,PTYPE=S,LEN=9,GROUP=107DRIVER LIC.#,TYPE=C,LEN=15,GROUP=107CREDIT CARD#,TYPE=C,PTYPE=N,LEN=16,GROUP=108TYPE,TYPE=A,LEN=10,GROUP=108EMPLOYMENT STATUS,TYPE=A,LEN=1,GROUP=108限制,值E-Emploved,F(xiàn)-Full time student,P-Part time student.OCCUPATION,TYPE=A,LEN=20,GROUP=109EMPLOYER′S NAME,TYPE=A,LEN=30,GROUP=109SPOUSE/GUARDIAN NAME,TYPE=A,LEN=30,GROUP=111RELATIONSHIP,TYPE=A,LEN=1,GROUP=112限制,值S-自己,s-配偶,c-小孩,o-其他PHONE NO(HOME),GROUP=112,DATA=1,RJUST(OFFICE),GROUP=112,DATA=1,RJUSTOCCUPATION,GROUP=113,DATA=1EMPLOYER′S NAME,GROUP=113,DATA=1RESP.PARTY′S NAME,TYPE=A,LEN=30,GROUP=115RELATIONSHIP,GROUP=115,DATA=1BIRTHDATE,GROUP=116,DATA=1SEX,GROUP=116,DATA=1SOCIAL SEC.#,GROUP=116,DATA=1DRIVER LIC.#,GROUP=117,DATA=1CREDIT CARD#,GROUP=117,DATA=1TYPE,GROUP=117,DATA=1PHONE NO(HOME),GROUP=118,DATA=2,RJUST(OFFICE),GROUP=118,DATA=2,RJUSTADDRESS,GROUP=119,DATA=1CITY,GROUP=120,DATA=1STATE,GROUP=120,DATA=1ZIP CODE,GROUP=120,DATA=1OCCUPATION,GROUP=121,DATA=2EMPLOYER′S NAME,GROUP=121,DATA=2INSURED?,TYPE=A,LEN=1,GROUP=122限制,值Y-YES,N-NO.CARRIER CODE,GROUP=122PLAN NAME,TYPE=A,LEN=20,GROUP=123INS ID,TYPE=C,LEN=12,GROUP=123GROUP ID,TYPE=C,LEN=12,GROUP=123OTHER INSURANCE?,TYPE=A,LEN=1,GROUP=125限制,值Y-YES,N-NO.CARRIER CODE,DATA=1,GROUP=125PLAN NAME,GROUP=126,DATA=1INS ID,GROUP=126,DATA=1GROUP ID,GROUP=126,DATA=1INSURED′S NAME,TYPE=A,LEN=30,GROUP=127RELATIONSHIP,TYPE=A,LEN=1,GROUP=127,DATA=2BIRTHDATE,TYPE=D,GROUP=128,DATA=2SEX,GROUP=128,DATA=2EMPLOYER′S NAME,GROUP=128,DATA=3ACTIVE STMNT,TYPE=I,LEN=2,GROUP=130缺省值[ACTIVE STMNT]=1.BALANCE,TYPE=R,LEN=10,DEC=2,GROUP=130,F(xiàn)PROTOB DUE,TYPE=D,GROUP=130RECALL,TYPE=D,GROUP=130CHARGES,TYPE=R,LEN=10,DEC=2,TEMP,F(xiàn)HIDEPOST AMOUNTS,TYPE=R,LEN=10,DEC=2,TEMP,F(xiàn)HIDECREDITS,TYPE=R,LEN=10,DEC=2,TEMP,F(xiàn)HIDEPATIENT PORTION,TYPE=R,LEN=10,DEC=2,GROUP=131INSURANCE COVERAGE(%),TYPE=R,LEN=10,DEC=2,GROUP=131傳輸[PATIENT PORTION]=(100-[INSURANCE COVERAGE(%)])*.01*([BALANCE]-[DEDUCTIBLE]);[PATIENT PORTION]=[PATIENT PORTION]+[DEDUCTIBLE].DEDUCTIBLE,TYPE=R,LEN=10,DEC=2,GROUP=131BILLING DATE,TYPE=D,GROUP=132INS BILLING DATE,TYPE=D,GROUP=132PATIENT PAYMENTS,TYPE=R,LEN=10,DEC=2,GROUP=133INSURANCE PAYMENTS,TYPE=R,LEN=10,DEC=2,GROUP=133INSURANCE TYPE,TYPE=A,LEN=1,GROUP=134限制,值E-MEDICARE,D-MEDICAID,G-GROUP HEALTH PLAN.AUTHORIZATION NO,TYPE=C,LEN=12,GROUP=134MEDICAID RESUB CODE,TYPE=C,LEN=12,F(xiàn)HIDEORIGINAL REF NO,TYPE=C,LEN=16,F(xiàn)HIDEDATE OF SYMPTOM(CURRENT),TYPE=D,F(xiàn)HIDE(PRIOR),TYPE=D,F(xiàn)HIDEREFERRING PHYSICIAN,TYPE=A,LEN=20,F(xiàn)HIDEPHYSICIAN ID,TYPE=C,LEN=10,F(xiàn)HIDEFACILITY,TYPE=A,LEN=20,F(xiàn)HIDEHOSPITAL DATE(FROM),TYPE=D,F(xiàn)HIDE(TO),TYPE=D,F(xiàn)HIDEUNBL TO WORK(FROM),TYPE=D,GROUP=140,F(xiàn)HIDE(TO),DATA=1,F(xiàn)HIDEOUTSIDE LAB?,TYPE=A,LEN=1,F(xiàn)HIDE
限制,值Y-YES,NO.
LAB AMNT,TYPE=R,LEN=8,DEC=2,F(xiàn)HIDENICOE NAME,TYPE=A,LEN=25,GROUP=137DESCRIPTIONENTER THE NAME OF PERSON TO BE NOTIFIED IN CASE OFEMERGENCY.
NICOE PHONE NO,GROUP=137CONDITION RELATED TO JOB?,TYPE=A,LEN=Q,F(xiàn)HIDE限制,值Y-YES,N-NOAUTO ACCIDENT?,TYPE=A,LEN=1,F(xiàn)HIDE限制,值Y-YES,N-NOOTHER ACCIDENT?,TYPE=A,LEN=1,F(xiàn)HID限制,值Y-YES,N-NO#OBJECT BILLING DATA,PRIMITIVE,JOURNAL_RCD,HIDEACNT NO,DPROTSTMNT,DPROTTRANS DATE,TYPE=D限制,條件([TRANS DATE]LE DATE)說明當(dāng)開始該過程的服務(wù)時輸入日期輸入,條件([TO DATE]LE DATE);([TO DATE]GE[TRANS DATE)]說明在與至/自這些日期的外科或懷孕是不同的情況下,當(dāng)對該處理的服務(wù)結(jié)束時,輸入日期。PS,TYPE=A,LEN=1限制,值IH-在醫(yī)院,OH-外科,3-咨詢,4-sray,5-實驗室,8-助理外科,9-其它醫(yī)療服務(wù),CODE,TYPE=A,LEN=4,UNIQUE說明輸入四位別名碼或付款/調(diào)整碼付款-pac(現(xiàn)金),pck(支票),pin(保險),pcl(收款)付款差錯調(diào)整,-cpe(同方粘貼錯)或dpe(借方)付款-dop(歸還),drc(返還支票),drc(返還支票費)dif(法律/法院),dfc(貨方)或dda(借方)orccd(折扣)。傳輸[AMOUNT]=[AMNT];(IUNIT]EQUAL TO 0)[UNIT]=1.DIAG,TYPE=A,LEN=6說明輸入來自icd 9碼書的有效診斷碼UNIT,TYPE=1,LEN=2AMOUNT,TYPE=R,LEN=8,DEC=2DESCRIPTION,TEMPAMOUNTS,F(xiàn)HIDE,TEMPOLD AMOUNT,TYPE=R,LEN=8,DEC=2,F(xiàn)HIDE,TEMPPOST AMNT,TYPE=R,LEN=8,DEC=2,F(xiàn)HIDE,TEMP#OBJECT BILLING DATABASE,VIEW of BIL LING DATA,DATABASE初始值SETVALUE([STMNT],[ACTIVE STMNT]).
激活傳輸[OLD AMOUNT]=[AMOUNT]*[UNIT]*[CDFLG],傳輸[POST AMNT]=[AMOUNT]*[UNIT]*[CDFLG]-[OLDAMOUNT];[POST AMOUNTS]=[POST AMOUNTS]+[POST AMNT];((ICTYPE]EQUAL TO 9)AND([POST AMNT]>0))[PATIENT PAYMENTS]=[PATIENT PAYMENTS]+[POSTAMNT];(([CTYPE]EQUAL TO 8)AND([POST AMNT]>0))[INSURANCE PAYMENTS]=[INSURANCEPAYMENTS]+[POST AMNT];[LAST]=DATE;([STMNT]>[ACTIVE STMNT])[ACTIVE STMNT]=[STMNT].
鏈接傳輸([POST AMOUNTS]?。?)[BALANCE]=[BALANCE]+[POSTAMOUNTS].DOCNAME,F(xiàn)HIDE,HEADER,DPROTLINE1,F(xiàn)HIDE,HEADER,DPROTLINE2,F(xiàn)HIDE,HEADER,DPROTLINE3,F(xiàn)HIDE,HEADER,DPROTLINE4,F(xiàn)HIDE,HEADER,DPROTACNT STRING,PHIDE,COL=50,GROUP=98,F(xiàn)PROT,DPROTPATIENT NAME,GROUP=100,F(xiàn)PROT,PHIDE,COL=5,DPROTACNT NO,GROUP=100,F(xiàn)PROT,COL=55,DPROTADDRESS,GROUP=101,F(xiàn)PROT,PHIDE,COL=5,DPROTSTMNT,GROUP=101,F(xiàn)PROT,COL=57,DPROTCITY,GROUP=102,F(xiàn)PROT,PHIDE,COL=5,DPROTSTATE,GROUP=102,F(xiàn)PROT,PHIDE,F(xiàn)CAT,DPROTZIP CODE,GROUP=102,F(xiàn)PROT,PHIDE,F(xiàn)CAT,DPROTBALANCE,GROUP=102,COL=55,DPROTSTMNT,GROUP=105,ENTRY=10,RSKIPTRANS DATE,GROUP=105,ENTRY=10TO DATE,GROUP=105,ENTRY=10,RSKIPCODE,GROUP=105,ENTRY=10,RSKIPAMOUNT,GROUP=105,ENTRY=10,RSKIPUNIT,GROUP=105,ENTRY=10,RSKIPPS,GROUP=105,ENTRY=10,RSKIPTS,GROUP=105,ENTRY=10,RSKIPDIAG,GROUP=105,ENTRY=10,RSKIPDESCRIPTION,GROUP=105,ENTRY=10,F(xiàn)PROTAMOUNTS,GROUP=105,ENTRY=10,WSKIP,RJUSTCHARGES,GROUP=106,WSKIPCREDITS,GROUP=106,WSKIPBALANCE,GROUP=106,WSKIP,DPROTTOTAL OF AMOUNT,RSKIP,TEMP限制,值[TOTAL OF AMOUNT]=COLSUM([AMOUNT]).POST AMOUNTS,F(xiàn)HIDEOLD AMOUNT,F(xiàn)HIDECDFLG,F(xiàn)HIDE,TEMP限制,值1-debit,-1-credit.#OBJECT REMOVE VISIT CHARGE,SYNONYM OF BILLINGDATABASE,UPDATE激活,傳輸=BILLING DATABASE.#OBJECT PRINT INSURANCE FORM,VIEW ofBILLING DATA,NOLINE,REPORT,GROUP=6初始值[STMNT NUMBER]=[ACTIVE STMNT];GETVALUE([STMNT NUMBER]).
激活傳輸[AMOUNTS]=[AMOUNT]*[UNIT];([CDFLG]EQUAL T0 1)[CHARGES]=[CHARGES]+[AMOUNTS];([CDFLG] EQUAL T0 -1)[CREDITS]=[CREDITS]+[AMOUNTS].
限制,條件(([CDFLG]EQUAL TO 1)AND([AMOUNT]>0)AND([STMNT]EQUAL TO[STMNT NUMBER])).
粘貼傳輸[POST AMOUNTS]=0;[CREDITS]=0;[CHARGES]=0.CARRIER NAME,PHIDE,ROW=1,COL=43(ADDRESS),PHIDE,ROW=2,COL=43(CITY),PHIDE,ROW=3,COL=43(STATE),PHIDE,ROW=3,F(xiàn)CAT(ZIP CODE),PHIDE,ROW=3,F(xiàn)CATINSURANCE TYPE,PHIDE,ROW=7,COL=2INS ID,PHIDE,ROW=7,COL=50PATIENT NAME,PHIDE,ROW=9,COL=1BIRTHDATE,PHIDE,ROW=9,COL=30SEX,PHIDE,ROW=9,COL=41,BOX=5RESP.PARTY′S NAME,PHIDE,ROW=9,COL=50ADDRESS,PHIDE,ROW=11,COL=1RELATIONSHIP,DATA=1,PHIDE,ROW=11,COL=32,BOX=5ADDRESS,DATA=1,PHIDE,ROW=11,COL=50CITY,PHIDE,ROW=13,COL=1STATE,PHIDE,ROW=13,COL=26MARITAL STATUS,PHIDE,ROW=13,COL=34,BOX=5CITY,DATA=1,PHIDE,ROW=13,COL=50STATE,DATA=1,PHIDE,ROW=13,COL=74ZIP CODE,PHIDE,ROW=15,COL=1PHONE NO(HOME),PHIDE,RJUST,COL=13EMPLOYMENT STATUS,PHIDE,COL=34,ROW=15ZIP CODE,DATA=1,PHIDE,ROW=15,COL=50PHONE NO(HOME),PHIDE,RJUST,ROW=15,COL=63INSURED′S NAME,DATA=1 ,PHIDE,ROW=17,COL=1GROUP ID,PHIDE,ROW=17,COL=50GROUP ID,DATA=1 ,PHIDE,ROW=19,COL=1CONDITION RELATED TO JOB?,PHIDE,BOX=6,ROW=19,COL=34BIRTHDATE,DATA=1,PHIDE,ROW=19,COL=53SEX,DATA=1,PHIDE,ROW=19,COL=69,BOX=5BIRTHDATE,DATA=2,PHIDE,ROW=21,COL=1SEX,DATA=2,PHIDE,ROW=21,COL=17,BOX=6AUTO ACCIDENT?,PHIDE,ROW=21,COL=34,BOX=6EMPLOYER′S NAME,DATA=2,PHIDE,ROW=21,COL=50EMPLOYER′S NAME,DATA=3,PHIDE,ROW=23,COL=1OTHER ACCIDENT?,PHIDE,ROW=23,COL=34,BOX=6PLAN NAME,PHIDE,ROW=23,COL=50PLAN NAME,DATA=1,PHIDE,ROW=25,COL=1OTHER INSURANCE?,PHIDE,ROW=25,COL=51,BOX=5DATE OF SYMPTOM(CURRENT),PHIDE,ROW=31,COL=2(PRIOR),PHIDE,ROW=31,COL=38UNBL TO WORK(FROM),PHIDE,ROW=31,COL=54(TO),DATA=1,PHIDE,ROW=31,COL=68REFERRING PHYSICIAN,PHIDE,ROW=33,COL=1PHYSICIAN ID,PHIDE,ROW=33,COL=29HOSPITAL DATE (FROM),PHIDE,ROW=33,COL=54(TO),PHIDE,ROW=33,COL=68OUTSIDE LAB?,PHIDE,ROW=35,COL=52LAB AMNT,PHIDE,ROW=35,COL=62MEDICAID RESUB CODE,PHIDE,ROW=37,COL=50ORIGINAL REF NO,PHIDE,ROW=37,00L=62AUTHORIZATION NO,PHIDE,ROW=39,COL=51,LINE=1TRANS DATE,PHIDE,ENTRY=6,ROW=45,COL=1,LINE=1TO DATE,PHIDE,ENTRY=6,ROW=43,COL=10PS,PHIDE,ENTRY=6,ROW=43,COL=19TS,PHIDE,ENTRY=6,ROW=43,COL=22CPT4 CODE,PHIDE,ENTRY=6,ROW=43,COL=25DIAG,PHIDE,ENTRY=6,ROW=43,COL=42AMOUNT,PHIDE,ENTRY=6,ROW=43,COL=48,RJUSTUNIT,PHIDE,ENTRY=6,ROW=43,COL=58FEDTAXID,PHIDE,DPROT,ROW=55,COL=2IDTYPE,PHIDE,DPROT,ROW=55,COL=16,BOX=3限制,值S-SSN,E-EINACNT NO,PHIDE,DPROT,ROW=55,COL=23ASSIGNMENT,PHIDE,DPROT,ROW=55,COL=37CHARGES,PHIDE,ROW=55,COL=50,RJUSTPATIENT PAYMENTS,PHIDE,F(xiàn)HIDECHARGES,PHIDE,ROW=55,COL=69,RJUSTDOCNAME,PHIDE,DPROT,ROW=57,COL=51LINE1,PHIDE,DPROT,F(xiàn)HIDELINE2,PHIDE,DPROT,ROW=58,COL=51UNE3,PHIDE,DPROT,ROW=59,COL=51PIN,PHIDE,DPROT,ROW=60,COL=51#OBJECT DAILY JRNL,JOURNAL OF BILUNGDATA,BROWSE,CREATE鏈接初始值GETVALUE([FROM DATEI,[TO DATE]).
鏈接限制,條件(([TRANS DATE] GE[FROM_DATE])AND([TRANS DATE]LE[TO DATE])).
鏈接激活傳輸[F]=1;[JRNL DATE]=[TRANS DATE];[PTYPE ]=[ITYPE];[POST AMNT]=[AMOUNT]*[UNIT]*[CDFLG].
鏈接傳輸[F]=1;(ACTIVE INSTANT)[F]=2;[JRNL DATE]=DATE;[PTYPE]=[ITYPE].JRNL DATE,TYPE=DACNT NOPATIENT NAMETRANS DATESTMNTCODECDFLGCTYPETYPE=N,LEN=1限制,值1-OBSTETRICS,2-SONOGRAM,3-LASER,4-MEDICAL5-GYNECOLOGY/SURGERY,6-OFFICE,7-OTHER SERVICE,8-INSURANCE PAYMENT,9-OTHER PAYMENT,10-REFUND,11-CHARGE/CREDIT ADJST,12-CHARGE/DEBIT ADJST,13-PMNT/CREDIT ADJST,14-PMNT/DEBIT ADJST.PTYPEF,TYPE=N,LEN=1POST AMNT,TYPE=R,LEN=10,DEC=2#OBJECT DAILY RECONCIUATION,VIEW OFDAILYJRNL,BROWSE,REPORT,PAGE激活,傳輸([CTYPE]<8)[CHARGES]=[CHARGES]+[POST AMNT];(([CTYPE] EQUAL TO 8)DR([CTYPE] EQUAL TO9))[PAYMENT]=[PAYMENT]+[POST AMNT];([CTYPE] EQUAL TO 10) [REFUND]=[REFUND]+[POSTAMNT];([CTYPE] EQUAL TO 11) [CREDITADJST]=[CREDITADJST]+[POSTAMNT];([ICTYPE]EQUAL TO 12) [DEBIT ADJST]=[DEBIT ADJST]+[POSTAMNT];([CTYPE]EQUAL TO 13)[PMNT/CDTADJST]=[PMNT/CDTADJST]+[POST AMNT];
([CTYPE]EQUAL TO 14)[PMNT/CDT ADJST]=[PMNT/DBTADJST]+[POST AMNT].JRNL DATE,ENTRY=16,GROUP=100ACNT NO,ENTRY=16,GROUP=100PATIENT NAME,ENTRY=16,GROUP=100TRANS DATE,ENTRY=16,GROUP=100,WSKIPSTMNT,ENTRY=16,GROUP=100CTYPE,ENTRY=16,GROUP=100,WSKIP,RSKIPF,ENTRY=16,GROUP=100,WSKIP,RSKIPPTYPE,ENTRY=16,GROUP=100,WSKIPCODE,ENTRY=16,GROUP=100POST AMNT,ENTRY=16,GROUP=100CHARGES,GROUP=101PAYMENT,GROUP=101REFUND,GROUP=101CREDIT ADJST,GROUP=102DEBIT ADJST,GROUP=102PMNT/CDT ADJST,GROUP=103,WSKIPPMNT/DBT ADJST,GROUP=103,WSKIP#OBJECT BILUNG/INS MNGMNT,VIEW of PATIENT CHART,UPDATE限制,條件([BALANCE]>1).ACNT NO,GROUP=133,F(xiàn)PROTVISIT FIRST,GROUP=133,F(xiàn)PROTLAST,GROUP=133,F(xiàn)PROTPATIENT NAME,GROUP=134,F(xiàn)PROTPHONE NO(HOME),GROUP=134,DATA=2,F(xiàn)PROT,RJUST,PHIDE(OFFICE),GROUP=134,DATA=2,F(xiàn)PROT,PHIDERESP.PARTY′S NAME,GROUP=136,F(xiàn)PROTRELATIONSHIP,GROUP=136,DATA=1,F(xiàn)PROTCARRIER CODE,GROUP=137CARRIER NAME,GROUP=137,F(xiàn)PROTPHONE NO,GROUP=138,RJUSTFAX NO,GROUP=138,RJUST(800)NO,GROUP=138,RJUSTPLAN NAME,GROUP=139INS ID,GROUP=139GROUP ID,GROUP=139DEDUCTIBLE,GROUP=141INSURANCE COVERAGE(%),GROUP=141PATIENT PORTION,GROUP=141BILLING DATE,GROUP=142INS BILLING DATE,GROUP=142PATIENT PAYMENTS,GROUP=143INSURANCE PAYMENTS,GROUP=143BALANCE,GROUP=143,F(xiàn)PROTAUTHORIZATION NO,GROUP=145OUTSIDE LAB?,GROUP=145LAB AMNT,GROUP=145MEDICAID RESUB CODE,GROUP=146ORIGINAL REF NO,GROUP=146DATE OF SYMPTOM(CURRENT),GROUP=147(PRIOR),GROUP=147REFERRING PHYSICIAN,GROUP=148PHYSICIAN ID,GROUP=148FACILITY,GROUP=149HOSPITAL DATE(FROM),GROUP=150(TO),GROUP=150UNBL TO WORK(FROM),GROUP=151(TO),GROUP=151,DATA=1CONDITION RELATED TO JOB?,GROUP=152AUTO ACCIDENT?,GROUP=152OTHER ACCIDENT?,GROUP=152ACTIVE STMNT,GROUP=153,F(xiàn)PROT#OBJECT PRINT BILL,SYNONYM OF BILLING DATABASE,REPORT初始值=PRINT INSURANCE FORM.
Constraint,condition([STMNT]EQUAL TO[STMNT NUMBER]).
限制,條件=PRINT INSURANCE FORM.#OBJECT LIST OB DUE PATIENT,VIEW OFPATIENTCHART,BROWSE,GROUP=16,REPORT,PAGE初始值GETVALUE([MONTH]).
限制,條件([MONTH]EQUAL TO MMYYYY([OB DUE])).PATIENT NAMEOB DUE#OBJECT LIST RECALL PATIENT,VIEW OFPATIENTCHART,BROWSE,GROUP=16,REPORT,PAGE初始值GETVALUE(IMONTHI).
限制,條件([MONTH]EQUAL TO MMYYYYY(IRECALL])).PATIENT NAMERECALL#OBJECT ACCOUNT BALANCE DUE,VIEW of PATIENT CHART,BROWSE,REPORT,PAGE限制,條件([BALANCE]>1).ACNT NOPATIENT NAMEBALANCELAST#OBJECT PRACTICE ANALYSIS,ATOMIC OF DAILY JRNL,ANALYSIS鏈接激活傳輸[MONTH]=MMYYYY([JRNL DATE]);([CTYPE]EQUAL TO 0)[CTYPE]=1.
鏈接傳輸SUMBY([CTYPE],[POST AMNT]);([CTYPE]<8)[CHARGES]=[CHARGES]+[POST AMNT];(([CTYPE] EQUAL TO 8) OR ([CTYPE] EQUAL TO9))[PAYMENT]=[PAYMENT]+[POST AMNT].MONTH,DPROT,GROUP=10,COL=50,XAXISOBSTETRICS,GROUP=11,INPUTSONOGRAM,GROUP=12,INPUTLASER,CSUM,GROUP=13,INPUTMEDICAL LAB,GROUP=14,INPUTGYNECOLOGY,GROUP=15,INPUTOFFICE,GROUP=16,INPUTOTHER SERVICE,GROUP=17,INPUTINSURANCE PAYMENT,GROUP=18,INPUTOTHER PAYMENT,GROUP=19,INPUTREFUND,GROUP=20,INPUTCREDIT ADJST,GROUP=21,INPUTDEBIT ADJST,GROUP=21,INPUTPMNT/CDT ADJST,GROUP=22,INPUTPMNT/DBT ADJST,GROUP=22,INPUTCHARGES,GROUP=24,SERIES,OUTPUTPAYMENT,GROUP=24,SERIES,OUTPUT#OBJECT INS CHARGES ANALYSIS,ATOMIC OF DAILY JRNL,ANALYSIS鏈接激活傳輸[MONTH]=MMYYYY([JRNL DATE]).
鏈接傳輸(([PTYPE]>0)AND([CTYPE]<8))SUMBY([PTYPE],[POSTAMNT]);(([PTYPE]EQUAL TO 0)AND([CTYPE]<8))[OTHER]=[OTHER]+[POST AMNT].
激活傳輸[CHARGES]=SUM([PRIMARY],[OTHER]).MONTH,DPROT,COL=50PRIMARY,GROUP=1MEDICARE/CAID,GROUP=2SANUS,GROUP=3PRUCARE,GROUP=4NORTH TX,GROUP=5DALLAS,GROUP=6AETNA,GROUP=7BLUE CHOICE,GROUP=8CHAMPUS,GROUP=9SANUS PPO,GROUP=10TRAVELERS,GROUP=11PTYPE 12,GROUP=12PTYPE 13,GROUP=13PTYPE 14,GROUP=14PTYPE 15,GROUP=15OTHER,GROUP=16CHARGES,GROUP=17,TEMP#OBJECT PROCEDURECODE,PRIMITIVE,ADD,UPDATE,REPORT,PAGECODE,PROTECTCPT4 CODE,TYPE=C,LEN=7,RSKIP說明付款同編號時輸入有效cpt4碼或跳過該字段MED CODE,TYPE=C,LEN=7,RSKIP說明輸入醫(yī)護(hù)所使用的另一過程碼CDFLG,TYPE=N,LEN=1,RSKIPAMNT,TYPE=R,LEN=8,DEC=2說明費用應(yīng)當(dāng)是稱當(dāng)付該過程的費。在其他情況下為0。CTYPEDESCRIPTION#OBJECT INSURANCE COMPANY,PRIMITIVE,ADD,UPDATE,REPORT,PAGECARRIER CODE,TYPE=A,LEN=8,GROUP=100,PROTECT,UNIQUECARRIER NAME,TYPE=A,LEN=25,GROUP=101PHONE NO,TYPE=S,PTYPE=P,LEN=10,GROUP=102,RJUST(800)NO,TYPE=S,LEN=10,PTYPE=P,GROUP=102,RJUSTFAX NO,TYPE=S,LEN=10,PTYPE=P,GROUP=102,RSKIP,RJUST(ADDRESS),TYPE=A,LEN=30,GROUP=103,RSKIP(CITY),TYPE=A,LEN=15,GROUP=104,RSKIP(STATE),TYPE=A,LEN=2,GROUP=104,RSKIP(ZIP CODE),TYPE=L,PTYPE=Z,LEN=5,GROUP=104,RSKIPITYPE,TYPE=I,LEN=2,GROUP=105,RSKIP限制,值01-PRIMARY,02-MEDICARE/CAID,03-SANUS,04-PRUCARE,05-NORTH TX,06-DALLAS,07-AETNA,08-BLUECHOICE,09-CHAMPUS,10-SANUS PPO,11-TRAVELERS,12-PTYPE 12,13-PTYPE 13,14-PTYPE 14,15-PTYPE15.#OBJECT DIAGNOSIS CODE,PRIMITIVE,ADD,UPDATE,REPORT,PAGEDIAG,TYPE=C,LEN=5,UNIQUEDIAGNOSIS#OBJECT DOCTOR,TRANSIENT,HIDE初始值[DOCNAME]=″J.DOE,M.D.,P.A.″;[LINE1]=″OBSTETRICS and GYNECOLOGY″;[LINE2]=″123 ANY STREET,SUITE 100″;[LINE3]=″ANY TOWN,TEXAS 75200″;[PIN]=″1177″;[FEDTAXID]=″123456789″;[ACNT STRING]=″STATEMENT OF ACCOUNT″;[IDTYPE]=″E″.DOCNAME,TYPE=A,LEN=25LINE1,TYPE=A,LEN=25LINE2,TYPE=A,LEN=25LINE3,TYPE=A,LEN=25PIN,TYPE=C,LEN=12FEDTAXID,TYPE=N,LEN=10IDTYPE,TYPE=C,LEN=1ACNT STRING,TYPE=C,LEN=15#OBJECT POST EXPENSES,PRIMITIVE,ADD,UPDATE,GROUP=16,REPORT,PAGECHECK DATE,TYPE=DACNT CODE,TYPE=1,LEN=2限制,值1-RENT,2-TELEPHONE,3-ANSWERING SERVICE,4-UTILITIES,5-POSTAGE,6-MEDICAL LAB,7-MEDICALSUPPLY,8-OFFICE SUPPLY,9-AUTO INSURANCE,10-MALPRACTICEINSURANCE,11-HEALTH INSURANCE,12-OTHERINSURANCE,13-TRADE DUES,14-SEMINAR TRAINING,15-PROFESSIONAL SERVICE,16-ENTERTAINMENT/GIFTS,17-ACCOUNTING & LEGAL,18-CONTRACTSERVICE,19-AUTOEXPENSE,20-OSHA EXPENSE,21-REFUNDS,22-LEASEPAYMENT,23-LOAN PAYMENT,24-PAYROLL,25-TRANSFER,26-ALL OTHER.CHECK NO,TYPE=L,LEN=6CHECK AMNT,TYPE=R,LEN=10,DEC=2REFERENCE,TYPE=A,LEN=20
#OBJECT EXPENSE REPORT,SYNONYM OF POST EXPENSES,BROWSE,REPORT,PAGE初始值GETVALUE([MONTH]).
限制,條件([MONTH]EQUAL TO MMYYYY([CHECK DATE])).
#INDEX PATIENT CHART,2,PATIENT NAME#INDEX BILLING DATA,1,ACNT NO#INDEX POST EXPENSES,1,CHECK DATE#INDEX DAILY JRNL,1,JRNL DATE#END正如所看到的那樣,與簡單的筆記本和日歷相比,醫(yī)學(xué)系統(tǒng)要復(fù)雜得多。然而,不管信息模型自身的長度如何,應(yīng)當(dāng)理解該模型是用來執(zhí)行業(yè)務(wù)應(yīng)用所需要的所有的東西。換言之,一旦寫了醫(yī)學(xué)系統(tǒng)信息模型,則使用者無需寫源碼或其他的高級碼來完成該模型。使用者還無需維持源碼或類似的編碼來實施加強(qiáng)或改正錯誤。因此,使用者需要做的只是修改信息模型(例如,加入一屬性、修改或增加一目標(biāo)改變目標(biāo)中的一表達(dá)式等)。操作中,信息模型是直接由CSE來處理的。MICS可以包括一預(yù)處理器而按照需要處理這些表達(dá)式,并且功能可以嵌在MICS中或者可以從中區(qū)別出來,并因此用IPC設(shè)備來執(zhí)行?;?base)MICS無需改變或更換。
參照先前描述的醫(yī)學(xué)系統(tǒng)信息模型和功能組,對于一個不使用期待的行為控制系統(tǒng)的系統(tǒng)還可以看到一個用于典型系統(tǒng)的CSE軌跡(trace),這將在下文中討論狀態(tài)1MICS使表達(dá)式接口初始化,并建立三個模型的鏈接表,即預(yù)約日歷、筆記本和醫(yī)學(xué)系統(tǒng)。
狀態(tài)2CSE用表達(dá)式接口顯示三個模型。假設(shè)使用者給出醫(yī)學(xué)系統(tǒng)的條件。CSE激活醫(yī)學(xué)系統(tǒng)模型并對醫(yī)學(xué)系統(tǒng)設(shè)置“活動模型”屬性。
狀態(tài)3CSE用表達(dá)式接口向用戶顯示下面的目標(biāo)PATIENT CHARTBILLING DATABASEPRINT BILLPRINT INSURANCE FORM
DAILY RECONCILIA TIONBILLING?INS MNGMNTLIST OB DUE PATIENTLIST RECALL PATIENTACCOUNT BALANCE DUEPRACTICE ANALYSISINS CHARGE ANALYSISPROCEDURE CODEINSURANCE DOMPANYDIAGNOSIS CODEPOST EXPENSESEXPENSE REPORT假設(shè)使用者給出PATIENT CHART目標(biāo)的條件,CSE進(jìn)入狀態(tài)4。
狀態(tài)4CSE用表達(dá)式接口顯示與PATIENT CHART目標(biāo)相關(guān)的如下動作(注意,顯示這些動作是因為它們只是目標(biāo)中的動作標(biāo)志和與這些動作標(biāo)志相關(guān)的動作)ADDUPDATEDELETEVIEW現(xiàn)在假設(shè)使用者給出UPDATE的條件。于是CSE進(jìn)入狀態(tài)5。
狀態(tài)5CSE將PATIENT CHART目標(biāo)的所有值設(shè)置為零。CSE尋找PATIENT CHART的初始值表達(dá)式。沒有這樣的表達(dá)式;如果存在,那么它將已經(jīng)被執(zhí)行。主目標(biāo)沒有相關(guān)的鏈接目標(biāo),所以對于一鏈接目標(biāo)沒有激活瞬間。接著CSE選擇PATIENT CHART的數(shù)據(jù)目標(biāo)。由于PATIENT CHART類型是基元的,PATIENT CHART的DATA OBJECT是PATIENT CHART本身。因為活動動作的動作瞬間類型標(biāo)志是ACTIVE INSTANT并且PATIENT CHART沒有約束表達(dá)式,所以CSE如下所述示例DATA OBJECT的瞬間CSE用表達(dá)式接口顯示下面的兩個關(guān)鍵詞(因為PATIENT CHART實例是由在目標(biāo)結(jié)尾處索引中表示的索引或關(guān)鍵詞來訪問的)
ACCOUNT NOPATIENT NAME假設(shè)使用者輸入PATIENT NAME的關(guān)鍵詞值(key value),CSE進(jìn)行交互作用,直到輸入了一個有效的關(guān)鍵詞值。CSE還用數(shù)據(jù)庫接口通過示例PATIENTCHART屬性激活與PATIENT NAME相關(guān)的瞬間。假設(shè)激活成功,CSE尋找與PATIENT CHART目標(biāo)相關(guān)的激活表達(dá)式。這里沒有;如果有,則已經(jīng)被執(zhí)行。
狀態(tài)6CSE首先確定是否存在與UPDATE動作相關(guān)的任何功能標(biāo)志。在這種情況下,只有一個功能USR_INSTANTIATION,所以CSE執(zhí)行USR_INSTANTIATION功能。該功能用表達(dá)式控制標(biāo)志和表達(dá)式接口向使用者顯示屬性。使用者接著修改這些屬性并返回一“事件”。如果事件不是“過程”(PROCESS或NEXT或PREV EVENT的選擇),則CSE進(jìn)入CSE狀態(tài)6邏輯中描述的合適的狀態(tài)。假設(shè)選擇的事件是“過程”,則CSE執(zhí)行與活動目標(biāo)相關(guān)的任何傳輸表達(dá)式。這種情況下什么也沒有。CSE接著判定與PRIMARY OBJECT相關(guān)的DATA OBJECT是基元的還是原子的。本例中,PRIMARY OBJECTPATIENT CHART的DATA OBJECT是PATENT CHART本身。由于PATIENTCHART是基元的,所以CSE判定活動動作是否具有任何瞬間傳輸類型標(biāo)志。在該瞬間傳輸類型標(biāo)志中是UPDATE INSTANT。由于PATIENT CHART瞬間是ACTIVE INSTANT,所以CSE用數(shù)據(jù)庫接口更新PATIENT CHART瞬間。如果“過程”是PREV/NEXT事件的結(jié)果,則CSE將從數(shù)據(jù)庫獲取病人圖的前一/下一瞬間、激活該瞬間并重復(fù)狀態(tài)6,否則CSE回到狀態(tài)4。本例中,假設(shè)“過程”曾經(jīng)是PROCESS的結(jié)果,那么CSE回到狀態(tài)4。這就完成了處理過程。
現(xiàn)在參照第二個日歷程序信息模型,該模型不包含字典或目標(biāo)。該模型也不執(zhí)行期待的行為控制系統(tǒng)。系統(tǒng)學(xué)習(xí)的典型系統(tǒng)的CSE的軌跡也可以被找到。
狀態(tài)1MICS使表達(dá)式接口初始化,并建立三個模型(即預(yù)約日歷、筆記本和醫(yī)學(xué)系統(tǒng))的鏈接表。
狀態(tài)2CSE如下那樣激活預(yù)約日歷。CSE用表達(dá)式接口顯示三個模型。假設(shè)使用者給出預(yù)約日歷的條件。
由于預(yù)約日歷沒有目標(biāo),所以CSE產(chǎn)生預(yù)約日歷目標(biāo),并設(shè)置在等于目標(biāo)的模型處定義的控制標(biāo)志和控制表達(dá)式,即UPDATE ADD,SELECTEXPRESSION。CSE還將根據(jù)模型定義的所有屬性設(shè)置為預(yù)約日歷的屬性?,F(xiàn)在如果目標(biāo)具有屬性類型并選擇表達(dá)式類型屬性,則它用屬性選擇表達(dá)式擴(kuò)展屬性。這樣,930a.m.具有等于時間的屬性類型,并具有相關(guān)的屬性選擇表達(dá)式。CSE執(zhí)行選擇表達(dá)式,并產(chǎn)生從900a.m.到500p.m.的屬性。由于DATE具有UNIQUE標(biāo)志,所以CSE將DATE設(shè)置成用于“預(yù)約日歷”的索引。現(xiàn)在建立的目標(biāo)如下#OBJECT APPOINTMENT CALENDAR,PRIMITIVE UPDATE,LEARN-選擇,INSTANT(NEXT INSTANT)[DATE]+=1;(PREV INSTANT)[DATE]-=1DATE,TYPE=dDATE,TYPE=d,PTYPE=d,TEMP0900 A.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息1000 A.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息1100 A.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息1200 P.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息100 P.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息200 P.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息300 P.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息400 P.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息500 P.M.,TYPE=C,LEN=66說明打印你想要在該時隙中包括的信息NOTE,LEN=134,TYPE=C說明打印兩行文字作為注釋TODO,LEN=134,TYPE=C說明打印兩行要做事情的文字。
#Index,APPOINTMENT CALENDAR,UNIQUE.
CSE激活預(yù)約日歷,并將活動模型設(shè)置成預(yù)約日歷并進(jìn)入狀態(tài)3。
狀態(tài)3現(xiàn)在由于只有一個目標(biāo),CSE將預(yù)約日歷設(shè)置為目標(biāo)并將下一個狀態(tài)設(shè)置成狀態(tài)4。
狀態(tài)4由于只有一個與動作控制標(biāo)志相關(guān)的動作,所以CSE將活動動作設(shè)置成UPDATE ADD并進(jìn)入狀態(tài)5。
狀態(tài)5CSE將日歷的所有值設(shè)置成零。因為動作瞬間類型具有一活動瞬間的動作類型標(biāo)志,所以CSE從使用者處獲得索引值日期,以示例預(yù)約書瞬間。由于有選擇表達(dá)式,CSE執(zhí)行選擇表達(dá)式,并且如果事件是“下一個”或“前一個”的話選擇表達(dá)式選擇下一個日期,。由于事件是“過程”,所以CSE從用戶處獲得日期。如果日期是“下一個”或“前一個”的結(jié)果,則CSE跳過從用戶獲得日期的過程。在這種情況下日期沒有設(shè)置,CSE用表達(dá)式接口從用戶處獲得日期。假設(shè)用戶輸入日期值。CSE獲得指定日期的預(yù)約日歷。如果存在日期的預(yù)約書,則進(jìn)入狀態(tài)6。假設(shè)預(yù)約書頁不存在。由于日歷具有學(xué)習(xí)標(biāo)志,則CSE將活動瞬間標(biāo)志設(shè)置成EMPTY(空),將動作設(shè)置成ADD,并將下一狀態(tài)設(shè)置為6。這就是CSE與傳統(tǒng)的編程系統(tǒng)不同的地方。由于只有一個與動作ADD相關(guān)的控制標(biāo)志,所以CSE通過用戶接口示例預(yù)約日歷。用戶接著修改預(yù)約,并且返回一事件認(rèn)為用戶選擇事件“下一個”。由于動作是ADD,并且瞬間是EMPTY,所以所以CSE用數(shù)據(jù)庫接口加入用于特定日期的日歷。CSE接著進(jìn)入狀態(tài)6。
請注意,數(shù)據(jù)庫中的日歷記錄看上去對用戶來說對所有的日期都存在。實際上,除非對給定的日期預(yù)約日歷中存在信息,否則是沒有數(shù)據(jù)存在的。這是重要的,因為如果某人要用數(shù)據(jù)庫管理系統(tǒng),用數(shù)據(jù)庫建立一個日歷,那么他必須對所有年份建立空記錄。這會浪費有用的磁盤空間。動作控制標(biāo)志學(xué)習(xí)使得可以在示例瞬間并且沒有記錄存在時產(chǎn)生一數(shù)據(jù)庫記錄。
按照本發(fā)明,MICS的用戶簡單地寫入信息模型,而不是源碼等。信息模型12和功能16代替了現(xiàn)有技術(shù)中計算機(jī)軟件系統(tǒng)中使用的通常的源碼程序。為了修改程序的運行,用戶只需改變信息模型,因此不存在傳統(tǒng)意義上的軟件維護(hù)。因此本方法與現(xiàn)有技術(shù)和實踐是根本上不同的。
所以,要想利用本發(fā)明優(yōu)點的設(shè)計者建立起與實際應(yīng)用不同的模型,從而使最終用戶能夠從業(yè)務(wù)模型中直接產(chǎn)生它們自身的應(yīng)用。如上所述,完整的醫(yī)學(xué)系統(tǒng)是用不到700行的信息模型實現(xiàn)的,與成千上萬條復(fù)雜的源程序相比簡單多了。MICS的主要處理機(jī)構(gòu)(engine)是CSE機(jī)器,在該機(jī)器中,每一動作產(chǎn)生一事件,該事件改變一狀態(tài),而該狀態(tài)觸發(fā)一動作。模型可以在任何狀態(tài)期間終止,并且以后可以在同一狀態(tài)下重新激活。按照本發(fā)明,無論何時終止一事務(wù),這可能出現(xiàn)在例如調(diào)用另一模型進(jìn)行處理的時候,控制機(jī)構(gòu)存儲前面的模型和事務(wù)的狀態(tài)。當(dāng)其他的處理完成時,控制機(jī)構(gòu)在“動作”級別處重新進(jìn)入前面的事務(wù)(與指令級相對)。從而在動作級別處重新進(jìn)入控制機(jī)構(gòu)。
在本較佳實施例中,信息模型是借助于BNF語法采用一編輯器來定義的。BNF語法也方便了將應(yīng)用劃分成一組獨立的動作。采用基于BNF語法的預(yù)處理器或詞匯分析器將該模型轉(zhuǎn)換成信息處理目標(biāo)。
通過包括一期待的行為控制系統(tǒng)(EBCS),在應(yīng)用程序的期望行為本質(zhì)上獨立于應(yīng)用處理系統(tǒng)時,用來自動檢測和校正由應(yīng)用程序?qū)嵤┑膭幼餍袨?,可以大大提高如MICS的應(yīng)用處理系統(tǒng)。這就使得在不影響應(yīng)用處理系統(tǒng)運行的情況下能夠修改該期望行為。EBCS可以以兩種方式中的一種方式工作。在第一種應(yīng)用中,EBCS使系統(tǒng)的行為與EBCS所定義的系統(tǒng)的期望行為一致。在第二種應(yīng)用中,特定的行為可以由EBCS來加強(qiáng),以所要求的方式改變應(yīng)用處理系統(tǒng)的處理流程。
現(xiàn)在參照圖3,圖中描述了本發(fā)明的較佳實施例。應(yīng)用處理系統(tǒng)30由一動作處理器32組成,用來通過執(zhí)行應(yīng)用程序所要求的一個或多個動作執(zhí)行應(yīng)用程序。這些動作的執(zhí)行產(chǎn)生特定的行為。關(guān)于MICS,動作處理器將包含控制系統(tǒng)機(jī)構(gòu),并且應(yīng)用程序?qū)⒂尚畔⒛P徒M成。EBCS 34與動作處理器32和外界輸入/輸出36相連接。在大多數(shù)情況下,EBCS 34的每一應(yīng)用“動作”的執(zhí)行以后執(zhí)行,這些動作在諸如MICS的應(yīng)用處理系統(tǒng)32的活動瞬間(狀態(tài)5)期間和處理瞬間(狀態(tài)6)出現(xiàn)。然而在某些情況下,EBCS的執(zhí)行可以在動作或表達(dá)式的執(zhí)行以前出現(xiàn),以檢查影響特定處理流的執(zhí)行的某些條件。關(guān)于EBCS,除非特指,術(shù)語“規(guī)則”、“表達(dá)式”和“動作”詞義相同。
EBCS 34包含一期望行為功能(EBF)38和一校正動作功能40,前者用來響應(yīng)于應(yīng)用程序發(fā)出的動作產(chǎn)生的行為,使處理系統(tǒng)行為實施或與期望行為規(guī)則一致,后者用來執(zhí)行一個或多個校正動作,在期望行為規(guī)則沒有被滿足的情況下,使之與期望行為一致或?qū)嵤┢谕袨?。期望行為功?8和校正動作功能40可以形成單獨的規(guī)則或用作單個規(guī)則,而不影響本發(fā)明的整體運行。期望行為功能38由一組確定是否出現(xiàn)執(zhí)行的應(yīng)用程序動作的期望行為的規(guī)則組成。該規(guī)則可以使系統(tǒng)的行為與一期望行為一致,或以所要求的方式強(qiáng)制執(zhí)行過程的處理流程。如果在EBF 38中的規(guī)則設(shè)置的條件沒有被滿足,則返回一個校正ID號,校正動作功能40用此來使能執(zhí)行動作的相關(guān)響應(yīng),以實現(xiàn)應(yīng)用處理系統(tǒng)的期望行為。
EBF的期望行為規(guī)則驗證應(yīng)用程序發(fā)出的特定動作行為,并且在必要時實施協(xié)調(diào)或強(qiáng)制使系統(tǒng)的期望行為符合的校正動作。期望行為規(guī)則分成兩組,丟失(missing)動作規(guī)則和無效動作規(guī)則。丟失動作規(guī)則尋找應(yīng)當(dāng)對特定的動作作出響應(yīng)的特定行為。無效動作規(guī)則檢測和校正不應(yīng)當(dāng)發(fā)生但卻發(fā)生了的的行為。協(xié)調(diào)系統(tǒng)行為規(guī)則的一例如下所述丟失動作規(guī)則1.如果丟失索引鍵屬性值(index key attribute value),則執(zhí)行動作“校正說明參數(shù),以賦給索引關(guān)鍵屬性值”。
2.如果瞬間(instant)包含相互參考(cross reference),而在數(shù)據(jù)庫中沒有加入相互參考,則執(zhí)行動作校正說明參數(shù)以產(chǎn)生相互參考。
無效動作規(guī)則
1.如果是用戶瞬間而用戶沒有改變屬性值,也沒有出現(xiàn)數(shù)據(jù)庫更新,則執(zhí)行動作“校正無效傳輸表達(dá)式”。
2.如果是屬性值賦值的循環(huán)狀態(tài),則執(zhí)行動作“終止賦值循環(huán)狀態(tài)”。
并非意味著只有上述規(guī)則,實際上可以使用任意個數(shù)的規(guī)則來協(xié)調(diào)和校正系統(tǒng)的期望行為的。
下面的例子是與前述MICS系統(tǒng)的信息模型相應(yīng)的應(yīng)用程序。該信息模型將用來示例EBCS及其功能性。
#MODEL PAYMENT MANAGER#OBJECT BANK ACCOUNT,ADD,UPDATE,REPORTACT ID,UNIQUE,F(xiàn)PROTNAMEACCOUNT NOBALANCE#OBJECT TRANSACTION,ADD,UPDATE,REPORT,JOURNAL傳輸([ACT ID]ENQ””)[PAYEE]=[NAME]CODE傳輸([CODE]IS“ICR”)[REFRENCE]=999999DATEPAYEEAMOUNT傳輸([AMOUNT<0)[REFERENCE]=999999REFERENCE傳輸([RERERENCE]IS”999999”)[AMOUNT]-=[AMOUNT]ACT ID傳輸[PAYEE]=[NAME]STATUS#TRANSACTION JOURNAL,JOURNAL OF TRANSACTION,HIDE([AMOUNT]不是“O”){CTYPE]=[CODE]CTYPEPAYEEDATEAMOUNTACT ID#BALANCE DHECKBOOK,VIEW OFTRANSACTION,BROWSE,TEPORT選擇,ALL([STATUS]是“O”)激活([LAST BALANCE]IS ZERO)[LAST BALANCE]=BALANCE];[LAST BALANCE]-=[AMOUNT]傳輸[BALANCE]-=[AMOUNT]CODE,ENTRY=15PAYEEDATEAMOUNTLAST BALANCE,ENTRY=1#INDEX TRANSACTION,ACT ID下面的描述示出幾種情況,即可以看到運行EBCS來協(xié)調(diào)期望行為的軌跡情況1假設(shè)用戶選擇BANK ACCOUNT目標(biāo)的ADD動作。在由CSE執(zhí)行狀態(tài)6時,數(shù)據(jù)庫運行失敗,這是因為,ACT ID索引關(guān)鍵屬性值被標(biāo)上索引,但是ACT ID的賦值由于字段被FPROT屬性標(biāo)志保護(hù)而不能輸入數(shù)據(jù)并且沒有傳輸表達(dá)式或“動作”來賦給屬性值的緣故。在執(zhí)行EBCS時,執(zhí)行EBCS丟失動作規(guī)則1沒有實現(xiàn)行為的一致性,并且校正動作功能執(zhí)行“校正說明參數(shù)以賦給索引關(guān)鍵屬性值”。這里,校正動作功能的EBCS校正動作可以自動地從BANKACCOUNT的ACT ID屬性定義中去除FPROT屬性,以克服這一問題,而無需用戶修改信息模型,或者根據(jù)顯示屬性定義,通過輸入/輸出接口來與用戶互作用,請用戶變更標(biāo)志或加入傳輸表達(dá)式,以克服這一問題,從而強(qiáng)制執(zhí)行所期望的行為。
情況2在TRANSACTION目標(biāo)中,JOURNAL標(biāo)志指令CSE在數(shù)據(jù)庫運行以后激活TRANSACTION的JOURNAL目標(biāo)。假設(shè)用戶已經(jīng)選擇了TRANSACTION的ADD動作。如果AMOUNT屬性值沒有由用戶輸入,CSE無法產(chǎn)生JOURNAL數(shù)據(jù)庫記錄,因為在執(zhí)行JOURNAL目標(biāo)時不改變屬性值,其原因是僅當(dāng)AMOUNT不是零時,傳輸表達(dá)式改變屬性值,沒有實現(xiàn)EBCS符合丟失動作規(guī)則號2,并且校正動作功能執(zhí)行“校正說明參數(shù),以產(chǎn)生相互參考”。通過在TRANSACTION的屬性定義AMOUNT中自動加入MUST FILL標(biāo)志,校正動作可以實行該行為,或者經(jīng)輸入/輸出接口EBCS校正動作可以與用戶交互作用請求用戶改變MUST FILL標(biāo)志,或修改JOURNAL目標(biāo)的修改傳輸表達(dá)式來改變至少一個屬性值。
情況3假設(shè)用戶已經(jīng)選擇ADD動作,并且用戶輸入一等于ICR的CODE值。于是REFERENCE值改變成999999。這使得AMOUNT值變成負(fù)值,這又接著使REFERENCE值變成999999。這產(chǎn)生一循環(huán)狀態(tài),而與EBCS無效規(guī)則2的一致性失敗,并且EBCS執(zhí)行“終止循環(huán)狀態(tài)”。通過自動終止循環(huán)狀態(tài)或請用戶通過輸入/輸出接口這樣做,校正動作功能可以協(xié)調(diào)該行為。
重要的是要注意,在信息模型自身的任何處理部分中沒有錯誤。錯誤在信息模型說明參數(shù)中。在傳統(tǒng)的軟件程序中,錯誤會出現(xiàn)在程序說明參數(shù)和處理流程程中,而不會出現(xiàn)在響應(yīng)于程序而執(zhí)行的動作中。
除了使應(yīng)用處理系統(tǒng)與特定的行為一致以外,EBCS還可以將應(yīng)用程序定義的動作的處理流強(qiáng)制實行到所選的行為。這可以使得應(yīng)用處理系統(tǒng)能夠以新的方式進(jìn)行工作,而無需改變存在的數(shù)據(jù)庫或應(yīng)用程序。增加處理流的一個例子是如果兩個用戶在處理某一個記錄的不同屬性,就能使兩個用戶同時更新一個數(shù)據(jù)庫記錄。當(dāng)前的現(xiàn)有系統(tǒng)是不能使兩個用戶同時更新相同的數(shù)據(jù)庫記錄的。
目前,當(dāng)某一應(yīng)用為了更新目的需要使用數(shù)據(jù)庫記錄時,該應(yīng)用起動一READUPDATE動作,該動作讀取數(shù)據(jù)庫中的輸入,并將該記錄鎖定成UPDATE模式。在READ UPDATE動作期間,是沒有其他的用戶可以訪問數(shù)據(jù)庫記錄。這是由于這樣的事實,即,由該應(yīng)用程序起動的READ UPDATE動作產(chǎn)生僅使得一個用戶能夠訪問所要求的數(shù)據(jù)庫的處理流。采用一組與先前討論的一致規(guī)則相似的增強(qiáng)規(guī)則,可以由EBCS執(zhí)行一個新的類型的處理流。增強(qiáng)規(guī)則與一致規(guī)則的不同點在于,它們可以在動作的執(zhí)行之前或之后執(zhí)行。這是由于這樣的事實,即,對動作的期望行為根據(jù)現(xiàn)有狀態(tài)可以是不同的。
假設(shè)在EBCS中還包括下面的規(guī)則1.如果操作是READ UPDATE,那么獲取具有READ而沒有UPDATE的記錄,并激活該瞬間。
2.如果動作是READ UPDATE,則等待到記錄可為READ UPDATE使用,并用經(jīng)用戶接口或傳輸表達(dá)式改變的瞬間屬性值更新數(shù)據(jù)庫。
所以,當(dāng)由應(yīng)用處理系統(tǒng)執(zhí)行READ UPDATE動作時,EBCS規(guī)則1使得可以讀取該記錄而不更新。這就使得網(wǎng)絡(luò)或客戶/服務(wù)器計算機(jī)系統(tǒng)上一個以上的用戶可以同時更新相同的記錄,而不會在更新期間鎖住該記錄。在完成每一用戶對某一記錄的修改以后,每一用戶的更新按照規(guī)則2返回到該數(shù)據(jù)庫。規(guī)則號1是一個動作執(zhí)行以前執(zhí)行的預(yù)執(zhí)行規(guī)則,它在不改變應(yīng)用程序的前提下使處理流導(dǎo)向所希望的方面。在這種情況下,規(guī)則僅發(fā)出READ動作。規(guī)則號2是一個在某一動作執(zhí)行以后執(zhí)行某一特定行為的后執(zhí)行規(guī)則。在這種情況下,該規(guī)則讀取用于UPDATE READ的數(shù)據(jù)庫記錄,并按照用戶作出的變更修改該記錄。
這樣的規(guī)則使得多個用戶能夠更新某一數(shù)據(jù)庫記錄,只要更新的是該數(shù)據(jù)庫記錄的不同屬性就可以了。在一普通的處理系統(tǒng)中,最后對記錄的屬性值作出變更,是最終在數(shù)據(jù)庫記錄中使用的變更。如果在READ UPDATE動作期間多個用戶之間試圖更新相同屬性時有矛盾,那么可以在EBCS中包括附加的規(guī)則,以解決這一矛盾。規(guī)則可以包括在EBCS中,執(zhí)行不論哪個用戶輸入最大數(shù)量的指定組的屬性值變化,就獲得對該組所有的屬性值變化的優(yōu)先權(quán)。所以,在第一個用戶更新第一個病人記錄中的一個屬性和第二個病人記錄中的5個屬性、而第二個用戶僅更新第二個病人記錄中的10個屬性的情況下,校正動作迫使由第一個用戶作出的變更控制并輸入到第一個病人記錄中,而第二個用戶輸入的屬性控制和輸入到第二個病人記錄中。
在前述討論中,應(yīng)當(dāng)注意,沒有應(yīng)用程序以任何一種方式而改變。改變的只是方法,動作的過程流以該方法執(zhí)行,使得新的系統(tǒng)行為可以實現(xiàn),而無需對應(yīng)用程序進(jìn)行重新編程。還應(yīng)當(dāng)注意,對執(zhí)行過程流的特定規(guī)則討論僅是描述性的,而任意個數(shù)的規(guī)則可以用來實現(xiàn)任何要求的行為。
對于本領(lǐng)域中的技術(shù)人員應(yīng)當(dāng)理解的是,上述揭示的特定實施例可以用作實現(xiàn)本發(fā)明相同目的修改或設(shè)計其他結(jié)構(gòu)或技術(shù)的基礎(chǔ)。對于本領(lǐng)域中的技術(shù)人員還應(yīng)當(dāng)理解的是,這些等效結(jié)構(gòu)不會偏離權(quán)利要求書中所揭示的本發(fā)明的精神和范圍。
權(quán)利要求
1.一種自動校正一應(yīng)用處理系統(tǒng)的行為的方法,所述系統(tǒng)具有至少一個包括至少一個動作的應(yīng)用程序,其特征在于,所述方法包含下述步驟監(jiān)視通過應(yīng)用程序的動作的執(zhí)行而設(shè)定的行為;將應(yīng)用程序的動作被監(jiān)視的行為與一期望行為規(guī)則比較;以及當(dāng)被監(jiān)視的行為不符合所述期望行為的時候,執(zhí)行一校正動作,以設(shè)定由期望行為規(guī)則定義的行為。
2.如權(quán)利要求1所述的方法,其特征在于,所述期望行為規(guī)則定義了一個應(yīng)當(dāng)從動作的執(zhí)行中產(chǎn)生的行為。
3.如權(quán)利要求1所述的方法,其特征在于,所述期望行為規(guī)則定義了一個不應(yīng)當(dāng)從動作的執(zhí)行中產(chǎn)生的行為。
4.如權(quán)利要求1所述的方法,其特征在于,它還包括按照第二期望行為規(guī)則執(zhí)行應(yīng)用程序的動作的步驟。
5.一種自動校正一模型信息控制系統(tǒng)的行為的方法,所述系統(tǒng)具有至少一個包括至少一個動作的信息模型,其特征在于,所述方法包含下述步驟監(jiān)視通過所述信息模型的動作的執(zhí)行而設(shè)定的行為;將被監(jiān)視的動作行為與一期望行為規(guī)則比較;以及當(dāng)被監(jiān)視的行為不符合所述期望行為的時候,執(zhí)行一校正動作,以設(shè)定由期望行為規(guī)則定義的行為。
6.一種期望行為控制系統(tǒng),用于一應(yīng)用處理系統(tǒng),所述應(yīng)用處理系統(tǒng)具有包括至少一個定義的動作的至少一個應(yīng)用程序,其特征在于,所述系統(tǒng)包含期望行為功能,用來檢測一執(zhí)行的動作是否提供了一期望結(jié)果;以及校正動作功能,對期望行為功能檢測到的非期望結(jié)果作出響應(yīng),執(zhí)行至少一個校正動作。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述期望行為功能包括多個定義期望行為的規(guī)則。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述期望行為功能包括執(zhí)行一特定過程流的至少一個規(guī)則。
9.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述校正動作功能包括多個校正動作,每一校正動作與定義一期望行為的多個規(guī)則中的一個規(guī)則對應(yīng)。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述多個規(guī)則分成兩組,所述組包含丟失動作規(guī)則,用來定義應(yīng)當(dāng)在應(yīng)用程序的動作執(zhí)行中找到的動作;以及無效動作規(guī)則,用來定義由于程序的動作執(zhí)行而引起的無效動作。
11.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述應(yīng)用處理系統(tǒng)包含一模型信息控制系統(tǒng)。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述應(yīng)用程序包含包括至少一個屬性和一個動作的信息模型。
13.一種執(zhí)行模型信息控制系統(tǒng)的行為的方法,所述模型信息控制系統(tǒng)具有包括至少一個動作的至少一個信息模型,使得多個用戶能夠同時更新數(shù)據(jù)庫,其特征在于,所述方法包括下述步驟按照執(zhí)行行為規(guī)則處理所述信息模型中的動作,由多個用戶執(zhí)行數(shù)據(jù)庫的一個記錄中屬性的本地更新;以及通過將每一用戶的每一本地更新加到所述數(shù)據(jù)庫中來更新所述數(shù)據(jù)庫中記錄的屬性的變更。
14.如權(quán)利要求13所述的方法,其特征在于,所述處理步驟還包括下述步驟響應(yīng)于請求數(shù)據(jù)庫更新的一個動作,由用戶將所述數(shù)據(jù)庫讀到本地存儲器中用于本地更新;以及等待用本地更新對數(shù)據(jù)庫進(jìn)行更新,直到?jīng)]有用戶矛盾。
15.如權(quán)利要求13所述的方法,其特征在于,它還包含下述步驟確定多個用戶是否試圖更新數(shù)據(jù)庫中相同記錄的相同屬性;以及按照所述執(zhí)行行為規(guī)則解決所述矛盾。
全文摘要
一種與用戶定義的信息模型和一個或多個傳統(tǒng)信息系統(tǒng)程序模塊或“功能”一起使用來執(zhí)行業(yè)務(wù)應(yīng)用的模型信息控制系統(tǒng)(“MICS”)。根據(jù)信息模型定義的每一動作執(zhí)行,一期望行為控制系統(tǒng)(“EBCS”34)確定產(chǎn)生的行為是否與期望的行為(38)一致,并在必要時使該行為與該期望行為一致(32,40)。EBCS可以通過執(zhí)行應(yīng)用處理系統(tǒng)的新的行為或應(yīng)用程序而不作修改地改變應(yīng)用處理系統(tǒng)或應(yīng)用程序的行為。MICS包括事件—動作—狀態(tài)機(jī)器對用戶定義的信息模型和功能進(jìn)行處理。
文檔編號G06F7/06GK1187254SQ9619464
公開日1998年7月8日 申請日期1996年4月11日 優(yōu)先權(quán)日1996年4月11日
發(fā)明者基里特·K·塔拉提 申請人:基里特·K·塔拉提