EDPCTRL ;SLC/KCM - Controller for ED Tracking ;5/23/13 11:19am
 ;;2.0;EMERGENCY DEPARTMENT;**6**;Feb 24, 2012;Build 200
 ;
RPC(EDPXML,PARAMS,PARAMS2) ; Process request via RPC instead of CSP
 
X,REQ,EDPSITE,EDPUSER,EDPDBUG
 
EDPXML
 
EDPUSER=DUZ,EDPSITE=DUZ(2),EDPSTA=$$STA^XUAF4(DUZ(2))
 
X="" F  S X=$O(PARAMS(X)) Q:X=""  D
 
I $D(PARAMS(X))>9 REQ(X)=PARAMS(X)
 . 
E  S REQ(X,1)=PARAMS(X)
 
EDPDBUG=$$DEBUG^EDPCDBG($G(PARAMS("swfID")))
 
EDPDBUG PUTREQ^EDPCDBG(EDPDBUG,.PARAMS)
 
;
COMMON ; Come here for both CSP and RPC Mode
 ;
 
EDPFAIL,CMD
 
CMD=$G(REQ("command",1))
 
;
 ; switch on command
 ;
 ; ---------------------------------
 ;
 ; initUser
 ; return <user />
 ;        <view />...
 
CMD="initUser" D  G OUT
 
AREA=$$VAL("area")
 . 
SESS^EDPFAA,VIEWS^EDPFAA
 . 
GETROLES^EDPBWS(EDPSITE,AREA)
 
;
 ; ---------------------------------
 ;
 ; matchPatients
 ; return <ptlk />...<ptlk />
 
CMD="matchPatients" D  G OUT
 
MATCH^EDPFPTL($$VAL("partial"))
 
;
 ; ---------------------------------
 ;
 ; getPatientChecks
 ; return <checks />
 ;        <similar />
 ;        <warning> </warning>
 ;        <patientRecordFlags><flag> <text> </text></flag>...</patientRecordFlags>
 
CMD="getPatientChecks" D  G OUT
 
CHK^EDPFPTC($$VAL("area"),$$VAL("patient"),$$VAL("name"))
 
;
 ; ---------------------------------
 ;
 ; saveSecurityLog
 ; return <save />
 
CMD="saveSecurityLog" D  G OUT
 
LOG^EDPFPTC($$VAL("patient"))
 
;
 ; ---------------------------------
 ; 
 ; getLexiconMatches
 ; return <items><item />...</items>
 
CMD="getLexiconMatches" D  G OUT
 
ICD^EDPFLEX($$VAL("text"))
 

 ; ---------------------------------
 ; 
 ; initLogArea
 ; return <udp />
 ;        <params disposition="" diagnosis="" delay="" delayMinutes="" />
 ;        <logEntries><log />...</logEntries>
 
CMD="initLogArea" D  G OUT
 
I $L($$VAL("logEntry")) EDPFAIL=$$UPD^EDPLOG($$VAL("logEntry")) Q:$G(EDPFAIL)
 . 
PARAM^EDPQAR($$VAL("area"))
 . 
GET^EDPQLP($$VAL("area"),-1)  ;-1 = force refresh
 ;
 ; ---------------------------------
 ; 
 ; checkLogin  -- OBSOLETE
 ; return <user />
 
CMD="checkLogin" SESS^EDPFAA OUT
 
;
 ; ---------------------------------
 ; 
 ; refreshLogSelector
 ; return <logEntries><log />...</logEntries>
 
CMD="refreshLogSelector" D  G OUT
 
GET^EDPQLP($$VAL("area"),$$VAL("token"))
 
;
 ; ---------------------------------
 ; 
 ; switchLogEntry
 ; return <udp />
 ;        <logEntry>log fields...</logEntry>
 ;        <choices>choice lists...</choices>
 
CMD="switchLogEntry" D  G OUT
 
I $L($$VAL("logEntry")) EDPFAIL=$$UPD^EDPLOG($$VAL("logEntry")) Q:$G(EDPFAIL)
 . 
;D GET^EDPQLE($S($$VAL("logID"):$$VAL("logID"),1:$$VAL("logEntry")),$$VAL("choiceTS"))
 
GET^EDPQLE($$VAL("logID"),$$VAL("choiceTS"))
 
;
 ; ---------------------------------
 ; 
 ; saveLogEntry
 ; return <upd />
 
CMD="saveLogEntry" D  G OUT
 
EDPFAIL=$$UPD^EDPLOG($$VAL("logEntry"),"",$$VAL("restorePatient")) Q:$G(EDPFAIL)
 . 
; get updated data after a save
 
;D GET^EDPQLE($$VAL("logID"),$$VAL("choiceTS"))
 
PAR,REC PAR=$$VAL("logEntry"NVPARSE^EDPX(.REC,PAR)
 . 
GET^EDPQLE($$VAL^EDPLOG("id"),$$VAL("choiceTS"))
 
;
 ; ---------------------------------
 ; 
 ; addPatientToLog
 ; return <upd />
 ;        <add />
 ;        <logEntry>log fields...</logEntry>
 ;        <choices>choice lists...</choices>
 ;        <logEntries><log />...</logEntries>
 
CMD="addPatientToLog" D  G OUT
 
EDPFAIL=$$ADD^EDPLOGA($$VAL("addPatient"),$$VAL("area"),$$VAL("localTime"),$$VAL("choiceTS"))
 . 
Q:$G(EDPFAIL)
 . 
GET^EDPQLP($$VAL("area"),-1)
 
;
 ; ---------------------------------
 ;
 ; deleteStubEntry
 ; return <upd />
 
CMD="deleteStubEntry" D  G OUT
 
DEL^EDPLOGA($$VAL("area"),$$VAL("logID"))
 
;
 ; ---------------------------------
 ; 
 ; removeLogEntry
 ; return <upd />
 ;        <logEntries><log />...</logEntries>
 
CMD="removeLogEntry" D  G OUT
 
UPD^EDPLOG($$VAL("logEntry"),1) Q:$G(EDPFAIL)
 . 
GET^EDPQLP($$VAL("area"),-1)
 
;
 ; ---------------------------------
 ;
 ; matchClosed
 ; return <visit />...
 
CMD="matchClosed" D  G OUT
 
CLOSED^EDPQLP($$VAL("area"),$$VAL("partial"))
 
;
 ; ---------------------------------
 ;
 ; loadConfiguration
 ; return <color><map />...</color>...
 ;        <columnList><col />...</columnList>
 ;        <colorMapList><colorMap><map />...</colorMapList>
 ;        <beds><bed />...</beds>
 ;        <params />
 ;        <defaultRoomList><item />...</defaultRoomList>
 ;        <displayWhen><when />...</displayWhen>
 ;        <statusList><status />...</statusList>
 
CMD="loadConfiguration" D  G OUT
 
LOAD^EDPBCF($$VAL("area"))
 
;
 ; ---------------------------------
 ;
 ; loadBoardConfig
 ; return <spec><row /><col />...</spec>
 
CMD="loadBoardConfig" D  G OUT
 
LOADBRD^EDPBCF($$VAL("area"),$$VAL("boardID"))
 
;
 ; ---------------------------------
 ;
 ; saveConfigBoard
 ; return <save />
 
CMD="saveConfigBoard" D  G OUT
 
SAVEBRD^EDPBCF(.REQ; pass whole request for parsing
 ;
 ; ---------------------------------
 ;
 ; saveBedConfig
 ; return <save />
 
CMD="saveBedConfig" D  G OUT
 
SAVE^EDPBRM(.REQ,$$VAL("area")) ; pass whole request for parsing
 ;
 ; ---------------------------------
 ;
 ; saveColorConfig
 ; return <save />
 
CMD="saveColorConfig" D  G OUT
 
SAVE^EDPBCM(.REQ; pass whole request for parsing
 ;
 ; ---------------------------------
 ;
 ; loadSelectionConfig
 ; return <selectionName><code />....</selectionName>...
 
CMD="loadSelectionConfig" D  G OUT
 
LOAD^EDPBSL($$VAL("area"))
 
;
 ; ---------------------------------
 ; 
 ; loadStaffConfig
 ; return providers, nurses, staff for area
 
CMD="loadStaffConfig" D  G OUT
 
LOAD^EDPBST($$VAL("area"))
 
;
 ; ---------------------------------
 ;
 ; saveStaffConfig
 ; return <save />
 
CMD="saveStaffConfig" D  G OUT
 
SAVE^EDPBST(.REQ; pass whole request for parsing
 ;
 ; ---------------------------------
 ;
 ; matchPersons
 ; return <per />...<per />
 
CMD="matchPersons" D  G OUT
 
MATCH^EDPFPER($$VAL("partial"),$$VAL("personType"))
 
;
 ; ---------------------------------
 ;
 ; saveParamConfig
 ; return <save />
 
CMD="saveParamConfig" D  G OUT
 
SAVE^EDPBPM($$VAL("area"),$$VAL("param"))
 
;
 ; ---------------------------------
 ;
 ; saveSelectionConfig
 ; return <save />
 
CMD="saveSelectionConfig" D  G OUT
 
SAVE^EDPBSL($$VAL("area"),.REQ)
 
;
 ; ---------------------------------
 ; 
 ; getReport
 ; return <logEntries><log />...</logEntries>
 ;        <averages><all /><not /><adm /></averages>
 ;        <providers><md />...</providers>
 
CMD="getReport" D  G OUT
 
EN^EDPRPT($$VAL("start"),$$VAL("stop"),$$VAL("report"),$$VAL("id"),0,$$VAL("task"))
 
;
 ; ---------------------------------
 ; 
 ; getCSV
 ; return TAB separated values for report
 
CMD="getCSV" D  G OUT
 
EDPCSV   ; CSV mode uses EDPCSV instead of EDPXML
 
EN^EDPRPT($$VAL("start"),$$VAL("stop"),$$VAL("report"),$$VAL("id"),1,$$VAL("task"))
 . 
EDPXML=EDPCSV
 
;
 ; ---------------------------------
 ;
 ; getDetails
 
CMD="getDetails" D  G OUT
 
EN^EDPDTL($$VAL("logEntryId"),$$VAL("attribute"))
 
;
 ; ---------------------------------
 ;
 ; getVitals
 
CMD="getVitals" D  G OUT
 
GET^EDPVIT($$VAL("dfn"),$$VAL("start"),$$VAL("stop"))
 
;
 ; ---------------------------------
 ;
 ; saveVitals
 
CMD="saveVitals" D  G OUT
 
PUT^EDPVIT($$VAL("dfn"),$$VAL("vital"))
 
;
 ; ---------------------------------
 ;
 ; savePhoneNumbers
 
CMD="savePhoneNumbers" D  G OUT
 
PHONE^EDPUPD($$VAL("patient"),$$VAL("phone"),$$VAL("cell"),$$VAL("nokPhone"))
 
;
 ; ---------------------------------
 ;
 ; getLabOrderHistory
 
CMD="getLabOrderHistory" D  G OUT
 
EDPREQ EDPREQ=REQ
 
'$D(EDPREQ("order")) D  ;find lab orders
 
.. LOG,I,N,X
 
.. LOG=$$VAL("id"),(I,N)=0 Q:LOG<1
 .. 
F  S I=$O(^EDP(230,LOG,8,I)) Q:I<1  X=$G(^(I,0)) X,$P(X,U,2)="L" N=N+1,EDPREQ("order",N)=+X
 
LAB^EDPHIST(.EDPXML,.EDPREQ)
 
;
 ; ---------------------------------
 ;
 ; getMedEfficacy
 ; I CMD="getMedEfficacy" D  G OUT
 ; . N EDPREQ M EDPREQ=REQ
 ; . D MEDHIST^VPRXML(.EDPXML,.EDPREQ)
 ;
 ; ---------------------------------
 ;
 ; saveClinicalEvent
 
CMD="saveClinicalEvent" D  G OUT
 
EDPREQ EDPREQ=REQ
 
EVENT^EDPUPD(.EDPREQ)
 
;
 ; ---------------------------------
 ;
 ; ackOrders
 
CMD="ackOrders" D  G OUT
 
EDPREQ EDPREQ=REQ
 
ACK^EDPUPD(.EDPREQ)
 
;
 ; ---------------------------------
 ;
 ; getLabs = return lab results
 
CMD="getLabs" D  G OUT
 
EN^EDPLAB(.EDPXML,.REQ)
 
;
 ; ---------------------------------
 ;
 ; getRoomBedSelections
 
CMD="getRoomBedSelections" D  G OUT
 
AREA,LOG,X3,CURBED
 
AREA=$$VAL("area"),LOG=$$VAL("logEntryId")
 . 
X3=$G(^EDP(230,+LOG,3)),CURBED=+$P(X3,U,4)_U_$P(X3,U,9)
 . 
BEDS^EDPQLE
 
;
 ; ---------------------------------
 ;
 ; getChart
 ; I CMD="getChart" D  G OUT
 ; . D ALL^VPRXML(.EDPXML,$$VAL("patient"))
 ;
 ; ---------------------------------
 ;
 ; loadWorksheet
 
CMD="loadWorksheet" D  G OUT
 
LOAD^EDPWS(.REQ;; need to create CTXT (patient, visit, etc.)
 ; --- OLD:
 
CMD="loadDefinition" D  G OUT
 
LOAD^EDPWS(0)
 
;
 ; ---------------------------------
 ;
 ; loadWorksheetConfig
 
CMD="loadWorksheetConfig" D  G OUT
 
LOADALL^EDPBWS($$VAL("area"),$$VAL("role"))
 
;
 ; ---------------------------------
 ; loadWorksheetList
 
CMD="loadWorksheetList" D  G OUT
 
LDWSLIST^EDPBWS(EDPSITE,$$VAL("area"),$$VAL("roleID"))
 
;
 ; ---------------------------------
 ; getWorksheet
 
CMD="getWorksheet" D  G OUT
 
GETWORKS^EDPBWS(EDPSITE,$$VAL("id"),.REQ,.EDPXML)
 
;
 ; ---------------------------------
 ; getSectionList
 
CMD="getSectionList" D  G OUT
 
GETSECTS^EDPBWS($$VAL("area"),.EDPXML,$$VAL("role"))
 
;
 ; ---------------------------------
 ; getSection
 ;I CMD="getSection" D  G OUT
 ;. D GET1SEC^EDPBWS($$val("sectionID"))
 ; ---------------------------------
 ; getComponentList
 
CMD="getComponentList" D  G OUT
 
GETCMPTS^EDPBWS($$VAL("area"),.EDPXML,$$VAL("componentID"),$$VAL("role"))
 
; ---------------------------------
 ; saveWorksheetConfig
 
CMD="saveWorksheetConfig" D  G OUT
 
;D SAVEALL^EDPBWS(.REQ)
 
SAVEWORK^EDPBWS(.PARAMS,.PARAMS2,EDPSITE,$$VAL("area"))
 
; ---------------------------------
 ; loadUserProfile
 
CMD="loadUserProfile" D  G OUT
 
BOOT^EDPFAA($$VAL("appName"))
 
;
 ; ---------------------------------
 ; 
 ; getPatientPanel
 
CMD="getPatientPanel" D  G OUT
 
GET^EDPQDBS($$VAL("area"),$$VAL("board"))
 . 
GET^EDPQPP($$VAL("area"),$$VAL("board"),-1)
 . 
LISTS^EDPQPP($$VAL("area"))
 
;
 ; ---------------------------------
 ;
 ; else
 
XML^EDPX("<error msg='"_$$MSG^EDPX(2300010)_CMD_"' />")
 
; end switch
 ; 
OUT ; output the XML
 
EDPDBUG PUTXML^EDPCDBG(EDPDBUG,.EDPXML)
 
I $L($G(EDPHTTP)) D        ; if in CSP mode
 
EDPHTTP
 
"<results>",!
 . 
I=0 F  S I=$O(EDPXML(I)) Q:'I  EDPXML(I),!
 . 
"</results>",!
 
EDPHTTP
END Q
 
;
VAL(X) ; return value from request
 
Q $G(REQ(X,1))