Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: EDPWS

EDPWS.m

Go to the documentation of this file.
  1. EDPWS ;SLC/KCM - Worksheet Calls ;3/2/12 10:43am
  1. ;;2.0;EMERGENCY DEPARTMENT;;May 2, 2012;Build 103
  1. ;
  1. LOAD(REQ) ; Load Worksheet with Models
  1. D PRESERVE(.REQ) ; save previous worksheet state
  1. N EDPCTXT,WKS,WRKSHT,MODELS,RESULT,NEEDED,SEQ
  1. S EDPCTXT("area")=$G(REQ("area",1))
  1. S EDPCTXT("log")=$G(REQ("log",1))
  1. S EDPCTXT("dfn")=$G(REQ("dfn",1))
  1. S EDPCTXT("role")=$G(REQ("role",1))
  1. I DUZ=20011 S EDPCTXT("role")=573 ; CLERK 4
  1. I DUZ=20014 S EDPCTXT("role")=272 ; NURSE 3
  1. I DUZ=20013 S EDPCTXT("role")=426 ; RESIDENT 2
  1. I DUZ=20015 S EDPCTXT("role")=459 ; PHYSICIAN 1
  1. I 'EDPCTXT("role") S EDPCTXT("role")=459 ; TEMPORARY!!
  1. S WKS=$G(REQ("worksheet",1))
  1. I 'WKS S WKS=$$DFLTWKS(EDPCTXT("role"),EDPCTXT("area"))
  1. I 'WKS D XML^EDPX("<worksheet />") Q ;TODO -- trigger error?
  1. ;
  1. ; load the worksheet specification
  1. D GETWKS^EDPBWS(WKS,.WRKSHT)
  1. S WRKSHT("dfn")=EDPCTXT("dfn")
  1. D ADDST(.WRKSHT)
  1. ; iterate thru the sections and get their models
  1. S SEQ=0 F S SEQ=$O(WRKSHT("section",SEQ)) Q:'SEQ D
  1. . S I=0 F S I=$O(WRKSHT("section",SEQ,"model",I)) Q:'I D
  1. . . S NEEDED(WRKSHT("section",SEQ,"model",I,"id"))=""
  1. D MODELS(.NEEDED,.MODELS)
  1. M RESULTS=MODELS,RESULTS("worksheet",1)=WRKSHT
  1. K MODELS,WRKSHT,NEEDED ; free some memory
  1. D TOXML^EDPXML(.RESULTS,.EDPXML)
  1. K RESULTS,SEC
  1. Q
  1. MODELS(NEEDED,MODELS) ; Build models for section
  1. N MODEL,X0,EDPDATA,LOADCALL
  1. S MODEL=0 F S MODEL=$O(NEEDED(MODEL)) Q:'MODEL D
  1. . ; quit here if model already on the client
  1. . S X0=^EDPB(232.72,MODEL,0)
  1. . S MODELS("model",MODEL,"name")=$P(X0,U,2)_"::"_$P(X0,U)
  1. . S MODELS("model",MODEL,"type")=$S($P(X0,U,4)="V":"visit",1:"reference")
  1. . S EDPCTXT("model")=MODELS("model",MODEL,"name")
  1. . S LOADCALL=$P($G(^EDPB(232.72,MODEL,1)),U,1,2)
  1. . Q:'$L(LOADCALL)
  1. . I $P(^EDPB(232.72,MODEL,1),U,3) D
  1. . . N EDPXML
  1. . . D @(LOADCALL_"(.EDPCTXT)")
  1. . . D TOARR^EDPXML(.EDPXML,.EDPDATA)
  1. . E D @(LOADCALL_"(.EDPCTXT,.EDPDATA)")
  1. . I $D(EDPDATA) M MODELS("model",MODEL,"data",1)=EDPDATA
  1. . K EDPDATA
  1. Q
  1. DFLTWKS(ROLE,AREA) ; Return default worksheet for this role
  1. N IEN S IEN=$O(^EDPB(232.5,"C",EDPSITE,AREA,ROLE,0))
  1. Q:'IEN 0
  1. Q $P(^EDPB(232.5,IEN,0),U,4)
  1. ;
  1. PRESERVE(REQ) ; Preserve status of previously selected worksheet
  1. N WXML M WXML=REQ("preserve") K REQ("preserve")
  1. N WSTS D TOARR^EDPXML(.WXML,.WSTS,"preserve")
  1. Q:'$D(WSTS("worksheet",1,"dfn"))
  1. N TREF S TREF="EDPWKS-"_WSTS("worksheet",1,"dfn")_"-"_DUZ
  1. S ^XTMP(TREF,0)=$$FMADD^XLFDT(DT,7)_U_DT_U_"ED Worksheet State"
  1. N WKID S WKID=WSTS("worksheet",1,"id")
  1. K ^XTMP(TREF,"worksheet",WKID)
  1. S ^XTMP(TREF,"worksheet",WKID)=WSTS("worksheet",1,"scroll")
  1. N I S I=0
  1. F S I=$O(WSTS("worksheet",1,"section",I)) Q:'I D
  1. . S SEC=$$SECID(WSTS("worksheet",1,"section",I,"name"))
  1. . S ^XTMP(TREF,"worksheet",WKID,"section",SEC)=WSTS("worksheet",1,"section",I,"open")
  1. Q
  1. SECID(NAME) ; return section IEN given name
  1. Q +$O(^EDPB(232.71,"C",NAME,0))
  1. ;
  1. ADDST(WRKSHT) ; add state, if any to the worksheet
  1. N TREF S TREF="EDPWKS-"_WRKSHT("dfn")_"-"_DUZ
  1. N WKID S WKID=WRKSHT("id")
  1. Q:'$D(^XTMP(TREF,"worksheet",WKID))
  1. S WRKSHT("scroll")=+^XTMP(TREF,"worksheet",WKID)
  1. N I,OPEN S I=0
  1. F S I=$O(WRKSHT("section",I)) Q:'I D
  1. . S SEC=+$$SECID(WRKSHT("section",I,"detailPlugin")) Q:'SEC
  1. . S OPEN=$G(^XTMP(TREF,"worksheet",WKID,"section",SEC))
  1. . I $L(OPEN) S WRKSHT("section",I,"initialOpen")=OPEN
  1. Q
  1. PREVIEW(CTXT,RESULT) ; Add XML for a model preview
  1. N MODEL S MODEL=CTXT("model")
  1. I MODEL'=+MODEL S MODEL=$O(^EDPB(232.72,"C",MODEL,0))
  1. Q:'$D(^EDPB(232.72,+MODEL,5))
  1. N XML,I
  1. S I=0 F S I=$O(^EDPB(232.72,+MODEL,5,I)) Q:'I S XML(I)=^(I,0)
  1. D TOARR^EDPXML(.XML,.RESULT,"data")
  1. Q
  1. SVSECT(REQ) ; Save models of the worksheet
  1. N EDPCTXT,EDPDATA
  1. S EDPCTXT("dfn")=REQ("dfn",1)
  1. S EDPCTXT("area")=REQ("area",1)
  1. S EDPCTXT("log")=REQ("log",1)
  1. ; put in global so the XML can be converted using Kernel tools
  1. N XMLDATA M XMLDATA=REQ("uncommittedState")
  1. D TOARR^EDPXML(.XMLDATA,.EDPDATA,"data")
  1. S MODEL="" F S MODEL=$O(EDPDATA("model",MODEL)) Q:MODEL=""
  1. Q
  1. SAVE(XML,CTXT,COMMIT) ; Save the worksheet XML
  1. ; XML contains all the momentos to be saved
  1. ; can either stash the XML in ^XTMP (COMMIT=0)
  1. ; or parse and call out to packages to save their models (COMMIT=1)
  1. Q
  1. ;
  1. ; bwf: 12-19/2011 commenting test code for the time being
  1. ;TEST ;
  1. ;S EDPSITE=DUZ(2),EDPSTA=$$STA^XUAF4(DUZ(2))
  1. ;S REQ("area",1)=1,REQ("log",1)=9,REQ("dfn",1)=229,REQ("role")=459
  1. ;D LOAD(.REQ)
  1. ;Q
  1. ;TESTPASS(AREF) ; Test passing of array
  1. ;W !,AREF
  1. ;S X=AREF F S X=$Q(@X) Q:$E(X,1,$L(AREF)-1)'=$E(AREF,1,$L(AREF)-1) W !,X
  1. ;ZW ARY
  1. ;Q
  1. ;TV ;
  1. ;S EDPCTXT("area")=1,EDPCTXT("log")=6,EDPCTXT("dfn")=229
  1. ;D READ^EDPVIT(.EDPCTXT) ZW EDPXML
  1. ;Q
  1. ;T1(EDPCXT) ; TEST
  1. ;W !,"HI"
  1. ;Q
  1. ;TP ; TEST PRESERVE
  1. ;N REQ M REQ=^KEVIN("REQ")
  1. ;D PRESERVE(.REQ)
  1. ;Q