- MCDBSAVE ;WISC/DCB-save and load util. ;7/18/96 14:08
- ;;2.3;Medicine;;09/13/1996
- Q
- ;{See MCDBELM for Field values}
- SAVE(FILE,REC,FIELDS,EXC,DATA,TYPE,USER,ERROR) ;SAVE some fields
- N TEMP,RECS,FLDS,FILES
- S ERROR=""
- D RTNELM^MCDBELM(FILE,REC,FIELDS,.EXC,DATA,TYPE,USER,.TEMP,.ERROR)
- D:ERROR="" SETREC(.TEMP,.ERROR)
- S:ERROR="" ERROR=$$CHECK(.TEMP)
- Q
- SETREC(TEMP,ERROR) ;Save the record
- N DIE,DR,DA,DIC,DTOUT,Y,DIROUT,DUOUT,DTOUT,DIRUT,DIROUT
- S ERROR=""
- I '$D(TEMP) S ERROR=" 0.0 - Require array not define" Q
- S DR=$$RTNDR^MCDBELM(.TEMP,1) I DR="" S ERROR=" Nothing to save" Q
- S DIE=TEMP("DIC") I $E(DIE,1)=" " S ERROR=DIE Q
- D RTNDA^MCDBELM(.TEMP,.DA,.ERROR) Q:ERROR'=""
- D ^DIE
- I '$D(DA) S ERROR=" inf - Record was deleted" Q
- I $D(DTOUT) S ERROR=" inf - User timeout" Q
- I $D(Y)'=0&(TEMP("USER")=2) S ERROR=" inf - User Up-arrow out" Q
- Q
- CHECK(TEMP) ;Checks the field values
- N ERROR,XTOTAL,DIC,DR,DA,DIQ,XPLACE,XHOLD
- N XFILE,XFLD,XSTR,XINT,XEXT S ERROR=""
- Q:TEMP("USER")'=0 ""
- S DR="",XTOTAL=$$TOTAL^MCDBELM(.TEMP),DIC=TEMP("DIC") Q:$E(DIC,1)=" " DIE
- S DR=$$RTNDR^MCDBELM(.TEMP) Q:ERROR'=""
- D RTNDA^MCDBELM(.TEMP,.DA,.ERROR) Q:ERROR'=""
- S DIQ(0)="IE",DIQ="HOLD("
- D EN^DIQ1
- S XFILE=$P(TEMP(XTOTAL),U,1),XPLACE=DIQ_XFILE_","_DA_",",XHOLD=""
- F S XHOLD=+$O(TEMP("FLD",XHOLD)) Q:XHOLD=0!(ERROR'="") D
- .S XFLD=XHOLD,XSTR=TEMP("FLD",XHOLD)
- .S XSTR=$S(XSTR="@":"",1:XSTR)
- .S XINT=$G(@(XPLACE_XHOLD_",""I"")")),XEXT=$G(@(XPLACE_XHOLD_",""E"")"))
- .I (XINT'=XSTR),(XEXT'=XSTR) S ERROR=" 6.1 - Data error for field "_XHOLD,ERROR(1)="USE: "_XSTR,ERROR(2)="EXT: "_XEXT,ERROR(3)="INT: "_XINT
- Q ERROR
- LOAD(FILE,REC,FIELDS,EXC,TYPE,TEMP,ERROR) ;LOAD some fields
- D RTNELM^MCDBELM(FILE,REC,FIELDS,.EXC,"",TYPE,1,.TEMP,.ERROR)
- D:ERROR="" GETDATA(.TEMP,.ERROR)
- Q
- GETDATA(TEMP,ERROR) ;RETRIEVE THE DATA THAT WAS SAVED
- N X,XTOTAL,DIC,DR,DA,DIQ,XPLACE,XHOLD
- N XFILE,XFLD,XSTR,XINT,XEXT,XTYP S ERROR=""
- I '$D(TEMP) S ERROR=" 0.0 - Require array not define" Q
- S DR="",XTOTAL=$$TOTAL^MCDBELM(.TEMP),DIC=TEMP("DIC")
- I $E(DIC,1)=" " S ERROR=DIE Q
- S DR=$$RTNDR^MCDBELM(.TEMP) Q:ERROR'=""
- D RTNDA^MCDBELM(.TEMP,.DA,.ERROR) Q:ERROR'=""
- S DIQ(0)="IE",DIQ="XHOLD("
- D EN^DIQ1
- S XFILE=$P(TEMP(XTOTAL),U,1),XPLACE=DIQ_XFILE_","_DA_",",XHOLD=""
- F S XHOLD=+$O(TEMP("TYP",XHOLD)) Q:XHOLD=0!(ERROR'="") D
- .S XTYP=TEMP("TYP",XHOLD) S XTYP=$TR(XTYP,"ei","EI")
- .S XINT=$G(@(XPLACE_XHOLD_",""I"")")),XEXT=$G(@(XPLACE_XHOLD_",""E"")"))
- .I $G(TEMP("EXC",XHOLD))'="" S X=XINT X TEMP("EXC",XHOLD) S:$G(X)'=XINT (XEXT,XINT)=X
- .S TEMP("FLD",XHOLD)=$S(XTYP="I":XINT,XTYP="E":XEXT,XINT=XEXT:XINT,1:XINT_U_XEXT)
- Q
- MCDBSAVE ;WISC/DCB-save and load util. ;7/18/96 14:08
- +1 ;;2.3;Medicine;;09/13/1996
- +2 QUIT
- +3 ;{See MCDBELM for Field values}
- SAVE(FILE,REC,FIELDS,EXC,DATA,TYPE,USER,ERROR) ;SAVE some fields
- +1 NEW TEMP,RECS,FLDS,FILES
- +2 SET ERROR=""
- +3 DO RTNELM^MCDBELM(FILE,REC,FIELDS,.EXC,DATA,TYPE,USER,.TEMP,.ERROR)
- +4 IF ERROR=""
- DO SETREC(.TEMP,.ERROR)
- +5 IF ERROR=""
- SET ERROR=$$CHECK(.TEMP)
- +6 QUIT
- SETREC(TEMP,ERROR) ;Save the record
- +1 NEW DIE,DR,DA,DIC,DTOUT,Y,DIROUT,DUOUT,DTOUT,DIRUT,DIROUT
- +2 SET ERROR=""
- +3 IF '$DATA(TEMP)
- SET ERROR=" 0.0 - Require array not define"
- QUIT
- +4 SET DR=$$RTNDR^MCDBELM(.TEMP,1)
- IF DR=""
- SET ERROR=" Nothing to save"
- QUIT
- +5 SET DIE=TEMP("DIC")
- IF $EXTRACT(DIE,1)=" "
- SET ERROR=DIE
- QUIT
- +6 DO RTNDA^MCDBELM(.TEMP,.DA,.ERROR)
- IF ERROR'=""
- QUIT
- +7 DO ^DIE
- +8 IF '$DATA(DA)
- SET ERROR=" inf - Record was deleted"
- QUIT
- +9 IF $DATA(DTOUT)
- SET ERROR=" inf - User timeout"
- QUIT
- +10 IF $DATA(Y)'=0&(TEMP("USER")=2)
- SET ERROR=" inf - User Up-arrow out"
- QUIT
- +11 QUIT
- CHECK(TEMP) ;Checks the field values
- +1 NEW ERROR,XTOTAL,DIC,DR,DA,DIQ,XPLACE,XHOLD
- +2 NEW XFILE,XFLD,XSTR,XINT,XEXT
- SET ERROR=""
- +3 IF TEMP("USER")'=0
- QUIT ""
- +4 SET DR=""
- SET XTOTAL=$$TOTAL^MCDBELM(.TEMP)
- SET DIC=TEMP("DIC")
- IF $EXTRACT(DIC,1)=" "
- QUIT DIE
- +5 SET DR=$$RTNDR^MCDBELM(.TEMP)
- IF ERROR'=""
- QUIT
- +6 DO RTNDA^MCDBELM(.TEMP,.DA,.ERROR)
- IF ERROR'=""
- QUIT
- +7 SET DIQ(0)="IE"
- SET DIQ="HOLD("
- +8 DO EN^DIQ1
- +9 SET XFILE=$PIECE(TEMP(XTOTAL),U,1)
- SET XPLACE=DIQ_XFILE_","_DA_","
- SET XHOLD=""
- +10 FOR
- SET XHOLD=+$ORDER(TEMP("FLD",XHOLD))
- IF XHOLD=0!(ERROR'="")
- QUIT
- Begin DoDot:1
- +11 SET XFLD=XHOLD
- SET XSTR=TEMP("FLD",XHOLD)
- +12 SET XSTR=$SELECT(XSTR="@":"",1:XSTR)
- +13 SET XINT=$GET(@(XPLACE_XHOLD_",""I"")"))
- SET XEXT=$GET(@(XPLACE_XHOLD_",""E"")"))
- +14 IF (XINT'=XSTR)
- IF (XEXT'=XSTR)
- SET ERROR=" 6.1 - Data error for field "_XHOLD
- SET ERROR(1)="USE: "_XSTR
- SET ERROR(2)="EXT: "_XEXT
- SET ERROR(3)="INT: "_XINT
- End DoDot:1
- +15 QUIT ERROR
- LOAD(FILE,REC,FIELDS,EXC,TYPE,TEMP,ERROR) ;LOAD some fields
- +1 DO RTNELM^MCDBELM(FILE,REC,FIELDS,.EXC,"",TYPE,1,.TEMP,.ERROR)
- +2 IF ERROR=""
- DO GETDATA(.TEMP,.ERROR)
- +3 QUIT
- GETDATA(TEMP,ERROR) ;RETRIEVE THE DATA THAT WAS SAVED
- +1 NEW X,XTOTAL,DIC,DR,DA,DIQ,XPLACE,XHOLD
- +2 NEW XFILE,XFLD,XSTR,XINT,XEXT,XTYP
- SET ERROR=""
- +3 IF '$DATA(TEMP)
- SET ERROR=" 0.0 - Require array not define"
- QUIT
- +4 SET DR=""
- SET XTOTAL=$$TOTAL^MCDBELM(.TEMP)
- SET DIC=TEMP("DIC")
- +5 IF $EXTRACT(DIC,1)=" "
- SET ERROR=DIE
- QUIT
- +6 SET DR=$$RTNDR^MCDBELM(.TEMP)
- IF ERROR'=""
- QUIT
- +7 DO RTNDA^MCDBELM(.TEMP,.DA,.ERROR)
- IF ERROR'=""
- QUIT
- +8 SET DIQ(0)="IE"
- SET DIQ="XHOLD("
- +9 DO EN^DIQ1
- +10 SET XFILE=$PIECE(TEMP(XTOTAL),U,1)
- SET XPLACE=DIQ_XFILE_","_DA_","
- SET XHOLD=""
- +11 FOR
- SET XHOLD=+$ORDER(TEMP("TYP",XHOLD))
- IF XHOLD=0!(ERROR'="")
- QUIT
- Begin DoDot:1
- +12 SET XTYP=TEMP("TYP",XHOLD)
- SET XTYP=$TRANSLATE(XTYP,"ei","EI")
- +13 SET XINT=$GET(@(XPLACE_XHOLD_",""I"")"))
- SET XEXT=$GET(@(XPLACE_XHOLD_",""E"")"))
- +14 IF $GET(TEMP("EXC",XHOLD))'=""
- SET X=XINT
- XECUTE TEMP("EXC",XHOLD)
- IF $GET(X)'=XINT
- SET (XEXT,XINT)=X
- +15 SET TEMP("FLD",XHOLD)=$SELECT(XTYP="I":XINT,XTYP="E":XEXT,XINT=XEXT:XINT,1:XINT_U_XEXT)
- End DoDot:1
- +16 QUIT